Apostila de Sistemas Operacionais

March 21, 2018 | Author: Luis Fernando Biondo | Category: Kernel (Operating System), Operating System, Personal Computers, Central Processing Unit, Software


Comments



Description

SISTEMA OPERACIONALProf: Fernando Sumário APOSTILA E EXERCICIOS DA DISCIPLINA SISTEMA OPERACIONAL ..................... 4 1. 1.1 1.2 2. 3. 3.1 Introdução ...................................................................................................................... 4 Facilidade de acesso aos recursos do sistema ............................................................ 5 Compartilhamento de recursos de forma organizada e protegida .............................. 6 Um breve histórico dos Sistemas Operacionais ............................................................. 7 Tipos de Sistemas Operacionais .................................................................................. 12 Classificação ............................................................................................................. 12 3.1.1 Sistema monoprogramável/ monotarefa ............................................................. 13 3.1.2 Sistema multiprogramável/ multitarefas ............................................................. 13 3.1.3 Sistemas com múltiplos processadores .............................................................. 18 3.2 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5. 5.1 5.2 5.3 5.4 5.5 Alguns Tipos de Sistemas Operacionais .................................................................. 20 Estrutura de Sistemas Operacionais ............................................................................. 22 Estrutura ................................................................................................................... 24 Funcionalidades ........................................................................................................ 25 Proteção do núcleo ................................................................................................... 27 Interrupções e Chamadas de Sistemas...................................................................... 28 Sistemas monolíticos ................................................................................................ 31 Sistemas em Camadas .............................................................................................. 32 Sistemas Micronúcleo (Cliente-Servidor) ................................................................ 33 Máquinas Virtuais .................................................................................................... 34 Processos Computacionais ........................................................................................... 36 O PCB (Process Control Block) ............................................................................... 37 Estado do Processo ................................................................................................... 39 Mudanças de estado de Processo.............................................................................. 39 Tipos de Processos ................................................................................................... 39 Comunicação entre Processos .................................................................................. 40 5.5.1 PROBLEMAS DE SINCRONIZAÇÃO ............................................................ 40 5.5.2 SOLUÇÕES DE SOFTWARE........................................................................... 41 5.5.3 DEADLOCKS .................................................................................................... 43 6. 7. 8. Responda as seguintes Questões .................................................................................. 44 Aulas Prática ................................................................................................................ 48 Referências Bibliográficas e Sites................................................................................ 48 SISTEMAS OPERACIONAIS Competência 1. Conhecer o funcionamento interno de um Sistema Operacional (S.O.), identificar sistemas operacionais e programas utilitários de acordo com as necessidades do usuário, bem como analisar e operar serviços e funções de sistemas operacionais e conhecer princípios, normas e recursos de segurança em Informática. Habilidades 1. Evolução de S.O.; Conceitos de S.O.; Classificação, Estrutura e Processos de Sistemas Operacionais; Gerencia de Memória e Sistemas de Arquivos; Instalação de Sistemas Operacionais; Configuração de Dispositivos (mouse, vídeo, modem, impressora e outros); Instalação, desinstalação e configuração de softwares (aplicativos); Estrutura de Domínios e Contas; Compartilhamento de Recursos; Segurança em S.O.; Tipos de Sistemas Operacionais; Sistemas Operacionais Livres e Proprietários; Utilização do Prompt de Comandos. 3 APOSTILA E EXERCICIOS DA DISCIPLINA SISTEMA OPERACIONAL 1. Introdução Antes de começarmos a estudar os conceitos e os principais componentes de um sistema operacional, devemos conhecer suas funções básicas. Por mais complexo que possa parecer, um sistema operacional é apenas um conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro programa. Sua função principal é controlar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema. Segundo Sobell, Sistema Operacional (SO) é um programa de controle do computador. Ele é responsável por alocar recursos de hardware e escalonar tarefas. Ele também deve prover uma interface para o usuário, ou seja, ele fornece ao usuário uma maneira de acesso aos recursos do computador. Segundo Stemmer, um SO pode ser definido como um gerenciador dos recursos que compõem o computador (processador, memória, I/O, arquivos, etc). Os problemas centrais que o sistema operacional deve resolver são: o compartilhamento ordenado, a proteção dos recursos a serem usados pelas aplicações do usuário e o interfaceamento entre este e a máquina. Um sistema operacional é um programa que controla a execução dos programas de aplicação e atua como uma interface entre o usuário do computador e o hardware do computador. Um sistema operacional pode ser pensado como tendo dois objetivos ou desempenhando duas funções: conveniência, pois faz o sistema computacional mais conveniente de usar; e eficiência, pois permite que os recursos do sistema computacional sejam usados de maneira eficiente [Stallings, 1996 apud Jandl]. O SO é uma camada de software colocada entre o hardware e os programas que executam tarefas para os usuários. O SO busca ser mais eficiente (maior utilização do hardware; distribuição de recursos entre os programas) e mais conveniente (diminuição de tempo para construção do programa; o acesso a periféricos é feita pelo SO). O SO oferece os seguintes tipos de serviços:  Oferece meios para que um programa seja carregado na memória principal e executado. O SO recebe o nome do arquivo, aloca na memória para o programa, copia o conteúdo 4 como. Na realidade. a de leitura e gravação da 5 . leitura. pode parecer simples.1 Facilidade de acesso aos recursos do sistema Um sistema de computação. versão do SO. Basicamente o computador possui a estrutura abaixo: Figura 1 . inicia sua execução.   Alocação de periféricos.do arquivo para a memória principal. a leitura de um arquivo em disquete. obter tamanho. não nos preocupamos com a maneira como é realizada esta comunicação e os inúmeros detalhes envolvidos.Máquina de Níveis Um sistema operacional possui inúmeras funções que resumimos em: Facilidade de acesso aos recursos do sistema e Compartilhamento de recursos de forma organizada e protegida. escrever. impressoras. Quando utilizamos um desses dispositivos. data e outras informações. 1. responsável por acionar a cabeça.  Permite a utilização de arquivos. discos e fitas. hora. Para não causar danos aos arquivos e trabalhos do usuário. etc). Podendo saber quanto e quais recursos cada usuário necessita. serviços implementados pelo Sistema de Arquivos. Para a maioria de nós uma operação cotidiana. Podendo criar. tornando a interação entre o usuário e o computador mais simples. Através da leitura e escrita pode renomear.   Informações sobre o sistema (data. como terminais. confiável e eficiente. mesmo que não tenha esta cobrança. a monitoração do uso dos recursos pode levar a identificação de gargalos no sistema. ao possuir. ler e destruir o arquivo. lista de usuários. O computador pode ser considerado como uma maquina de níveis ou camadas. Pode obter informações a respeito de cada periférico e alterar algumas de suas características. A parte física tornouse transparente para o usuário. por exemplo. escrita e liberação. Mecanismos de proteção entre os usuários. Pode-se utilizar esta informação para calcular o valor a ser cobrado pelo uso do computador. existe um conjunto de rotinas específicas. sendo possível abortar a execução. normalmente. diversos componentes. controladas pelo sistema operacional. Compartilhamento do computador. como imprimir um documento. Este conceito de ambiente simulado. também. entre outras coisas. onde vários usuários podem estar compartilhando os mesmos recursos.unidade de disco. transferir os dados do disco para a memória e. Novamente. mas. como. Isso permite. linkers1. Se pensarmos que um computador pessoal nos permite executar várias tarefas. 1. na medida em que mais de um usuário possa utilizar as mesmas facilidades concorrentemente. criado pelo sistema operacional. copiar um arquivo pela internet ou processar uma planilha. depuradores e outras ferramentas fazem parte do sistema operacional. na realidade. memória e discos. posicionar na trilha e setor onde estão os dados. é necessário que todos tenham oportunidade de ter acesso a esses recursos. impressoras. e denominado máquina virtual (virtual machine) está presente. O compartilhamento de recursos permite. 1 Linkers (ligadores) são programas capazes de juntar as diferentes partes de um mesmo programa. finalmente. por exemplo. então. deverá existir algum controle para impedir que a impressão de um usuário interrompa a impressão de outro. que programas grandes sejam divididos em módulos que são montados separadamente e depois unidos em um só programa pelo ligador. de alguma forma. na maioria dos sistemas atuais. como discos. estas facilidades são apenas utilitários. destinados a ajudar a interação do usuário com o computador. bibliotecas. informar ao programa a chegada dos dados. Se imaginarmos. linhas de comunicação etc.2 Compartilhamento de recursos de forma organizada e protegida Quando pensamos em sistemas multiusuários. a diminuição de custos. de forma organizada e protegida. por exemplo. após elas terem sido montadas separadamente. Não é apenas em sistemas multiusuário que o sistema operacional é importante. dando ao usuário a impressão de ser o único a utilizá-los. tornando esta comunicação transparente e permitindo ao usuário um trabalho mais eficiente e com menores chances de erros. o sistema operacional é responsável por permitir o acesso concorrente a esse e a outros recursos. de forma que um usuário não interfira no trabalho do outro. serve de interface entre os usuários e os recursos disponíveis no sistema. O sistema operacional. 6 . que uma impressora possa ser utilizada por vários usuários do sistema. o sistema operacional deve ser capaz de controlar a execução concorrentes dessas tarefas. É comum pensar que compiladores. então. existe uma biblioteca com rotinas de E/S já programadas. O tempo de execução ainda era grande. o programado controla todo o equipamento. quando executado. no final dos anos 40 e início dos anos 50. a computação propriamente dita e o envio dos resultados para os periféricos de saída. Por outro lado. Nesta década não existia SO. eram gravados em uma fita de entrada (a). compactos e de custos baixos. Onde os Jobs são colocados com necessidades semelhantes. gravando o resultado do processamento em uma fita de saída (b). cartões e listagens do job que terminou e depois são preparadas as fitas magnéticas e os cartões do próximo job. A carga do programa em memória. acompanhado dos dados para a execução. Os primeiros sistemas de computação. o programador operadora todo o computador. relacionada ao desenvolvimento de equipamentos cada vez mais velozes. entao agruparam os Jobs em lotes (ou batch). Os programas e dados são preparados na forma de cartões perfurados. era lida pelo computador. Caso haja erro durante a execução o operador pode tirar uma cópia na listagem do conteúdo de toda memória principal (que não passa de poucos kilobytes). Ao terminar todos os programas. surgindo assim o sistema em batch2. 7 . não possuíam sistema operacional. os sistemas de computação atuais possuem sistemas operacionais grandes. O job é formado pelo programa a ser compilado e executado. A seguir são apresentados alguns dos marcos mais relevantes na história dos sistemas operacionais: Anos 40: cada programa executava sozinho e tinha total controle do computador. O programador passa a não operar mais o computador que durante a execução do programa é entregue ao operador o seu job.2. Durante o seu horário. que. A fita. A depuração é feita pelo programador. Um programa. e à necessidade de aproveitamento e controle desses recursos. No máximo. a fita de saída era lida e impressa (c). tem controle total sobre a máquina. exigindo pouca preparação entre um Jobs do mesmo lote. Após a execução o programador recebe uma listagem com a saída gerada pelo programa. Com os operadores profissionais diminui o tempo que o processo fica parado e enquanto isso o programador pensa a solução para os erros. Existe uma planilha para alocação de horário na maquina. Para executar um job primeiro retira a fita magnética. byte a byte. 2 Acompanhando a figura: inicialmente. e acessa diretamente os periféricos. submetidos a uma leitora. Um breve histórico dos Sistemas Operacionais A evolução dos sistemas operacionais está. complexos e em constante evolução. tudo devia ser programado detalhadamente pelo desenvolvedor da aplicação. a varredura dos periféricos de entrada para busca de dados. que executava um programa de cada vez. em grande parte. os programas passaram a ser perfurados em cartões. que também são utilizados para outras informações. Anos 50: Os primeiros sistemas surgiram. A transição entre programas feita pelo monitor residente dispensa a operação manual. executar o montador traduzindo o código Assembly para linguagem de maquina. para facilitar a programação de aplicações. 8 . ele avisa o monitor. o programa montado é ligado com as rotinas de E/S de uma biblioteca. feita pelo operador. quem tem que estar atento em relação ao término de cada programa. Para que o monitor residente saiba o que fazer. eliminando a necessidade do programador desenvolver suas próprias rotinas de leitura/gravação especificas para cada dispositivo periférico. Algumas vezes um programa “monitor” (system monitor) auxilia a carga e descarga de aplicações e/ou dados entre a memória e periféricos (geralmente leitoras de cartão perfurado. Cada etapa é chamada de step. então. Um mesmo job pode exigir a execução de vários programas.Figura 2 . O monitor. as informações são passadas pelos cartões de controle. Era um programa que fica o tempo todo na memória. carrega automaticamente o próximo programa e inicia a execução dele. Surgimentos dos transistores. Os sistemas de computação fornecem “bibliotecas de sistema” (system libraries) que encapsulam o acesso aos periféricos. Estes cartões são a origem das linguagens de comandos. qual programa deve ser carregado. eles passaram a ter seu próprio conjunto de rotinas para operações de entrada e saída. fitas magnéticas e impressoras de caracteres). Surgiu o monitor residente que tinha a função de aumentar a transição do computador entre programas.Processamento Batch A troca de Jobs continua sendo manual. justamente para tentar automatizar as tarefas manuais que eram utilizadas. o programa já pronto é carregado e executado. Quando um programa em execução termina. Por exemplo. não havia mais a necessidade de reunir Jobs semelhantes em lotes. do MIT. Decidiram então colocar vários programas na memória principal ao mesmo tempo. A depuração de programas em um ambiente batch é difícil. Anos 60: Surgiu o conceito de multiprogramação. Posteriormente o termo batch foi substituído por “execução em background”. depois passaram a ser copiados em fitas magnéticas. até que a operação esteja concluída. No monitor residente. com elas as aplicações não precisam acessar diretamente os periféricos. assim enquanto um programa está esperando a conclusão da E/S o outro inicia sua execução (multiprogramação). apenas um programa é executado de cada vez. porem somente na década seguinte ocorreu sua disseminação. Surgem também as interrupções. iniciando a ideia de chamada de sistema. 9 . O termo batch passou a designar um sistema no qual não existe interação entre usuário e a execução do programa. que trabalha na faixa de microssegundo. isso se dá através das interrupções. sendo agora possível a execução de vários Jobs. consultando a interface do periférico. o processador é um dispositivo eletrônico.O monitor residente também é o local indicado para as rotinas de acesso aos periféricos. Com a utilização de discos magnéticos. Os erros do programa devem ser detectados e corrigidos nesse contexto. O programador submete o job e. as solicitações são mais frequentes. Ao mesmo tempo. 1961: o grupo do pesquisador Fernando Corbató. O desenvolvimento dos discos magnéticos também são importantes para o surgimento da multiprogramação. são rotinas utilizadas por todos os programas. imediatamente o SO inicia a execução de um outro programa. algumas horas depois. Quando um comando é enviado para um periférico. Quando ele precisa fazer alguma entrada e saída. Os Jobs eram submetidos em cartões perfurados e lidos pelo computador diretamente nos cartões. o primeiro sistema operacional com compartilhamento de tempo. o processador fica parado. Em geral. Nesta década também iniciou as primeiras experiências com sistemas timesharing. Técnica Polling ou busy-loop: Pode-se fazer com que o processador fique em um laço. sendo necessário que o periférico avise o SO quando estiver concluído. periféricos são dispositivos eletromecânicos e trabalham na faixa de milissegundo. recebe uma listagem como o resultado da execução. Não é possível fazer multiprogramação sem interrupções. apenas chamar a rotina apropriada dentro do monitor. anuncia o desenvolvimento do CTSS – Compatible TimeSharing System. pois com mais programas em execução. Desta forma o processador fica menos tempo parado e os periféricos são melhor utilizados. Com os discos magnéticos os Jobs dos cartões e fitas passaram a ser lidos em discos. porem iniciou uma grande preocupação com a conveniência. ele corrige e já inicia uma nova execução. Na década de 80 houve uma enorme disponibilidade de microcomputadores. GE e Bell Labs define o sistema operacional Multics. compartilhando assim o processador com outros programas). que eram seqüenciais). cujas idéias inovadoras irão influenciar novos sistemas durante décadas. permitindo a execução de milhões de instruções de maquina (os digitadores mais rápidos possuem a velocidade de 5 caracteres por segundo). além da multiprogramação. criam a primeira versão do UNIX. 1984: a Apple lança o sistema operacional Macintosh OS. onde cada programa espera sua vez para ser executado). permitindo a alteração da ordem na execução das tarefas. Em um sistema TimeSharing. para tal a memória foi dividida em partições. TimeSharing (para melhorar o tempo de resposta razoáveis cada programa na memória utilizaria o comutador em pequenos intervalos de tempo. um sistema operacional avançado. Spooling (com a substituição das fitas por discos no processo de execução dos programas. 1981: a Microsoft lança o MS-DOS. um sistema operacional comprado da empresa Seattle Computer Products em 1980. o processamento se tornou mais eficiente. nascendo daí a ideia de computador pessoal. 10 . os softwares de rede passaram a estar intimamente relacionados ao sistema operacional e surgem os sistemas operacionais de rede. onde o usuário pode interagir com os programas em execução.1965: a IBM lança o OS/360. o processador executa um outro programa. a medida que o hardware era melhorado. 1966 – 1980: foram adicionados terminais e teclados para permitir interação entre o usuário e o computador. cada usuário possui um terminal. surgindo assim interfaces mais amigáveis. Antes preocupava-se apenas com a eficiência no uso do computador. Passa a ocorrer: Multiprogramação (enquanto o programa espera por uma operação de leitura e gravação. 1981 – 1990: desenvolvimento da integração de circuitos em grande escala (LSI) e a integração em muito larga escala (VLSI). com compartilhamento de tempo e excelente suporte a discos. o tempo entre a digitação de dois caracteres é muito grande. pesquisadores dos Bell Labs. o SO também era. Devido ao avanço em redes de computadores. 1969: Ken Thompson e Dennis Ritchie. Em termos de instruções de maquina. E ao detectar um erro. 1965: um projeto conjunto entre MIT. Cria-se os conceitos de multitarefas e multiprocessamento. aparecem chips com milhares de transistores encapsulados em um centímetro quadrado de silício. 1987: IBM e Microsoft apresentam a primeira versão do OS/2. A maior parte das aplicações comerciais. a IBM continua no OS/2 e a Microsoft investe no ambiente Windows. 2009: lançamento do Windows 7. mesmo que os sistemas gerenciadores de banco de dados sejam implementados fora do SO. Esse histórico reflete apenas o surgimento de alguns sistemas operacionais relativamente populares. fica mais difícil o 11 . 2006: lançamento do Windows Vista. A gerência dessas solicitações aumenta a complexidade do SO. Problemas de segurança. diversos sistemas acadêmicos ou industriais de grande importância pelas contribuições inovadoras. logo abraçado por centenas de programadores ao redor do mundo. 1993: lançamento dos UNIX de código aberto FreeBSD e NetBSD.1985: primeira tentativa da Microsoft no campo dos sistemas operacionais com interface gráfica. 2012: lançamento do Windows 8. inicia o desenvolvimento do Linux. um professor de computação holandês. 1991 – 2000: A VLSI (Very Large Scale Integration) evolui para ULSI (Ultra Large Scale Integration). 2004: lançamento do núcleo Linux 2. através do MS-Windows 1. as duas empresas rompem a parceria. como Mach. QNX e Plan 9. um sistema multitarefa destinado a substituir o MS-DOS e o Windows. que foi batizado como Minix.0. 1991: Linus Torvalds. onde vários computadores são interconectados por meio de uma rede de comunicação de algum tipo. não estão representados. Chorus. o primeiro sistema 32 bits da empresa. lançando na rede Usenet o núcleo 0. E a arquitetura cliente-servidor aplicada basicamente em redes locais passa a ser oferecida em redes distribuídas. O conceito de processamento distribuído é explorado de forma que suas funções estejam espalhadas por vários processadores através da rede de computadores. mesmo em microcomputadores. um estudante de graduação finlandês.01. 1987: Andrew Tanenbaum. 1993: a Microsoft lança o Windows NT. gerência e desempenho tornam-se fatores importantes relacionados ao sistema operacional e a rede. é hoje construída em torno de bancos de dados. desenvolve um sistema operacional didático simplificado. mas respeitando a API do UNIX. 2001: lançamento do Windows XP. Uma das áreas de pesquisa mais importantes atualmente é a dos sistemas operacionais distribuídos. Mais tarde.6. um sistema operacional derivado da família UNIX BSD. 2001: a Apple lança o MacOS X. 370 PDP-11 Cray 1 Cyber-205 Circuito Integrado Disco Magnético Minicomputador Microprocessador Quarta (1981-1990) Cray XMP IBM 308 VAX-11 IBM-PC LSI ou VLSI Disco óptico Microcomputador Quinta (1991.Single . em cada uma.1  Classificação Os Sistemas Operacionais podem ser classificados em: Sistemas monoprogramáveis/monotarefa . da Microsoft é o SO monousuário mais utilizado até hoje.Características por Fase Fase Computadores Primeira (1945-1955) ENIAC EDVAC UNIVAK Segunda (1956-1965) NCR IMB 7094 CDC-6600 Terceira (1966-1980) IBM 360. Quanto a aplicações criticas estão os sistemas responsáveis pelo monitoramente de pacientes em hospitais e os sistemas embarcados em veículos. principalmente após o surgimento da Internet. interação com o sistema e aspectos de conectividade. Outra área importante são os SO de tempo real usados no suporte as aplicações submetidas de natureza temporal.Tasking: não admite ser usado por mais de um usuário simultaneamente. Os sistemas mais simples estão os controladores embutidos em utilidades domesticas (lavadoras de roupa e videocassetes).000 ips Comunicação via Redes Locais (LAN) satélite Internet Microondas Redes distribuídas(WAN) Fibra óptica 5 Mips 30 Mips 3. O MSDOS. software.controle de acessos não autorizados e cria sérios problemas com segurança. de automóveis até aviões e sondas espaciais. suas principais características de hardware. Em aplicações não criticas estão os vídeo-games e as aplicações multimídia em geral. Tipos de Sistemas Operacionais 3.2000) IBM 3090 Alpha AXP Pentium Sun SPARC Ultra-LSI Arquiteturas Paralelas Circuto Integrado 3D Processamento Distribuído Linguagens concorrentes Programação funcional Linguagens naturais Redes Locais estendidas (ELAN) Redes sem fio Modelo clienteservidor 1 Gflops 1 Tflops Hardware Válvulas Transistor Tambor Magnético Memória Magnética Tubos de raios catódicos Linguagem Máquina Linguagem assembly Software de Linguagem de Alto Linguagem Nível Estruturadas Processamento Batch Multiprogramação Time-Sharing Computação Gráfica Multiprocessamento Sistemas Especialistas Linguagens orientadas a objetos Telecomunicações Telefone Teletipo Transmissão Digital Desempenho 10 ips 200. Tabela 1 . gerenciando uma mesma CPU. onde destacamos. estão os sistemas militares e o controle de trafego aéreo. em outra extremidade. 12 . Na tabela a seguir dividimos essa evolução em fases.  Sistemas Multiprogramáveis/Multitarefa: usuário executa mais de uma tarefa de cada vez. memória e I/O. Os sistemas monotarefas se caracterizam por permitir que todos os seus recursos fiquem exclusivamente dedicados a uma tarefa. 3.  Processador ocioso.  Preocupação do SO em gerenciar a concorrência no uso de CPU.  Memória e periféricos não eram utilizados em toda sua totalidade  Implementação simples. onde dois ou mais processadores compartilhando uma única memória e controlados por apenas um único SO. e podem ser: * Fortemente acoplado. VMS. Características:  Mais complexos e eficientes.  Vários programas dividindo os mesmos recursos. 13 .2 Sistema multiprogramável/ multitarefas  Substituíram os sistemas monoprogramáveis/monotarefas. o Redução de custos por compartilhar vários recursos. MS VS. * Fracamente acoplado. etc. São exemplos: UNIX. dois ou mais sistemas de computação interligados.1. Vantagens: o Aumento de produtividade de seus usuários. no qual. trabalhando em conjunto.  Sistemas com múltiplos processadores: caracterizam-se por possuir duas ou mais CPUs interligadas. a memória e I/O permanecessem exclusivos a execução de um único programa (Mainframes). sendo que cada sistema possui o seu próprio SO. G-COS. 3.1.1 Sistema monoprogramável/ monotarefa  São voltados a execução de um único programa (JOB)  Outros programas deveriam aguardar o termino do programa corrente para ganhar o processador Características:  Permitiam que o processador. permitindo que dois programas alternem o uso da CPU e de outros recursos.  Normalmente não existem interações com os usuários.  Tarefas Concorrentes. Sistemas Multitarefas: permitem que o usuário edite um texto.Tipos de Sistemas Multiprogramáveis Os sistemas Multiprogramáveis/Multitarefas podem ser classificados em: Sistema BATCH:  Foram os 1º sistemas multiprogramáveis. onde a execução é seqüencial.A partir do numero de usuários que interagem com o sistema. Sist. Linkedições.  Os periféricos e Dispositivos funcionam simultaneamente entre si.: Compiladores. apesar de existir apenas um único usuário interagindo com o sistema (monousuário). Sorts e Backups. Sistemas de Tempo Compartilhado (Timesharing):  Permitem interações do usuário com o sistema. Ex. No mundo dos computadores pessoais e estações de trabalho. Características:  Terem seus programas armazenados em discos e fitas. copie um arquivo pela rede e calcule uma planilha. Multitarefas Sistemas Batch Sistemas Time Sharing Sistemas Real Time Figura 3 . podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário. é possível que ele execute diversas tarefas concorrentemente ou mesmo simultaneamente. imprima um arquivo. 14 . Multiprog.  Conhecidos como sistemas ON-LINE. juntamente com a CPU. controle de tráfego aéreo. aumento de produtividade. Vantagens:  Redução de custos.: Time – Slice é a fatia de tempo que o processador separa para cada processo que deverá ser executado.: controle de válvula de uma subestação petrolífera. Vantagens:  Atualizações instantâneas. OBS. Sistemas de Tempo (Real-time):  Processamento e atualizações instantâneas Ex. controle de usinas nucleares. Tabela 2 – Comparação de Sistemas Monousuários X Multiusuários Monousuário Não há compartilhamento de recursos Um único usuário conectado Gerencia a própria maquina Não há correio eletrônico Multiusuário Há compartilhamento de recursos Mais de um usuário conectado Gerencia remota Há correio eletrônico Sistemas Monoprogramáveis  Somente um programa residente na memória  CPU permanentemente dedicada a execução de um programa  Desperdício na utilização da CPU  Subutilização da memória Sistemas Multiprogramáveis 15 . Desvantagens:  Desenvolvimento complexo.: verificar os arquivos armazenados no disco. Desvantagens:  Desenvolvimento complexo.  Dedicação exclusiva ao processo.Ex. mantém a UCP ocupada até o termino da operação.Controlador Existem duas formas básicas do processador controlar as operações de E/S: 1ª . 16 . além de controlar periféricos e dispositivos de sistema. o controle é desviado para rotina de tratamento da interrupção  Através da interrupção o SO sincroniza a execução de todas as suas rotinas e dos programas de usuário. O tratamento pode ser escrito pelo próprio programa. após a transferência o sistema fica permanente testando o estado do periférico para saber quando a operação termina (busy wait).Controlado por programas.Interrupção  Gerada pelo SO ou por algum dispositivo  Independe do programa que está sendo executado  Quando a interrupção é detectada. . overflow de caracteres. Pode ser resultado da execução de instruções do próprio programa. .A UCP sincroniza-se com o periférico para inicio da transferência dos dados. obrigando a intervenção do sistema operacional. Ex. .Problemas: desperdício de tempo da UCP. gerado pelo sistema operacional ou por algum dispositivo de hardware. . .: Divisão de um número por zero.Exceção Resultado direto da execução de uma instrução do próprio programa. OPERAÇÕES DE ENTRADA/SAÍDA (I/O ou E/S) Controlador ou Interface faz a ligação entre a CPU e os periféricos. O fluxo de execução do programa é desviado para uma rotina especial de tratamento. concorrendo pela utilização da CPU  A CPU permanece menos tempo ociosa  Memória utilizada de forma mais eficiente INTERRUPÇÃO E EXCEÇÃO Eventos que podem ocorrer durante o processamento de um programa. Vários programas podem estar residentes em memória.  Canal E/S realiza a execução e ao final gera uma interrupção avisando o término da operação. ou a CPU poderá processar diversos registros antes de o dispositivo de saída realizar a gravação. Um exemplo em impressoras. a UCP fica livre para se ocupar de outras tarefas. Desta forma. a técnica de spooling é implementada na maioria dos sistemas operacionais.Técnicas de Spooling Sistema Operacional Impressão 17 .Canais de E/S  Canais de E/S é um processador com capacidade de executar programas de E/S. SPOOLING Foi introduzido para aumentar a produtividade e eficiência dos sistemas operacionais. Atualmente. de modo a permitir que existam dados lidos no buffer mas ainda não processados.Após o inicio da transferência dos dados. o dispositivo de entrada poderá ler diversos registros antes que a CPU os processe.2ª .  A UCP realiza uma operação de E/S instruindo o canal para executar um programa localizado na memória. ou ainda não gravados. Programa Arquivo de Spool Figura 4 . para ser impresso posteriormente pelo sistema.Problema: se existir um grande numero de periféricos o SO terá que interromper o processamento dos programas para testar os diversos periféricos. .  As instruções de E/S são armazenadas na memória principal pela UCP. Em determinados intervalos de tempo o SO deve realizar um teste para saber do termino ou não da operação de E/S em cada dispositivo (polling). BUFFERING A técnica de buffering consiste na utilização de uma área da memória para a transferência de dados entre periféricos e a memória principal denominado buffer (memória secundária). . no momento em que um comando de impressão é executado por um programa. Este processo permitia armazenar vários programas em uma fita para depois processá-los. O buffer possui a capacidade de armazenar diversos registros. as informações que serão impressas são gravadas em um arquivo de disco (arquivos de spool). fazendo com que tanto a CPU quanto os dispositivos de E/S sejam aproveitados de forma mais eficiente. Fator-Chave: é a forma de comunicação entre as CPUs. dispositivos de E/S e UCP. trabalhando em conjunto. permite que cada usuário manipule dados próprios. Todo sistema implementa algum tipo de proteção ao diversos recursos que são compartilhados. exigindo que apenas uma cópia do programa esteja na memória.  Controlados por um único sistema Operacional. 3.Sistemas com Múltiplos Processadores Sistemas Fortemente Acoplados:  Possuem dois ou mais processadores compartilhando uma única memória. Dividem-se em simétricos e assimétricos: 18 . Sist. Com Múltiplos Processadores Fortemente Acoplados Fracamente Acoplados Simétricos Assimétricos Redes Distribuídos São classificados em: Figura 5 . O código não pode ser mudado por nenhum usuário no momento em que está sendo executado.3 Sistemas com múltiplos processadores Possuem duas ou mais vias de CPUs interligadas.REENTRÂNCIA Capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários. o grau de compartilhamento da memória e I/O. PROTEÇÃO Essencial em sistemas multiprogramáveis para garantir a integridade dos pertencentes a cada usuário. como memória. Comum em sistemas multiprogramáveis.1. R.O. o Gerencia remota. o Emulação de terminal. o hardware resolve os conflitos de acesso a uma mesma unidade. . .Memória Multiport Possibilita os acessos simultâneos a um modulo de memória. . Problema: Somente uma unidade funcional poderá estar utilizando o Barramento. É possível a comunicação simultânea entre diferentes unidades funcionais. Simétrico: Processadores com mesma função. (Sistema Operacional de Rede) Cada nó possui seu próprio SO e possibilitam o compartilhamento de recursos além de outras funções como: o Cópia remota de arquivos.Barramento Cruzado Para evitar o problema de gargalo (no barramento) as unidades podem ser conectados entre si. Paralelismo (programa executado por vários processadores ao mesmo tempo). 19 . Somente um processador Poe executar serviços do sistema operacional. Sistemas Fracamente Acoplados:  Possuem dois ou mais sistemas de computação conectados através de linhas de comunicação.Assimétrico: Processador Mestre/Escravo (Master e Slave). .  Cada sistema possui seus próprios processadores.  Cada sistema possui seu próprio SO. IMPORTANTE: a CPU não pode ter acesso simultâneo à uma mesma unidade de memória. gerenciando seus próprios recursos.Barramento Comum Interliga todos os componentes em um único barramento. o Impressão remota. memória e I/O. o Correio eletrônico. memória e dispositivos.S. Organização Funcional É o esquema de comunicação interna das CPUs. De rede: um sistema operacional de rede deve possuir suporte à operação em rede. Além disso. podendo possuir SOs diferentes.2 Alguns Tipos de Sistemas Operacionais Batch (de lote): os sistemas operacionais mais antigos trabalhavam “por lote”. o termo “em lote” também é usado para designar um conjunto de comandos que deve ser executado em seqüência.Barramento Utilizadas em redes locais.: Novell. sem interferência do usuário. Atualmente. os recursos de cada máquina estão disponíveis globalmente. de forma transparente aos usuários.Organização Distribuída Linhas de comunicação ponto-a-ponto (Internet). A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade. 3.: Windows NT. como os sistemas de processamento de transações em bancos de dados. Win 98. . Ao lançar uma aplicação. ou seja. como arquivos e impressoras. Exemplos desses sistemas incluem o OS/360 e VMS.Cada nó é totalmente independente do outro. . O processador recebia os programas e os processava sem interagir com os usuários. todos os programas a executar eram colocados em uma fila. . Ele também deve disponibilizar seus recursos locais aos demais computadores. com seus dados e demais informações para a execução. este conceito se aplica a sistemas que processam tarefas sem interação direta com os usuários. Ex. Lantastic. mas não sabe onde ela está executando ou armazenando seus arquivos: o 20 . entre outros. a capacidade de oferecer às aplicações locais recursos que estejam localizados em outros computadores da rede. o usuário interage com sua janela. de forma controlada. o que permitia um alto grau de utilização do sistema.SO Distribuído Relacionamento forte entre os seus componentes. onde geralmente os SOs são os mesmos. Distribuído: em um sistema operacional distribuído. Organização Funcional A organização funcional dos sistemas fracamente acoplados ou topologia define como são interligadas fisicamente os diversos sistemas de rede. Linux. Ex. ou seja. conexões de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados. fornos-microondas. um sistema operacional de tempo real não precisa ser necessariamente ultra-rápido. Exemplos de sistemas operacionais embutidos são o _C/OS. TVs. processadores). Caso o sistema se atrase. processos. com graves conseqüências humanas. Grande parte dos sistemas atuais são multi-usuários. como tempos de acesso a disco e sincronizações excessivas. navegação na Internet e reprodução de mídias simples. Desktop: um sistema operacional “de mesa” é voltado ao atendimento do usuário doméstico e corporativo para a realização de atividades corriqueiras. A estrutura interna de um sistema operacional de tempo real deve ser construída de forma a minimizar esperas e latências imprevisíveis. Existem duas classificações de sistemas de tempo real: soft real-time systems. Aplicações típicas desse tipo de sistema aparecem em telefones celulares. Xylinx. sua característica essencial é ter um comportamento temporal previsível (ou seja. Normalmente um sistema operacional servidor também tem suporte a rede e multi-usuários. Exemplos de sistemas desktop são: Windows XP. memória. Multi-usuário: um sistema operacional multi-usuário deve suportar a identificação do “dono” de cada recurso dentro do sistema (arquivos. áreas de memória. Muitas vezes um sistema operacional embutido se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicação (que é fixa). Um exemplo seria o suporte à gravação de CDs ou à reprodução de músicas. nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado. LynxOS e VxWorks. Por outro lado. Tempo real (real time): ao contrário da concepção usual. centrais de alarme. de forma transparente. Essa funcionalidade é fundamental para a segurança dos sistemas operacionais de rede e distribuídos. econômicas ou ambientais. MacOS X e Linux. por exemplo). armazenamento e energia.). controladores industriais e automotivos. Embutido: um sistema operacional é dito embutido (embedded) quando é construído para operar sobre um hardware com poucos recursos de processamento. Os sistemas operacionais distribuídos já existem há tempos (Amoeba e Clouds. Servidor: um sistema operacional servidor deve permitir a gestão eficiente de grandes quantidades de recursos (disco. como edição de textos e gráficos. mas ainda não são uma realidade de mercado. impondo prioridades e limites sobre o uso dos recursos pelos usuários e seus aplicativos. etc. o suporte à interatividade e a operação em rede.sistema é quem decide. pode ocorrer a perda da mídia em gravação ou falhas na música que está sendo tocada. equipamentos eletrônicos de uso doméstico (leitores de DVD. Exemplos desse tipo de sistema seriam o 21 . Sua principais características são a interface gráfica. nos quais a perda de prazos implica na degradação do serviço prestado. seu tempo de resposta deve ser conhecido no melhor e pior caso de operação). faz com que a execução do programa seja retomada a partir de instruções que segue a chamada. RT-Linux e VxWorks. Arquitetura do SO é a imagem que o usuário tem do sistema. Os programas solicitam serviços ao SO através das chamadas de sistema (System Calls). A lista de serviços do SO é transformada em uma lista de chamadas de sistema (manual do SO). A parte do SO responsável por implementar as chamadas de sistemas é chamada Núcleo ou Kernel.  Sincronização e comunicação entre processos. enquanto as chamadas de sub-rotinas são transferência para procedimentos normais do programa.  Gerencia de memória. Exemplos de sistemas de tempo real incluem o QNX.  Contabilização de segurança do sistema. O programador de Assembly chama as sub-rotinas de biblioteca. O programa informa o que necessita através de parâmetros. o sistema estável e operante.  Operações de I/O. . e vice-versa. mando assim. 4.  Gerencia do sistema de arquivos.System Calls Responsáveis por não permitir que a aplicação/usuário acessem diretamente o Kernel do SO.controle de funcionamento de uma turbina de avião a jato ou de uma caldeira industrial. Esse conjunto de rotinas é chamado de kernel (núcleo). Semelhante as chamadas de sub-rotinas. Dentre as principais funções do núcleo pode-se enumerar:  Tratamento de interrupções. esta é formada pelas chamadas de sistema e pelos programas de sistema. as chamadas de sistema transferem a execução para o SO. Estas chamadas à system calls por determinada aplicação é similar à um programa modularizado ativando um de seus procedimentos ou funções.  Criação e eliminação de processos. Muitos sistemas embutidos têm características de tempo real. Estrutura de Sistemas Operacionais O SO é estruturado por um conjunto de rotinas que oferecem serviços aos usuários do sistema e suas aplicações. O retorno da chamada de sistema e da sub-rotina. Os principais componentes do Kernel são: 22 .  Escalonamento e controle dos processos. alteração das características do processo. muitos SO são implementados em camadas.  Gerência de memória: Alocação e deslocação de memória. Hoje você pode usar o SO de um fornecedor e compilador montadores4. compiladores faziam parte dos programas de sistema fornecidos com o SO. 3 de outros. sh) e o do DOS é o Command. é responsável por interpretar as instrucoes enviadas pelo usuário e seus programas ao SO (o Kernel). Ele executa comandos de um arquivo executável. um pequeno componente de software chamado micronúcleo ou microkernel implementa serviços mais básicos do SO e usando seus serviços o Kernel implementa os demais. memória virtual. 23 . Pode exigir uma ou mais chamadas de sistema. Serviços do Kernel: sistema de arquivos. asch. Assim. assim como 3 Compilador é um programa de sistema que traduz um programa descrito em uma linguagem de alto nível para um programa equivalente em código de maquina para o processador (assembly). ele recebe as linhas tecladas e analisa o conteúdo e executa o comando teclado. Manipulação de arquivos e diretórios. Interpretador de comandos. tcsh. O GNU/Linux possui diversos interpretadores de comando (bash.com. Para isso. Devido a complexidade do Kernel. Os programas de sistema (utilitários) são programas normais fora do Kernel e fazem chamadas de sistema assim como os aplicativos. alocação e liberação de memória física e instalação de novos tratadores de dispositivos. Figura 6 . Na década de 60. também conhecido como “shell”. interpretadores e editores de texto.Organização do Sistema Serviços do MicroKernel: gerencia do processador. sincronização e comunicação entre processos.  Gerência de entrada e saída (E/S): Operações de E/S. 4 5 O Montador traduz linguagem assembly para linguagem de maquina (em inglês Assembrer). Exemplo: compiladores Java e C++. protocolos de comunicação. Gerência de processos: Criação e eliminação de processos. O programa de sistema Interpretador 5 de comandos é ativado pelo SO sempre que o usuário inicia sua sessão de trabalho. csh. Sua tarefa é receber comandos do usuário e executá-los. não apresentam a mesma forma de ligação entre as partes. suspender e retomar. ou seja. dizendo assim que uma chamada de sistema foi concluída. o usuário trabalha com programas distantes do SO e sua opinião a respeito do sistema irá depender dos programas que utiliza.O SO oferece uma interface gráfica de usuário (GUI . o SO envia comandos para os controladores de periféricos. Na maior parte do tempo. Isso é feito por intermédio de uma interrupção que acontece quando o processador para o que esta fazendo e passa a executar uma rotina especifica do SO.  Modo Kernel: aplicação executa instrução privilegiada. Contudo. que passa a usar ícones. Para que uma aplicação possa realizar uma instrução privilegiada (que compromete o sistema) são implementados pelo processador os modos de acesso:  Modo Usuário: aplicação executa instrução não-privilegiada. 4. menus e mouse no lugar de digitar comandos textuais. liberando o processador para o programa que estava a espera. os sistemas operacionais modernos geralmente possuem as seguintes partes: Gerenciamento de processos: Criar e eliminar. A interrupção do periférico avisa o termino da operação de E/S.Modos de Acesso Operações como I/O e gerencia de memória são arriscadas e podem causar uma instabilidade no SO.1 Estrutura Logicamente. evitando que uma aplicação monopolize esse recurso e respeitando as prioridades dos usuários. Com o SO o usuário final obtêm maior eficiência e conveniência no uso do computador. Por meio destas. 24 . . Normalmente o processador esta executando programas de usuário.Graphical User Interface) que possibilita mais comodidade ao usuário. visa distribuir a capacidade do processamento de forma justa entre as aplicações. O controlador deve informar ao SO quando a operação estiver concluída. Mas há 2 tipos de eventos que ativam o SO: uma chamada de sistema ou uma interrupção de periféricos. nem todos os sistemas têm a mesma estrutura. por isso aplicações não devem realizar este tipo de tarefa. sincronismo e comunicação entre processos. A chamada de sistema corresponde a uma solicitação de serviço por parte do programa em execução. a gerência do processador depende de aspectos da gerência de memória. tratam o interpretador de comandos como um programa especial que é executado quando uma sessão é iniciada. Alguns SO’s incluem este programa no próprio núcleo (kernel).Gerenciamento da memória principal: Manter o controle das partes da memória que estão sendo usadas e por quem. Gerenciamento de Entrada/Saída: tem a função de implementar a interação com cada dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar vários dispositivos distintos sob a mesma interface de acesso. Gerenciamento de arquivos: Criar e eliminar arquivos e diretórios. Interpretador de comandos: Um dos mais importantes programas do SO é o interpretador de comandos. como o DOS e o UNIX. 4. Networking: Em um sistema distribuído (fracamente acoplado) cada processador tem sua própria memória e seus processadores que se comunicam através do SO.2 Funcionalidades As funcionalidades do sistema operacional geralmente são inter-dependentes: por exemplo. Proteção do sistema: Se um sistema é multiusuário e permite múltiplos processos concorrentes. Já outros sistemas. manter mapeamento dos arquivos em disco. que serve de interface entre o usuário e o SO. 25 . assim como a gerência de memória depende da gerência de dispositivos e da gerência de proteção. Com isso. scheduling de disco. estes processos devem ser protegidos de outras atividades. Gerenciamento de memória secundária: O SO é responsável pelas atividades de alocação de espaço livre. melhor dizendo. decidir que processos serão carregados para memória quando houver espaço disponível. A comunicação entre eles deve considerar roteamento e estratégias de conexão. um sistema operacional fornece um ambiente para execução. fornece serviços para os programas e também para os usuários desses programas. alocar e desalocar espaço de memória quando necessário. portas USB. SCSI. interpretador de comandos. placas de vídeo. responsável pela gerência dos recursos do hardware usados pelas aplicações. Programas utilitários: são programas que facilitam o uso do sistema computacional.Figura 7 . Outra tarefa importante é carregar o núcleo do sistema operacional em memória e iniciar sua execução. Muitas vezes o driver é construído pelo próprio fabricante do hardware e fornecido em forma compilada (em linguagem de máquina) para ser acoplado ao restante do sistema operacional. fornecendo funcionalidades complementares ao núcleo. etc.Funcionalidades do Sistema Operacional Alguns dos componentes mais relevantes de um sistema operacional típico são: Núcleo: é o coração do sistema operacional. apagar). testá-los e configurá-los adequadamente para seu uso posterior. etc. 26 . Drivers: módulos de código específicos para acessar os dispositivos físicos. terminal. manipulação de arquivos (mover. Ele também implementa as principais abstrações utilizadas pelos programas aplicativos. Código de inicialização: a inicialização do hardware requer uma série de tarefas complexas. interface gráfica. como formatação de discos e mídias. gerência de janelas. copiar. configuração de dispositivos. como discos rígidos IDE. Existe um driver para cada tipo de dispositivo. como reconhecer os dispositivos instalados. o que acabaria desestabilizando o sistema inteiro. Esses níveis são controlados por flags especiais nos processadores. Na forma mais simples desse esquema. os utilitários e os aplicativos devem ter acesso mais restrito a ele. para poder configurá-lo e gerenciá-lo. fornecendo-os às aplicações conforme suas necessidades. Para assegurar a integridade dessa gerência. Todavia. drivers. embora a maioria dos sistemas operacionais construídos para esse processador só use os níveis extremos (0 para o núcleo e drivers do sistema operacional e 3 para utilitários e aplicações). os processadores modernos contam com dois ou mais níveis de privilégio de execução. diretórios e áreas de memória). Mas como impedir as aplicações de acessar o hardware diretamente? Núcleo. para não interferir nas configurações e na gerência. conta com 4 níveis de privilégio (sendo 0 o nível mais privilegiado). é essencial garantir que as aplicações não consigam acessar o hardware diretamente. devem ser diferenciados em sua capacidade de interagir com o hardware: enquanto o núcleo e os drivers devem ter pleno acesso ao hardware.Figura 8 . por exemplo.Estrutura de um sistema operacional 4. e as formas de mudança de um nível de execução para outro são controladas estritamente pelo processador. Além disso. aplicações com acesso pleno ao hardware tornariam inúteis os mecanismos de segurança e controle de acesso aos recursos (tais como arquivos. mas sempre através de pedidos ao sistema operacional.3 Proteção do núcleo Um sistema operacional deve gerenciar os recursos do hardware. O processador Pentium. podemos considerar dois níveis básicos de privilégio: 27 . que avalia e intermedeia todos os acessos ao hardware. Para permitir diferenciar os privilégios de execução dos diferentes tipos de software. utilitários e aplicações são constituídos basicamente de código de máquina. Além disso. enquanto os utilitários e as aplicações operam no nível usuário. provê robustez e confiabilidade ao sistema. Entretanto. essa proteção introduz um novo problema: como chamar. monitor ou ainda kernel space. 28 . imposto pelos mapeamentos de memória realizados pela MMU (Unidade de Gerência de Memória . que resultam na ativação de uma rotina de tratamento de exceção. o hardware irá gerar uma exceção6. sistema. 6 As exceções ocorrem em eventos como instruções ilegais ou não existentes. as rotinas oferecidas pelo núcleo para o acesso ao hardware e suas abstrações? A resposta a esse problema está no mecanismo de interrupção. o processador entra em operação neste nível. Quando um controlador de periférico tem uma informação importante a fornecer ao processador. Nível usuário (ou userspace): neste nível. registradores e portas de entrada/saída estão disponíveis. que provavelmente irá abortar o programa em execução (e também gerar a famosa frase “este programa executou uma instrução ilegal e será finalizado”. 4. Instruções “perigosas” como HALT (parar o processador) e RESET (reiniciar o processador) são proibidas para todo código executando neste nível. todo o processador está acessível: todos os recursos internos do processador (registradores e portas de entrada/saída) e áreas de memória podem ser acessados. confinados em áreas de memória distintas. usando o mesmo mecanismo das interrupções. o que poderá ser demorado caso o processador esteja ocupado com outras tarefas (o que geralmente ocorre). garantindo que uma aplicação não poderá interferir nas áreas de memória de outras aplicações ou do núcleo. Caso o código em execução tente executar uma instrução proibida ou acessar uma área de memória inacessível. ele tem duas alternativas de comunicação:  Aguardar até que o processador o consulte. somente um sub-conjunto das instruções do processador. o núcleo e os drivers operam no nível núcleo. em um sistema operacional convencional. Para um código executando nesse nível. É fácil perceber que. no caso do Windows).4 Interrupções e Chamadas de Sistemas O confinamento de cada aplicação em sua área de memória. Além disso. permitindo o acesso somente a áreas previamente definidas. todas as instruções do processador podem ser executadas. tais como tentativa de divisão por zero ou outros erros de software disparam exceções no processador. a partir de uma aplicação. desviando a execução para uma rotina de tratamento dentro do núcleo. o hardware restringe o uso da memória.Nível núcleo: também denominado nível supervisor.Memory Management Unit) nos acessos em nível usuário. Ao ser ligado. 29 . Essa rotina é responsável por tratar a interrupção. O roteiro de ações ocorre a cada requisição de interrupção recebida pelo processador. Processadores modernos oferecem instruções específicas para entrar/sair do modo privilegiado e também um conjunto de registradores específicos para essa operação. Cada interrupção geralmente corresponde a um evento ocorrido em um dispositivo periférico: a chegada de um pacote de rede. operadores de sincronização e comunicação. Por isso. Geralmente as chamadas de sistema são oferecidas para as aplicações em modo usuário através de uma biblioteca do sistema (system library). alocação de memória. que prepara os parâmetros. com custo menor que o tratamento de uma interrupção. esse mecanismo é denominado interrupção de software ou trap. etc). Os processadores implementam uma instrução especial que permite acionar o mecanismo de interrupção de forma intencional. Os sistemas operacionais definem chamadas de sistema para todas as operações envolvendo o acesso a recursos de baixo nível (periféricos. as rotinas de tratamento de interrupção devem ser curtas e realizar suas tarefas rapidamente (para não prejudicar o desempenho do sistema). arquivos. essa instrução comuta o processador para o nível privilegiado e procede de forma similar ao tratamento de uma interrupção. etc. Ao ser executada. Isso representa centenas ou mesmo milhares de interrupções recebidas por segundo. Ao final da rotina de tratamento da interrupção. etc) ou abstrações lógicas (criação e finalização de tarefas. onde se encontra uma rotina de tratamento de interrupção (interrupt handler). uma operação concluída pelo controlador de disco. o que permite a transferência rápida do controle para o núcleo. executar as ações necessárias para atender o dispositivo que a gerou. enviando a ele uma requisição de interrupção (IRQ – Interrupt ReQuest). Notificar o processador através do barramento de controle. dependendo da carga e da configuração do sistema (número e natureza dos periféricos). os circuitos do processador suspendem seu fluxo de execução corrente e desviam para um endereço pré-definido. A ativação de procedimentos do núcleo usando interrupções de software (ou outros mecanismos correlatos) é denominada chamada de sistema (system call ou syscall). um click no mouse. ou seja. invoca a interrupção de software e retorna à aplicação os resultados obtidos. sem depender de eventos externos ou internos. Por essa razão. Ao receber a requisição de interrupção. o processador retoma o código que estava executando quando recebeu a requisição. verifica a validade de cada um deles e realiza (ou agenda para execução posterior) a operação desejada pela aplicação. No nível usuário. a rotina de tratamento da interrupção de software passa o controle para a gerência de atividades.Figura 9 . por exemplo. 5. 2. ela escreve o código da chamada de sistema. Em outro registrador.Roteiro típico de uma chamada de sistema A figura a acima ilustra o funcionamento básico de uma chamada de sistema (a chamada read. eventuais valores de retorno são escritos na área de memória da aplicação e o processamento retorna à função read. Os seguintes passos são realizados: 1. 7. 3. Caso a operação solicitada não possa ser realizada imediatamente. ao invés de retornar diretamente da interrupção de software para a aplicação solicitante. sempre é invocada a interrupção 80h). A rotina obtém o endereço dos parâmetros. 6. Ao final da execução da rotina. Isto ocorre. a aplicação invoca a função read da biblioteca de sistema. A função read invoca uma interrupção de software (no caso do Linux. 4. O processador comuta para o nível privilegiado (kernel level) e transfere o controle para a rotina apontada pela entrada 80h do vetor de interrupções. quando é solicitada a leitura de uma entrada do teclado. A função read finaliza sua execução e retorna o controle à aplicação. em modo usuário. que lê dados de um arquivo previamente aberto). 30 . A função read preenche uma área de memória com os parâmetros recebidos e escreve o endereço dessa área em um registrador da CPU. 8. O conjunto de chamadas de sistema oferecidas por um núcleo define a API (Application Programming Interface) desse sistema operacional. e cuja operação solicitada já tenha sido concluída. porque as dependências e pontos de interação entre os componentes podem não ser evidentes: pequenas alterações na estrutura de dados 31 . sem restrições de acesso entre si. Caso um componente do núcleo perca o controle devido a algum erro. Aplic. a manutenção e evolução do núcleo se tornam mais complexas. a arquitetura monolítica pode pagar um preço elevado por seu desempenho: a robustez e a facilidade de desenvolvimento. A interação direta entre componentes também leva a sistemas mais compactos. Todavia. SYSTEM CALLS HARDWARE Figura 10 . toda a memória ou mesmo dispositivos periféricos diretamente.5 Sistemas monolíticos São os mais comuns de serem encontrados. pois não há barreiras impedindo esse acesso. esse problema pode se alastrar rapidamente por todo o núcleo. 4.Sistemas Monolíticos Em um sistema monolítico. Na seqüência. A maioria dos sistemas operacionais implementa centenas de chamadas de sistema distintas. todos os componentes do núcleo operam em modo núcleo e se inter-relacionam conforme suas necessidades. reinicialização ou funcionamento errático). a gerência de atividades devolve o controle do processador a outra aplicação que também esteja aguardando o retorno de uma interrupção de software.9. pois o código no nível núcleo tem acesso pleno a todos os recursos e áreas de memória. levando o sistema ao colapso (travamento. Além disso. A grande vantagem dessa arquitetura é seu desempenho: qualquer componente do núcleo pode acessar os demais componentes. Aplic. podem ser comparados a uma aplicação formada por vários procedimentos compilados separadamente e linkados formando um único e grande executável. para as mais diversas finalidades. A arquitetura monolítica foi a primeira forma de organizar os sistemas operacionais. apenas sistemas operacionais embutidos usam essa arquitetura. No entanto. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos. enquanto as camadas intermediárias provêem níveis de abstração e gerência cada vez mais sofisticados. prejudicando o desempenho do sistema. alguns inconvenientes limitam sua aceitação nesse contexto:  O empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o dispositivo periférico ou recurso a ser acessado. O primeiro sistema em camadas foi criado pelo Holandês Dijkstra.de um componente podem ter um impacto inesperado em outros componentes.Sistemas em Camadas Uma forma mais elegante de estruturar um sistema operacional faz uso da noção de camadas: a camada mais baixa realiza a interface com o hardware. mas vem sendo paulatinamente estruturado e modularizado desde a versão 2. 4. devido às limitações do hardware sobre o qual executam. caso estes acessem aquela estrutura diretamente. 5 4 3 2 1 0 Operador Programas de Usuários I/O Comunicação Gerência de Memória Multiprogramação Figura 11 . a camada superior define a interface do núcleo para as aplicações (as chamadas de sistema). sistemas UNIX antigos e o MS-DOS seguiam esse modelo. através do modelo de referência OSI (Open Systems Interconnection). Essa abordagem de estruturação de software fez muito sucesso no domínio das redes de computadores.0 (embora boa parte de seu código ainda permaneça no nível de núcleo). e também seria de se esperar sua adoção no domínio dos sistemas operacionais.6 Sistemas em Camadas Um sistema em camada divide o SO em camadas sobrepostas. Por fim. O núcleo do Linux nasceu monolítico. Atualmente. 32 . este sistema era composto de seis camadas e foi posteriormente chamado de MULTICS (futuro UNICS – UNIX). serviços de criação de processos. a que atende a solicitação é chamada de servidor.MEM SERV. implementada no Windows NT e seus sucessores). troca de mensagens entre o cliente e o servidor. dentre outros. É função do kernel do sistema realizar a comunicação. pois essas funcionalidades são inter-dependentes. CLIENTE SERV. deixando no núcleo somente o código de baixo nível necessário para interagir com o hardware e criar as abstrações fundamentais (como a noção de atividade). o sistema é dividido em processos. Muitos sistemas implementam uma camada inferior de abstração do hardware para interagir com os dispositivos (a camada HAL – Hardware Abstraction Layer. Por exemplo. ela solicita ao processo responsável. 4. embora tratem muitas vezes de recursos distintos. a estruturação em camadas é apenas parcialmente adotada hoje em dia. enquanto as abstrações de arquivo e diretório seriam 33 . A aplicação que solicita o serviço é chamada de cliente. ou seja. Não é óbvio como dividir as funcionalidades de um núcleo de sistema operacional em camadas horizontais de abstração crescente. Em decorrência desses inconvenientes. Sempre que a aplicação deseja algum serviço. como.7 Sistemas Micronúcleo (Cliente-Servidor) Os SOs modernos seguem a tendência de minimizar o tamanho do seu núcleo. usando essa abordagem o código de acesso aos blocos de um disco rígido seria mantido no núcleo. sendo cada um responsável por oferecer um conjunto de serviços. serviços de arquivo. Para implementar esta ideia.ARQ SERV. e também organizam em camadas alguns sub-sistemas como a gerência de arquivos e o suporte de rede (seguindo o modelo OSI).Sistemas Cliente-Servidor Uma outra possibilidade de estruturação consiste em retirar do núcleo todo o código de alto nível (normalmente associado às políticas de gerência de recursos). serviços de escalonamento de processos. serviços de memória. Como exemplos de sistemas fortemente estruturados em camadas podem ser citados o IBM OS/2 e o MULTICS.REDE NÚCLEO HARDWARE Figura 12 . sobretudo em sistemas embutidos e de temporeal. respeitando o conjunto de instruções do processador e o conjunto de chamadas do sistema operacional. envia uma mensagem para o gerente de arquivos que.criadas e mantidas por um código fora do núcleo. o sistema de arquivos e o controle de acesso aos recursos são implementados fora do núcleo. o custo associado às trocas de mensagens entre componentes pode ser bastante elevado. as interações entre componentes e aplicações são feitas através de trocas de mensagens. Por fazer os núcleos de sistema ficarem menores. Um micro-núcleo normalmente implementa somente a noção de atividade. por sua vez. o MacOS X da Apple tem suas raízes no sistema Mach. essa abordagem foi denominada micronúcleo (ou kernel). o que prejudica seu desempenho e diminui a aceitação desta abordagem. essa abordagem também foi denominada cliente-servidor. impedindo que a instabilidade se alastre ao restante do sistema. devido às restrições impostas pelos mecanismos de proteção do hardware. iniciando somente os componentes necessários ou escolhendo os componentes mais adequados às aplicações que serão executadas. Os processos não podem se comunicar diretamente. se uma aplicação deseja abrir um arquivo no disco rígido. Vários sistemas operacionais atuais adotam parcialmente essa estruturação. 34 . O QNX é um dos poucos exemplos de micro-núcleo amplamente utilizado. Além disso. ocorrendo o mesmo com o Digital UNIX. As principais vantagens dos sistemas micronúcleo são sua robustez e flexibilidade: caso um sub-sistema tenha problemas. Como os processos têm de solicitar “serviços” uns dos outros. Todos os aspectos de alto nível. todas as mensagens são transmitidas através de serviços do micro-núcleo. 4. é necessário que tenham sido compilados para ela. de espaços de memória protegidos e de comunicação entre atividades. O micro-núcleos foram muito investigados durante os anos 80. Dois exemplos clássicos dessa abordagem são os sistemas Mach e Chorus. executando da mesma forma que uma aplicação do usuário. Por isso. Em um sistema micro-núcleo. por exemplo. como políticas de uso do processador e da memória. se comunica com o gerente de dispositivos para obter os blocos de dados relativos ao arquivo desejado. para poder realizar suas tarefas. em processos que se comunicam usando as primitivas do núcleo. os mecanismos de proteção de memória e níveis de privilégio irão confiná-lo.8 Máquinas Virtuais Para que programas e bibliotecas possam executar sobre uma determinada plataforma computacional. Todavia. é possível customizar o sistema operacional. Assim. as interfaces de baixo nível são pouco flexíveis: geralmente não é possível criar novas instruções de processador ou novas chamadas de sistema. também denominado sistema convidado (guest system). ou mudar sua semântica.Da mesma forma. que executa sobre o sistema virtualizado. de forma que um programa desenvolvido para uma plataforma A possa executar sobre uma plataforma distinta B.Virtual Machine Monitor). uma biblioteca só funciona sobre o hardware e sistema operacional para os quais foi projetada e as aplicações também têm de obedecer a interfaces pré-definidas.Uma Maquina Virtual Um ambiente de máquina virtual consiste de três partes básicas:   O sistema real. 35 . é possível construir uma camada de software que ofereça aos demais componentes serviços com outra interface. é possível contornar os problemas de compatibilidade entre os componentes de um sistema através de técnicas de virtualização. Usando os serviços oferecidos por um determinado componente do sistema. um sistema operacional só funciona sobre o hardware para o qual foi construído. denominada hipervisor ou monitor de virtualização (VMM . que constrói as interfaces virtuais a partir da interface real. O sistema computacional visto através dessa camada é denominado máquina virtual.  A camada de virtualização. um sistema operacional só poderá executar sobre uma plataforma de hardware se for compatível com ela. em alguns casos. Essa camada permitirá assim o acoplamento entre interfaces distintas. Nos sistemas atuais. vários sistemas virtuais podem coexistir. O sistema virtual. ou sistema hospedeiro (host system). Todavia. Por isso. executando sobre o mesmo sistema real. Figura 13 . que contém os recursos reais de hardware e software do sistema. os dados em uso.  Uma atividade assíncrona. mesmo que improváveis. tendo duração finita e utilizando uma quantidade limitada de recursos computacionais. podemos entender um processo como um programa em execução. Desta forma. ou seja. Processos Computacionais Um processo computacional ou simplesmente processo pode ser entendido como uma atividade que ocorre em meio computacional. para depois executar outro programa por outro pequeno intervalo de tempo e assim sucessivamente. algumas vezes. 36 . isto é. o processador estará executando apenas um dado programa.  O espírito ativo de um procedimento. ao mesmo tempo conferindo-lhe complexa organização e estrutura. o processador executa um programa durante um pequeno intervalo de tempo. Este comportamento é. em pequenos intervalos de tempo. e pode assumir um dos seguintes significados:  Um programa em execução. pois tal administração não é simples e requer a consideração de muitos fatores e situações diferentes. O termo processo (process) é muitas vezes substituído pelo termo tarefa (task). os registradores do processador. Em computadores com dois ou mais processadores é possível a existência de paralelismo verdadeiro. foi utilizado pela primeira vez no desenvolvimento do MULTICS. mas durante um intervalo de tempo maior ele poderá ter executado trechos de muitos programas criando a ilusão de paralelismo. sua pilha (stack) e o contador de programa além de outras informações relacionadas a sua execução. o processador é chaveado de processo em processo.5. usualmente possuindo um objetivo definido. Todas as atividades. Atualmente quase todos os computadores são capazes de realizar diversas tarefas ao mesmo tempo.  O “controle local” de um procedimento em execução. o que envolve o código do programa. pois cada processador pode executar um processo independentemente. Num instante de tempo qualquer. na década de 60. chamado de paralelismo virtual ou pseudoparalelismo. manuais ou automáticas. onde cada uma destas tarefas pode representar um ou mais processos. A administração de vários diferentes programas em execução concomitante é o que permite o funcionamento eficiente dos computadores modernos. a compilação de um programa ou a execução de uma rotina qualquer. temos que a impressão de um documento é um processo computacional assim como a cópia de um arquivo. que ocorrem dentro de um computador podem ser descritas como processos computacionais. Para funcionarem desta forma tais computadores são multiprogramados. Então. É importante estudarmos os processos computacionais porque a razão de ser dos computadores é a realização de certas atividades de maneira mais rápida e confiável do que seria possível para o homem. Outro ponto importante é que os processos computacionais podem ser divididos em subprocessos. O nível adequado de divisão de um processo é aquele que permite um entendimento preciso dos eventos em estudo. ou seja. até o exagerado limite das micro-instruções do processador que será utilizado. para que um sistema operacional possa cumprir com seu papel de gerente de recursos de um sistema computacional é fundamental um entendimento mais profundo dos processos computacionais e de suas particularidades como forma efetiva de criar-se sistemas operacionais capazes de lidar com as exigências dos processos em termos de recursos. o que permite um detalhamento da de sua tarefa ou do seu modo de operação. podem ser decompostos em processos componentes mais simples que o processo como um todo. O processo criador é chamado de processo-pai (parent process) enquanto os processos criados são denominados de processos filhos (child process). O PCB (Process Control Block) O PCB é uma estrutura de dados que contem importantes informações sobre os processos Ponteiro Estado do Processo Nome do Processo Prioridade do Processo Registradores Limites de Memória Lista de Arquivos Abertos Figura 14 . Um processo filho também pode criar novos processos. permitindo a criação de árvores de processos hierarquicamente relacionados. a ocorrência de processos significa a utilização de recursos do computador. Esta análise aprofundada dos processos através de sua decomposição em sub-processos pode ser feita quase que indefinidamente. ou seja. Como cada processo precisa de recursos para ser executado e concluído. depende do tipo de problema em questão e também da solução pretendida. 5. Processos também podem criar novos processos.Bloco de Controle de Processo 37 .1 incluso. Entidade para o qual o processador está dedicado. Sendo assim. no máx. tamanho máx. Pelo motivo dos PCBs precisarem ser manipulados rapidamente pelo SO. contém registradores que sempre mostram ao PCB qual o processo em execução. CONTEXTO DE HARDWARE Constitui-se basicamente do conteúdo dos registradores. de informações. dentre outros. . podendo ser interrompido e recuperado como se nada tivesse acontecido. de memória que um processo pode alocar. . Um processo contem 3 grupos. além do espaço para os dados utilizados por ele. CONTEXTO DE SOFTWARE São características de um processo que vão influenciar na execução de um programa. do buffer para operação de I/O. no máximo de operações de I/O pendentes. ESPAÇO DE ENDEREÇAMENTO É a área de memória do processo onde o programa é executado. As instruções de hardware estão frequentemente disponível para carregar informações dentro do PCB e recuperar essas informações rapidamente. são eles: . Caso uma quota não seja o suficiente o processo é executado lentamente ou até não ser executado. eliminação. Program Counter (PC). suspensão de processos.: n o máximo de arquivos abertos simultaneamente.O SO gerencia os processos através das system calls que realizam operações como criação. No instante em que o processo perde a utilização da CPU. Quando um processo está em execução seu contexto de hardware fica gravado nos registradores do processador. 38 . o sistema salva suas informações no contexto de hardware do processo.Identificação: os processos criados recebem sempre uma identificação (PID) e em alguns sistemas podem receber além do PID um nome também. Este contexto é aplicado a sistemas que utilizam-se de Time-Sharing.Privilégios: determina o que os processos podem ou não fazer em relação ao sistema ou a outros processos. como por exemplo n. tamanho máx. Ex. 7 Buffer é uma área de armazenamento em memória principal para transferências de I/O. muitos sistemas de computadores.Quotas: são limites de cada recurso do sistema que um processo pode alocar. sincronização.o máximo de arquivos abertos simultaneamente e o tamanho do buffer 7para as operações de I/O. de processos e sub-processos que podem ser criados. Stack Point (SP) e bits de estado. 5. Ex. 39 . ele passa por vários estados: O SO gerencia processos através de listas encadeadas.: I/O.: Fim da fatia de tempo para este processo. existe uma lista para cada estado do processo. como que de forma exclusiva.4 Tipos de Processos Os programas podem ser classificados de acordo com o tipo de processamento que realiza: CPU – bound (Ligado a CPU): Quando passa a maior parte do tempo no estado de execução.: um processo em espera obrigatoriamente volta ao estado de pronto antes de ser executado novamente. durante um certo intervalo de tempo. Sendo assim. ou seja. serialmente. Obs. 5. um a um no tempo. onde cada PCB tem um ponteiro para seu sucessor. Ex. ocorrem simultaneamente.3 Mudanças de estado de Processo Pronto  Execução: Aguarda a oportunidade para ser executado. pois realiza um elevado numero de I/O. pelo sistema. I/O – bound (Ligado a I/O): Maior parte do tempo no estado de espera. aqueles que no todo ou em parte ocorrem ao mesmo tempo. Neste caso teríamos os seguintes tipos de processos:   Sequenciais: São aqueles que ocorrem um de cada vez.  Espera (Waint): Aguarda algum evento externo ou algum recurso para poder prosseguir seu processamento.5. Execução  Espera: Aguarda a conclusão do evento solicitado. Execução  Pronto: passa do estado de pronto sempre que for um evento. Um critério muito importante de análise dos processos computacionais é aquele que considera os processos segundo sua ocorrência. a observação de seu comportamento considerando o tempo.  Pronto (Ready): Aguarda uma oportunidade para ser executado. isto é. Paralelos: aqueles que.2 Estado do Processo  Execução (Running): Processo na CPU. Durante a existência de um processo. Espera  Pronto: Operação solicitada é atendida e ele deve retornar a execução. um processo só poderá ler os dados armazenados se eles existirem no buffer. . . . Nesse caso. o processo que deseja acessar o recurso deverá ser colocado no estado de espera. Este problema ocorrer quando dois ou mais processos esperam por um recurso alocado.1 PROBLEMAS DE SINCRONIZAÇÃO Na tentativa de implementação de exclusão.Velocidade de execução dos processos: pode interferir em uma solução para o problema de exclusão mútua. A exclusão mútua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado é denominada de REGIÃO CRÍTICA. A solução mais simples para evitar problemas de compartilhamento é impedir que dois ou mais processos acessem os mesmos recursos no mesmo instante.5. conhecida como problema do produtor/consumidor. Ex. algumas soluções introduzem novos problemas.5 Comunicação entre Processos Os processos que trabalham junto geralmente compartilham recursos como arquivos. que chamaremos de problemas de sincronização. registros. existe a possibilidade de um processo nunca ser escolhido e sofrer starvation. Os mecanismos que garantem a comunicação entre processos concorrentes e o acesso a recursos compartilhados são chamados mecanismos de sincronização. Esse compartilhamento de recurso pode gerar situações indesejáveis. Caso essa escolha seja aleatória. 40 . Da mesma forma.: dois processos concorrentes trocam informações de operações de gravação e leitura em um buffer. Esta sincronização é também. No momento em que o recurso é liberado. capazes de comprometer todo o sistema.Sincronização Condicional: outra situação na qual é necessária a sincronização entre processos concorrentes é quando um recurso compartilhado não se encontra pronto para ser utilizado pelos processos. Este mecanismo é fundamental para projetos de SOs multiprogramáveis. dispositivos e áreas de memória. o sistema deve determinar qual processo ganhará o acesso ao recurso. Um processo só pode gravar dados no buffer caso ele não esteja cheio. consequentemente. até o recurso ficar pronto para o procedimento.5. Essa ideia de exclusividade é chamada de EXCLUSAO MÚTUA.Starvation: é a situação onde um processo nunca consegue executar sua região critica e. 5. A primeira notação para especificação de concorrência de um programa foram os comandos FORK (criação de processo) e JOIN (sincronização de processo). acessar o recurso compartilhado. Se seu valor for maior que 0. então nenhum processo está utilizando o recurso. como uma das soluções geral mais simples de ser implementada. processo_B. end. procedure processo_A. também chamadas originalmente de P e V. end. que só Poe ser manipulada por duas instruções: DOWN e UP. //desocupa a região Regiao_Critica_A. var s: semáforo := 1. begin repeat down (s). begin repeat Down(s). procedure processo_B. as instruções DOWN e UP funcionam como protocolos de entrada e saída. PROGRAM Semaforo_1. O semáforo fica associado a um recurso compartilhado. o processo fica impedido de acesso. O programa a seguir mostra uma solução para os problemas da exclusão mútua entre dois processos através do uso de semáforos. No caso da exclusão mútua. não pode impedi que outros processos entrem em sua próprias regiões criticas. //ocupa a região until false. begin parbegin processo_A. indicando quando o recurso está sendo acessado por um processo concorrente.2 SOLUÇÕES DE SOFTWARE Além da exclusão mútua. Up(s). Regiao_critica_B. Um semáforo é uma variável inteira.5. caso contrario. Up(s). parend.  Um processo não pode permanecer indefinidamente esperando para entrar em sua região critica. fora de sua região critica. until false. A seguir estão relacionadas algumas ferramentas de software utilizadas para a solução dos problemas de sincronização entre processos.5. 41 . não negativa.  Um processo. . que soluciona os problemas de compartilhamento de recursos.Semáforos Conceito de semáforos foi proposto por Dijkstra. end. três fatores mais devem ser levados em conta para a solução dos problemas de sincronização:  Numero de processadores e tempo de execução dos processos concorrentes devem ser irrelevantes. Sua característica mais importante é a implementação automática da exclusão mútua entre procedimentos do monitor em um determinado instante. A sincronização é obtida porque uma mensagem obtém dados enviados de outro processo. o processo ficará aguardando a sua vez até que tenha permissão para executar. A comunicação por troca de mensagens possui muitos problemas. ao receber uma mensagem. implementado pelo sistema operacional através de duas rotinas do sistema: SEND e RECEIVE. . como a perda de uma mensagem. O endereçamento direto é a troca de mensagem entre dois processos diretamente. restringindo. 42 . A sincronização é obtida porque uma mensagem somente pode ser lida após ter sido enviada. variáveis e estrutura de dados definido dentro do módulo.Troca de Mensagens É um mecanismo de comunicação e sincronização entre processos. dessa forma. A comunicação ocorre porque um processo.Semáforos aplicados ao problema de exclusão mútua são chamados mutexes (mutual exclusion semaphones) ou binários. Toda vez que algum processo chama um desses procedimentos do monitor. Para evitar que esta mensagem não se perca o processo receptor deve enviar ao processo transmissor uma mensagem de recebimento (ACK – acknowledgement). obtém dados enviados de outro processo. por apenas assumirem os valores 0 e 1. Mensagem). Mensagem). As rotinas podem ser representadas através dos procedimentos a seguir: SEND (Receptor. Caso exista. e a rotina RECEIVE por receber uma mensagem de um processo transmissor. . O endereçamento indireto é a troca de mensagem entre dois processos utilizando um intermediário mailbox. RECEIVE(Transmissor. a ordem na qual os dois eventos devem ocorrer. O monitor é um conjunto de procedimentos.Monitores São mecanismos de sincronização de alto nível tentando tornar mais fáceis o desenvolvimento e a correção de programas concorrentes. A rotina SEND é responsável por enviar uma mensagem para um processo receptor. Caso o transmissor não receba o ACK ele retransmite a mensagem. a estrutura deve ser atualizada. sem comprometer o desempenho e a confiabilidade do sistema. Dependendo do tipo de sistema. . Toda vez que um recurso é alocado ou liberado por um processo.Prevenção de Deadlock Para prevenir o deadlock é necessário uma das quatro condições abaixo:  Exclusão mútua. . O problema de deadlock existe em qualquer sistema multiprogramável.Correção de Deadlock Uma solução bastante utilizada na maioria dos SOs é eliminar os processos envolvidos no deadlocks e desalocar os recursos já garantindo por eles. Já em sistemas de tempo real devem constantemente certificar-se da ocorrência de deadlocks. devem manter estruturas de dados capazes de identificar cada recurso do sistema. no entanto.  Evitar que os processos que já possuam recursos garantidos requisitem novos recursos.  Forçar o processo a ter apenas um recurso de cada vez. Essa situação é conseqüência do comportamento de recursos do sistema entre vários processos.3 DEADLOCKS Um processo é dito em deadlock quando está esperando por um evento que nunca ocorrerá. as soluções implementadas devem considerar o tipo do sistema e o impacto em seu desempenho. Em sistemas com time sharing. o tempo de busca pode ser maior.  Permitir que um recurso seja retirado de um processo quando outro processo necessitar do mesmo recurso. sendo que cada processo deve ter acesso ao recurso de forma exclusiva (exclusão mútua). o processo que o está alocando que estão na espera da liberação do recurso. 43 .5.5. porém essa maior segurança gera mais processamento no sistema. . também evitarem o problema do deadlock.Detecção de Deadlock Os sistemas operacionais para detectar deadlocks. quebrando assim a espera circular. o ciclo de busca por um deadlock varia. d) É o método pelo qual o SO gerencia processos. 5) Diferencie Sistemas Fortemente Acoplados Simétricos de Assimétricos. 6) Diferencie Sistema Operacional de Rede de Sistema Operacional Distribuído.6. assinale a alternativa INCORRETA: a) O sistema é dividido em processos cada um responsável por oferecer um conjunto de serviços. marque a alternativa que contem uma afirmação INCORRETA: a) São responsáveis por impedir acesso direto ao kernel. b) São interrupções que o SO causa no momento de falha de uma aplicação. 12) Diferencie Barramento comum de Barramento Cruzado. 7) Quais funções devem ser oferecidas por um SO de rede? 8) Diferencie Interrupção de Exceção. c) É função do SO realizar a comunicação entre o cliente e o serviço. 4) Faça a comparação entre sistemas mono e multiusuários. Responda as seguintes Questões 1) Cite as características dos Sistemas Operacionais Monogramáveis/ monotarefa. d) É função do processador realizar a comunicação entre o cliente e o serviço. 2) Cite as características dos Sistemas Operacionais Multiprogramáveis/ multitarefa. 44 . b) A aplicação que solicita o serviço é chamada cliente e a que atende a solicitação é chamada servidor. c) São responsáveis por manter o Kernel estável. 9) Explique o processo de Spooling. marque a opção que contem uma função que não é atribuição do SO: a) Tratamento de interrupções b) Criaçao e eliminação de processos c) Processamento rápido de dados d) Gerencia do sistema de arquivos e) Gerencia de memória 14) Sobre as System Calls. 13) Sobre o Kernel (núcleo do sistema). e) NDA 15) Sobre os sistemas cliente-servidor. 10) O que Buffering? 11) Defina o que é reentrância. 3) Cite e explique um dos tipos de sistemas multiprogramáveis. marque a alternativa INCORRETA: a) Um processo está em execução quando está na memória. 26) O que caracteriza um sistema operacional de tempo real? Quais as duas classificações de sistemas operacionais de tempo real e suas diferenças? 27) O que diferencia o núcleo do restante do sistema operacional? 45 . 18) Explique o principio da Exclusão Mútua. c) Um processo está em espera quando aguarda um evento externo para prosseguir seu processamento. d) Um processo está em execução quando está na CPU. 20) Explique o que são deadlocks. 19) Explique o que é starvation. Identifique (por meio de pesquisas) as principais vantagens trazidas por essa funcionalidade e os desafios a resolver para implementá-la. executando mais de uma aplicação ao mesmo tempo. e) Um processo está pronto quando terminou sua execução. 21) Quais os métodos para prevenção de deadloacks? 22) O que é contexto de software? 23) Quais as principais funções dos sistemas operacionais? 24) Por que a abstração de recursos é importante para os desenvolvedores de aplicações? Ela tem utilidade para os desenvolvedores do próprio sistema operacional? 25) A gerência de atividades permite compartilhar o processador. ligue as colunas: (1) Gerência de Memória (2) Gerência de I/O (3) Gerência de Processos ( ) Criação de processos ( ) Eliminação de processos ( ) Comunicação entre processos ( ) Manipulação de arquivos e diretórios ( ) Alocação de memória ( ) Operações de Entrada e Saída 17) Sobre os estados de um processo.16) sobre os grupo de System Calls. b) Um processo está pronto quando aguarda uma oportunidade para ser executado. [ ] Todos os recursos do sistema têm proprietários e existem regras controlando o acesso aos mesmos pelos usuários. multiusuário (M). recursos multimídia e a interação com o usuário. servidor (S). 31) A operação em modo usuário permite ao processador executar somente parte das instruções disponíveis em seu conjunto de instruções. exceções e traps? 33) Qual a função da memória principal? 34) O que é uma instrução privilegiada? 35) Cite os sistemas de camadas? 36) O que é kernel monolítico? 37) Qual a melhor definição para processo? 38) Defina os estados de um processo. construídos para executar sobre plataformas com poucos recursos.28) Seria possível construir um sistema operacional seguro usando um processador que não tenha níveis de privilégio? Por quê? 29) Monte uma tabela com os benefícios e deficiências mais significativos das principais arquiteturas de sistemas operacionais. ou seja. [ ] Prioriza a gerência da interface gráfica. [ ] São sistemas operacionais compactos. 30) Relacione as afirmações aos respectivos tipos de sistemas operacionais: distribuído (D). embutido (E) ou de tempo-real (T): [ ] Deve ter um comportamento temporal previsível. Quais das seguintes operações não deveria ser permitida em nível usuário? Por quê? (a) Ler uma porta de entrada/saída (b) Efetuar uma divisão inteira (c) Escrever um valor em uma posição de memória (d) Ajustar o valor do relógio do hardware (e) Ler o valor dos registradores do processador (f) Mascarar uma ou mais interrupções 32) Quais as diferenças entre interrupções. desktop (K). [ ] A gerência de energia é muito importante neste tipo de sistema. [ ] A localização dos recursos do sistema é transparente para os usuários. 46 . com prazos de resposta bem definidos. [ ] Construído para gerenciar de forma eficiente grandes volumes de recursos. tradutor e interpretador? 44) Explique o funcionamento do processamento Batch. 40) O que é uma região critica? 41) Qual a diferença entre endereçamento direto e indireto? 42) Comente sobre monitores e trocas de mensagens. 43) Qual a diferença entre compilador. 47 .39) Comente os comandos Fork e Join. 45) Qual a melhor definição de SO? 46) Quais os três principais estados de um processo? Descreva os eventos que fazem com que um processo mude de estado.
Copyright © 2024 DOKUMEN.SITE Inc.