Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 – Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC, 2007. Conceitos básicos • Conceito de núcleo ou Kernel: Conjunto de rotinas de suporte aos usuários, aplicações e ao próprio SO. • Não confundir o núcleo do sistema com as aplicações, utilitários e interpretador de comandos que vem juntamente com o S.O. • O S.O. não é executado como uma aplicação típica, com início, meio e fim. Os procedimentos são executados concorrentemente, sem um uma ordem pré-definida e a partir de eventos dissociados do tempo (assíncronos). Estrutura do SO Funções do Kernel • Tratamento de interrupções e exceções • Criação/eliminação de proc. e threads; • Sincronização e comunicação entre processos e threads; • Escalonamento e controle dos processos e threads; • Gerência de memória, do sistema de arquivos, e de dispositivos de E/S • Suporte a redes locais e distribuídas; • Contabilização do uso do sistema; • Auditoria e segurança do sistema; System Calls • podem ser entendidas como portas de acesso ao núcleo do sistema operacional e seus serviços, que os usuários ou aplicações usam para chamar suas rotinas. • Para cada serviço disponível, existe uma system call correspondente cada S.O. tem seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. -> Uma aplicação desenvolvida para um S.O não roda em outro. System Calls System Call Aplicação Biblioteca Núcleo do Sistema Operacional Hardware System Calls • Uma tentativa de criar uma biblioteca de chamadas padronizadas foi proposta pelos institutos ISO e IEEE – o padrão POSIX (Portable Operating Interface for Unix). Essa iniciativa é atuante nos dias de hoje. Mais informações em http://pt.wikipedia.org/wiki/posix • Inicialmente voltado para a unificação das diversas versões do Unix, o POSIX foi incorporado, posteriormente, por grande parte dos sistemas operacionais. • A maioria dos programadores e usuários desconhece os detalhes envolvidos na implementação das system calls. Se for utilizado um compilador, ele converte o comando de alto nível para system calls específicas. Padrão POSIX • Portable Operating System Interface for Unix ou interface de sistema portável para Unix. O padrão POSIX é constituído por uma série de regras que determinam como o programador deve escrever o código-fonte de seu sistema de modo que ele possa ser portável entre os sistemas operacionais baseados no Unix. • Portável neste caso significa que bastará recompilar o programa, usando o compilador adequado para torna-lo compatível com o sistema desejado, sem a necessidade de fazer alterações no código fonte. É graças à Interface POSIX que existe um razoável nível de compatibilidade entre os programas escritos para o Linux, FreeBSD e para outras versões do UNIX. • Referências: – http://www.guiadohardware.net/termos/posix Funções e grupos de System Calls System Call System Call ou chamada de Sistema é uma camada de funções que constitui uma interface entre programas aplicativos (ou em nível de usuário) e o sistema operacional. São rotinas que proveem acesso às funcionalidades do Sistema Operacional, tais como manipulação de arquivos, controle de processo, gerenciamento de memória. Referências: – http://www.vivaolinux.com.br/artigo/OpenSolaris-Sistema-Operacional-Open-Source/ – http://www.digilife.be/quickreferences/QRC/LINUX System Call Quick Reference.pdf Modos de acesso • Tipos de instruções – Privilegiadas – podem comprometer sistema. Ex.: acesso direto ao disco. – Não-privilegiadas – não oferecem risco o • Modos de acesso – Usuário – tem acesso somente a instruções não-privilegiadas – Modo Kernel ou supervisor – tem acesso a todas as instruções Modos de acesso • Somente o núcleo do sistema operacional tem acesso ao processador no modo supervisor. • Quando uma aplicação precisa de uma operação protegida (ex. escrever no disco), é feita uma system call, que altera o modo usuário para kernel. Ao término da operação, o modo de acesso volta ao modo usuário. • Caso uma aplicação tente executar uma instrução privilegiada, o processador gerará uma exceção e o programa é interrompido. Chamando uma System call Interpretador de comandos • Permite que o usuário se comunique com o sistema por meio de comandos; • Comandos em modo texto ou com interface gráfica; • Após a utilização de um comando o interpretador de comandos ou shell faz a chamada a rotina específica do SO e apresenta o resultado. • O Shell não faz parte do núcleo. O objetivo é permitir flexibilidade para os desenvolvedores de SO. Interpretador de comandos • A linguagem de comandos oferece uma grande gama de recursos ao usuário. • O usuário pode programar sequencias de comandos em arquivos de comandos, arquivos batch ou shell scripts. • Com isso o usuário pode automatizar diversas rotinas e também desenvolver programas para auxiliar no gerenciamento dos SOs em rede ou não. Ativação/Desativação do SO • O Programa boot loader que fica em um endereço fixo da ROM é carregado; • O programa POST (Power-on seft test) verifica possíveis erros de hardware; • De acordo com a seqüência de dispositivos de boot, definida na BIOS pelo usuário, é feita a verificação se existe o SO; • Cada dispositivo tem o seu “boot sector” no qual a carga do SO é feita. • Após a carga do SO vários arquivos de inicialização customizam a configuração do hardware e carregam programas específicos. Ativação/Desativação do SO Área do Sistema Operacional boo t Sistema Operacional Disco Memória Principal Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 – Estrutura e arquitetura do SO Parte 1 Obrigado e bons estudos!