You are on page 1of 47

Faculdade Cenecista de Varginha - MG FACECA

Bacharelado 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 .............................................................

FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Por exemplo. Conceitos Básicos de Sistema Operacional Em torno de um computador. um editor de textos e um sistema de contabilidade. Dessa forma. como todos os acessos aos periféricos são feitos através do sistema operacional. Ao mesmo tempo. José Eduardo S. os programas podem apresentar necessidades conflitantes. ele pode controlar qual programa está acessando qual recurso. Por exemplo. o programador não precisa conhecer os detalhes do hardware. tanto o editor de texto quanto a contabilidade precisam acessar o disco. Para um melhor aproveitamento do hardware. Entretanto. O problema de cada usuário será resolvido por um programa específico. o editor de texto e a contabilidade podem querer utilizar. ao mesmo tempo. Os programas possuem muito em comum. pois disputam os recursos do equipamento. 1 . considerando-se dois aspectos: a eficiência no acesso ao disco e a ocupação equilibrada do disco pelos usuários. O sistema operacional é responsável pelo acesso aos periféricos. um usuário precisa editar texto. Gomes 1. Por exemplo. Informações do tipo “como enviar um caractere para a impressora” ficam escondidas dentro do sistema operacional.1. a única impressora disponível. O dispositivo físico capaz de executar esses programas é o hardware do computador. ele a solicita ao sistema operacional. Ela pode ser feita. Essa visão de um sistema computacional é ilustrada na figura abaixo. Por exemplo. vários usuários compartilham simultaneamente o computador. A forma de acesso aos periféricos é a mesma para todos os programas. Sempre que um programa necessita de algum tipo de operação de entrada e saída. obter uma distribuição justa e eficiente dos recursos. existem usuários com problemas para serem resolvidos. a divisão do espaço em disco entre os usuários é feita pelo sistema operacional. Sistemas Operacionais 1. então. É possível. No exemplo. O sistema operacional é uma camada de software colocada entre o hardware e os programas que executam tarefas para os usuários. enquanto outro precisa fazer a contabilidade da empresa.

Normalmente. Em função das chamadas de sistema. Por exemplo. Como a interrupção do periférico avisa o término de alguma operação de entrada e saída. No caso de uma solicitação legal. Somente quando ocorre algum evento especial. Entretanto. possivelmente uma chamada de sistema foi concluída. o processador pára o que está fazendo e passa a executar uma rotina específica do sistema operacional. Funções principais do SO: Facilidade de acesso aos recursos do sistema Compartilhamento de recursos de forma organizada e protegida 1. e a resposta é devolvida ao programa. 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 . um pedido para que arquivos de outros usuários sejam destruídos deverá ser recusado. Uma chamada de sistema corresponde a uma solicitação de serviço por parte do programa em execução. O controlador deve informar ao sistema operacional quando a operação estiver concluída. Ele não serve para editar texto. A conveniência é obtida através de uma interface mais confortável para a utilização dos recursos computacionais. através dele. nem faz a contabilidade da empresa. podemos obter uma maior eficiência e conveniência no uso do computador. Dois tipos de eventos ativam o sistema operacional: uma chamada de sistema ou uma interrupção de periférico. da mesma forma que qualquer outro programa. deve ser verificada a legalidade da solicitação. Quando a interrupção acontece. Nesse caso. Para isso que o computador foi comprado.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. José Eduardo S. o sistema operacional envia comandos para os controladores dos periféricos. o sistema operacional é ativado. o processador está executando programas de usuário. ela é realizada. A eficiência é obtida através do compartilhamento dos recursos. Isso é feito através de uma interrupção. como um gerente dos diversos recursos disponíveis no sistema. Um sistema operacional (SO) é um conjunto de rotinas executadas pelo processador.2. Gomes O sistema operacional não resolve os problemas do usuário final. um programa à espera de resposta poderá ser liberado. Sua função principal é controlar o funcionamento do computador. Primeiramente.

Processamento batch.3. enquanto um programa espera por uma operação de leitura/gravação. Segunda Fase (1956-1965) Criação do transistor e das memórias magnéticas. a fita de saída era lida e impressa. submetidos a uma leitora. A fita. Histórico A evolução dos SO está relacionada ao desenvolvimento dos equipamentos. então.000 adições por segundo. José Eduardo S. que executava um programa de cada vez. SO com seu próprio conjunto de rotinas para operações de E/S. Computadores de porte menor e baixo custo (minicomputadores). o processador executa um outro programa. Consumia 140 KWatts. 30 toneladas. ainda não existia o conceito de Sistema Operacional. Cartões Perfurados Processamento Fita de Entrada Fita de Entrada Processamento Fita de Saída Fita de Saída Processamento Relatórios Inicialmente. através de fios. era lida pelo computador. 1.3. Nesta fase.2.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Surgimento das primeiras linguagens de programação: Assembly e Fortran.3.3. gravando o resultado do processamento em uma fita de saída. UNIVAC I – criado para o senso americano de 1950. Conceitos de multiprogramação: compartilhamento de memória principal e processador. que. pois a programação era feita em painéis. 3 . Gomes 1. 5. A esse tipo de processamento.3. 1. eram gravados em uma fita de entrada. 1. 70 mil resistores. Primeira Fase (1945-1955) Durante a Segunda Guerra. Para trabalhar nessas máquinas.1. onde um lote (batch) de programas era submetido ao computador. Terceira Fase (1966-1980) Circuitos Integrados (CIs) e microprocessadores. era necessário conhecer profundamente o funcionamento do hardware. os programas passaram a ser perfurados em cartões. utilizando linguagem de máquina. Permite que. Ao término de todos programas. ENIAC – 18mil válvulas. deu-se o nome de processamento batch.

necessários para a compreensão dos demais tópicos sobre fundamentos do sistema operacional. exigindo dos SO mecanismos de controle e sincronismo e possibilitando o multiprocessamento. 1. Arquitetura cliente-servidor. banco de dados distribuídos. Máquinas com mais de um processador.3. sistemas multimídia. escrito em linguagem C.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. inteligência artificial são alguns exemplos da necessidade cada vez maior.3. permitem que se executem diversas tarefas concorrentes. ULSI (Ultra Large Scale Integration).4. aplicada basicamente a redes locais. Evolução das aplicações. 4 . Surgimento dos microcomputadores PC (Personal Computer). MAN e LAN com o desenvolvimento de protocolos de rede e sistemas operacionais para rede. Sistemas especialistas. software e telecomunicações. 1. passa a ser oferecida em redes distribuídas. que necessitam cada vez mais de capacidade de processamento e armazenamento de dados. dos sistemas DOS (Disk Operation System) e VMS (Virtual Memory System). Desenvolvimento de interfaces gráficas para os SO: Windows. etc. Multiprogramação (divisão da memória em partições.5. apesar de monousuárias. baseadas na organização de multiprocessadores não convencionais. Foram adicionados terminais de vídeo e teclado para interação on-line do usuário. Arquiteturas paralelas. Quarta Fase (1981-1990) Integração em larga escala (LSI) e muito larga escala (VLSI). 1. Evolução da microeletrônica. Gomes Substituição das fitas por discos magnéticos. permitindo que qualquer pessoa tenha acesso a todo tipo de informação. Difusão das redes WAN. Criação do UNIX (1969). Linux. José Eduardo S. Conceitos de Hardware e Software Serão apresentados alguns conceitos básicos sobre hardware e software relacionados à organização de computadores. permitindo a alteração na ordem de execução das tarefas que antes era puramente seqüencial: spooling. onde cada programa espera sua vez para ser executado e compartilhamento do processador) usando time-sharing (tempo compartilhado). criando o conceito de multitarefa. Surgem as estações de trabalho (workstations) que. independente de onde ela esteja armazenada.4. Quinta Fase (1991-2000) Grandes avanços em termos de hardware. Processamento distribuído de forma que as funções do sistema operacional estejam espalhadas por vários processadores através de redes de computadores.

Apontador de pilha – é o registrador que contém o endereço de memória do topo da pilha.1. 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. José Eduardo S.4. A UCP também é responsável pela execução de todos os programas do sistema.4.3. Clock O clock é um dispositivo. que gera pulsos elétricos síncronos em um determinado intervalo de tempo (sinal de clock). localizado na UCP.1. Conceitos de Hardware Todos os componentes de um computador são agrupados em três subsistemas básicos: unidade central de processamento. o registrador de estado é alterado conforme o resultado gerado pela instrução. A cada instrução executada. 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. • 5 . 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. Registrador de estado – é responsável por armazenar informações sobre a execução do programa. para armazenamento temporário de dados. 1.1. tem como função principal unificar todo o sistema.4.2. controlando as funções realizadas por cada unidade funcional.1.1. Unidade Central de Processamento A Unidade Central de Processamento (UCP). memória principal e dispositivo de entrada e saída. Gomes 1. 1. localizados na UCP. ou processador. que obrigatoriamente deverão estar armazenados na memória principal.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Registradores Os registradores são dispositivos de alta velocidade.4.

1. como dados.1. Um barramento (bus) é um conjunto de fios paralelos (linhas de transmissão).4. não há necessidade do acesso à memória principal. Se o processador encontrar o dado na cache.4.4. Gomes 1.1. O tempo de acesso a um dado nela contido é muito menor que se o mesmo estivesse na memória principal. também conhecida como memória primária ou real. Enquanto a memória principal precisa estar sempre energizada para manter suas informações. a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação denominadas barramentos.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Memória Principal A memória principal. tanto com usuários quanto com memórias secundárias. Registradores Maior capacidade de armazenamento Maior custo e maior velocidade de acesso Memória Cache Memória Principal Memória Secundária 1. Toda vez que o processador faz referência a um dado armazenado na memória principal. ele “olha” antes na memória cache.4.1.5.1. porém seu custo é baixo e sua capacidade de armazenamento é bem superior à da memória principal. a memória secundária não precisa de alimentação. 1. é a parte do computador onde são armazenados instruções e dados.1. se comparado com o acesso à memória cache ou à principal. do contrário.8. 6 . Memória Cache A memória cache é uma memória volátil de alta velocidade. O acesso à memória secundária é lento.7. a fim de realizar qualquer tipo de processamento. Através desses dispositivos. endereços ou sinais de controle. barras ou vias.4. Memória Secundária A memória secundária é um meio permanente (não volátil) de armazenamento de programas e dados. onde trafegam informações. 1. José Eduardo S.4. o acesso é obrigatório. 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. Barramento A UCP. a UCP e a memória principal podem se comunicar.6.

1. Estas características. 1. é realizado por um programa localizado em uma posição específica do disco (boot block).4. também existe o processo de desativação (shutdown). Conceitos de Software O hardware. Este procedimento permite que as aplicações e componentes do sistema sejam desativados de forma ordenada. Como exemplos de processadores RISC podemos citar o Sparc (SUN). utilizado como interface entre as necessidades dos usuários e as capacidades do hardware. Pipelining O conceito de processamento pipeline se assemelha muito a uma linha de montagem. Neste tipo de arquitetura. e o 68xxx (Motorola). onde uma tarefa é dividida em subtarefas. executadas em diferentes estágios dentro da linha de produção.4. além de ajudarem as instruções serem executadas em alta velocidade. 7 . através de suas várias unidades funcionais pipeline. O número de registradores é pequeno e qualquer instrução pode referenciar a memória principal.4.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. PA-RISC (HP). Arquiteturas RISC e CISC Um processador com arquitetura RISC (Reduced Instruction Set Computer) se caracteriza por possuir poucas instruções de máquina. enquanto uma instrução se encontra na fase de execução. em geral bastante simples. como as fases de busca da instrução e dos operandos. Gomes 1.1. não tem a menor utilidade. denominado ativação do sistema (boot).10. trabalhando principalmente com registradores que. Na maioria dos sistemas. São exemplos de processadores CISC o VAX (DEC). a implementação do pipeline é mais difícil.4. facilitam a implementação do pipeline. existe um conjunto de programas. Da mesma forma que em uma linha de montagem. estas instruções não acessam a memória principal.1. é necessário que o sistema operacional seja carregado da memória secundária para a memória principal.11. neste tipo de processador. Para torná-lo útil. RS-6000 (IBM). Na sua maioria. Os processadores CISC (Complex Instruction Set Computers) já possuem instruções complexas que são interpretadas por microprogramas. O processador. se apresentam em grande número. a execução de uma instrução pode ser dividida em subtarefas. Esse processo.2. por si só. José Eduardo S. 1.1. garantindo a integridade do sistema. Ativação e Desativação do Sistema Toda vez que um computador é ligado. Alpha AXP (DEC) e Rx000 (MIPS). funciona de forma a permitir que. que são executadas diretamente pelo hardware. execução e armazenamento dos resultados. uma outra instrução possa estar na fase de busca simultaneamente.9. geralmente o primeiro bloco. 80x86 e o Pentium (Intel).

no momento da execução do programa. ou apenas aplicações. onde toda representação simbólica dos programas é traduzida para código de máquina. o ato de programar era bastante complicado. pode ser chamado de montador ou compilador. a partir de um programa escrito em uma linguagem de alto nível. José Eduardo S. desde que existam regras de definição para a linguagem. ficando essa preocupação exclusivamente com o compilador.2. Para isso. O tradutor. utilizaremos o termo utilitário. Esta conversão é realizada por um software denominado tradutor. este tipo de linguagem é diferente para cada computador. o interpretador.4. os programas escritos nessas linguagens (programas – fonte) não estão prontos para serem diretamente executados pela UCP. pois a linguagem de máquina e. a linguagem de montagem são características específicas do processador. um programa em linguagem de máquina não executável (módulo-objeto).2. Interpretador O interpretador é considerado um tradutor que não gera código-objeto. escrito em linguagem de alto nível. Tradutor Nos sistemas operacionais antigos. 1. não têm nenhuma relação direta com a máquina. Os softwares desenvolvidos pelos usuários serão denominados softwares aplicativos. Em função disto. Gomes No decorrer do texto. traduz cada instrução e a executa em seguida. Assim. pelo tipo de linguagem de programação utilizada. eles têm de passar por uma etapa de conversão. 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. • O montador (assembler) é o utilitário responsável por gerar. os programas-fonte podem ser transportados entre computadores de diversos fabricantes. o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware. 8 . Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagem e alto nível. Isso permite o desenvolvimento de aplicações independentes do equipamento. As linguagens de alto nível. A partir de um programa-fonte. Com o surgimento das primeiras linguagens de montagem (assembly languages) e das linguagens de alto nível. a partir de um programa escrito em linguagem de montagem.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.2. sempre que desejarmos fazer referência a softwares relacionados mais diretamente com serviços do sistema operacional. como Pascal. • O compilador é o utilitário responsável por gerar. Fortran.1.4. um programa em linguagem de máquina não executável (módulo-objeto). A linguagem de montagem está diretamente ligada às características da arquitetura do processador. como compiladores. conseqüentemente. já que os programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução. 1. Cobol. linkers e depuradores.

4. Gomes 1.4. um único programa executável. a partir de um ou mais módulos objetos.2. 1.5.2. o usuário dispõe de uma interface interativa com o sistema operacional.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.2. definido pelo próprio fabricante. o que torna o entendimento confuso para o usuário. Microprogramação Os microprogramas definem a linguagem de máquina de cada computador. 1.7. José Eduardo S. Dessa forma. 1. Um programa em linguagem de máquina é totalmente codificado em formato binário. Cada processador possui um conjunto único de instruções de máquina. Loader O loader (carregador) é o utilitário responsável por colocar fisicamente na memória um programa para execução. Linker O linker (ligador) é o utilitário responsável por gerar. 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.8. Linguagem de Controle A linguagem de controle (linguagem de comando) é a forma mais direta de um usuário se comunicar com o sistema operacional. verifica sua sintaxe. quando digitados pelos usuários.2.2.4. O interpretador reconhece a linha de comando. 1. Linguagem de Máquina A linguagem de máquina de um computador é a linguagem de programação que o processador realmente pode entender.4. para realizar tarefas como acessar um arquivo em disco ou consultar um diretório.6.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.2. envia mensagens de erro e faz chamadas a rotinas do sistema.4. Esses comandos. Programa Executável 9 . são interpretados por um programa denominado interpretador de comandos ou shell. Módulo Objeto Linker Módulo Objeto 1.4.3.

como também são chamados. José Eduardo S. não exigindo preocupação com sistemas de proteção. O conceito de sistema multiprogramável está tipicamente associado aos mainframes e minicomputadores.1. A partir do número de usuários que interagem com o sistema.5. Abordaremos aqui os diversos tipos de sistemas operacionais. imprima um arquivo. Qualquer outro programa.2. Gomes 1. vantagens e desvantagens: Tipos de SO: 1.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. copie um arquivo pela rede e calcule uma planilha. Sistemas Multiprogramáveis / Multitarefa 3. podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário. Vários programas dividem os mesmos recursos de processador. suas características. 1.5. Os sistemas monoprogramáveis se caracterizam por permitir que o processador. deveria aguardar o término do programa concorrente. Sistemas Monoprogramáveis / Monotarefa 2. Desvantagem: sistemas mais complexos. Vantagem: são simples de implementação. 10 . Vantagem: aumento da produtividade dos seus usuários e a redução de custo. 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. se caracterizam por permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa. a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa.5. Sistemas com Múltiplos Processadores 1. Os sistemas multitarefa. Desvantagem: a memória e o processador são subutilizados. para ser executado. memória e periféricos. Sistemas Multiprogramáveis / Multitarefa Os sistemas multiprogramáveis são mais complexos e eficientes que os sistemas monoprogramáveis. se caracterizam por permitir que o usuário edite um texto. o sistema se preocupa em gerenciar o acesso concorrente aos seus recursos. onde existe a idéia do sistema sendo utilizado por vários usuários (multiusuário). como também são chamados. a partir do compartilhamento dos diversos recursos do sistema. Sistemas Monoprogramáveis / Monotarefa Os primeiros sistemas operacionais eram voltados para a execução de um único programa (job). Os sistemas monotarefa.

Caso o programa do usuário não esteja concluído neste intervalo de tempo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. de usinas termoelétricas e nucleares. 1. de tempo compartilhado ou de tempo real. Um desenvolvimento de sistemas com múltiplos processadores comunicação entre as UCPs e o grau de compartilhamento periféricos. Não só o processador é compartilhado nesse sistema. normalmente. Estes sistemas são de implementação mais complexa. ele é substituído por um de outro usuário. como discos e impressoras. através de terminais que incluem vídeo. a maior diferença é o tempo de resposta exigido no processamento das aplicações. a ele. ou em qualquer aplicação onde o tempo de resposta é fator fundamental.2.3.5.2. O sistema cria para o usuário um ambiente de trabalho próprio. 1. mas também a memória e os periféricos. um programa detém o processador o tempo que for necessário.5. teclado e mouse (sistemas on-line). Gomes Os sistemas multiprogramáveis/multitarefas podem ser classificados pela forma com que suas aplicações são gerenciadas. estão presentes em controle de processos. como nos sistemas de tempo compartilhado.2. Nos sistemas de tempo real. trabalhando em conjunto.3. José Eduardo S. 1. 1.1. 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. onde esperam para ser executados sequencialmente. Esta importância ou prioridade de execução é controlada pela própria aplicação e não pelo sistema operacional. ou até que apareça outro prioritário em função de sua importância no sistema. como no monitoramento de refinarias de petróleo. controle de tráfego aéreo. Para cada usuário.5. Sistemas de Tempo Real Os sistemas de tempo real (real-time) são semelhantes aos sistemas de tempo compartilhado. exclusivamente. Sistemas com Multiprocessadores Os sistemas com multiprocessadores caracterizam-se por mais UCP’s interligadas. o SO aloca uma fatia de tempo (timeslice) do processador.2. possuir duas ou fator-chave no é a forma de de memória e 11 . e fica esperando por uma nova fatia de tempo. Esses sistemas.5. dando a impressão de que todo o sistema está dedicado. Sistemas de Tempo Compartilhado Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema. podendo ser divididos em sistemas batch. Não permitem a interação com o usuário durante a sua execução.

Desvantagem: implementação mais complexa. ao mesmo tempo.3. melhorando o desempenho como um todo. além de outras características e vantagens como: Escalabilidade: possibilidade de aumentar a capacidade computacional com menor custo. Conceitos e Organização dos Sistemas Fortemente Acoplados Multiprocessamento: uma tarefa pode ser executada. Balanceamento: possibilidade de distribuir a carga de processamento entre os diversos sistemas de computação. para execução simultânea em vários processadores.5. Desvantagem: dependência do processador primário e utilização ineficiente dos recursos do sistema. Reconfiguração: capacidade de um sistema continuar o processamento mesmo se um dos processadores falhar. Podemos classificar os Sistemas com Fortemente Acoplados e Fracamente Acoplados. 1.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Melhor balanceamento do processamento e das operações de entrada e saída. Os sistemas fortemente acoplados ainda podem ser classificados em: Sistemas Assimétricos: caracterizam-se por possuir um processador (primário). Permitem que vários programas sejam executados ao mesmo tempo. simulações e processamento de imagens.2. José Eduardo S. no caso do processador mestre receber muitas interrupções dos escravos para serem tratadas. aplicação ser Múltiplos Processadores em • 12 . Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados existem dois ou mais processadores compartilhando a mesma memória e controlados por um único sistema operacional. Vantagem: simples de implementar.5. Processamento Paralelo: é a possibilidade de uma executada por mais de um processador ao mesmo tempo. ou que um programa seja dividido em subprogramas. possibilitando a execução da mesma operação sobre diferentes elementos de um ou mais vetores. Vantagem: independência de um processador principal. Podemos analisar o multiprocessamento em dois níveis: • Processamento Vetorial: permite a manipulação de vetores inteiros. 1. responsável pelo controle dos demais processadores (secundários) e pela execução do sistema operacional. Sistemas Simétricos: todos os processadores realizam as mesmas funções. Gomes Os conceitos utilizados no projeto de sistemas com múltiplos processadores incorporam os conceitos utilizados para multiprogramação. São utilizados em processamento científico.1. todos executam a mesma função. por mais de um processador (paralelismo). podendo executar o sistema operacional independentemente.3. em vez de um processador de alta velocidade e custo elevado.

4. Gomes Organização Funcional: O esquema de comunicação interna das UCPs.3. tanto para receber como para enviar mensagens. além de um hardware e software que possibilitam ao sistema ter acesso a outros componentes da rede. Sistemas Operacionais Distribuídos: cada componente possui seu próprio sistema operacional. processador e dispositivos. Organização dos Sistemas Fracamente Acoplados A organização dos sistemas fracamente acoplados ou topologia. 1. Cada sistema possui o seu próprio sistema operacional. conhecidas como sistemas de tolerância a falhas. como controle de tráfego aéreo. compartilhando seus recursos. gerenciando os seus recursos. 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. José Eduardo S. os sistemas são conectados a uma única linha de comunicação e todos compartilham o mesmo meio. Memória Multiport: além das vantagens do barramento cruzado. que se comunicam através de linha de comunicação. podendo cada parte ser executada por um sistema diferente. criando uma rede de interconexões. Os sistemas fracamente acoplados ainda podem ser classificados em: Sistemas Operacionais de Rede: cada nó (sistema independente) possui seu próprio sistema operacional. O melhor exemplo de utilização dos sistemas operacionais de rede são as redes locais (Local Area Network-LAN). permite acessos simultâneos de processadores a um mesmo módulo de memória. basicamente.3. Neste tipo de topologia. memória e dispositivos de E/S (unidades funcionais) é fundamental no projeto de sistemas com múltiplos processadores. Os sistemas distribuídos permitem que uma aplicação seja dividida em diferentes partes (aplicações distribuídas). • • 1. Esse tipo de organização é utilizado geralmente em redes locais. 13 . As principais organizações são: Barramento Na organização de barramento.3. 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. todos os nós da rede ficarão incomunicáveis. caso haja algum problema com o meio de transmissão. memória. As organizações funcionais de multiprocessadores podem ser divididas. Barramento Cruzado: as unidades funcionais podem ser conectadas entre si através de barramentos cruzados. O que diferencia o sistema operacional de rede dos sistemas distribuídos (cluster) é o grau de interação entre os nós. conceito muito utilizado em aplicações de missão crítica. como processador. memória e dispositivos de E/S. mas sim um único sistema centralizado.5.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.5. Para o usuário e suas aplicações é como se não existisse uma rede de computadores. define como são interligados fisicamente os diversos sistemas da rede. A grande vantagem é a capacidade de redundância do sistema.

ou seja. A utilização concorrente da UCP deve ser implementada de maneira que. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado. exclusivamente. linhas alternativas permitirão que a rede continue em funcionamento. 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.0001 0. 1. Exemplo de Utilização do Sistema Leitura de um registro Execução de 100 instruções Total Porcentagem de utilização da CPU 0. Nesse caso. concorrendo pela utilização da UCP. Sistemas Multiprogramáveis A possibilidade de periféricos funcionarem simultaneamente entre si.066 = 6.6. memória e periféricos. Características dos sistemas monoprogramáveis: Baixa utilização dos recursos do sistema como: processador. Mais simples de implementar. pois existem vários programas residentes se revezando na utilização do processador. Caso uma linha de comunicação apresente problema. que é o princípio básico para o projeto e implementação de sistemas multiprogramáveis. aparentando ao usuário que nada aconteceu. Somente um programa pode estar na memória e o processador fica dedicado.0016 0.0001 / 0. 14 . seu estado deve ser idêntico ao do momento em que foi interrompido.0015 0. Um programa que não ocupe toda a memória ocasiona a existência de áreas livres.0015 segundos segundos segundos = 0. à execução deste único programa. permitiu a execução de tarefas concorrentes. ficando todo este mecanismo transparente para ele.6% Características dos sistemas multiprogramáveis: Vários programas podem estar residentes na memória. a UCP permanece menos tempo ociosa e a memória principal é utilizada de forma mais eficiente. sem utilização. quando um programa perde o uso do processador e depois retorna para continuar o processamento. Este tipo de organização é utilizado geralmente em redes distribuídas. Subutilização da memória. José Eduardo S.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. juntamente com a UCP. pois não existem questões de concorrência para serem tratadas pelo sistema operacional.

um overflow. Como. já que alguns problemas surgem com esse tipo de implementação. Exemplo: Nos próximos itens serão mostrados alguns mecanismos e dispositivos que possibilitam a implementação de um sistema de tarefas concorrentes. Exceção: é o resultado direto da execução de uma instrução do próprio programa. 1. anteriormente.6. a UCP deve interromper o programa para atender a solicitação do dispositivo. sistema multiprogramável. No momento em que a unidade de controle detecta a ocorrência de algum tipo de interrupção. independe do programa que está sendo executado. José Eduardo S. muitas vezes.1. Os mecanismos de tratamento de exceções. obrigando a intervenção do sistema operacional. neste caso.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. O que diferencia uma interrupção de uma exceção é o tipo de evento que gera esta condição. Um exemplo é quando um periférico avisa à UCP que está pronto para transmitir algum dado. estava sendo processado. 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. podem ser escritos pelo próprio programador. alguns eventos podem ocorrer durante o seu processamento. Neste caso. ou seja. Interrupção e Exceção Durante a execução de um programa. gerado pelo sistema operacional ou por algum dispositivo de hardware. após a execução dessa rotina. é necessário que. por exemplo. um conjunto de informações sobre a execução do 15 . A eficiência proporcionada por um sistema multiprogramável resulta em maior complexidade do sistema operacional. o programa em execução é interrompido. compartilhar impressoras entre vários usuários e realizar o acesso concorrente a discos por diversos programas. Dessa forma. é possível evitar que um programa seja encerrado no caso de ocorrer. Interrupção: gerada pelo sistema operacional ou algum dispositivo de hardware e. 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. por exemplo. Nestas situações o fluxo de execução do programa é desviado para uma rotina especial de tratamento. e o controle é desviado para uma rotina responsável pelo tratamento da interrupção. Gomes Em sistemas multiprogramáveis é possível compartilhar os periféricos. Muitas vezes. o controle deve voltar ao programa que.

que deverão ser restaurados posteriormente para a continuação do programa.6. No caso de múltiplas interrupções ocorrerem. mas sim através do controlador. Com este novo elemento a UCP não se comunica mais diretamente com os periféricos. a UCP deve saber para qual rotina de tratamento deverá ser desviado o fluxo de execução. As interrupções podem ser classificadas como mascaráveis (podem ser desabilitadas pelo processador) e não mascaráveis (o tratamento é sempre obrigatório). José Eduardo S. a comunicação entre a UCP e os periféricos era controlada por um conjunto de instruções especiais. UCP Memória Controlador 16 . 1. A implementação de um dispositivo chamado controlador ou interface permitiu à UCP agir de maneira independente dos dispositivos de E/S.2. em função da necessidade de atendimento de cada uma. o processador deve saber qual interrupção terá de atender primeiro. denominadas instruções de entrada/saída. Para isso. No momento que uma interrupção acontece. Operações de Entrada / Saída (E/S) Em sistemas primitivos. Essas informações consistem no conteúdo de alguns registradores. as interrupções deverão possuir prioridades. executadas pela própria UCP. Essa informação está em uma estrutura do sistema chamada vetor de interrupção. 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.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Gomes programa seja preservado.

Com este mecanismo. Neste caso. enquanto a UCP manipula o dado localizado no buffer. após o início da transferência dos dados. O buffering veio permitir que. fica livre para o processamento de outras tarefas. O mesmo raciocínio pode ser aplicado para operações de gravação. 1.3. essa implementação ainda sobrecarregava a UCP. sendo reservada exclusivamente para este propósito. Apesar disto. 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. em determinados intervalos de tempo. A solução para este problema foi a implementação. isto é. o dispositivo de entrada pudesse iniciar uma nova leitura. onde a UCP coloca o dado no buffer para um dispositivo de saída manipular. após a execução de um comando de leitura ou gravação. José Eduardo S. 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). o dispositivo realiza outra operação de leitura no mesmo instante. exceto no início e no final da transferência. A área de memória utilizada pelo controlador na técnica de DMA é chamado buffer. porém mais inteligente. Esta técnica permite que um bloco de dados seja transferido entre memória e periféricos sem a intervenção da UCP. o próprio periférico se encarrega de sinalizar o processador. Gomes Existiam duas formas básicas do processador controlar as operações de E/S: Na primeira. Gravação UCP Memória Principal Buffer Gravação Controlador de E/S Leitura Leitura 17 . uma vez que toda a transferência de dados entre memória e periféricos exigia a intervenção da UCP. o próprio controlador interrompe a UCP para avisar do término da operação. Assim. este controle é chamado de E/S Controlada por Programa. a UCP. A operação de E/S Controlada por Interrupção é muito mais eficiente que a E/S Controlada por Programa.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Em vez de o sistema periodicamente verificar o estado de uma operação pendente. de uma técnica de transferência de dados denominada DMA (Direct Memory Access). denominado E/S Controlada por Interrupção. quando um dado fosse transferido para o buffer após uma operação de leitura. a UCP ficasse livre para se ocupar de outras tarefas.6. Quando a transferência termina. Outra forma derivada da anterior. as operações de E/S puderam ser realizadas de uma forma mais eficiente. acesso direto a memória. o processador ficava constantemente testando o estado do periférico de E/S para saber quando a operação chegaria ao seu final. era permitir que. por parte do controlador. Com a implementação do mecanismo de interrupção no hardware dos computadores.

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. Gomes 1. Proteção do Sistema Nos sistemas multiprogramáveis. O spooling. como. em sistemas multiprogramáveis. basicamente.5. A reentrância permite que cada usuário possa entrar em um ponto diferente do código reentrante.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. 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. No momento em que um comando de impressão é executado por um programa. Quando um programa reserva um periférico para realizar alguma operação. como. permitindo que dados sejam lidos e gravados em disco. Reentrância É comum. por exemplo. na utilização de uma impressora. Programa Arquivo De Spool Sistema Operacional Impressão 1. para ser impresso posteriormente pelo sistema. haveria diversas cópias de um mesmo programa na memória principal. nenhum outro programa deve interferir até que o primeiro programa a libere. podem ocorrer problemas de inconsistência. exclusivos de cada usuário. Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários. 18 . de garantir a integridade dos dados pertencentes a cada usuário. onde diversos usuários compartilham os mesmos recursos. por exemplo. as informações que serão impressas são gravadas em um arquivo em disco (arquivo de spool). utiliza o disco como um grande buffer. José Eduardo S. Um exemplo dessa técnica está presente quando impressoras são utilizadas.4. manipulando dados próprios.6. por parte do sistema operacional. exigindo que apenas uma cópia do programa esteja na memória. vários usuários executarem os mesmos utilitários do sistema operacional simultaneamente. 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.6. um editor de texto.6. deve existir uma preocupação. o que ocasionaria um desperdício de espaço. Se cada usuário que utilizasse o editor de texto trouxesse o código do utilitário para a memória.6. 1. enquanto outras tarefas são processadas. 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.

Escalonamento e controle de processos. As principais funções do núcleo são: Tratamento de interrupções.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. O usuário (ou aplicação). Alteração das características do processo. Contabilização e segurança do sistema. parâmetros e formas de ativação específicos. realiza uma chamada a uma de suas rotinas (ou serviços) através de system calls (chamadas ao sistema). José Eduardo S. As rotinas do sistema são executadas sem uma ordem pré-definida. para evitar que uma aplicação. Sincronização e comunicação entre processos. com início. quando deseja solicitar algum serviço do sistema. 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. 1. Para cada serviço existe uma system call associada e cada sistema operacional tem o seu próprio conjunto (biblioteca) de chamadas.7.1. Sincronização e comunicação entre processos.7. Gerência do sistema de arquivos.7. que são portas de entrada para se ter acesso ao núcleo do sistema operacional. Criação e eliminação de processos. 19 . 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. System Calls É um mecanismo implementado para proteger o núcleo do sistema. pois ele não é executado como uma aplicação tipicamente sequencial. Operações de entrada e saída. baseadas em eventos dissociados do tempo (eventos assíncronos). realize uma operação que o danifique. fazendo com que o sistema fique comprometido e inoperante. As system calls podem ser divididas em grupos de função: Gerência de Processos Criação e eliminação de processos. meio e fim. Gerência de memória. bem como outras rotinas do próprio sistema. Estrutura do Sistema Operacional Existe uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional. que tenha acesso ao núcleo. com nomes. Gomes 1.2. 1.

A system call altera o modo de acesso do processador para um modo mais privilegiado (modo kernel). Gomes Gerência de Memória Alocação e desalocação de memória. o processador implementa um mecanismo de modos de acesso. Existem. Gerência de Entrada/Saída Operações de entrada/saída. 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 . só devem ser executadas pelo sistema operacional.7. Ao término da rotina do sistema. a solicitação é feita através de uma system call. como operações de entrada e saída. José Eduardo S. pois a sua utilização indevida ocasionaria sérios problemas à integridade do sistema. Manipulação de arquivos e diretórios.3. As instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas. Através desse registrador. o modo de acesso é retornado para o modo usuário. Sempre que uma aplicação necessita de um serviço que incorra em risco para o sistema.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. basicamente. 1. Para permitir que uma aplicação possa executar uma instrução privilegiada. enquanto as instruções não-privilegiadas são aquelas que não oferecem perigo ao sistema. Sendo assim. localizado em um registrador especial da UCP. o hardware verifica se uma instrução pode ou não ser executada pela aplicação. para impedir a ocorrência de problemas de segurança e até mesmo. violação do sistema. O modo de acesso é determinado por um conjunto de bits. A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. dois modos de acesso: Modo Usuário – Quando o processador trabalha em modo usuário. tendo acesso a um número reduzido de instruções. que indica o modo de acesso corrente. Modo Kernel – Uma aplicação pode ter acesso ao conjunto total de instruções do processador. algumas instruções. uma aplicação só pode executar instruções não-privilegiadas. Modos de Acesso Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações.

21 . Aplicação Aplicação Modo Usuário Modo Kernel System Calls Hardware 1. os problemas de acesso às instruções privilegiadas. José Eduardo S. 1. A vantagem da estrutura em camadas é isolar as funções do sistema operacional. Gomes O núcleo do Sistema Operacional sempre é executado em modo kernel.7. 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. basicamente.7.4.4. facilitando sua alteração e depuração. três maneiras de organizar o código do sistema operacional e o inter-relacionamento entre seus diversos componentes: • Sistemas Monolíticos.7. 1. pois deve possuir a capacidade de gerenciar e compartilhar todos os seus recursos. A estrutura monolítica pode ser comparada com uma aplicação formada por vários procedimentos que são compilados separadamente e depois linkados. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos.2. em diversos níveis. solucionando. além de criar uma hierarquia de níveis de modos de acesso.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.1. Módulos de uma camada podem fazer referência apenas a módulos de camadas inferiores. • Sistemas Cliente-Servidor. Sistemas em Camadas Um sistema em camadas divide o sistema operacional em camadas sobrepostas. Estruturas de Sistemas Operacionais Existem. • Sistemas em Camadas. formando um grande e único programa executável.4. protegendo as camadas mais internas.

não tenham acesso direto a certos componentes do sistema.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. ela solicita ao processo responsável. etc. solicita um serviço enviando uma mensagem para o servidor. É função do núcleo do sistema realizar a comunicação. a troca de mensagens entre o cliente e o servidor. executa em modo kernel. ou seja. Neste caso. ou seja. O servidor responde ao cliente através de uma outra mensagem. responsável pela comunicação entre clientes e servidores. Sistemas Cliente/Servidor Uma tendência dos sistemas operacionais modernos é tornar o núcleo do sistema operacional o menor e mais simples possível. a aplicação que solicita um serviço é chamada de cliente.3. como serviços de arquivo. enquanto o processo que responde à solicitação é chamado de servidor. Além disso. este servidor pode parar. serviços de escalonamento. Como conseqüência. José Eduardo S. Apenas o núcleo do sistema. Para implementar esta idéia.7. o sistema é dividido em processos. 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 memória. se um erro ocorrer em um servidor. Um cliente que pode ser uma aplicação de um usuário ou um outro componente do sistema operacional. Sempre que uma aplicação deseja um serviço.4. sendo cada um responsável por oferecer um conjunto de serviços. a implementação de sistemas cliente/servidor permite 22 . 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. mas o sistema não ficará inteiramente comprometido. serviços de criação de processos.

ele é de difícil implementação. Como conseqüência.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. gerência de memória. além de ser responsável pela comunicação entre o cliente e servidor. 23 . passa a incorporar outras funções críticas do sistema. não importa se os clientes e servidores estão sendo processados com um processador. como escalonamento de processos. o sistema operacional passa a ser de mais fácil manutenção. além das funções de devices drivers. Apesar das vantagens deste modelo. Como os servidores se comunicam através de trocas de mensagens. José Eduardo S. O que é implementado na prática é uma combinação do modelo de camadas com o modelo cliente-servidor. com múltiplos processadores (fortemente acoplado) ou num ambiente distribuído (fracamente acoplado). Gomes isolar as funções do sistema operacional por diversos processos (servidores) pequenos e dedicados a serviços específicos. O núcleo do sistema.

isto é. 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.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. o processador executa a tarefa de usuário durante um intervalo de tempo (time-slice) e. Como sabemos. Gomes 2. sincronização.2. é necessário que o sistema preserve todas as informações da tarefa que foi interrompida. Introdução O processo pode ser entendido com um programa em execução. como sua identificação.PCB). José Eduardo S. que realizam operações como criação. no instante seguinte. chama-se processo. como conteúdo de registradores e espaço de memória. Nesses sistemas. 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. recursos alocados por ele e informações sobre o programa em execução.1. prioridade. A cada troca. um sistema multiprogramável simula um ambiente de monoprogramação para cada usuário. está processando outra tarefa. cada usuário do sistema tem a impressão de possuir o processador exclusivamente para ele. eliminação. para quando voltar a ser executada não lhe faltar nenhuma informação para a continuação do processamento. Modelo de Processo O sistema operacional materializa o processo através de uma estrutura chamada bloco de controle de processo (Process Control Block. entre outras. A estrutura responsável pela manutenção de todas as informações necessárias à execução de um programa. A partir do PCB. o sistema mantém todas as informações sobre o processo. só que seu conceito é mais abrangente. Bloco de Controle do Processo (PCB) 24 . 2. suspensão de processos. estado corrente. Processo 2.

como.1. A troca de um processo por outro na UCP. Essas características são determinadas no momento da criação do processo. 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. Espaço de endereçamento. 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.2. Gomes O processo pode ser dividido em três elementos básicos: Contexto de hardware. Essa operação resume-se. Contexto de Software O contexto de software especifica características do processo que vão influir na execução de um programa. basicamente. realizada pelo sistema operacional. o sistema operacional e outros processos podem fazer referência a um determinado processo e. por exemplo. em substituir o contexto de hardware de um processo pelo de outro. Contexto de Hardware O contexto de hardware constitui-se. por exemplo. José Eduardo S. é denominada mudança de contexto (context switching). podendo ser alteradas durante sua existência. 25 . Através do PID.2. O contexto de software define basicamente três grupos de informações sobre um processo: sua identificação. 2. Contexto de software. então.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. alterar uma de suas características. do conteúdo de registradores: program counter (PC). o sistema salva suas informações no seu contexto de hardware. stack pointer (SP) e bits de estado. suas quotas e seus privilégios. representada por um número. seu contexto de hardware está armazenado nos registradores do processador.2. No momento em que o processo perde a utilização da UCP. Identificação: Cada processo criado pelo sistema recebe uma identificação única (PID – process identification). Quando um processo está em execução. o número máximo de arquivos abertos simultaneamente ou o tamanho máximo do buffer para operações de E/S.

que deve ser protegido do acesso dos demais processos. Existe também a possibilidade de um mesmo processo ser executado por mais de um processador (processamento paralelo). 26 . Estados do Processo Um processo. espera que o sistema operacional aloque a UCP para sua execução. Como exemplo. ele passa por uma série de estados. Número máximo de processos e subprocessos que podem ser criados.3. 2. 2. Pronto (ready): Um processo está no estado de pronto quando apenas aguarda uma oportunidade para executar. Em sistemas com apenas um processador. José Eduardo S. Tamanho máximo de memória que o processo pode alocar. 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. Privilégios: Definem o que o processo pode ou não fazer em relação ao sistema e aos outros processos. em um sistema multiprogramável (multitarefa). Alguns exemplos de quotas que aparecem na maioria dos sistemas operacionais são: • • • • • Número máximo de arquivos abertos simultaneamente. vários processos podem estar sendo executados ao mesmo tempo. Já em sistemas com múltiplos processadores. 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. Caso uma cota seja insuficiente. além do espaço para os dados utilizados por ele. Quotas: São os limites de cada recurso do sistema que o processo pode alocar. dependendo do número de processadores. Espaço de Endereçamento O espaço de endereçamento é a área de memória do processo onde o programa será executado. Cada processo possui o seu próprio espaço de endereçamento.2. Tamanho máximo do buffer para operações de E/S. somente um processo pode estar sendo executado em um dado instante de tempo. Gomes O processo também possui uma identificação do usuário ou do processo que o criou (owner). ou seja. Basicamente.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.3. atribuída ao processo no momento de sua criação. o processo poderá ser executado lentamente ou mesmo não ser executado. Espera (wait): Um processo está no estado de espera quando aguarda algum evento externo ou por algum recurso para poder prosseguir o seu processamento. não é executado todo o tempo pelo processador. Durante sua existência. Cada usuário possui uma identificação única no sistema (UID – user identification).

Basicamente. Espera → Pronto: Um processo passa do estado de espera para o estado de pronto quando a operação solicitada é atendida.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. onde aguarda a oportunidade de ser executado (a).4. em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos involuntários). Gomes O sistema operacional gerencia os processos através de listas encadeadas. José Eduardo S. Cada sistema tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (escalonamento). como. uma operação de entrada/saída (b). 27 . Mudanças de Estado do Processo Um processo muda de estado diversas vezes. ou o recurso esperado é concedido. 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 cada PCB (bloco de controle de processo) tem um ponteiro para o seu sucessor. Não existe a mudança do estado de espera para o estado de execução diretamente. durante o seu processamento. 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. Execução → Espera: Um processo em execução passa para o estado de espera por eventos gerados pelo próprio processo. 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. por exemplo. o sistema o coloca em uma lista de processos no estado de pronto.

o processo volta para a fila de pronto. além de estar associado a aplicações de usuários. onde aguarda por uma nova oportunidade para continuar o seu processamento. os subprocessos subordinados são eliminados. Gerência de impressão. enquanto um thread espera por uma operação de E/S. chamamos o processo criado de subprocesso ou processo filho. Enquanto subprocessos possuem. Subprocesso e Thread Um processo pode criar outros processos de maneira hierárquica. por sua vez. Quando um processo (processo pai) cria um outro. basta não ativar os processos responsáveis. como. Processos do Sistema O conceito de processo. cada um. A grande diferença entre subprocessos e threads é em relação ao espaço de endereçamento. threads compartilham o mesmo espaço de endereçamento do processo. 2. caso um processo deixe de existir. No caso de uma ou mais funções não serem desejadas. sem nenhuma proteção. foi introduzido o conceito de thread (linha). espaços de endereçamento independentes e protegidos. permitindo assim que um thread possa alterar dados de outro thread. Na tentativa de diminuir o tempo gasto na criação/eliminação de processos. O subprocesso. pode também ser implementado na própria estrutura de um sistema operacional. para retirar código do seu núcleo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Threads compartilham o processador da mesma maneira que um processo. Neste caso. tornando-o menor e mais estável. Serviços de rede. por exemplo. pode criar outros subprocessos. Por exemplo. o fim da fatia de tempo que o processo possui para sua execução (d).5. O uso de subprocessos no desenvolvimento de aplicações concorrentes demanda o consumo de diversos recursos do sistema (contexto de hardware. José Eduardo S. Contabilização de erros. Como conseqüência desta estrutura. Gomes Execução → Pronto: Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema. bem como economizar recursos do sistema como um todo.6. 2. o que permitirá liberar memória para os processos dos usuários. Algumas das funções do sistema operacional que podem ser implementadas através de processos: • • • • • Auditoria e segurança. outro thread pode ser executado. Contabilização do uso de recursos. 28 . contexto de software e espaço de endereçamento).

29 . Interface de comandos (shell). Comunicação de eventos. Este tipo de processo realiza poucas operações de entrada/saída e é encontrado em aplicações matemáticas ou científicas.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Esse tipo de processo é encontrado em aplicações comerciais. 2. Tipos de Processos Os processos podem ser classificados processamento que realizam. que se baseiam em leitura. José Eduardo S. ou seja. que efetuam muitos cálculos e poucas operações de leitura/gravação. I/O-bound (ligado à E/S) – quando o processo passa a maior parte do tempo no estado de espera. processamento e gravação.7. pois realiza um elevado número de operações de entrada/saída. Gomes • • • • Gerência de jobs batch. utilizando o processador. Temporização. 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.

Vejamos um exemplo onde dois processos trocam informações através de operações de gravação e leitura em um buffer. Comunicação entre Processos 3. utilizaremos diversos algoritmos.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Um processo só poderá gravar dados no buffer caso ele não esteja cheio. 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.1. um processo só poderá ler dados armazenados do buffer se existir algum dado a ser lido. Para implementá-los será necessária a utilização de estruturas que permitam a especificação de concorrência em programas. De maneira geral. Especificação de Concorrência em Programas Na abordagem dos problemas e soluções decorrentes da comunicação entre processos. José Eduardo S. Em ambos os casos. A primeira notação para a especificação da concorrência em um programa foram os comandos FORK e JOIN. Da mesma forma. o compartilhamento de recursos entre processos pode gerar situações indesejáveis. 3. Na verdade. capazes até de comprometer o sistema. 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. Gomes 3. Introdução É comum processos que trabalham juntos (concorrentes) compartilhem recursos do sistema. registros. No projeto de sistemas operacionais multiprogramáveis. como arquivos. dispositivos e áreas de memória. 30 .2. os processos deverão aguardar até que o buffer esteja pronto para as operações de gravação ou de leitura. não importa quais recursos são compartilhados. é 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... .) comando_n. faz com que seja criado um outro processo para a execução do programa B. . . (. Join B. O comando JOIN permite que o programa A sincronize-se com B. 31 . O programa A começa a ser processado e. ao encontrar o comando FORK. quando o programa A encontrar o comando JOIN. Fork B. .. só continuará a ser processado após o término de B. Gomes program A. Comando_2. Processo_n) para cada comando (Comando_1. O comando PAREND define um ponto de sincronização... parbegin comando_1. program B. Uma das implementações mais simples de expressar concorrência em um programa é a utilização dos comandos PARBEGIN e PAREND..4 * 0. através da criação de um processo (Processo_1.. vejamos em uma aplicação prática. ou seja. parend. José Eduardo S. onde calculamos o valor da expressão aritmética: x := SQRT (1024) + (35. onde o processamento só continuará quando todos os processos criados já tiverem terminado suas execuções. . end. Comando_n).23) – (302 / 7). Processo Principal Processo 1 Processo 2 Processo 3 Processo n Processo Principal Para compreendermos realmente como funciona esta estrutura. end. Processo_2. . .. comando_2. . . . concorrentemente a A. O comando PARBEGIN especifica que a seqüência de comandos seja executada concorrentemente em uma ordem imprevisível.

deverá executar um protocolo de saída. Solução para Problemas de Compartilhamento A solução mais simples. X).23. WRITELN (‘x = ‘. Temp2.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Antes de gravar o novo saldo no arquivo. Os comandos de atribuição situados entre PARBEGIN e PAREND são executados concorrentemente entre si. BEGIN PARBEGIN Temp1 := SQRT (1024). José Eduardo S. Esta idéia de exclusividade de acesso é denominada exclusão mútua. A parte do código do programa onde é feito o acesso ao recurso compartilhado é denominada região crítica. um protocolo de entrada nessa região. 32 . Gomes PROGRAM Expressao. Para isso. ele obrigatoriamente executará.4. O cálculo final de X só poderá ser realizado quando todas as variáveis dentro da estrutura tiverem sido calculadas. A exclusão mútua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado. que está sendo atualizado.3. Suponha então que dois caixas diferentes possam atualizar o saldo um mesmo cliente simultaneamente. outro caixa lê o registro do mesmo cliente. PAREND. Os mecanismos que implementam a exclusão mútua utilizam um protocolo de acesso à região crítica. ao sair. para evitar o problema de compartilhamento anterior. para realizar outro lançamento. X := Temp1 + Temp2 – Temp3. Problemas de Compartilhamento de Recursos Para compreender melhor como a sincronização entre processo é fundamental quando recursos são compartilhados em sistemas multiprogramáveis.4 * 0. Da mesma forma que. 3. Temp3 : REAL. todos os outros que queiram acessar esse mesmo recurso deverão esperar até que o primeiro processo termine o acesso. Toda vez que um processo for executar sua região crítica. O primeiro caixa lê o registro de cliente e soma ao campo saldo o valor do lançamento. vejamos um problema aplicado a situações práticas: Suponha um arquivo de contas bancárias. Temp3 := 302 / 7. Temp2 := 35. enquanto um processo estiver acessando determinado recurso. VAR X. onde cada cliente tem seu saldo controlado. antes. 3. END. é impedir que dois ou mais processos acessem um mesmo recurso no mesmo instante. o dado gravado estará inconsistente. Temp1. Independente de qual caixa atualize primeiro o saldo no arquivo.

3.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. 33 . algumas soluções introduzem novos problemas. concorrentemente. também decorrente da sincronização entre processos. Sincronização Condicional Outra situação na qual é necessária a sincronização entre processos concorrentes. Esse tipo de sincronização é chamado sincronização condicional.. conseqüentemente.2. decorrentes da sincronização entre processos.3.. de forma que um processo não tente gravar dados em um buffer cheio ou ler de um buffer vazio. que concorram pelo mesmo recurso.1. Gomes begin (.5. Starvation é a situação onde um processo nunca consegue executar sua região crítica e. Um processo mais rápido que queira acessar sua região crítica pode ficar muito tempo esperando. Qualquer solução para os problemas de compartilhamento de recursos entre processo. Sai_regiao_critica. bastante comuns. (* protocolo de saída *) (.) end 3. é quando um recurso compartilhado não se encontra pronto para ser utilizado pelos processos. enquanto outro lê.. Nessa comunicação. que chamaremos de problemas de sincronização. um processo grava dados em um buffer.) Entra_regiao_critica.5. até o recurso ficar pronto para o processamento. (* protocolo de entrada *) Regiao_critica. Isto pode acontecer. o processo que deseja acessar o recurso deverá ser colocado no estado de espera. por estar esperando por um processo mais lento. acessar o seu recurso compartilhado. examinaremos alguns problemas. Um exemplo clássico é a comunicação entre dois processos através de operações de gravação e leitura em um buffer. A seguir. José Eduardo S. quando um processo tem baixa prioridade em relação aos outros. Starvation Um outro problema. Problemas de Sincronização Na tentativa de implementar a exclusão mútua. Uma solução bastante simples para esse problema é a criação de filas de pedidos de alocação para cada recurso compartilhado. Nesse caso. passa necessariamente pela solução dos problemas de sincronização. por exemplo.5. 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. é denominado starvation. O esquema de o primeiro a chegar ser o primeiro a ser atendido (FIFO) elimina o problema do starvation.5. Os processos envolvidos devem estar sincronizados. 3. os dados do buffer.. 3.

Y). 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. o processo deve simplesmente retornar o valor da variável para falso. sendo atribuído à variável Y o valor lógico verdadeiro. Um dos problemas deste mecanismo é quando o processo que desabilitou as interrupções não torna a habilitá-las. while (pode_a) do test_and_set (pode_a. var bloqueio: boolean.6. trata-se de uma instrução indivisível. Desabilitação de Interrupções A solução mais simples para o problema da exclusão mútua é fazer com que o processo.2. acessar o recurso de forma exclusiva. begin 34 . desabilite todas as interrupções externas e as reabilite após deixar a região crítica. Assim. Nesse caso. Para coordenar o acesso concorrente a um recurso. o sistema. var pode_a : boolean. until false.6. qualquer processo poderá alterar seu valor para verdadeiro. assim. através da instrução test-and-set e. José Eduardo S. terá seu funcionamento seriamente comprometido. Gomes 3. liberando o acesso ao recurso. a instrução test-and-set utiliza uma variável lógica global que chamaremos bloqueio. ou seja. não existe a possibilidade de dois processos estarem manipulando uma variável compartilhada ao mesmo tempo. Test-and-Set (X. 3. begin repeat pode_a := true. Esse tipo especial de instrução é chamado instrução test-and-set e tem como característica ser sempre executada sem interrupção. procedure processo_A. armazenar seu conteúdo em outra área e atribuir um novo valor a essa variável. Quando a variável bloqueio for falsa. bloqueio). regiao_critica_A.6. possibilitando a implementação da exclusão mútua. var pode_b : boolean. procedure processo_B. Instrução Test-and-Set Muitos processadores possuem uma instrução especial que permite ler uma variável. Ao terminar o acesso. bloqueio := false.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. provavelmente. end. antes de entrar em sua região crítica. program programa_test_and_set. Soluções de Hardware para o Problema de Exclusão Mútua 3.1.

para os problemas de sincronização entre processos concorrentes. se uma instrução DOWN é executada em um semáforo cujo valor seja igual a 0. bloqueio). e o processo que solicitou a operação pode executar sua região crítica. 3. end. Entretanto. não negativa. um processo executa uma instrução DOWN. José Eduardo S. Se o semáforo for maior que 0. As ferramentas mais recentes de software utilizadas para a solução de problemas de sincronização entre processos são os SEMÁFOROS. PAREND.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Soluções de Software para o Problema de Exclusão Mútua Além da exclusão mútua.7. while (pode_b) do test_and_set (pode_b. Um processo não pode ficar indefinidamente esperando para entrar em sua região crítica. processo_B. regiao_critica_B. o processo que solicitou a operação ficará no estado de espera. 3. fora de sua região crítica. não pode impedir que outros processos entrem nas suas próprias regiões críticas. Um semáforo é uma estrutura composta de uma FILA e uma variável inteira. bloqueio := false. Gomes repeat pode_b := true. Sempre que deseja entrar na sua região crítica. Um processo. end. uma solução de alto nível denominada MONITORES e a TROCA DE MENSAGENS. 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. Semáforos O conceito de semáforo foi proposto como uma solução mais geral e simples. em uma fila associada ao semáforo.7. PARBEGIN processo_A. begin bloqueio := false. until false. que soluciona os problemas de compartilhamento de recursos. 35 . este é decrementado de 1. que só pode ser manipulada por duas instruções: DOWN e UP. Estas instruções funcionam como protocolo de entrada e saída no caso de exclusão mútua.1.

assim.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. volte o valor do semáforo para 1. procedure processo_A. ao sair da sua região crítica. incrementando o semáforo de 1 e liberando o acesso ao recurso. program semaforo. Se um ou mais processos estiverem esperando. se uma das operações for iniciada. end. until false. O Processo_B também executa a instrução DOWN. end. As operações DOWN e UP são indivisíveis. mas como seu valor é igual a 0. UP(s).valor := s. procedure DOWN (var s : semaforo). Inicialmente. nenhum outro processo poderá ter acesso ao semáforo até o término dessa operação. José Eduardo S. ficará aguardando até que o Processo_A execute a instrução UP. indicando que nenhum processo está executando sua região crítica. Gomes O processo que está acessando o recurso. 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.valor = 0) then coloca_processo_na_fila_de_espera else s.valor + 1. devido a operações DOWN pendentes o sistema escolhe um processo na fila de espera e muda seu estado para pronto. O Processo_A executa a instrução DOWN. end. 36 . var s : semaforo. executa uma instrução UP. begin repeat DOWN(s). é garantido que. o Processo_A ganha o acesso a sua região crítica. o semáforo está com o valor 1. regiao_critica_A. begin if (tem_processo_esperando) then tira_da_fila_de_espera else s. procedure UP (var s : semaforo). ou seja. fazendo com que o semáforo seja decrementado de 1 e passe a ter o valor 0. As instruções DOWN e UP em sintaxe PASCAL não convencional: type semaforo = record fila_espera : fila. Em seguida. end. begin if (s.valor := s.valor – 1. valor : integer.

var x : integer. o valor da variável compartilhada X. estará garantida a execução mutuamente exclusiva entre eles. end. onde dois processos somam e diminuem. begin x := x –1 . PAREND. PAREND. Monitores O uso de semáforos exige do programador muito cuidado. end. begin s. 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. no momento da primeira ativação do monitor regiao_critica. processo_B. end. Monitores são mecanismos de sincronização de alto nível. begin repeat DOWN(s). monitor regiao_critica.7. program exemplo. 37 . pois qualquer engano pode levar a problemas de sincronização imprevisíveis. Neste exemplo. regiao_critica. until false. UP(s). A inicialização da variável compartilhada X com o valor zero só acontece uma vez. procedure diminui. end. begin x:= x + 1.soma. regiao_critica_B.2. PARBEGIN processo_A. Gomes procedure processo_B. concorrentemente. end. end.valor := 1. begin PARBEGIN regiao_critica.diminui. procedure soma. begin x := 0.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. José Eduardo S. Vejamos um exemplo bem simples. Isso porque. que tentam tornar mais fácil o desenvolvimento e a correção de programas concorrentes. 3. como os procedimentos estão definidos dentro do monitor.

a ordem na qual os dois eventos devem ocorrer.8.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. mesmo não sendo suas execuções mutuamente exclusivas. ao receber uma mensagem. na maioria das vezes. RECEIVE (transmissor. Troca de Mensagens Troca de mensagem é um mecanismo de comunicação e sincronização entre processos. until false. José Eduardo S. consumidor. A comunicação ocorre porque um processo. permitem tanto a comunicação entre processos como a sincronização entre eles. restringindo. implementado pelo sistema operacional através de duas rotinas do sistema: SEND e RECEIVE.3. A sincronização é obtida porque uma mensagem somente pode ser lida após ter sido enviada. Deadlock Um processo é dito em deadlock quando está esperando por um evento que nunca ocorrerá. Os procedimentos SEND e RECEIVE. begin repeat produz_mensagem (msg). 38 . consome_mensagem (msg). 3. A rotina SEND é responsável por enviar uma mensagem para um processo receptor. end. end. end. until false. procedure produtor. Gomes 3. begin PARBEGIN produtor. do compartilhamento de recursos do sistema entre vários processos. SEND (msg).7. Esta situação é consequência. mensagem). begin repeat RECEIVE (msg). e a rotina RECEIVE por receber uma mensagem de um processo transmissor. mensagem). sendo que cada processo deve ter acesso ao recurso de forma exclusiva (exclusão mutua). obtém dados enviados de outro processo. var msg: tipo_msg. procedure consumidor. PAREND. Exemplo: program produtor_consumidor. As rotinas podem ser representadas através dos procedimentos a seguir: SEND (receptor. var msg: tipo_msg. dessa forma.

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. espera na fila de processos prontos para execução.2. levando em consideração o tempo de espera para alocação de memória. é uma das principais funções executadas pelo sistema operacional multiprogramável. A maximização do throughput é desejada na maioria dos sistemas. Tempo de Turnaround: Tempo que um processo leva desde sua admissão no sistema até o seu término. Gerência do Processador 4. José Eduardo S. CPU-bound ou I/O-bound. 39 . os sistemas operacionais devem levar em consideração as características dos processos. se um processo é do tipo batch. 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. 4. Por isso. Maximizar o throughput do sistema (número de processos executados num intervalo de tempo). ou seja. Balancear a utilização do processador entre os diversos processos. Sistemas de tempo real e de tempo compartilhado também são aspectos fundamentais para a implementação de uma política de escalonamento. Throughput: O throughput representa o número de processos (tarefas) executados em um intervalo de tempo. interativo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof.1. Critérios de Escalonamento Utilização de UCP: É desejável que o processador fique a maior parte do seu tempo ocupado. Gomes 4. Oferecer um tempo de resposta razoável para os usuários interativos. 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). Para atender alguns desses objetivos. processamento na UCP e operações de E/S.

2) 2 (C. voluntariamente libera o processador. o tempo de resposta é o tempo decorrido do momento da submissão de um pedido até a primeira resposta produzida. Dessa forma.3. para situação de chegada de processos representada pela régua de tempo: Tempo 1 (A. enquanto tenta diminuir o tempo de turnaround e de resposta. (E. Escalonamento Shortest-Job-First (SJF) Este algoritmo associa cada processo (ou job) ao seu tempo de execução. 4.2) 7 (I.1) 6 (G. 4.5) 4 5 (F.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. onde um tempo de resposta razoável deve ser garantido para usuários interativos. Escalonamento Cooperativo A partir do momento que o processo está em execução.Y). José Eduardo S. Observação: Escalonamento FIFO e SJF não podem ser aplicados em sistemas de tempo compartilhado.3.1) Onde: (X. Exercício: Simule as políticas de escalonamento não-preemptivas: FIFO. retornando a fila de pronto. o processo em estado de pronto que precisar de menor tempo de UCP para terminar o seu processamento é selecionado para 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). qualquer algoritmo de escalonamento busca otimizar a utilização da UCP e o throughput.3). De um modo geral.4).3. nenhum outro processo pode tirar esse recurso. SJF e HRN.1. Alguns escalonamentos não-preemptivos são: 4. 40 . (B.2). Gomes Tempo de Resposta: Em sistemas interativos.3. Problema: Determinar quanto tempo de UCP cada processo necessita para o seu processamento.3) 3 (D. 4. (H. Problema: Impossibilidade de prever quando o processo terá sua execução iniciada. representa um identificador do processo (X) e o tempo estimado de execução do processo (Y).3. monopolizando desta forma a UCP. Escalonamento Não-preempitivo O escalonamento não-preemptivo é aquele que quando um processo ganha o direito de utilizar a UCP. quando o processador está livre.2. este Problema: Um programa pode não liberar o processador.

alguns dos principais algoritmos de escalonamento preemptivos. Este mecanismo é definido como preempção por tempo.1. é semelhante ao escalonamento FIFO. Problema: Não faz um compartilhamento eqüitativo. colocá-lo no estado de pronto e selecionar o de maior prioridade para ser executado. Outro benefício é o compartilhamento do processador de uma maneira mais uniforme entre os processos. Este mecanismo é definido como preempção por prioridade.2. 4. José Eduardo S. O escalonamento por múltiplas filas implementa diversas filas de processos no estado de pronto. a seguir. pois este escalonamento trata todos os processo de maneira igual. A prioridade é dinâmica se pode ser ajustada durante a vida do processo. 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.3. 4. Gomes 4. é difícil que um único mecanismo de escalonamento seja adequado a todos os tipos de processos. Escalonamento por Prioridades Nesse esquema. Quando este tempo. Cada fila possui uma prioridade associada. 4. onde cada processo é associado exclusivamente a uma delas. 41 . Escalonamento Circular (Round Robin) Projetado para sistema de tempo compartilhado. o processo volta para o fim da fila de prontos. que estabelece quais filas são prioritárias em relação às outras. A prioridade é estática quando não é modificada durante a existência do processo. se todas as outras de prioridade maior estiverem vazias. quando um processo passa para o estado de execução. como no caso de sistemas de tempo real.4.4. o sistema deve interromper o processo corrente.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Vejamos. ganha a UCP. expira.4. ou seja. 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. Cada fila possui mecanismo próprio de escalonamento. Escalonamento por Múltiplas Filas Como os diversos processos do sistema possuem características de processamento diferentes. existe um tempo limite para sua utilização de forma contínua. dando a vez para outro processo. em função das características dos processos. além de proporcionar melhores tempos de resposta em sistemas de tempo compartilhado. Toda vez que um processo vai para a fila de pronto com uma prioridade maior do que processo em execução. processos de maior prioridade são escalonados preferencialmente. denominado time-slice ou quantum.4. porém.

Neste escalonamento. Problema: Devido a sua complexidade.4. 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. 42 . o sistema tenta identificar dinamicamente o comportamento de cada processo. para a execução do algoritmo de escalonamento.5. não devendo ser alterada no decorrer do processamento. O escalonamento é realizado unicamente com base no esquema de prioridades. Por exemplo. Escalonamento por Múltiplas Filas com Realimentação Semelhante ao escalonamento anterior. Em sistemas fortemente acoplados é possível implementar uma única fila de pronto para todos os processadores.5.4. o fator tempo é crítico. Escalonamento de Sistemas de Tempo Real Nos sistemas operacionais de tempo real. Para cada processo é atribuída uma prioridade associada à sua importância dentro do sistema. Nesta solução é importante que. o que. pode justificar sua implementação. Gomes 4. 4. Esta prioridade deve ser estática. 4. Escalonamento com Múltiplos Processadores O escalonamento para sistemas com múltiplos processadores é bem mais complexo. mesmo assim.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. Neste tipo de escalonamento não existe o conceito de quantum ou time-slice. Todos os processos estão presentes nesta única fila e são escalonados no primeiro processador disponível. porém os processos não permanecem em uma mesma fila até o término do processamento. Em sistemas fracamente acoplados cada processador faz seu próprio escalonamento local. este escalonamento pode gerar um grande overhead ao sistema. um sistema de controle de tráfego aéreo. ajustando assim suas prioridades de execução e mecanismos de escalonamento. A abordagem é diferenciada quando tratamos de sistemas fracamente acoplados ou fortemente acoplados. seja implementada a exclusão mútua para o seu código.4.

Sistemas Operacionais Modernos. Simão Sirineo. Luiz Paulo.FACECA – Faculdade Cenecista de Varginha SOP – Sistemas Operacionais Sistemas de Informação Prof. 1995. Gomes Bibliografia Livros: MACHADO. TOSCANI.html http:// 43 . Porto Alegre: Sagra-Luzzatto. Rio de Janeiro: Livros Técnicos e Científicos. S. Rômulo Silva de. Sistemas Operacionais. Endereços Eletrônicos: http://www. OLIVEIRA. Editora Guanabara Koogan. 2ª Edição.unicamp. TANEMBAUM. Ed. 2. A. José Eduardo S. 2001.. MAIA.br/treinamento_int2004/linux_basico/index. 1997.ccuec. Francis B. Arquitetura de Sistemas Operacionais. Alexandre da Silva. CARISSIMI.