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 Núcleo do Sistema Operacional Aplicação Biblioteca 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 o sistema. Ex.: acesso direto ao disco. Não-privilegiadas não oferecem risco 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 Sistema Operacional boot Área do 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!