Sumário

1 Introdução 1.1 O que é um Sistema Operacional (SO)? . . . . . . . . . . . . . . . . . . 1.1.1 Funções: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Máquina de Níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Sistemas Monotarefa . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Sistemas Multitarefa . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2.1 Lote ou Batch . . . . . . . . . . . . . . . . . . . . . . 1.3.2.2 Tempo Compartilhado (Time-Share) . . . . . . . . . . 1.3.2.3 Tempo Real (Real-Time) . . . . . . . . . . . . . . . . 1.3.3 Multiplas UCP´s . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3.1 Multiprocessadores, ou sistemas fortemente acoplados 1.3.3.2 Multicomputadores, ou sistemas fracamente acoplados. Concorrência 2.1 Introdução . . . . . . . . . . . . . . . 2.2 Interrupções . . . . . . . . . . . . . . 2.3 Exceções . . . . . . . . . . . . . . . . 2.4 Controladoras de E/S . . . . . . . . . . 2.4.1 No início... . . . . . . . . . . . 2.4.2 E/S Controlada por Programa . 2.4.3 Polling . . . . . . . . . . . . . 2.4.4 E/S Controlada por Interrupção 2.4.5 DMA . . . . . . . . . . . . . . 2.4.5.1 Canal DMA . . . . . 2.5 Buffering . . . . . . . . . . . . . . . . 2.6 Spooling . . . . . . . . . . . . . . . . . 2.7 Reentrância . . . . . . . . . . . . . . . 2.8 Proteção do Sistema . . . . . . . . . . . Estrutura do sistema operacional 3.1 Kernel . . . . . . . . . . . . 3.2 Bibliotecas . . . . . . . . . 3.2.1 Chamadas do sistema 3.3 Utilitários . . . . . . . . . . 3.4 Modos de acesso . . . . . . 3 3 3 3 3 4 4 5 5 5 5 6 6 7 8 8 8 9 10 10 10 10 10 10 11 11 11 11 12 13 13 14 14 14 14

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

2

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

3

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . 1

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

SUMÁRIO 3.5 Tipos de kernel . . . . . 3.5.1 Monolítico . . . 3.5.2 Camadas . . . . 3.5.3 Máquina Virtual 3.5.4 Microkernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 15 15 15 15 16 18 18 18 19 19 19 20 20 20 20 21 21 21 21 22 22 22 22 23 23 24

4

Processos e threads 4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . 4.2 Partes do processo . . . . . . . . . . . . . . . . . . . 4.3 Bloco de controle do processo (PCB) . . . . . . . . . 4.4 Estados do processo e mudanças de estado . . . . . . 4.4.1 Mudanças de estado . . . . . . . . . . . . . 4.5 Criação e eliminação de processos . . . . . . . . . . 4.6 Concorrência dentro de uma aplicação . . . . . . . . 4.7 Tipos de processo . . . . . . . . . . . . . . . . . . . 4.8 Sinais . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Threads . . . . . . . . . . . . . . . . . . . . . . . . 4.9.1 Introdução . . . . . . . . . . . . . . . . . . 4.9.2 Ambientes monothread e multithread . . . . 4.9.2.1 Monothread . . . . . . . . . . . . 4.9.2.2 Multithread . . . . . . . . . . . . 4.9.3 Formas de implementação . . . . . . . . . . 4.9.3.1 Threads em Modo Usuário (TMU) 4.9.3.2 Threads em Modo Kernel (TMK) . 4.9.3.3 Threads em Modo Híbrido (TMH) 4.9.3.4 Scheduler activations . . . . . . . Sincronização entre processos

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

5

São independentes entre si. 2. 1.1 Funções: 1. 3. 1.. Interação homem-máquina. Facilitar o acesso aos recursos. 3.1. Compartilhar os recursos de forma organizada e protegida. A passagem por cada uma é obrigatória. 2. • Executado de forma não-seqüencial.1 O que é um Sistema Operacional (SO)? • Programa. HD .1. 2. Há uma interface entre as camadas. • Conjunto de rotinas.. • 6 níveis: 1. Gerência de recursos.Capítulo 1 Introdução 1. Administração de usuários da máquina (usuários = programas.2 Máquina de Níveis • Computador → hardware e software como uma coisa só para o usuário. OBS: Recursos → UCP. pessoas). 3 .2 Objetivos 1. 1. memória..

Tolerante a Falhas 6.1 Sistemas Monotarefa • Um único programa em execução.3. Robusto 1. INTRODUÇÃO São eles: Aplicações Linguagem de Montagem Sistema Operacional Linguagem de máquina Microprogramação Hardware (Lógica Digital) 4 1.3 Tipos de Sistemas Operacionais Tipos de SO Subtipos Monotarefa ou Monoprogramável – Multitarefa ou Multiprogramável Batch. Hardware empregado 3. • Todos os recursos dedicados a esse programa . ou em lote. PALM OS . Aplicação 2.CAPÍTULO 1. Tempo Real Múltiplas UCPs Sistemas fortemente e fracamente acoplados • Diferem quanto à: 1.desperdício • Estrutura simples Ex: MS-DOS. Escalável 2. Flexível 4. Rápido 3. Tempo Compartilhado. Seguro 5. Estrutura interna – complexidade • Desejável: 1.

trafego aéreo. dando lugar a outra • Tarefas interativas Ex: UNIX.2 Tempo Compartilhado (Time-Share) • Tipo mais comum.3.2.3.2. • Melhor aproveitamento. • Tempo de resposta → dentro de intervalos rígidos.3. • Compartilhamento e gerência dos recursos. . • Estrutura complexa.2. • Uso em sistemas de missão critica e controle de processos: refinarias.3. 1. siderúrgicas. • Conceito de prioridade →tarefa em execução enquanto não houver outro de mais prioridade do que ele • Prioridade definida pela aplicação.1 Lote ou Batch • 1º SO multitarefa • fila de submissão de tarefas • tarefas não interativas • Saída em impressora ou disco • Podem ser eficientes.CAPÍTULO 1. INTRODUÇÃO 5 1.2 Sistemas Multitarefa • Vários programas em execução. • Conceito de fatia de tempo • Cada tarefa fica em execução até o tempo acabar.3 Tempo Real (Real-Time) • Semelhante ao sistema time-share. • Alguns são multiusuário. mas não são iguais. WINDOWS 1. como também podem ter tempos de resposta longos • Não são mais usados 1.

CAPÍTULO 1. transparência 5. .3. Necessidade de desempenho 2. Problemas mais caros computacionalmente. imagem única do sistema 1. • Tudo gerênciado por um único SO. balanceamento de carga • tendência atual • Problemas: 1.Acesso Não-Uniforme a Memória. 3. NUMA . escalabilidade – alta 2. uso de arquiteturas com mais de uma UCP 2.3. • Solução: 1.1 Multiprocessadores. balanceamento de carga – justo 4.3 Multiplas UCP´s • Processamento paralelo • Conceitos: 1. INTRODUÇÃO 6 1. ou sistemas fortemente acoplados • Memória única. disponibilidade – alta 3.Arquitetura simétrica. disponibilidade 3. software que tire proveito e escalone entre as UCP´s presentes • Caracteristicas desejáveis: 1. ”Lei” de Moore – limite físico.3. • Custo de produção mais elevado. • Subdividido em SMP . escalabilidade 2.

3.3. ou sistemas fracamente acoplados. • Tendência atual .CAPÍTULO 1. 7 • Memória “espalhada” • Um único SO ou vários • Cada membro do sistema esta conectado aos outros por um link de dados • Custo de produção mais baixo. INTRODUÇÃO 1.2 Multicomputadores.

algumas técnicas de concorrência. Abaixo.04 s 0.Capítulo 2 Concorrência 2. .interrupção. 8 .1 Introdução • Computador .10 Tempo 0. 2. – Baixo uso da UCP em si. executando instruções de forma concorrente.2 Interrupções • Durante a execução.conjunto de técnicas que permite a UCP passar mais tempo ocupada – desempenhando mais tarefas por instante de tempo (throughput).05 s s = 0. Características: • Evento assíncrono.10 s. 1 = 10%. eventos inesperados podem ocorrer →Desvio forçado na execução . • Solução: Manter a UCP o mais ocupada possível.01 s 0.01 Total de uso da UCP: 0 0. ordena e grava o resultado: Operação Uso Ler 100 registros: E/S Ordenar: UCP Gravar o resultado: E/S Total: 0.seu uso é caro computacionalmente • Objetivo: minimizar o desperdício (tempo que a UCP fica parada) • Momentos de desperdício: – Frequência da UCP é maior do que a frequência da memória – Velocidade da UCP é muito maior do que a velocidade de E/S. Concorrência . Exemplo: Programa pega 100 registros.

programas. • Evento gerado por software ou hardware.CAPÍTULO 2. CONCORRÊNCIA • Evento é externo ao programa.porta serial 1. Por isso. • Segurança: – Falhas em programas geram exceções. – Não-mascaráveis – não podem ser ignoradas.Hardware que gerencia as interrupções. 9 • A interrupção é o fundamento básico de concorrência.IDE 1. IRQ3 . temos 2 tipos de interrupções: – Mascaráveis – podem ser ignoradas. divididas entre 2 controladoras de interrupção (interligadas em cascata): Exemplo: IRQ1 . . buffer overflow. • Como são tratadas: – Rotina de tratamento de interrupção – Vetor de interrupção • Como são assíncronos. o que atrapalha a execução do programa. – Tratamento é todo via software. ou pelo hardware (em alguns casos). 2.relógio (timer). • Arquitetura IBM-PC: 16 interrupções de hardware. stack overflow. • Há a necessidade de termos mecanismos apropriados para cada tipo de interrupção. • Controlador de pedidos de interrupção . etc. IRQ13 . – Programação segura.3 Exceções – Evento interno ao programa.. usado para a sincronização das rotinas do S. • Parecidos com as interrupções. – Evento síncrono. mas diferem nos quesitos: Exemplo: Divisão por zero. etc. O. podem ocorrer várias vezes. etc. IRQ7 . • Tratamento feito pelo desenvolvedor.porta paralela.

• ”Interferência” da UCP. • Quando a operação for concluída. e é liberada. – Mais eficiente do que a UCP fazer o controle. e é liberada. • UCP fica “presa”.. 2.2 E/S Controlada por Programa • UCP envia a requisição e move os dados entre a memória e a controladora. • A UCP repassa à controladora a posição inicial da memória a ser lida/escrita. 2. fazendo a transferência de dados.4 2. aguardando o término da operação.3 Polling • UCP envia a requisição. testa para ver se a operação foi concluída.4. move os dados e é liberada. • Problema: E/S é muito mais lento do que a memória ou a UCP. • Abaixo.apenas no início e no fim da transferência. move os dados. • De tempos em tempos. sem passar pela UCP .4.nada eficiente. – Tira da UCP o trabalho de cuidar dos dispositivos..4. mas ainda requer a interferência direta da UCP. avisando à UCP o término da operação. • Problema ainda existe →a transferência de dados entre a memória e dispositivo de E/S é feita pela UCP. 2.4. • UCP fala diretamente com os dispositivos de E/S. CONCORRÊNCIA 10 2. aguardando o término da operação . algumas técnicas empregadas. • Muito eficiente. • Introdução do controlador (ou controladora) de E/S: – Gerência do acesso aos dispositivos de E/S. a controladora gera uma interrupção.4.1 Controladoras de E/S No início.4 E/S Controlada por Interrupção • UCP envia a requisição. 2.5 DMA • Acesso direto a memória • Controladora fala direto com a memória.CAPÍTULO 2. .

CONCORRÊNCIA 2. • Problema: Várias cópias do mesmo programa na memória →desperdício. . 2. 1º a sair (FIFO). • Diversas “vias” ligando as controladoras da máquina à memória.usado inicialmente em SO´s do tipo batch. • Uso mais eficiente da memória e aumento do desempenho do sistema.6 Spooling • Fila de submissão de tarefas . • Uso no gerenciamento de impressão hoje em dia.inicialmente em fitas magnéticas.1 Canal DMA 11 • Extensão do conceito. • Registro como unidade de transferência. • Arquivo de spool . • Objetivo: acelerar o acesso aos dispositivos de E/S (leitura e gravação).CAPÍTULO 2.uso de discos com acesso direto – spooling mais eficiente. 2. • Vários usuários usando os mesmos programas. • Não-sequencial .4. • O código deve ter compilado com essa opção.5. • Reentrância: capacidade do código-fonte do programa ser executado e compartilhado entre os usuários do sistema. • Velocidade da UCP é muito maior do que a velocidade de E/S.5 Buffering • Uso de uma área na memória principal.arquivo no disco. • Na arquitetura PC há 8 canais • Chance de uso de buffers para aumentar ainda mais o desempenho. 2. o buffer. • Seqüencial .7 Reentrância • Mais comum em sistemas multiusuário. • Manter UCP e E/S ocupados na maior parte do tempo. • Fila: 1º a entrar . • Código executável = código reentrante.

CAPÍTULO 2.mais complexos. . 3. Compartilhamento de arquivos no disco 4. CONCORRÊNCIA 12 2. comunicação entre programas de forma sincronizada. 2. áreas reservadas para cada programa e seus dados . Contornar exceções.evitar a sobreposição dessas áreas. Evitar “monopólios” da UCP. 5. • Necessidade de aumentar a segurança • É preciso garantir a confiabilidade e integridade de programas e dados • Situações em que mecanismos de proteção são necessários: 1.8 Proteção do Sistema • Sistemas mais novos . • O sistema operacional deve evitar esses problemas com mecanismos de controle.

tratamento de exceções. 9. gerência de dispositivos de E/S. suporte a redes. gerência de UCP. estável e seguro. • Principais funções: 1. segurança. • Ideal é que seja pequeno. gerência de processos e threads. Bibliotecas. gerência de memória. 13 .1 Kernel • núcleo do sistema.Capítulo 3 Estrutura do sistema operacional Um sistema operacional é composto de três partes: 1. 2. Kernel. 6. 3. tratamento de interrupções. contabilidade e auditoria do sistema. rápido. sua organização interna varia de projeto para projeto. • Parte central do sistema operacional. 4. 7. 8. • execução não-sequencial. 3. 5. 3. 2. • oferecem serviços aos usuários. • Tipos de kernel: como ele fala com o hardware e software. Utilitários.

• A UCP tem instruções: • Modos de acesso . pela UCP.1 Chamadas do sistema • Partes integrantes das bibliotecas. Open VMS: System Services 3. • Programa→System Calls→Kernel→Hardware • Nomes diferentes para a mesma coisa: 1. ferramentas de acesso ao disco. e mal-usadas. privilegiadas . • Fornecem serviços para os programas.o que são: 1. 3. 2. Informação de qual modo de acesso está salvo em um registrador de estado – PSW.CAPÍTULO 3. • Esconde a complexidade do acesso para o programador.tem acesso a todos os recursos. compactadores.4 Modos de acesso 1. Windows: API´s 2. • Meio organizado e padronizado para acesso ao kernel. 3. gerando instabilidade. não-privilegiadas . etc.2 Bibliotecas • Conjunto de rotinas usadas por programas. criada pelo comitê POSIX. UNIX: System Calls OBS: No Unix.não comprometem a estabilidade do sistema operacional. Exemplos: Compiladores. 3. podem comprometer o funcionamento do sistema. 3. ESTRUTURA DO SISTEMA OPERACIONAL 14 3. Solução implementada em hardware. • Forma como o kernel pode ser acessado. . • Contém as chamadaa ao sistema.2. 2.3 Utilitários Programas que auxiliam o funcionamento do sistema operacional. o que determina se um sistema é “padrão UNIX” ou não é se ele segue a especificação das System Calls. Acesso ou não à instruções privilegiadas.

• Desenvolvimento mais simples.nível intermediário entre o hardware e o sistema operacional . • Cada máquina virtual oferece uma cópia virtual do hardware. dividiremos entre modo usuário (não-privilegiado) e modo kernel (privilegiado). Custa (pouco) tempo à UCP. Linux. • Rápido. • Estrutura mais simples.CAPÍTULO 3.5. ou mudança de contexto: 1.3 Máquina Virtual • Sistema computacional composto por níveis.2 Camadas • Níveis sobrepostos. • Como as camadas são isoladas. ESTRUTURA DO SISTEMA OPERACIONAL 15 4. interrupções. • Modelo de máquina virtual .1 Monolítico • Um grande bloco de código.5. facilita a manutenção e a depuração. os sistemas são montados de forma que o kernel é o único programa que pode estar sendo executado no modo privilegiado. se não for um projeto bem-feito e bem amarrado. incluindo os modos de acesso. Ex: Open VMS. onde o nível mais baixo é o hardware. dispositivos de E/S. • A manutenção pode ser complexa. todos sendo executados no modo kernel. mas é desejável que esse tempo seja ainda mais minimizado. Windows 2000 3.5.muito burocrático. MULTICS. ou dividido em módulos. 3. Mudança entre os estados do processador. • Há necessidade de passar por todos os níveis para chegar ao kernel. etc. • Simples na estrutura. .5 Tipos de kernel Antes. Hoje em dia. • Desempenho prejudicado pela estrutura . 3. • Chaveamento de modos. 2. Ex: MS-DOS.gerência de máquinas virtuais. 3. e viceversa. do modo privilegiado para o não-privilegiado.

Apropriado para computação distribuída: Os serviços podem ser remanejados entre as UCPs. baseado no OS/370. gerência de memória. Mais seguro: Se um serviço sair do ar.4 Microkernel • Constatação .mais barato um servidor grande do que vários servidores pequenos. com o sistema operacional Mach. da IBM (anos 1960). • Conceito iniciado no VM/370. basta transferir os arquivos das máquinas virtuais para outro hardware. • Cada um desses processos servidores fornecem um recurso específico para o sistema: Gerência de processos. 2. Portabilidade . • Vantagens: 1. Economia de recursos . seus próprios usuários e suas próprias aplicações. • Conceito surgido nos anos 1980. 2.CAPÍTULO 3. é recolocado facilmente. Mais rápido: com o kernel enxuto. Sobrecarga . todas em modo usuário.5. contendo seu próprio sistema operacional. • Desvantagens: 1. • Disponibilizar os serviços através de processos a serem executados no nível usuário. Complexidade. • O núcleo do Mach fornece 4 serviços. . ESTRUTURA DO SISTEMA OPERACIONAL 16 • Cada máquina virtual é independente das demais. 4. Mais facilmente portado para outras arquiteturas: Menos código no kernel. • Vantagens: 1. Mais flexível. escalonamento de processos.sistemas atuais ainda são lentos e pesados.Isolamento total das máquinas virtuais. gerência de arquivos.um hipervisor é complexo e consome muitos recursos do hardware hospedeiro. etc. comunicação por troca de mensagens e operações de E/S. 2. 3. menos dificuldades para reescrever o kernel para outras plataformas. • Microkernel . apenas: Gerência de processos. 3.tornar o núcleo do sistema operacional o menor e mais simples possível. 5. menos código a ser executado. • A principal função do kernel então é fazer o diálogo entre os diferentes processos servidores.JVM.se o hardware hospedeiro tiver um defeito. desenvolvido na Universidade CarnegieMellon. Segurança . 3. • Conceito usado também com a linguagem Java .

ESTRUTURA DO SISTEMA OPERACIONAL 17 • Há controvérsias quanto à afirmação de ser mais rápido (ponto no. ao acessar os serviços que rodam no modo usuário. mas não são completamente nesse estado. • Na prática. 4). . pois apesar do kernel ser menor. Amoeba.CAPÍTULO 3. Existem alguns sistemas que agregam características do microkernel. o sistema fará muito mais chamadas e mudanças de modo de acesso. Exemplos: L4. Minix. Exokernel. mas ainda não podem estar disponíveis comercialmente. os sistemas microkernel são interessantes.

Quando ele é tirado de execução (mudança de contexto).ambiente no qual um programa é executado.Capítulo 4 Processos e threads 4. • Processo . a partir do ponto onde parou. Contexto de hardware: Registradores gerais e específicos da UCP. 18 • Três partes: . Espaço de endereçamento: Área de memória usada pelo processo. Contexto de software: Características e limites dos recursos que podem ser alocados pelo processo. todos os registradores são salvos no contexto de hardware. • Um programa deve estar sempre associado a um processo. 2. onde as instruções e os dados do programa são armaenados para execução. para que o processo seja novamente colocado em execução. • O processo é colocado em execução e é tirado caso o sistema operacional necessite fazê-lo. 4. Muitas dessas características são determinadas no momento da criação do processo. * Número máximo de operações de E/S pendentes.1 Introdução • Conceito .base para a implementação de um sistema multiprogramável. – Quotas: Limites de cada recurso do sistema que um prcoesso pode alocar. o contexto de hardware guarda os registradores do processador. Exemplos: * Número máximo de arquivos abertos simultaneamente.2 Partes do processo 1. enquanto outras podem ser alteradas durante a sua existência. São três grupos de informações: – Identificação: * Número de identificação do processo (PID). * Tamanho máximo do buffer para operações de E/S. * Nome do usuário que criou o processo (UID). * Grupo do usuário que criou o processo (GID). 3. Quando um processo está em execução.

onde todas as informações necessárias para manter o processo em funcionamento são arquivadas. 4. em área reservada. 3. 2. Eventos involuntários: O processos muda por ação do sistema operacional. • Mudanças: 1. Criar outros processos privilegiados. • A gerência de processos é feita por chamadas do sistema. Alterar as prioridades de outros processos. 4. 3. Prontidão (ou pronto): Aguarda a sua vez para ser executado. Note que não há como passar direto. Desativar o sistema. Alterar regras de segurança. faz o processo ter seu estado mudado. 2. PROCESSOS E THREADS 19 * Número máximo de processos. 4. subprocessos e threads que podem ser criados. Execução → espera: Evento externo. – Privilégios: Ações que um processo pode fazer em relação a ele mesmo. aos demais processos e ao sistema operacional.4.CAPÍTULO 4.3 Bloco de controle do processo (PCB) • O bloco de controle do processo é uma estrutura de dados. 2. Exemplos: * * * * * * * Alterar a prioridade de execução. Execução: Sendo executado pela UCP. Espera → pronto: O evento externo foi concluído. de espera para execução. Mudar a configuração do sistema. Eventos voluntários: O processo muda por causa de eventos originários de si mesmo. Limites alocados na memória principal e secundária. mantida pelo sistema operacional. como uma operação de E/S.4 Estados do processo e mudanças de estado 1.1 Mudanças de estado • Eventos voluntários ou involuntários podem mudar o estado de um processo: 1. Pronto → execução: Colocado em execução. Espera: Aguarda pelo fim de um evento externo ou por um recurso para continuar o processamento. . • Três estados: Escalonamento: Conjunto de critérios que definem qual processo será colocado em execução primeiro.

por falta de espaço. por exemplo.CAPÍTULO 4. Nesse caso. 4. Criação → Criou-se a entrada no PCB. onde não é preciso interagir diretamente com o usuário. 2. Logo. É um modo de gastar menos tempo com criação. com entrada-padrão (teclado) e saída-padrão (monitor). Threads: Ramificações dentro do processo. 4. • Também são usados para comunicação e sincronização entre processos. mas o PCB ainda existe. entrada e saída podem ser arquivos. de forma que estão vinculados hierarquicamente: Se o processo-pai é eliminado.8 Sinais • Mecanismo que permite ”avisar” processos de eventos gerados pelo sistema operacional ou por outros processos.5 Criação e eliminação de processos 1. usando a UCP intensamente. Foreground: Execução em primeiro plano. sem vínculos.6 Concorrência dentro de uma aplicação 1. os processos-filho também serão. Compartilham quotas. • Processos no estado de espera ou pronto podem estar na memória virtual. 3. É criado por outros processos. . Processos independentes: Um processo cria outros. 2. interage diretamente com o usuário. Subprocessos: Um processo cria outros. É a maneira mais simples. compartilhando o contexto de software e o espaço de endereçamento. I/O-Bound: Passa a maior parte da fatia de tempo em estado de espera. 3. com muitas operações de E/S. ou seja.7 Tipos de processo 1. Término → O programa foi finalizado. Execução → pronto: O término da fatia de tempo que o processo tem o coloca de volta na fila de prontidão. CPU-Bound: Passa a maior parte da fatia de tempo em estado de execução. a técnica de swapping consiste em mover processos entre as memórias principal e virtual. PROCESSOS E THREADS 20 4. É eliminado por outros processos ou pelo término nortmal da sua execução. Background: Execução em segundo plano. escalonamento e eliminação de processos. • Três maneiras: 4. • Dois estados adicionais: 4. mas o processo ainda não foi colocado na lista de prontidão. 4. 2.

criar. limites de quotas excedidos. eram apenas processos. gerenciar e eliminar processos é computacionalmente caro.9. • Apesar da dificuldade em desenvolver. alarmes de tempo. 4. da Universidade de Carnegie-Mellon (1980). 21 4. Linux.9. • Processo →Unidade de alocação e de escalonamento.2 4.semelhante ao mecanismo de interupções. PROCESSOS E THREADS • Podem ser associados a temporizadores (eventos associados ao tempo). • Problema . • Tratamento do sinal .2. Exemplos: Windows 2000 e superiores.CAPÍTULO 4. por conta dos mecanismos empregados. • Aplicações mais complexas . Solaris.1 Threads Introdução • No início.1 Ambientes monothread e multithread Monothread • Cada processo tem apenas um thread. .vários trechos de código em execução paralela . apesar da complexa implementação.surge primeiro no sistema operacional Mach. • O sinal está para o processo assim como interrupções e exceções estão para o sistema operacional.síncronos ou assíncronos. • Compartilhar o espaço de endereçamento é complexo. etc. flexibilidade e custo. Exemplos: Notificação de interrupções e exceções.9 4. • Eventos que geram sinais . • Conceito de processo ”leve” (lightweight) → compartilha o espaço de endereçamento.para termos comunicação e sincronização de threads deve-se avaliar desempenho. • Thread . etc.9. • Concorrência se dá apenas com processos independentes ou subprocessos. compensa devido aos ganhos obtidos. • Ganho de desempenho e flexibilidade.

. não todo o processo.CAPÍTULO 4. • Requer mudanças de modo de acesso.2.9. feita por um thread.9. 4. O.menos processos e mais threads. • Chamadas bloqueantes colocam apenas o thread em estado de espera.2 Threads em Modo Kernel (TMK) • Implementados pelo kernel.3. PROCESSOS E THREADS 4. • Uma chamada a um dispositivo de E/S.3. • Falta de padrão em sistemas Unix. • O sistema operacional não vê os threads. • São rápidos e eficientes.9.1 Threads em Modo Usuário (TMU) • Implementados pela aplicação.9. 4. coloca todo o processo em estado de espera.bem mais lentos. • Processo →Unidade de alocação.3 Formas de implementação • Pacote de threads .2 Multithread 22 • Permite que tenhamos aplicações concorrentes de forma mais eficiente: – Aumenta o desempenho. logo tem desempenho degradado . os PThreads. espera e execução). por termos menos sobrecarga do sistema como um tyodo . apenas o proceso como um todo. • Podemos ter aplicações multithread em ambientes monothread. • Os threads sofrem mudança de estado (pronto. • Podemos ter vários threads de um mesmo processo em execução simultânea. e tem seu próprio bloco de controle (o TCB). por dispensar mecanismos de comunicação dentrod o processo. pois o processo terá que tratar o sinal e direcioná-lo ao thread certo. vê e escalona os threads de cada processo. – Aumenta a eficiência. em UCPs diferentes. • Programas associados a threads. 4. e as mudanças de modo de acesso da UCP (usuário-kernel-usuário). por não fazerem acessos ao kernel. • O S. até o comitê POSIX liberar uma norma para termos threads. • Thread →Unidade de escalonamento.Conjunto de rotinas da biblioteca do sistema operacional par aa implementação de threads. • O tratamento dos sinais também é complexo. • O sistema operacional gerencia diretamente os threads de um processo.

CAPÍTULO 4. como por exemplo a ocorrência de uma chamada bloqueante. há uma estrutura de dados que facilita a troca de informações entre o kernel e a biblioteca de threads. e nessa forma. . Essa estrutura é o scheduler activations.3 Threads em Modo Híbrido (TMH) 23 • Combina as vantagens dos threads em modo usuário (TMU) e em modo kernel (TMK). PROCESSOS E THREADS 4. • O sistema operacional escalona os TMKs. • O scheduler activations foi implementado inicialmente na Universidade de Washington. entre outras. • O escalonamento é feito pela própria biblioteca. e eles escalonam os TMUs. já que apenas os TMKs são escalonados (diminuindo o número de mudanças de modo de acesso). fugindo dos problemas de cada uma.3. • O objetivo é aumentar a flexibilidade.4 Scheduler activations • Os Threads em Modo Híbrido (TMH) tem problemas devido à falta de comunicação entre os threads.3.9. • Um processo tem vários TMKs. e trabalham cooperativamente.9. • É desejável unir o melhor das implementações. mas também as desvantagens. • Ambas as partes se comunicam. mas também traz os problemas das chamadas bloqueantes. evitando as mudanças de modo de acesso. e cadas TMK tem vários TMUs. 4.

Capítulo 5 Sincronização entre processos 24 .