Sop Apostila

June 6, 2018 | Author: Marcos Ferreira da Rocha | Category: Operating System, Computer Data Storage, Software, Computer Network, Assembly Language


Comments



Description

Faculdade Cenecista de Varginha - MG FACECABacharelado em Sistemas de Informação Prof. José Eduardo S. Gomes Fevereiro / 2005 SUMÁRIO Página 1. Sistemas Operacionais ......................................................................... 1.1. Conceitos Básicos de Sistema Operacional ..................................... 1.2. Máquina de Níveis ...................................................................... 1.3. Histórico .................................................................................... 1.3.1. Primeira Fase (1945-1955) ................................................. 1.3.2. Segunda Fase (1956-1965) ................................................. 1.3.3. Terceira Fase (1966-1980) ................................................. 1.3.4. Quarta Fase (1981-1990) ................................................... 1.3.5. Quinta Fase (1991-2000) ................................................... 1.4. Conceitos de Hardware e Software ................................................ 1.4.1. Conceitos de Hardware ....................................................... 1.4.1.1. Unidade Central de Processamento .............................. 1.4.1.2. Clock ....................................................................... 1.4.1.3. Registradores ........................................................... 1.4.1.4. Memória Principal ...................................................... 1.4.1.5. Memória Cachê ......................................................... 1.4.1.6. Memória Secundária .................................................. 1.4.1.7. Dispositivos de Entrada e Saída .................................. 1.4.1.8. Barramento .............................................................. 1.4.1.9. Pipeline ................................................................... 1.4.1.10. Ativação e Desativação do Sistema ............................ 1.4.1.11. Arquitetura RISC e CISC .......................................... 1.4.2. Conceitos de Software ........................................................ 1.4.2.1. Tradutor .................................................................. 1.4.2.2. Interpretador ............................................................ 1.4.2.3. Linker ...................................................................... 1.4.2.4. Loader ..................................................................... 1.4.2.5. Depurador ................................................................ 1.4.2.6. Linguagem de Controle .............................................. 1.4.2.7. Linguagem de Máquina .............................................. 1.4.2.8. Microprogramação ..................................................... 1.5. Tipos de Sistemas Operacionais .................................................... 1.5.1. Sistemas Monoprogramáveis/Monotarefa .............................. 1.5.2. Sistemas Multiprogramáveis/Multitarefa ............................... 1.5.2.1. Sistemas Batch ......................................................... 1.5.2.2. Sistemas de Tempo Compartilhado .............................. 1.5.2.3. Sistemas de Tempo Real ............................................ 1.5.3. Sistemas com Multiprocessadores ........................................ 1.5.3.1. Sistemas Fortemente Acoplados .................................. 1.5.3.2. Conceitos e Organização dos Sist. Fort. Acopl. ............. 1.5.3.3. Sistemas Fracamente Acoplados ................................. 1.5.3.4. Organização dos Sist. Fracamente Acoplados ................ 1.6. Sistemas Multiprogramáveis ......................................................... 1.6.1. Interrupção e Exceção ........................................................ 1.6.2. Operações de Entrada ........................................................ 1.6.3. Buffering .......................................................................... 1.6.4. Spooling ........................................................................... 1.6.5. Reentrância ...................................................................... 1.6.6. Proteção do Sistema .......................................................... 1 1 2 3 3 3 3 4 4 4 5 5 5 5 6 6 6 6 6 7 7 7 7 8 8 9 9 9 9 9 9 10 10 10 11 11 11 11 12 12 13 13 14 15 16 17 18 18 18 1.7. Estrutura do Sistema Operacional ................................................. 1.7.1. Núcleo do Sistema ou Kernel (cérebro) ................................. 1.7.2. System Calls ..................................................................... 1.7.3. Modos de Acesso ............................................................... 1.7.4. Estruturas de Sistemas Operacionais .................................... 1.7.4.1. Sistemas Monolíticos ................................................. 1.7.4.2. Sistemas em Camadas ............................................... 1.7.4.3. Sistemas Cliente/Servidor .......................................... 2. Processos ........................................................................................... 2.1. Introdução ................................................................................. 2.2. Modelo de Processo .................................................................... 2.2.1. Contexto de Hardware ........................................................ 2.2.2. Contexto de Software ......................................................... 2.2.3. Espaço de Endereçamento .................................................. 2.3. Estados do Processo ................................................................... 2.4. Mudanças de Estado do Processo .................................................. 2.5. Subprocesso e Thread ................................................................. 2.6. Processos do Sistema .................................................................. 2.7. Tipos de Processos ...................................................................... 3. Comunicação entre Processos ............................................................... 3.1. Introdução ................................................................................. 3.2. Especificação de Concorrência em Programas ................................. 3.3. Problemas de Compartilhamento de Recursos ................................. 3.4. Solução para Problemas de Compartilhamento ............................... 3.5. Problemas de Sincronização ......................................................... 3.5.1. Velocidade de Execução dos Processos ................................. 3.5.2. Starvation ........................................................................ 3.5.3. Sincronização Condicional ................................................... 3.6. Soluções de Hardware para o Problemas de Exclusão Mútua ............. 3.6.1. Desabilitação de Interrupções ............................................. 3.6.2. Instrução Test-and-Set ...................................................... 3.7. Soluções de Software para o Problemas de Exclusão Mútua .............. 3.7.1. Semáforos ........................................................................ 3.7.2. Monitores ......................................................................... 3.7.3. Troca de Mensagens .......................................................... 3.8. Deadlock ................................................................................... 4. Gerência do Processador ...................................................................... 4.1. Introdução ................................................................................. 4.2. Critérios de Escalonamento .......................................................... 4.3. Escalonamento Não-preemptivo ................................................... 4.3.1. Escalonamento First-In-First-Out (FIFO) ............................... 4.3.2. Escalonamento Shortest-Job-First (SJF) ................................ 4.3.3. Escalonamento Cooperativo ................................................ 4.4. Escalonamento Preemptivo .......................................................... 4.4.1. Escalonamento Circular ...................................................... 4.4.2. Escalonamento por Prioridades ............................................ 4.4.3. Escalonamento por Múltiplas Filas ........................................ 4.4.4. Escalonamento por Múltiplas Filas com Realimentação ............ 4.4.5. Escalonamento de Sistemas de Tempo Real .......................... 4.5. Escalonamento com Múltiplos Processadores .................................. 19 19 19 20 21 21 21 22 24 24 24 25 25 26 26 27 28 28 29 30 30 30 32 32 33 33 33 33 34 34 34 35 35 37 38 38 39 39 39 40 40 40 40 41 41 41 41 42 42 42 8. Bibliografia .............................................................................. Livros ................................................................................... Endereços Eletrônicos ............................................................. então. Entretanto. enquanto outro precisa fazer a contabilidade da empresa. a divisão do espaço em disco entre os usuários é feita pelo sistema operacional. A forma de acesso aos periféricos é a mesma para todos os programas. um usuário precisa editar texto. O sistema operacional é uma camada de software colocada entre o hardware e os programas que executam tarefas para os usuários. Os programas possuem muito em comum. O sistema operacional é responsável pelo acesso aos periféricos. O dispositivo físico capaz de executar esses programas é o hardware do computador. Por exemplo. Sempre que um programa necessita de algum tipo de operação de entrada e saída.1. ele a solicita ao sistema operacional. 1 . Sistemas Operacionais 1. vários usuários compartilham simultaneamente o computador. tanto o editor de texto quanto a contabilidade precisam acessar o disco. ele pode controlar qual programa está acessando qual recurso. o editor de texto e a contabilidade podem querer utilizar. como todos os acessos aos periféricos são feitos através do sistema operacional. Informações do tipo “como enviar um caractere para a impressora” ficam escondidas dentro do sistema operacional. considerando-se dois aspectos: a eficiência no acesso ao disco e a ocupação equilibrada do disco pelos usuários. os programas podem apresentar necessidades conflitantes. Por exemplo. Gomes 1. um editor de textos e um sistema de contabilidade. Conceitos Básicos de Sistema Operacional Em torno de um computador. o programador não precisa conhecer os detalhes do hardware. pois disputam os recursos do equipamento. obter uma distribuição justa e eficiente dos recursos. ao mesmo tempo. Essa visão de um sistema computacional é ilustrada na figura abaixo. a única impressora disponível. José Eduardo S. O problema de cada usuário será resolvido por um programa específico. Ela pode ser feita. É possível. Por exemplo. Por exemplo. Para um melhor aproveitamento do hardware. existem usuários com problemas para serem resolvidos. Ao mesmo tempo. No exemplo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Dessa forma. Dois tipos de eventos ativam o sistema operacional: uma chamada de sistema ou uma interrupção de periférico. ela é realizada. Como a interrupção do periférico avisa o término de alguma operação de entrada e saída. Somente quando ocorre algum evento especial. o processador está executando programas de usuário. Um sistema operacional (SO) é um conjunto de rotinas executadas pelo processador. Sua função principal é controlar o funcionamento do computador. Para isso que o computador foi comprado. José Eduardo S. possivelmente uma chamada de sistema foi concluída. um pedido para que arquivos de outros usuários sejam destruídos deverá ser recusado. Primeiramente. o processador pára o que está fazendo e passa a executar uma rotina específica do sistema operacional. como um gerente dos diversos recursos disponíveis no sistema. o sistema operacional envia comandos para os controladores dos periféricos. nem faz a contabilidade da empresa. A conveniência é obtida através de uma interface mais confortável para a utilização dos recursos computacionais. deve ser verificada a legalidade da solicitação. A eficiência é obtida através do compartilhamento dos recursos. e a resposta é devolvida ao programa. da mesma forma que qualquer outro programa. Entretanto. Em função das chamadas de sistema. Funções principais do SO: Facilidade de acesso aos recursos do sistema Compartilhamento de recursos de forma organizada e protegida 1. o sistema operacional é ativado.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Por exemplo. O controlador deve informar ao sistema operacional quando a operação estiver concluída. Nesse caso. Ele não serve para editar texto. Quando a interrupção acontece. Uma chamada de sistema corresponde a uma solicitação de serviço por parte do programa em execução. podemos obter uma maior eficiência e conveniência no uso do computador. Isso é feito através de uma interrupção. através dele. No caso de uma solicitação legal. um programa à espera de resposta poderá ser liberado. Normalmente. Máquina de Níveis Usuário Sistema Operacional Hardware Aplicativos Utilitários Sistema Operacional Linguagem de Máquina Microprogramação Dispositivos Físicos Hardware 2 . Gomes O sistema operacional não resolve os problemas do usuário final.2. Para trabalhar nessas máquinas. SO com seu próprio conjunto de rotinas para operações de E/S. José Eduardo S.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. que. Processamento batch. 70 mil resistores. Histórico A evolução dos SO está relacionada ao desenvolvimento dos equipamentos.2. era necessário conhecer profundamente o funcionamento do hardware.3. Terceira Fase (1966-1980) Circuitos Integrados (CIs) e microprocessadores. Cartões Perfurados Processamento Fita de Entrada Fita de Entrada Processamento Fita de Saída Fita de Saída Processamento Relatórios Inicialmente. 30 toneladas. Segunda Fase (1956-1965) Criação do transistor e das memórias magnéticas.000 adições por segundo. 1. 3 . pois a programação era feita em painéis. Gomes 1. Surgimento das primeiras linguagens de programação: Assembly e Fortran. 1. onde um lote (batch) de programas era submetido ao computador. Nesta fase. os programas passaram a ser perfurados em cartões. que executava um programa de cada vez. enquanto um programa espera por uma operação de leitura/gravação. A fita. a fita de saída era lida e impressa.1. então. o processador executa um outro programa. 1. gravando o resultado do processamento em uma fita de saída. ENIAC – 18mil válvulas. através de fios. deu-se o nome de processamento batch. submetidos a uma leitora.3.3.3. Primeira Fase (1945-1955) Durante a Segunda Guerra. ainda não existia o conceito de Sistema Operacional. eram gravados em uma fita de entrada. utilizando linguagem de máquina. Permite que. era lida pelo computador. Ao término de todos programas. A esse tipo de processamento. UNIVAC I – criado para o senso americano de 1950. 5. Computadores de porte menor e baixo custo (minicomputadores). Consumia 140 KWatts.3. Conceitos de multiprogramação: compartilhamento de memória principal e processador. Multiprogramação (divisão da memória em partições. etc.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. criando o conceito de multitarefa. necessários para a compreensão dos demais tópicos sobre fundamentos do sistema operacional. Quarta Fase (1981-1990) Integração em larga escala (LSI) e muito larga escala (VLSI). Foram adicionados terminais de vídeo e teclado para interação on-line do usuário. Evolução das aplicações. Sistemas especialistas. que necessitam cada vez mais de capacidade de processamento e armazenamento de dados. permitem que se executem diversas tarefas concorrentes. onde cada programa espera sua vez para ser executado e compartilhamento do processador) usando time-sharing (tempo compartilhado).4.3. independente de onde ela esteja armazenada.5. Surgimento dos microcomputadores PC (Personal Computer). Processamento distribuído de forma que as funções do sistema operacional estejam espalhadas por vários processadores através de redes de computadores. ULSI (Ultra Large Scale Integration). Surgem as estações de trabalho (workstations) que. sistemas multimídia. Arquitetura cliente-servidor.3. apesar de monousuárias. 1. Linux. permitindo que qualquer pessoa tenha acesso a todo tipo de informação. Evolução da microeletrônica. software e telecomunicações. Gomes Substituição das fitas por discos magnéticos. 4 . baseadas na organização de multiprocessadores não convencionais. Criação do UNIX (1969). Desenvolvimento de interfaces gráficas para os SO: Windows. Conceitos de Hardware e Software Serão apresentados alguns conceitos básicos sobre hardware e software relacionados à organização de computadores. 1. Máquinas com mais de um processador. MAN e LAN com o desenvolvimento de protocolos de rede e sistemas operacionais para rede. Quinta Fase (1991-2000) Grandes avanços em termos de hardware. banco de dados distribuídos. escrito em linguagem C. 1.4. dos sistemas DOS (Disk Operation System) e VMS (Virtual Memory System). passa a ser oferecida em redes distribuídas. Arquiteturas paralelas. Difusão das redes WAN. inteligência artificial são alguns exemplos da necessidade cada vez maior. aplicada basicamente a redes locais. permitindo a alteração na ordem de execução das tarefas que antes era puramente seqüencial: spooling. José Eduardo S. exigindo dos SO mecanismos de controle e sincronismo e possibilitando o multiprocessamento. Unidade Central de Processamento A Unidade Central de Processamento (UCP). controlando as funções realizadas por cada unidade funcional. Registradores Os registradores são dispositivos de alta velocidade. memória principal e dispositivo de entrada e saída.2. Conceitos de Hardware Todos os componentes de um computador são agrupados em três subsistemas básicos: unidade central de processamento. 1. ou processador.1. A cada instrução executada. Gomes 1.1. 1. que gera pulsos elétricos síncronos em um determinado intervalo de tempo (sinal de clock). localizados na UCP. A UCP também é responsável pela execução de todos os programas do sistema. Apontador de pilha – é o registrador que contém o endereço de memória do topo da pilha. localizado na UCP. José Eduardo S. Clock O clock é um dispositivo.1.4.4. • 5 .FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. tem como função principal unificar todo o sistema.4. Alguns registradores de uso específico: • • Contador de instrução – é o registrador responsável pelo armazenamento do endereço da próxima instrução que a UCP deverá executar.1.3. Unidade Central de Processamento (UCP) Unidade Lógica e Aritmética (ULA) Unidade de Controle (UC) Dispositivos de Entrada e Saída Registradores Memória Principal 1. que é a estrutura de dados onde o sistema mantém informações sobre as tarefas que estão sendo processadas e tiveram que ser interrompidas por algum motivo. que obrigatoriamente deverão estar armazenados na memória principal. para armazenamento temporário de dados. o registrador de estado é alterado conforme o resultado gerado pela instrução.4.1. Registrador de estado – é responsável por armazenar informações sobre a execução do programa. Barramento A UCP. Enquanto a memória principal precisa estar sempre energizada para manter suas informações. a memória secundária não precisa de alimentação. ele “olha” antes na memória cache. a UCP e a memória principal podem se comunicar. onde trafegam informações.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. O tempo de acesso a um dado nela contido é muito menor que se o mesmo estivesse na memória principal.8. não há necessidade do acesso à memória principal. do contrário.1.4. porém seu custo é baixo e sua capacidade de armazenamento é bem superior à da memória principal. Gomes 1. tanto com usuários quanto com memórias secundárias.5. é a parte do computador onde são armazenados instruções e dados. O acesso à memória secundária é lento. a fim de realizar qualquer tipo de processamento.4. também conhecida como memória primária ou real. José Eduardo S. Memória Secundária A memória secundária é um meio permanente (não volátil) de armazenamento de programas e dados. como dados. 6 . endereços ou sinais de controle. Através desses dispositivos. barras ou vias.1.1. se comparado com o acesso à memória cache ou à principal.7.1. Dispositivos de Entrada e Saída Os dispositivos de entrada e saída (E/S) são utilizados para permitir a comunicação entre o computador e mundo externo.4. Memória Cache A memória cache é uma memória volátil de alta velocidade. a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação denominadas barramentos.1.4. Memória Principal A memória principal.4. 1. Registradores Maior capacidade de armazenamento Maior custo e maior velocidade de acesso Memória Cache Memória Principal Memória Secundária 1. o acesso é obrigatório.6.4. Um barramento (bus) é um conjunto de fios paralelos (linhas de transmissão). Toda vez que o processador faz referência a um dado armazenado na memória principal. 1. Se o processador encontrar o dado na cache. 1. O processador. 1.1. 1.2. além de ajudarem as instruções serem executadas em alta velocidade. também existe o processo de desativação (shutdown). uma outra instrução possa estar na fase de busca simultaneamente.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. estas instruções não acessam a memória principal. garantindo a integridade do sistema. a implementação do pipeline é mais difícil. Os processadores CISC (Complex Instruction Set Computers) já possuem instruções complexas que são interpretadas por microprogramas. 80x86 e o Pentium (Intel). enquanto uma instrução se encontra na fase de execução. Na sua maioria. denominado ativação do sistema (boot). é realizado por um programa localizado em uma posição específica do disco (boot block). é necessário que o sistema operacional seja carregado da memória secundária para a memória principal. onde uma tarefa é dividida em subtarefas. se apresentam em grande número. geralmente o primeiro bloco. não tem a menor utilidade. e o 68xxx (Motorola). neste tipo de processador.11. PA-RISC (HP). Estas características. O número de registradores é pequeno e qualquer instrução pode referenciar a memória principal. Ativação e Desativação do Sistema Toda vez que um computador é ligado. em geral bastante simples. Para torná-lo útil. Este procedimento permite que as aplicações e componentes do sistema sejam desativados de forma ordenada. Arquiteturas RISC e CISC Um processador com arquitetura RISC (Reduced Instruction Set Computer) se caracteriza por possuir poucas instruções de máquina. facilitam a implementação do pipeline.4. Neste tipo de arquitetura.1. 7 . funciona de forma a permitir que. 1. utilizado como interface entre as necessidades dos usuários e as capacidades do hardware. Da mesma forma que em uma linha de montagem. Conceitos de Software O hardware. existe um conjunto de programas. RS-6000 (IBM).4. a execução de uma instrução pode ser dividida em subtarefas. Pipelining O conceito de processamento pipeline se assemelha muito a uma linha de montagem. como as fases de busca da instrução e dos operandos. por si só. Gomes 1. José Eduardo S.4. Esse processo. trabalhando principalmente com registradores que.4. execução e armazenamento dos resultados. Alpha AXP (DEC) e Rx000 (MIPS).1. Como exemplos de processadores RISC podemos citar o Sparc (SUN). São exemplos de processadores CISC o VAX (DEC). executadas em diferentes estágios dentro da linha de produção. Na maioria dos sistemas.9. através de suas várias unidades funcionais pipeline. que são executadas diretamente pelo hardware.10. como em qual região da memória o programa deveria ser carregado ou quais endereços de memória seriam reservados para as variáveis. traduz cada instrução e a executa em seguida. os programas escritos nessas linguagens (programas – fonte) não estão prontos para serem diretamente executados pela UCP. o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware. ficando essa preocupação exclusivamente com o compilador. Isso permite o desenvolvimento de aplicações independentes do equipamento. 1. José Eduardo S.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Gomes No decorrer do texto. a partir de um programa escrito em uma linguagem de alto nível.2. A linguagem de montagem está diretamente ligada às características da arquitetura do processador. Fortran. Assim. conseqüentemente. Os softwares desenvolvidos pelos usuários serão denominados softwares aplicativos.4. As linguagens de alto nível. o interpretador. Interpretador O interpretador é considerado um tradutor que não gera código-objeto. o ato de programar era bastante complicado. um programa em linguagem de máquina não executável (módulo-objeto). este tipo de linguagem é diferente para cada computador. a partir de um programa escrito em linguagem de montagem. Tradutor Nos sistemas operacionais antigos. Em função disto. já que os programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução.2. sempre que desejarmos fazer referência a softwares relacionados mais diretamente com serviços do sistema operacional. um programa em linguagem de máquina não executável (módulo-objeto). 8 . Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagem e alto nível.4. A partir de um programa-fonte. linkers e depuradores. utilizaremos o termo utilitário. pode ser chamado de montador ou compilador. como compiladores. pois a linguagem de máquina e. ou apenas aplicações. no momento da execução do programa. O tradutor. • O compilador é o utilitário responsável por gerar. eles têm de passar por uma etapa de conversão. escrito em linguagem de alto nível. onde toda representação simbólica dos programas é traduzida para código de máquina.2. • O montador (assembler) é o utilitário responsável por gerar. não têm nenhuma relação direta com a máquina. os programas-fonte podem ser transportados entre computadores de diversos fabricantes. como Pascal. a linguagem de montagem são características específicas do processador. pelo tipo de linguagem de programação utilizada.1. Esta conversão é realizada por um software denominado tradutor. Para isso. Cobol. desde que existam regras de definição para a linguagem. 1. Com o surgimento das primeiras linguagens de montagem (assembly languages) e das linguagens de alto nível. o que torna o entendimento confuso para o usuário. Gomes 1. envia mensagens de erro e faz chamadas a rotinas do sistema. Linker O linker (ligador) é o utilitário responsável por gerar. definido pelo próprio fabricante.7.8.6.4. O interpretador reconhece a linha de comando. um único programa executável.4. Loader O loader (carregador) é o utilitário responsável por colocar fisicamente na memória um programa para execução.2. Esses comandos.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Linguagem de Controle A linguagem de controle (linguagem de comando) é a forma mais direta de um usuário se comunicar com o sistema operacional.2. 1. a partir de um ou mais módulos objetos.2. Módulo Objeto Linker Módulo Objeto 1. Cada processador possui um conjunto único de instruções de máquina. 1. José Eduardo S.5. Programa Executável 9 .4.2. 1.2. quando digitados pelos usuários. 1.4.4. verifica sua sintaxe. para realizar tarefas como acessar um arquivo em disco ou consultar um diretório.4. Depurador O depurador (debugger) é o utilitário que permite ao usuário controlar toda a execução de um programa a fim de detectar erros na sua estrutura. são interpretados por um programa denominado interpretador de comandos ou shell.3.4. Um programa em linguagem de máquina é totalmente codificado em formato binário. Suas funções básicas são resolver todas as referências simbólicas existentes entre os módulos objetos e reservar memória para a execução do programa. Dessa forma. o usuário dispõe de uma interface interativa com o sistema operacional. Microprogramação Os microprogramas definem a linguagem de máquina de cada computador.2. Linguagem de Máquina A linguagem de máquina de um computador é a linguagem de programação que o processador realmente pode entender. a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa. Vários programas dividem os mesmos recursos de processador. Sistemas Monoprogramáveis / Monotarefa Os primeiros sistemas operacionais eram voltados para a execução de um único programa (job). vantagens e desvantagens: Tipos de SO: 1. Desvantagem: a memória e o processador são subutilizados. deveria aguardar o término do programa concorrente. Os sistemas monoprogramáveis se caracterizam por permitir que o processador. Sistemas Multiprogramáveis / Multitarefa 3.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Tipos de Sistemas Operacionais Os tipos de Sistemas Operacionais e sua evolução estão intimamente relacionados com a evolução do hardware e das aplicações por ele suportadas. A partir do número de usuários que interagem com o sistema. como também são chamados. Vantagem: aumento da produtividade dos seus usuários e a redução de custo. Os sistemas monotarefa. O conceito de sistema multiprogramável está tipicamente associado aos mainframes e minicomputadores. se caracterizam por permitir que o usuário edite um texto.1. memória e periféricos. 10 . copie um arquivo pela rede e calcule uma planilha. Vantagem: são simples de implementação. Abordaremos aqui os diversos tipos de sistemas operacionais. o sistema se preocupa em gerenciar o acesso concorrente aos seus recursos. como também são chamados. imprima um arquivo.5. Desvantagem: sistemas mais complexos. Os sistemas multitarefa. Qualquer outro programa.2.5. podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário. José Eduardo S. 1. para ser executado. Sistemas com Múltiplos Processadores 1. se caracterizam por permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa.5. suas características. não exigindo preocupação com sistemas de proteção. Gomes 1. Sistemas Monoprogramáveis / Monotarefa 2. onde existe a idéia do sistema sendo utilizado por vários usuários (multiusuário). Sistemas Multiprogramáveis / Multitarefa Os sistemas multiprogramáveis são mais complexos e eficientes que os sistemas monoprogramáveis. a partir do compartilhamento dos diversos recursos do sistema. normalmente.2. Sistemas de Tempo Real Os sistemas de tempo real (real-time) são semelhantes aos sistemas de tempo compartilhado. Não permitem a interação com o usuário durante a sua execução. Não só o processador é compartilhado nesse sistema. possuir duas ou fator-chave no é a forma de de memória e 11 . Para cada usuário. controle de tráfego aéreo. através de terminais que incluem vídeo.5. dando a impressão de que todo o sistema está dedicado. como discos e impressoras. exclusivamente. um programa detém o processador o tempo que for necessário. Sistemas Batch Os sistemas batch (lote) foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-se por terem seus programas armazenados em disco ou fita. podendo ser divididos em sistemas batch. 1. 1.2. estão presentes em controle de processos. a ele. 1. Gomes Os sistemas multiprogramáveis/multitarefas podem ser classificados pela forma com que suas aplicações são gerenciadas. mas também a memória e os periféricos.5. Sistemas com Multiprocessadores Os sistemas com multiprocessadores caracterizam-se por mais UCP’s interligadas.2. José Eduardo S. Sistemas de Tempo Compartilhado Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema. Estes sistemas são de implementação mais complexa. ele é substituído por um de outro usuário. Caso o programa do usuário não esteja concluído neste intervalo de tempo. onde esperam para ser executados sequencialmente.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. de tempo compartilhado ou de tempo real. a maior diferença é o tempo de resposta exigido no processamento das aplicações. Um desenvolvimento de sistemas com múltiplos processadores comunicação entre as UCPs e o grau de compartilhamento periféricos. ou em qualquer aplicação onde o tempo de resposta é fator fundamental. O sistema cria para o usuário um ambiente de trabalho próprio.1. como nos sistemas de tempo compartilhado. o SO aloca uma fatia de tempo (timeslice) do processador.3. ou até que apareça outro prioritário em função de sua importância no sistema.5. 1. Nos sistemas de tempo real.3.5. e fica esperando por uma nova fatia de tempo.2. trabalhando em conjunto. como no monitoramento de refinarias de petróleo. Esses sistemas. Esta importância ou prioridade de execução é controlada pela própria aplicação e não pelo sistema operacional. de usinas termoelétricas e nucleares. teclado e mouse (sistemas on-line). 5. podendo executar o sistema operacional independentemente.3.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Conceitos e Organização dos Sistemas Fortemente Acoplados Multiprocessamento: uma tarefa pode ser executada. por mais de um processador (paralelismo). Os sistemas fortemente acoplados ainda podem ser classificados em: Sistemas Assimétricos: caracterizam-se por possuir um processador (primário).5. responsável pelo controle dos demais processadores (secundários) e pela execução do sistema operacional. ou que um programa seja dividido em subprogramas.2. para execução simultânea em vários processadores.3. Desvantagem: dependência do processador primário e utilização ineficiente dos recursos do sistema.1. José Eduardo S. Reconfiguração: capacidade de um sistema continuar o processamento mesmo se um dos processadores falhar. Podemos analisar o multiprocessamento em dois níveis: • Processamento Vetorial: permite a manipulação de vetores inteiros. em vez de um processador de alta velocidade e custo elevado. Vantagem: simples de implementar. São utilizados em processamento científico. Podemos classificar os Sistemas com Fortemente Acoplados e Fracamente Acoplados. além de outras características e vantagens como: Escalabilidade: possibilidade de aumentar a capacidade computacional com menor custo. Permitem que vários programas sejam executados ao mesmo tempo. Desvantagem: implementação mais complexa. simulações e processamento de imagens. 1. Gomes Os conceitos utilizados no projeto de sistemas com múltiplos processadores incorporam os conceitos utilizados para multiprogramação. Melhor balanceamento do processamento e das operações de entrada e saída. todos executam a mesma função. melhorando o desempenho como um todo. Balanceamento: possibilidade de distribuir a carga de processamento entre os diversos sistemas de computação. aplicação ser Múltiplos Processadores em • 12 . Sistemas Simétricos: todos os processadores realizam as mesmas funções. no caso do processador mestre receber muitas interrupções dos escravos para serem tratadas. Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados existem dois ou mais processadores compartilhando a mesma memória e controlados por um único sistema operacional. Processamento Paralelo: é a possibilidade de uma executada por mais de um processador ao mesmo tempo. 1. Vantagem: independência de um processador principal. possibilitando a execução da mesma operação sobre diferentes elementos de um ou mais vetores. ao mesmo tempo. define como são interligados fisicamente os diversos sistemas da rede. basicamente. todos os nós da rede ficarão incomunicáveis. Gomes Organização Funcional: O esquema de comunicação interna das UCPs. permite acessos simultâneos de processadores a um mesmo módulo de memória.5. que se comunicam através de linha de comunicação. As principais organizações são: Barramento Na organização de barramento. • • 1. As organizações funcionais de multiprocessadores podem ser divididas. Os sistemas distribuídos permitem que uma aplicação seja dividida em diferentes partes (aplicações distribuídas). Sistemas Operacionais Distribuídos: cada componente possui seu próprio sistema operacional.4. gerenciando os seus recursos. além de um hardware e software que possibilitam ao sistema ter acesso a outros componentes da rede. A grande vantagem é a capacidade de redundância do sistema. Sistemas Fracamente Acoplados Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computação interligados através de linhas de comunicação. Para o usuário e suas aplicações é como se não existisse uma rede de computadores.3. em três tipos: • Barramento Comum: a forma mais simples de comunicação entre múltiplos processadores e outras unidades funcionais é interligar todos os componentes a um barramento comum. compartilhando seus recursos. como processador. os sistemas são conectados a uma única linha de comunicação e todos compartilham o mesmo meio. conceito muito utilizado em aplicações de missão crítica. Esse tipo de organização é utilizado geralmente em redes locais. como controle de tráfego aéreo. 13 . conhecidas como sistemas de tolerância a falhas. tanto para receber como para enviar mensagens. José Eduardo S. memória e dispositivos de E/S. Memória Multiport: além das vantagens do barramento cruzado. processador e dispositivos. criando uma rede de interconexões.5. O que diferencia o sistema operacional de rede dos sistemas distribuídos (cluster) é o grau de interação entre os nós.3. Neste tipo de topologia.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. podendo cada parte ser executada por um sistema diferente. mas sim um único sistema centralizado. 1. O melhor exemplo de utilização dos sistemas operacionais de rede são as redes locais (Local Area Network-LAN). Os sistemas fracamente acoplados ainda podem ser classificados em: Sistemas Operacionais de Rede: cada nó (sistema independente) possui seu próprio sistema operacional.3. memória. memória e dispositivos de E/S (unidades funcionais) é fundamental no projeto de sistemas com múltiplos processadores. Organização dos Sistemas Fracamente Acoplados A organização dos sistemas fracamente acoplados ou topologia. caso haja algum problema com o meio de transmissão. Cada sistema possui o seu próprio sistema operacional. Barramento Cruzado: as unidades funcionais podem ser conectadas entre si através de barramentos cruzados. Sistemas Multiprogramáveis A possibilidade de periféricos funcionarem simultaneamente entre si. quando um programa perde o uso do processador e depois retorna para continuar o processamento. à execução deste único programa. concorrendo pela utilização da UCP. 1. Somente um programa pode estar na memória e o processador fica dedicado. memória e periféricos. ficando todo este mecanismo transparente para ele. Nesse caso. exclusivamente. Um programa que não ocupe toda a memória ocasiona a existência de áreas livres.0016 0. Subutilização da memória. aparentando ao usuário que nada aconteceu. ou seja.0001 0. Caso uma linha de comunicação apresente problema.0015 segundos segundos segundos = 0. linhas alternativas permitirão que a rede continue em funcionamento.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. A utilização concorrente da UCP deve ser implementada de maneira que. 14 . Gomes Organização Distribuída Na organização distribuída existem linhas de comunicação ponto-a-ponto que ligam os sistemas e caminhos alternativos entre os diversos nós da rede. Exemplo de Utilização do Sistema Leitura de um registro Execução de 100 instruções Total Porcentagem de utilização da CPU 0.0015 0. Este tipo de organização é utilizado geralmente em redes distribuídas.6% Características dos sistemas multiprogramáveis: Vários programas podem estar residentes na memória. pois existem vários programas residentes se revezando na utilização do processador. a UCP permanece menos tempo ociosa e a memória principal é utilizada de forma mais eficiente.6. Mais simples de implementar.066 = 6. Características dos sistemas monoprogramáveis: Baixa utilização dos recursos do sistema como: processador. que é o princípio básico para o projeto e implementação de sistemas multiprogramáveis. seu estado deve ser idêntico ao do momento em que foi interrompido. José Eduardo S. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado. permitiu a execução de tarefas concorrentes. sem utilização. pois não existem questões de concorrência para serem tratadas pelo sistema operacional.0001 / 0. juntamente com a UCP. Exceção: é o resultado direto da execução de uma instrução do próprio programa. Interrupção: gerada pelo sistema operacional ou algum dispositivo de hardware e.6. ou seja. Nestas situações o fluxo de execução do programa é desviado para uma rotina especial de tratamento. o controle deve voltar ao programa que. O que diferencia uma interrupção de uma exceção é o tipo de evento que gera esta condição.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Situações como a divisão de um número por zero ou a ocorrência de um overflow caracterizavam essa situação. Para isso acontecer. é possível evitar que um programa seja encerrado no caso de ocorrer. já que alguns problemas surgem com esse tipo de implementação. estava sendo processado. por exemplo. Interrupção e Exceção Durante a execução de um programa. é necessário que. Gomes Em sistemas multiprogramáveis é possível compartilhar os periféricos. após a execução dessa rotina. Neste caso. anteriormente. Exemplo: Nos próximos itens serão mostrados alguns mecanismos e dispositivos que possibilitam a implementação de um sistema de tarefas concorrentes. independe do programa que está sendo executado. podem ser escritos pelo próprio programador. compartilhar impressoras entre vários usuários e realizar o acesso concorrente a discos por diversos programas. alguns eventos podem ocorrer durante o seu processamento.1. José Eduardo S. No momento em que a unidade de controle detecta a ocorrência de algum tipo de interrupção. o programa em execução é interrompido. e o controle é desviado para uma rotina responsável pelo tratamento da interrupção. sistema multiprogramável. neste caso. por exemplo. um overflow. Os mecanismos de tratamento de exceções. gerado pelo sistema operacional ou por algum dispositivo de hardware. Um exemplo é quando um periférico avisa à UCP que está pronto para transmitir algum dado. A eficiência proporcionada por um sistema multiprogramável resulta em maior complexidade do sistema operacional. obrigando a intervenção do sistema operacional. 1. um conjunto de informações sobre a execução do 15 . muitas vezes. Dessa forma. Como. Este tipo de intervenção é chamado interrupção ou exceção e pode ser resultado da execução de instruções do próprio programa. no momento da interrupção. a UCP deve interromper o programa para atender a solicitação do dispositivo. Muitas vezes. em função da necessidade de atendimento de cada uma. José Eduardo S. a comunicação entre a UCP e os periféricos era controlada por um conjunto de instruções especiais. Essas informações consistem no conteúdo de alguns registradores. 1. A implementação de um dispositivo chamado controlador ou interface permitiu à UCP agir de maneira independente dos dispositivos de E/S. Exemplo: Programa Salva os registradores Rotina de Tratamento da Interrupção Identifica a origem da interrupção Interrupção Obtém o endereço da rotina de tratamento Restaura os registradores Não existe apenas um tipo de interrupção. executadas pela própria UCP. as interrupções deverão possuir prioridades. No caso de múltiplas interrupções ocorrerem. As interrupções podem ser classificadas como mascaráveis (podem ser desabilitadas pelo processador) e não mascaráveis (o tratamento é sempre obrigatório).6.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Essa informação está em uma estrutura do sistema chamada vetor de interrupção. No momento que uma interrupção acontece. Operações de Entrada / Saída (E/S) Em sistemas primitivos. que deverão ser restaurados posteriormente para a continuação do programa. UCP Memória Controlador 16 . mas sim através do controlador.2. Com este novo elemento a UCP não se comunica mais diretamente com os periféricos. Gomes programa seja preservado. o processador deve saber qual interrupção terá de atender primeiro. denominadas instruções de entrada/saída. Para isso. a UCP deve saber para qual rotina de tratamento deverá ser desviado o fluxo de execução. este controle é chamado de E/S Controlada por Programa.3. Assim. o dispositivo de entrada pudesse iniciar uma nova leitura. enquanto a UCP manipula o dado localizado no buffer. A operação de E/S Controlada por Interrupção é muito mais eficiente que a E/S Controlada por Programa. Outra forma derivada da anterior. por parte do controlador. isto é. acesso direto a memória. a UCP ficasse livre para se ocupar de outras tarefas.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. a UCP. José Eduardo S. essa implementação ainda sobrecarregava a UCP. era permitir que. após a execução de um comando de leitura ou gravação. Gravação UCP Memória Principal Buffer Gravação Controlador de E/S Leitura Leitura 17 . Neste caso. quando um dado fosse transferido para o buffer após uma operação de leitura. o próprio periférico se encarrega de sinalizar o processador. O mesmo raciocínio pode ser aplicado para operações de gravação. Quando a transferência termina. o processador ficava constantemente testando o estado do periférico de E/S para saber quando a operação chegaria ao seu final. Em vez de o sistema periodicamente verificar o estado de uma operação pendente. após o início da transferência dos dados. o próprio controlador interrompe a UCP para avisar do término da operação. Buffering A técnica de buffering consiste na utilização de uma área de memória para a transferência de dados entre os periféricos e a memória principal denominada buffer. de uma técnica de transferência de dados denominada DMA (Direct Memory Access). denominado E/S Controlada por Interrupção. uma vez que toda a transferência de dados entre memória e periféricos exigia a intervenção da UCP. Esta técnica permite que um bloco de dados seja transferido entre memória e periféricos sem a intervenção da UCP. sendo reservada exclusivamente para este propósito. A área de memória utilizada pelo controlador na técnica de DMA é chamado buffer. O buffering veio permitir que. Gomes Existiam duas formas básicas do processador controlar as operações de E/S: Na primeira. Apesar disto. fica livre para o processamento de outras tarefas. A solução para este problema foi a implementação. em determinados intervalos de tempo. exceto no início e no final da transferência. o sistema operacional deveria realizar um teste para saber do término ou não da operação de E/S em cada dispositivo (Polling). Com este mecanismo. porém mais inteligente.6. as operações de E/S puderam ser realizadas de uma forma mais eficiente. onde a UCP coloca o dado no buffer para um dispositivo de saída manipular. o dispositivo realiza outra operação de leitura no mesmo instante. Com a implementação do mecanismo de interrupção no hardware dos computadores. 1. Gomes 1. em sistemas multiprogramáveis. O sistema operacional tem que ter mecanismos para proteger que o programa de um usuário acesse o código do programa de outro usuário e do próprio sistema operacional. Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários. deve existir uma preocupação. Programa Arquivo De Spool Sistema Operacional Impressão 1. José Eduardo S. onde diversos usuários compartilham os mesmos recursos. 1. manipulando dados próprios. utiliza o disco como um grande buffer. vários usuários executarem os mesmos utilitários do sistema operacional simultaneamente.6.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. como.6. Proteção do Sistema Nos sistemas multiprogramáveis. por exemplo. para ser impresso posteriormente pelo sistema. haveria diversas cópias de um mesmo programa na memória principal. Para isto os sistemas multiprogramáveis implementam o esquema de lock (bloqueio) de arquivo que permite o controle pelo sistema do acesso concorrente a arquivos. 18 . O spooling.6. exigindo que apenas uma cópia do programa esteja na memória. podem ocorrer problemas de inconsistência. nenhum outro programa deve interferir até que o primeiro programa a libere. como. por exemplo. basicamente. A reentrância permite que cada usuário possa entrar em um ponto diferente do código reentrante.6. Spooling A técnica de spooling (simultaneous peripherical operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos sistemas operacionais. por parte do sistema operacional. o que ocasionaria um desperdício de espaço. exclusivos de cada usuário. um editor de texto. permitindo que dados sejam lidos e gravados em disco.4. No momento em que um comando de impressão é executado por um programa. na utilização de uma impressora. enquanto outras tarefas são processadas.5. Reentrância É comum. as informações que serão impressas são gravadas em um arquivo em disco (arquivo de spool). Se cada usuário que utilizasse o editor de texto trouxesse o código do utilitário para a memória. Quando um programa reserva um periférico para realizar alguma operação. de garantir a integridade dos dados pertencentes a cada usuário. Compartilhamento de arquivos em disco permite que dois ou mais usuários acessem um mesmo arquivo simultaneamente e caso o acesso não seja controlado pelo sistema operacional. Um exemplo dessa técnica está presente quando impressoras são utilizadas. Gomes 1. As system calls podem ser divididas em grupos de função: Gerência de Processos Criação e eliminação de processos. parâmetros e formas de ativação específicos. As principais funções do núcleo são: Tratamento de interrupções. Sincronização e comunicação entre processos. realiza uma chamada a uma de suas rotinas (ou serviços) através de system calls (chamadas ao sistema). System Calls É um mecanismo implementado para proteger o núcleo do sistema. Estrutura do Sistema Operacional Existe uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional. pois ele não é executado como uma aplicação tipicamente sequencial. realize uma operação que o danifique. José Eduardo S. Contabilização e segurança do sistema. O usuário (ou aplicação). Núcleo do Sistema ou Kernel (cérebro) Conjunto de rotinas (procedimentos e funções) que oferecem serviços aos usuários do sistema e suas aplicações. 19 . As rotinas do sistema são executadas sem uma ordem pré-definida. bem como outras rotinas do próprio sistema. Alteração das características do processo. Operações de entrada e saída. Aplicação System Call Núcleo (kernel) Hardware O mecanismo de ativação e comunicação entre a aplicação e o sistema é semelhante ao mecanismo implementado quando um programa modularizado ativa um dos seus procedimentos e funções. 1. com nomes. que tenha acesso ao núcleo.7.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Sincronização e comunicação entre processos. meio e fim. baseadas em eventos dissociados do tempo (eventos assíncronos). Escalonamento e controle de processos. Para cada serviço existe uma system call associada e cada sistema operacional tem o seu próprio conjunto (biblioteca) de chamadas.7. Gerência de memória.7.1. que são portas de entrada para se ter acesso ao núcleo do sistema operacional. para evitar que uma aplicação.2. Gerência do sistema de arquivos. com início. Criação e eliminação de processos. fazendo com que o sistema fique comprometido e inoperante. 1. quando deseja solicitar algum serviço do sistema. para impedir a ocorrência de problemas de segurança e até mesmo. basicamente. algumas instruções. As instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas. Sendo assim. que indica o modo de acesso corrente. O modo de acesso é determinado por um conjunto de bits. a solicitação é feita através de uma system call. uma aplicação só pode executar instruções não-privilegiadas.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.7. como operações de entrada e saída. Modo Kernel – Uma aplicação pode ter acesso ao conjunto total de instruções do processador. 1. violação do sistema. Gomes Gerência de Memória Alocação e desalocação de memória. A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. Modos de Acesso Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações. o modo de acesso é retornado para o modo usuário. o processador implementa um mecanismo de modos de acesso. tendo acesso a um número reduzido de instruções. pois a sua utilização indevida ocasionaria sérios problemas à integridade do sistema. Através desse registrador. Sempre que uma aplicação necessita de um serviço que incorra em risco para o sistema. só devem ser executadas pelo sistema operacional. Ao término da rotina do sistema. Para permitir que uma aplicação possa executar uma instrução privilegiada. localizado em um registrador especial da UCP. dois modos de acesso: Modo Usuário – Quando o processador trabalha em modo usuário. Existem.3. Programa Usuário A Memória Principal System Call Programa Usuário B Programas dos Usuários Executam no modo usuário Rotina do Sistema Sistema Operacional Executa no modo kernel 20 . o hardware verifica se uma instrução pode ou não ser executada pela aplicação. José Eduardo S. Gerência de Entrada/Saída Operações de entrada/saída. Manipulação de arquivos e diretórios. A system call altera o modo de acesso do processador para um modo mais privilegiado (modo kernel). enquanto as instruções não-privilegiadas são aquelas que não oferecem perigo ao sistema. pois deve possuir a capacidade de gerenciar e compartilhar todos os seus recursos. protegendo as camadas mais internas. solucionando.2. A vantagem da estrutura em camadas é isolar as funções do sistema operacional. os problemas de acesso às instruções privilegiadas. José Eduardo S. 21 .FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.1. Aplicação Aplicação Modo Usuário Modo Kernel System Calls Hardware 1.7. basicamente.4. Sistemas em Camadas Um sistema em camadas divide o sistema operacional em camadas sobrepostas. • Sistemas em Camadas. Sistemas Monolíticos A organização mais comum é aquela que estrutura o sistema como um conjunto de rotinas que podem interagir livremente umas com as outras. formando um grande e único programa executável. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos. Módulos de uma camada podem fazer referência apenas a módulos de camadas inferiores. em diversos níveis. 1.4. Estruturas de Sistemas Operacionais Existem. A estrutura monolítica pode ser comparada com uma aplicação formada por vários procedimentos que são compilados separadamente e depois linkados. três maneiras de organizar o código do sistema operacional e o inter-relacionamento entre seus diversos componentes: • Sistemas Monolíticos. facilitando sua alteração e depuração. • Sistemas Cliente-Servidor.7. 1. Gomes O núcleo do Sistema Operacional sempre é executado em modo kernel. além de criar uma hierarquia de níveis de modos de acesso.7.4. Gomes 5 4 3 2 1 0 Operador Programas de usuário Entrada/Saída Comunicação Gerência de memória Multiprogramação 1. sendo cada um responsável por oferecer um conjunto de serviços. enquanto o processo que responde à solicitação é chamado de servidor. Sempre que uma aplicação deseja um serviço. se um erro ocorrer em um servidor. Sistemas Cliente/Servidor Uma tendência dos sistemas operacionais modernos é tornar o núcleo do sistema operacional o menor e mais simples possível. Cliente Servidor de Arquivo Servidor de Memória Servidor de Processo Servidor de Rede Modo Usuário Modo Kernel Núcleo (Kernel) Hardware A utilização deste modelo permite que os servidores executem em modo usuário. serviços de escalonamento. É função do núcleo do sistema realizar a comunicação. José Eduardo S. ou seja. Além disso.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Neste caso. Como conseqüência. solicita um serviço enviando uma mensagem para o servidor.3. O servidor responde ao cliente através de uma outra mensagem.4. mas o sistema não ficará inteiramente comprometido. etc. a aplicação que solicita um serviço é chamada de cliente. o sistema é dividido em processos. a troca de mensagens entre o cliente e o servidor. como serviços de arquivo. serviços de criação de processos. não tenham acesso direto a certos componentes do sistema. Para implementar esta idéia. Apenas o núcleo do sistema. responsável pela comunicação entre clientes e servidores. Um cliente que pode ser uma aplicação de um usuário ou um outro componente do sistema operacional. ou seja. este servidor pode parar. serviços de memória.7. a implementação de sistemas cliente/servidor permite 22 . ela solicita ao processo responsável. executa em modo kernel. Gomes isolar as funções do sistema operacional por diversos processos (servidores) pequenos e dedicados a serviços específicos. passa a incorporar outras funções críticas do sistema. Apesar das vantagens deste modelo. 23 . como escalonamento de processos. além das funções de devices drivers. José Eduardo S. com múltiplos processadores (fortemente acoplado) ou num ambiente distribuído (fracamente acoplado). gerência de memória. além de ser responsável pela comunicação entre o cliente e servidor. O núcleo do sistema. Como os servidores se comunicam através de trocas de mensagens.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. O que é implementado na prática é uma combinação do modelo de camadas com o modelo cliente-servidor. Como conseqüência. ele é de difícil implementação. não importa se os clientes e servidores estão sendo processados com um processador. o sistema operacional passa a ser de mais fácil manutenção. 2. Introdução O processo pode ser entendido com um programa em execução. sincronização. Gomes 2. chama-se processo. Ponteiros Estado do Processo Nome do Processo Prioridade do Processo Registradores Limites de memória Lista de Arquivos Abertos : : : O sistema gerencia os processos através de system calls. o sistema mantém todas as informações sobre o processo. Processo 2.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. eliminação. o processador executa a tarefa de usuário durante um intervalo de tempo (time-slice) e. A estrutura responsável pela manutenção de todas as informações necessárias à execução de um programa. é necessário que o sistema preserve todas as informações da tarefa que foi interrompida. cada usuário do sistema tem a impressão de possuir o processador exclusivamente para ele. Bloco de Controle do Processo (PCB) 24 . Nesses sistemas.1. José Eduardo S. Como sabemos. Este conceito torna-se mais claro quando pensamos na forma em que os sistemas multiprogramáveis (multitarefa) atendem a diversos usuários (tarefas) e mantém informações a respeito dos vários programas que estão sendo executados concorrentemente. estado corrente. A partir do PCB. 2. Modelo de Processo O sistema operacional materializa o processo através de uma estrutura chamada bloco de controle de processo (Process Control Block. recursos alocados por ele e informações sobre o programa em execução.PCB). no instante seguinte. suspensão de processos. só que seu conceito é mais abrangente. isto é. prioridade. entre outras. que realizam operações como criação. está processando outra tarefa. como sua identificação. para quando voltar a ser executada não lhe faltar nenhuma informação para a continuação do processamento. um sistema multiprogramável simula um ambiente de monoprogramação para cada usuário. como conteúdo de registradores e espaço de memória. A cada troca. Identificação: Cada processo criado pelo sistema recebe uma identificação única (PID – process identification). O contexto de software define basicamente três grupos de informações sobre um processo: sua identificação. A troca de um processo por outro na UCP. Contexto de Hardware O contexto de hardware constitui-se.1. No momento em que o processo perde a utilização da UCP. Espaço de endereçamento.2. Gomes O processo pode ser dividido em três elementos básicos: Contexto de hardware. do conteúdo de registradores: program counter (PC). o sistema operacional e outros processos podem fazer referência a um determinado processo e. Através do PID. em substituir o contexto de hardware de um processo pelo de outro. então. 25 . por exemplo. alterar uma de suas características. representada por um número. é denominada mudança de contexto (context switching).FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Essa operação resume-se. José Eduardo S. seu contexto de hardware está armazenado nos registradores do processador. Contexto de software. podendo ser alteradas durante sua existência. basicamente. A mudança de contexto consiste em salvar o conteúdo dos registradores da UCP e carregá-los com os valores referentes ao do processo que esteja ganhando a utilização do processador. como. suas quotas e seus privilégios. Contexto de Software O contexto de software especifica características do processo que vão influir na execução de um programa.2. Essas características são determinadas no momento da criação do processo. o número máximo de arquivos abertos simultaneamente ou o tamanho máximo do buffer para operações de E/S. realizada pelo sistema operacional. Quando um processo está em execução. stack pointer (SP) e bits de estado. o sistema salva suas informações no seu contexto de hardware. 2. Processo A executando Salva Registradores do Processo A Sistema Operacional Processo B Carrega Registradores do Processo B executando Salva Registradores do Processo B Carrega Registradores do Processo A executando 2. por exemplo.2. Quotas: São os limites de cada recurso do sistema que o processo pode alocar. Cada usuário possui uma identificação única no sistema (UID – user identification).3. Tamanho máximo de memória que o processo pode alocar. Em sistemas com apenas um processador.3. Durante sua existência. ele passa por uma série de estados. Estados do Processo Um processo. Basicamente. Como exemplo. não é executado todo o tempo pelo processador. Número máximo de operações de E/S pendentes. podemos citar o término de uma operação de entrada e saída ou a espera de uma determinada data e/ou hora para poder continuar sua execução. vários processos podem estar sendo executados ao mesmo tempo. em um sistema multiprogramável (multitarefa). Espera (wait): Um processo está no estado de espera quando aguarda algum evento externo ou por algum recurso para poder prosseguir o seu processamento. Privilégios: Definem o que o processo pode ou não fazer em relação ao sistema e aos outros processos. além do espaço para os dados utilizados por ele. Caso uma cota seja insuficiente. o processo poderá ser executado lentamente ou mesmo não ser executado. José Eduardo S. Existe também a possibilidade de um mesmo processo ser executado por mais de um processador (processamento paralelo).FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. 2. Espaço de Endereçamento O espaço de endereçamento é a área de memória do processo onde o programa será executado. espera que o sistema operacional aloque a UCP para sua execução. Tamanho máximo do buffer para operações de E/S.2. Cada processo possui o seu próprio espaço de endereçamento. ou seja. Número máximo de processos e subprocessos que podem ser criados. Gomes O processo também possui uma identificação do usuário ou do processo que o criou (owner). Pronto (ready): Um processo está no estado de pronto quando apenas aguarda uma oportunidade para executar. atribuída ao processo no momento de sua criação. 2. que deve ser protegido do acesso dos demais processos. existem três estados em que um processo pode se encontrar no sistema: Execução (running): Um processo é dito em estado de execução quando está sendo processado pelo UCP. Alguns exemplos de quotas que aparecem na maioria dos sistemas operacionais são: • • • • • Número máximo de arquivos abertos simultaneamente. somente um processo pode estar sendo executado em um dado instante de tempo. dependendo do número de processadores. 26 . Já em sistemas com múltiplos processadores. Assim: Lista de processos em estado de pronto PCB #5 PCB #1 : : PCB #9 : : PCB #2 PCB #4 Lista de processos em estado de espera : : : : : : 2. Espera → Pronto: Um processo passa do estado de espera para o estado de pronto quando a operação solicitada é atendida. uma operação de entrada/saída (b). durante o seu processamento. Gomes O sistema operacional gerencia os processos através de listas encadeadas. por exemplo. ou o recurso esperado é concedido. em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos involuntários). onde cada PCB (bloco de controle de processo) tem um ponteiro para o seu sucessor. existem quatro mudanças de estado que podem ocorrer a um processo: Execução b Espera d a Pronto c Pronto → Execução: Quando um processo é criado. Execução → Espera: Um processo em execução passa para o estado de espera por eventos gerados pelo próprio processo. Basicamente.4. como. o sistema o coloca em uma lista de processos no estado de pronto. Mudanças de Estado do Processo Um processo muda de estado diversas vezes. 27 .FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Cada sistema tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (escalonamento). José Eduardo S. Um processo no estado de espera sempre terá de passar pelo estado de pronto antes de poder ser novamente selecionado para execução (c). onde aguarda a oportunidade de ser executado (a). Não existe a mudança do estado de espera para o estado de execução diretamente. 6. caso um processo deixe de existir. tornando-o menor e mais estável. pode também ser implementado na própria estrutura de um sistema operacional. 2. basta não ativar os processos responsáveis. foi introduzido o conceito de thread (linha). Serviços de rede. pode criar outros subprocessos.5. Na tentativa de diminuir o tempo gasto na criação/eliminação de processos. A grande diferença entre subprocessos e threads é em relação ao espaço de endereçamento. bem como economizar recursos do sistema como um todo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Por exemplo. permitindo assim que um thread possa alterar dados de outro thread. Neste caso. Gerência de impressão. Enquanto subprocessos possuem. onde aguarda por uma nova oportunidade para continuar o seu processamento. Subprocesso e Thread Um processo pode criar outros processos de maneira hierárquica. Contabilização de erros. o fim da fatia de tempo que o processo possui para sua execução (d). threads compartilham o mesmo espaço de endereçamento do processo. 2. por sua vez. para retirar código do seu núcleo. cada um. por exemplo. 28 . espaços de endereçamento independentes e protegidos. No caso de uma ou mais funções não serem desejadas. Contabilização do uso de recursos. além de estar associado a aplicações de usuários. Quando um processo (processo pai) cria um outro. Gomes Execução → Pronto: Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema. o que permitirá liberar memória para os processos dos usuários. O uso de subprocessos no desenvolvimento de aplicações concorrentes demanda o consumo de diversos recursos do sistema (contexto de hardware. Threads compartilham o processador da mesma maneira que um processo. José Eduardo S. Algumas das funções do sistema operacional que podem ser implementadas através de processos: • • • • • Auditoria e segurança. chamamos o processo criado de subprocesso ou processo filho. os subprocessos subordinados são eliminados. contexto de software e espaço de endereçamento). enquanto um thread espera por uma operação de E/S. outro thread pode ser executado. sem nenhuma proteção. o processo volta para a fila de pronto. O subprocesso. Como conseqüência desta estrutura. como. Processos do Sistema O conceito de processo. Tipos de Processos Os processos podem ser classificados processamento que realizam. Gomes • • • • Gerência de jobs batch. Comunicação de eventos. ou seja. que se baseiam em leitura. utilizando o processador. que efetuam muitos cálculos e poucas operações de leitura/gravação. Temporização.7. 29 . I/O-bound (ligado à E/S) – quando o processo passa a maior parte do tempo no estado de espera. Interface de comandos (shell). Esse tipo de processo é encontrado em aplicações comerciais. processamento e gravação.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Assim: de acordo com o tipo de CPU-bound (ligado a CPU) – quando o processo passa a maior parte do tempo no estado de execução. Este tipo de processo realiza poucas operações de entrada/saída e é encontrado em aplicações matemáticas ou científicas. 2. pois realiza um elevado número de operações de entrada/saída. José Eduardo S. Comunicação entre Processos 3. 3. No projeto de sistemas operacionais multiprogramáveis. Introdução É comum processos que trabalham juntos (concorrentes) compartilhem recursos do sistema. Para implementá-los será necessária a utilização de estruturas que permitam a especificação de concorrência em programas. registros. os processos deverão aguardar até que o buffer esteja pronto para as operações de gravação ou de leitura. Na verdade. não importa quais recursos são compartilhados. como arquivos. 30 .2. A primeira notação para a especificação da concorrência em um programa foram os comandos FORK e JOIN. Este capítulo se detém na comunicação entre processos em sistemas fortemente acoplados. pois problemas decorrentes dessa interação serão os mesmos. Da mesma forma. Em ambos os casos. Gomes 3. De maneira geral. Especificação de Concorrência em Programas Na abordagem dos problemas e soluções decorrentes da comunicação entre processos. é fundamental a implementação de mecanismos de sincronização que garantam sua integridade e confiabilidade.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.1. o compartilhamento de recursos entre processos pode gerar situações indesejáveis. José Eduardo S. dispositivos e áreas de memória. utilizaremos diversos algoritmos. um processo só poderá ler dados armazenados do buffer se existir algum dado a ser lido. Processo Gravador Sincronização Dados Buffer Dados Processo Leitor Os mecanismos que garantem a comunicação entre processos concorrentes e o acesso a recursos compartilhados são chamados mecanismos de sincronização. capazes até de comprometer o sistema. Um processo só poderá gravar dados no buffer caso ele não esteja cheio. Vejamos um exemplo onde dois processos trocam informações através de operações de gravação e leitura em um buffer. . através da criação de um processo (Processo_1. . . end. onde o processamento só continuará quando todos os processos criados já tiverem terminado suas execuções. Processo_2. . program B. Comando_n).. end.. Fork B. Join B. . Uma das implementações mais simples de expressar concorrência em um programa é a utilização dos comandos PARBEGIN e PAREND.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. concorrentemente a A. quando o programa A encontrar o comando JOIN. só continuará a ser processado após o término de B. vejamos em uma aplicação prática. faz com que seja criado um outro processo para a execução do programa B. . Processo_n) para cada comando (Comando_1. ao encontrar o comando FORK. comando_2.) comando_n. Processo Principal Processo 1 Processo 2 Processo 3 Processo n Processo Principal Para compreendermos realmente como funciona esta estrutura. onde calculamos o valor da expressão aritmética: x := SQRT (1024) + (35.. O comando PAREND define um ponto de sincronização. Gomes program A. . . O comando JOIN permite que o programa A sincronize-se com B.. .23) – (302 / 7)..4 * 0.. Comando_2. (. José Eduardo S. O programa A começa a ser processado e.. parbegin comando_1. O comando PARBEGIN especifica que a seqüência de comandos seja executada concorrentemente em uma ordem imprevisível. parend.. ou seja. . 31 . que está sendo atualizado. O primeiro caixa lê o registro de cliente e soma ao campo saldo o valor do lançamento. todos os outros que queiram acessar esse mesmo recurso deverão esperar até que o primeiro processo termine o acesso. X := Temp1 + Temp2 – Temp3. Temp2. um protocolo de entrada nessa região.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Suponha então que dois caixas diferentes possam atualizar o saldo um mesmo cliente simultaneamente. vejamos um problema aplicado a situações práticas: Suponha um arquivo de contas bancárias. O cálculo final de X só poderá ser realizado quando todas as variáveis dentro da estrutura tiverem sido calculadas. Solução para Problemas de Compartilhamento A solução mais simples. para realizar outro lançamento. Os mecanismos que implementam a exclusão mútua utilizam um protocolo de acesso à região crítica. Temp3 := 302 / 7. para evitar o problema de compartilhamento anterior. Temp2 := 35. Toda vez que um processo for executar sua região crítica.3. 32 . é impedir que dois ou mais processos acessem um mesmo recurso no mesmo instante.4. Temp3 : REAL.23.4 * 0. ele obrigatoriamente executará. 3. A exclusão mútua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado. José Eduardo S. enquanto um processo estiver acessando determinado recurso. BEGIN PARBEGIN Temp1 := SQRT (1024). o dado gravado estará inconsistente. Temp1. WRITELN (‘x = ‘. PAREND. outro caixa lê o registro do mesmo cliente. Independente de qual caixa atualize primeiro o saldo no arquivo. onde cada cliente tem seu saldo controlado. Esta idéia de exclusividade de acesso é denominada exclusão mútua. END. deverá executar um protocolo de saída. Gomes PROGRAM Expressao. Para isso. X). VAR X. ao sair. Os comandos de atribuição situados entre PARBEGIN e PAREND são executados concorrentemente entre si. Antes de gravar o novo saldo no arquivo. 3. Problemas de Compartilhamento de Recursos Para compreender melhor como a sincronização entre processo é fundamental quando recursos são compartilhados em sistemas multiprogramáveis. antes. A parte do código do programa onde é feito o acesso ao recurso compartilhado é denominada região crítica. Da mesma forma que. Qualquer solução para os problemas de compartilhamento de recursos entre processo. que concorram pelo mesmo recurso. concorrentemente. Esse tipo de sincronização é chamado sincronização condicional.2. Gomes begin (. 33 . Starvation Um outro problema. passa necessariamente pela solução dos problemas de sincronização. bastante comuns.5. Nesse caso. 3.. é denominado starvation. Uma solução bastante simples para esse problema é a criação de filas de pedidos de alocação para cada recurso compartilhado. examinaremos alguns problemas. (* protocolo de entrada *) Regiao_critica. enquanto outro lê. conseqüentemente.) end 3. os dados do buffer.3.) Entra_regiao_critica. O esquema de o primeiro a chegar ser o primeiro a ser atendido (FIFO) elimina o problema do starvation. (* protocolo de saída *) (. Isto pode acontecer. 3. um processo grava dados em um buffer. Velocidade de Execução dos Processos A velocidade de execução dos processos pode interferir em uma boa solução para o problema de exclusão mútua.5.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Sincronização Condicional Outra situação na qual é necessária a sincronização entre processos concorrentes. de forma que um processo não tente gravar dados em um buffer cheio ou ler de um buffer vazio.. algumas soluções introduzem novos problemas. Os processos envolvidos devem estar sincronizados.1. Starvation é a situação onde um processo nunca consegue executar sua região crítica e.. por estar esperando por um processo mais lento. Um processo mais rápido que queira acessar sua região crítica pode ficar muito tempo esperando.5. é quando um recurso compartilhado não se encontra pronto para ser utilizado pelos processos. até o recurso ficar pronto para o processamento. também decorrente da sincronização entre processos.5. o processo que deseja acessar o recurso deverá ser colocado no estado de espera. Sai_regiao_critica. decorrentes da sincronização entre processos. Um exemplo clássico é a comunicação entre dois processos através de operações de gravação e leitura em um buffer.. quando um processo tem baixa prioridade em relação aos outros. por exemplo. acessar o seu recurso compartilhado. Nessa comunicação. A seguir. José Eduardo S. 3. Problemas de Sincronização Na tentativa de implementar a exclusão mútua. que chamaremos de problemas de sincronização. antes de entrar em sua região crítica. não existe a possibilidade de dois processos estarem manipulando uma variável compartilhada ao mesmo tempo. Gomes 3. terá seu funcionamento seriamente comprometido. Nesse caso. end. while (pode_a) do test_and_set (pode_a. 3. var pode_a : boolean. Test-and-Set (X. a instrução test-and-set utiliza uma variável lógica global que chamaremos bloqueio. bloqueio := false. program programa_test_and_set.Y). procedure processo_A. var bloqueio: boolean.2. Instrução Test-and-Set Muitos processadores possuem uma instrução especial que permite ler uma variável.6. regiao_critica_A. begin repeat pode_a := true. através da instrução test-and-set e. o sistema. Um dos problemas deste mecanismo é quando o processo que desabilitou as interrupções não torna a habilitá-las. possibilitando a implementação da exclusão mútua. var pode_b : boolean. bloqueio).1. armazenar seu conteúdo em outra área e atribuir um novo valor a essa variável. Ao terminar o acesso. until false. ou seja. trata-se de uma instrução indivisível. o processo deve simplesmente retornar o valor da variável para falso.6. provavelmente. assim. Soluções de Hardware para o Problema de Exclusão Mútua 3. Assim. procedure processo_B. Esse tipo especial de instrução é chamado instrução test-and-set e tem como característica ser sempre executada sem interrupção. begin 34 . sendo atribuído à variável Y o valor lógico verdadeiro. Para coordenar o acesso concorrente a um recurso. acessar o recurso de forma exclusiva. José Eduardo S.6. Quando a variável bloqueio for falsa. Desabilitação de Interrupções A solução mais simples para o problema da exclusão mútua é fazer com que o processo. qualquer processo poderá alterar seu valor para verdadeiro. liberando o acesso ao recurso. A instrução test-and-set possui o formato abaixo e na sua execução o valor lógico da variável Y é copiado para X.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. desabilite todas as interrupções externas e as reabilite após deixar a região crítica. 7. para os problemas de sincronização entre processos concorrentes.7. não pode impedir que outros processos entrem nas suas próprias regiões críticas. Gomes repeat pode_b := true. uma solução de alto nível denominada MONITORES e a TROCA DE MENSAGENS. fora de sua região crítica. Um processo não pode ficar indefinidamente esperando para entrar em sua região crítica. while (pode_b) do test_and_set (pode_b. 35 . um processo executa uma instrução DOWN. PARBEGIN processo_A. José Eduardo S. Sempre que deseja entrar na sua região crítica. Entretanto. não negativa. este é decrementado de 1. As ferramentas mais recentes de software utilizadas para a solução de problemas de sincronização entre processos são os SEMÁFOROS. begin bloqueio := false. 3. 3. que soluciona os problemas de compartilhamento de recursos. Soluções de Software para o Problema de Exclusão Mútua Além da exclusão mútua.1. bloqueio := false. PAREND.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. o processo que solicitou a operação ficará no estado de espera. Um processo. processo_B. Estas instruções funcionam como protocolo de entrada e saída no caso de exclusão mútua. Se o semáforo for maior que 0. e o processo que solicitou a operação pode executar sua região crítica. bloqueio). Semáforos O conceito de semáforo foi proposto como uma solução mais geral e simples. regiao_critica_B. se uma instrução DOWN é executada em um semáforo cujo valor seja igual a 0. end. Um semáforo é uma estrutura composta de uma FILA e uma variável inteira. que só pode ser manipulada por duas instruções: DOWN e UP. end. três fatores fundamentais para a solução dos problemas de sincronização deverão ser atendidos: O número de processadores e o tempo de execução dos processos concorrentes devem ser irrelevantes. until false. em uma fila associada ao semáforo. fazendo com que o semáforo seja decrementado de 1 e passe a ter o valor 0. regiao_critica_A. Em seguida. ficará aguardando até que o Processo_A execute a instrução UP. José Eduardo S.valor + 1. incrementando o semáforo de 1 e liberando o acesso ao recurso. devido a operações DOWN pendentes o sistema escolhe um processo na fila de espera e muda seu estado para pronto. O Processo_B também executa a instrução DOWN.valor := s.valor = 0) then coloca_processo_na_fila_de_espera else s. executa uma instrução UP. procedure processo_A.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. se uma das operações for iniciada. procedure DOWN (var s : semaforo). Gomes O processo que está acessando o recurso.valor := s. ao sair da sua região crítica. indicando que nenhum processo está executando sua região crítica. Se um ou mais processos estiverem esperando. 36 . end.valor – 1. program semaforo. until false. O programa a seguir mostra uma solução para o problema de exclusão mútua entre dois processos através do uso de semáforos. As operações DOWN e UP são indivisíveis. o Processo_A ganha o acesso a sua região crítica. var s : semaforo. begin repeat DOWN(s). valor : integer. o semáforo está com o valor 1. Inicialmente. begin if (s. O Processo_A executa a instrução DOWN. procedure UP (var s : semaforo). nenhum outro processo poderá ter acesso ao semáforo até o término dessa operação. begin if (tem_processo_esperando) then tira_da_fila_de_espera else s. ou seja. assim. mas como seu valor é igual a 0. As instruções DOWN e UP em sintaxe PASCAL não convencional: type semaforo = record fila_espera : fila. volte o valor do semáforo para 1. UP(s). end. end. end. é garantido que. valor := 1. como os procedimentos estão definidos dentro do monitor. begin x := 0. procedure soma. A inicialização da variável compartilhada X com o valor zero só acontece uma vez.soma.2. PAREND. begin repeat DOWN(s). UP(s). begin s. until false. Monitores O uso de semáforos exige do programador muito cuidado. begin PARBEGIN regiao_critica.diminui. Isso porque. que tentam tornar mais fácil o desenvolvimento e a correção de programas concorrentes. procedure diminui. PAREND. var x : integer. end. end.7. Vejamos um exemplo bem simples. Neste exemplo. monitor regiao_critica. begin x := x –1 . estará garantida a execução mutuamente exclusiva entre eles. 37 . pois qualquer engano pode levar a problemas de sincronização imprevisíveis. processo_B. regiao_critica. onde dois processos somam e diminuem. José Eduardo S. PARBEGIN processo_A. concorrentemente. end. begin x:= x + 1.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. end. o valor da variável compartilhada X. regiao_critica_B. program exemplo. Gomes procedure processo_B. pode-se garantir que o valor de X ao final da execução concorrente dos procedimentos de soma e diminuição será igual a zero. 3. no momento da primeira ativação do monitor regiao_critica. end. end. Monitores são mecanismos de sincronização de alto nível. begin repeat produz_mensagem (msg). begin PARBEGIN produtor. Gomes 3. Exemplo: program produtor_consumidor. A sincronização é obtida porque uma mensagem somente pode ser lida após ter sido enviada. ao receber uma mensagem. a ordem na qual os dois eventos devem ocorrer. mensagem). As rotinas podem ser representadas através dos procedimentos a seguir: SEND (receptor. 38 . Deadlock Um processo é dito em deadlock quando está esperando por um evento que nunca ocorrerá. consome_mensagem (msg). var msg: tipo_msg.8. Esta situação é consequência. mensagem). Troca de Mensagens Troca de mensagem é um mecanismo de comunicação e sincronização entre processos. end. begin repeat RECEIVE (msg). RECEIVE (transmissor. implementado pelo sistema operacional através de duas rotinas do sistema: SEND e RECEIVE. José Eduardo S. restringindo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. permitem tanto a comunicação entre processos como a sincronização entre eles. mesmo não sendo suas execuções mutuamente exclusivas. end. 3. do compartilhamento de recursos do sistema entre vários processos. procedure consumidor.3. until false. PAREND. Os procedimentos SEND e RECEIVE. sendo que cada processo deve ter acesso ao recurso de forma exclusiva (exclusão mutua). A rotina SEND é responsável por enviar uma mensagem para um processo receptor. A comunicação ocorre porque um processo. end. SEND (msg). procedure produtor. until false. consumidor. obtém dados enviados de outro processo. e a rotina RECEIVE por receber uma mensagem de um processo transmissor. var msg: tipo_msg. na maioria das vezes. dessa forma.7. 1. Throughput: O throughput representa o número de processos (tarefas) executados em um intervalo de tempo. é uma das principais funções executadas pelo sistema operacional multiprogramável. Maximizar o throughput do sistema (número de processos executados num intervalo de tempo).FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Execução (UCP) Processo Escalonamento Processo Pronto Espera Processo Processo Processo Principais Objetivos do Escalonador de Processos: Manter a UCP ocupada o maior tempo possível. Critérios de Escalonamento Utilização de UCP: É desejável que o processador fique a maior parte do seu tempo ocupado. processamento na UCP e operações de E/S. Sistemas de tempo real e de tempo compartilhado também são aspectos fundamentais para a implementação de uma política de escalonamento. CPU-bound ou I/O-bound. Gerência do Processador 4.2. Oferecer um tempo de resposta razoável para os usuários interativos. José Eduardo S. 39 . levando em consideração o tempo de espera para alocação de memória. Tempo de Turnaround: Tempo que um processo leva desde sua admissão no sistema até o seu término. espera na fila de processos prontos para execução. se um processo é do tipo batch. Balancear a utilização do processador entre os diversos processos. Gomes 4. Introdução O conceito básico que gerou a implementação dos sistemas multiprogramáveis foi a possibilidade de a UCP ser compartilhada entre diversos processos. os sistemas operacionais devem levar em consideração as características dos processos. o procedimento para o escalonamento de processos (seleção de processos entre os vários que estão na fila de pronto para utilização do processador). Por isso. A maximização do throughput é desejada na maioria dos sistemas. Para atender alguns desses objetivos. ou seja. 4. interativo. este Problema: Um programa pode não liberar o processador. representa um identificador do processo (X) e o tempo estimado de execução do processo (Y). para situação de chegada de processos representada pela régua de tempo: Tempo 1 (A.2). nenhum outro processo pode tirar esse recurso. 4. Problema: Impossibilidade de prever quando o processo terá sua execução iniciada. voluntariamente libera o processador. Exercício: Simule as políticas de escalonamento não-preemptivas: FIFO. Escalonamento Não-preempitivo O escalonamento não-preemptivo é aquele que quando um processo ganha o direito de utilizar a UCP.3. 40 .3. De um modo geral. enquanto tenta diminuir o tempo de turnaround e de resposta. (E. (B. 4. Escalonamento Cooperativo A partir do momento que o processo está em execução. Escalonamento First-In-First-Out (FIFO) O processo que chega primeiro (first-in) ao estado de pronto é o primeiro a ser selecionado para ocupar a UCP (first-out).4).2. (H. 4. Dessa forma. Problema: Determinar quanto tempo de UCP cada processo necessita para o seu processamento. Gomes Tempo de Resposta: Em sistemas interativos. Alguns escalonamentos não-preemptivos são: 4.1) Onde: (X. SJF e HRN.2) 7 (I.3). qualquer algoritmo de escalonamento busca otimizar a utilização da UCP e o throughput.3. Observação: Escalonamento FIFO e SJF não podem ser aplicados em sistemas de tempo compartilhado.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.1. Escalonamento Shortest-Job-First (SJF) Este algoritmo associa cada processo (ou job) ao seu tempo de execução.5) 4 5 (F. o processo em estado de pronto que precisar de menor tempo de UCP para terminar o seu processamento é selecionado para execução.2) 2 (C. o tempo de resposta é o tempo decorrido do momento da submissão de um pedido até a primeira resposta produzida. quando o processador está livre.Y). retornando a fila de pronto.3. José Eduardo S. onde um tempo de resposta razoável deve ser garantido para usuários interativos.1) 6 (G.3.3) 3 (D. monopolizando desta forma a UCP. Cada fila possui mecanismo próprio de escalonamento. Este mecanismo é definido como preempção por tempo. Vejamos. José Eduardo S. dando a vez para outro processo. Cada fila possui uma prioridade associada.4.4. Toda vez que um processo vai para a fila de pronto com uma prioridade maior do que processo em execução. se todas as outras de prioridade maior estiverem vazias. quando um processo passa para o estado de execução. O escalonamento por múltiplas filas implementa diversas filas de processos no estado de pronto. 41 . é semelhante ao escalonamento FIFO. onde cada processo é associado exclusivamente a uma delas. ganha a UCP. pois este escalonamento trata todos os processo de maneira igual. O sistema só pode escalonar processos de uma fila. O escalonamento preemptivo permite que o sistema dê atenção imediata a processos mais prioritários. além de proporcionar melhores tempos de resposta em sistemas de tempo compartilhado. Escalonamento por Múltiplas Filas Como os diversos processos do sistema possuem características de processamento diferentes. o processo volta para o fim da fila de prontos. 4. existe um tempo limite para sua utilização de forma contínua. como no caso de sistemas de tempo real.2. Gomes 4. denominado time-slice ou quantum. Escalonamento Preempitivo Um algoritmo de escalonamento é denominado preemptivo quando o sistema pode interromper um processo em execução para que outro processo utilize o processador.1. alguns dos principais algoritmos de escalonamento preemptivos. Quando este tempo. a seguir. porém. Escalonamento por Prioridades Nesse esquema. 4. expira.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. é difícil que um único mecanismo de escalonamento seja adequado a todos os tipos de processos.4. ou seja. 4. em função das características dos processos. Problema: Não faz um compartilhamento eqüitativo. A prioridade é estática quando não é modificada durante a existência do processo.4.3. processos de maior prioridade são escalonados preferencialmente. Outro benefício é o compartilhamento do processador de uma maneira mais uniforme entre os processos. colocá-lo no estado de pronto e selecionar o de maior prioridade para ser executado. A prioridade é dinâmica se pode ser ajustada durante a vida do processo. Escalonamento Circular (Round Robin) Projetado para sistema de tempo compartilhado. Este mecanismo é definido como preempção por prioridade. que estabelece quais filas são prioritárias em relação às outras. o sistema deve interromper o processo corrente. Em sistemas fortemente acoplados é possível implementar uma única fila de pronto para todos os processadores. Em sistemas fracamente acoplados cada processador faz seu próprio escalonamento local. Neste escalonamento.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.4. Todos os processos estão presentes nesta única fila e são escalonados no primeiro processador disponível. o fator tempo é crítico.5. 4. ajustando assim suas prioridades de execução e mecanismos de escalonamento. 4. Escalonamento de Sistemas de Tempo Real Nos sistemas operacionais de tempo real. 42 . Esta prioridade deve ser estática. não devendo ser alterada no decorrer do processamento. A abordagem é diferenciada quando tratamos de sistemas fracamente acoplados ou fortemente acoplados. Problema: Devido a sua complexidade.4. o que. porém os processos não permanecem em uma mesma fila até o término do processamento. Para cada processo é atribuída uma prioridade associada à sua importância dentro do sistema. este escalonamento pode gerar um grande overhead ao sistema. Este escalonamento deve ser empregado na solução de aplicações onde existam graus de exigências em relação ao tempo de execução das tarefas. José Eduardo S. Gomes 4. seja implementada a exclusão mútua para o seu código. Nesta solução é importante que. pode justificar sua implementação. O escalonamento é realizado unicamente com base no esquema de prioridades.4. Escalonamento com Múltiplos Processadores O escalonamento para sistemas com múltiplos processadores é bem mais complexo. um sistema de controle de tráfego aéreo. o sistema tenta identificar dinamicamente o comportamento de cada processo. mesmo assim. Escalonamento por Múltiplas Filas com Realimentação Semelhante ao escalonamento anterior. Por exemplo.5. Neste tipo de escalonamento não existe o conceito de quantum ou time-slice. para a execução do algoritmo de escalonamento. Porto Alegre: Sagra-Luzzatto.unicamp.ccuec. Simão Sirineo. Sistemas Operacionais Modernos. Gomes Bibliografia Livros: MACHADO. Francis B. S.. Rômulo Silva de. TOSCANI. CARISSIMI.br/treinamento_int2004/linux_basico/index. Luiz Paulo. A. OLIVEIRA. 1995. 2.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Endereços Eletrônicos: http://www. 2ª Edição. Rio de Janeiro: Livros Técnicos e Científicos. Arquitetura de Sistemas Operacionais. 2001. 1997. José Eduardo S. TANEMBAUM. Sistemas Operacionais. Ed. MAIA. Alexandre da Silva.html http:// 43 . Editora Guanabara Koogan.
Copyright © 2024 DOKUMEN.SITE Inc.