Você está na página 1de 25

Sistemas Operacionais 1 - Resumo

Prof. Ricardo Pinheiro

10/03/2009
Sumário

1 Introdução 3
1.1 O que é um Sistema Operacional (SO)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Funções: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Máquina de Níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Sistemas Monotarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Sistemas Multitarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2.1 Lote ou Batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2.2 Tempo Compartilhado (Time-Share) . . . . . . . . . . . . . . . . . . . . . 5
1.3.2.3 Tempo Real (Real-Time) . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Multiplas UCP´s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3.1 Multiprocessadores, ou sistemas fortemente acoplados . . . . . . . . . . . 6
1.3.3.2 Multicomputadores, ou sistemas fracamente acoplados. . . . . . . . . . . . 7

2 Concorrência 8
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Interrupções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Exceções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Controladoras de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.1 No início... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.2 E/S Controlada por Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.3 Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.4 E/S Controlada por Interrupção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.5 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.5.1 Canal DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Reentrância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Proteção do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Estrutura do sistema operacional 13


3.1 Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Chamadas do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Utilitários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 Modos de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1
SUMÁRIO 2

3.5 Tipos de kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


3.5.1 Monolítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.2 Camadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.3 Máquina Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.4 Microkernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

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

5 Sincronização entre processos 24


Capítulo 1

Introdução

1.1 O que é um Sistema Operacional (SO)?


• Programa.

• Conjunto de rotinas.

• Executado de forma não-seqüencial.

1.1.1 Funções:
1. Interação homem-máquina.

2. Gerência de recursos.

3. Administração de usuários da máquina (usuários = programas, pessoas).

1.1.2 Objetivos
1. Compartilhar os recursos de forma organizada e protegida.

2. Facilitar o acesso aos recursos.

OBS: Recursos → UCP, memória, HD ....

1.2 Máquina de Níveis


• Computador → hardware e software como uma coisa só para o usuário.

• 6 níveis:

1. São independentes entre si.

2. A passagem por cada uma é obrigatória.

3. Há uma interface entre as camadas.

3
CAPÍTULO 1. INTRODUÇÃO 4

São eles:
Aplicações
Linguagem de Montagem
Sistema Operacional
Linguagem de máquina
Microprogramação
Hardware (Lógica Digital)

1.3 Tipos de Sistemas Operacionais


Tipos de SO Subtipos
Monotarefa ou Monoprogramável –
Multitarefa ou Multiprogramável Batch, ou em lote; Tempo Compartilhado; Tempo Real
Múltiplas UCPs Sistemas fortemente e fracamente acoplados
• Diferem quanto à:

1. Aplicação

2. Hardware empregado

3. Estrutura interna – complexidade

• Desejável:

1. Escalável

2. Rápido

3. Flexível

4. Seguro

5. Tolerante a Falhas

6. Robusto

1.3.1 Sistemas Monotarefa


• Um único programa em execução.

• Todos os recursos dedicados a esse programa - desperdício

• Estrutura simples

Ex: MS-DOS, PALM OS


CAPÍTULO 1. INTRODUÇÃO 5

1.3.2 Sistemas Multitarefa


• Vários programas em execução.

• Compartilhamento e gerência dos recursos.

• Melhor aproveitamento.

• Estrutura complexa.

• Alguns são multiusuário.

1.3.2.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, como também podem ter tempos de resposta longos

• Não são mais usados

1.3.2.2 Tempo Compartilhado (Time-Share)


• Tipo mais comum.

• Conceito de fatia de tempo

• Cada tarefa fica em execução até o tempo acabar, dando lugar a outra

• Tarefas interativas

Ex: UNIX, WINDOWS

1.3.2.3 Tempo Real (Real-Time)


• Semelhante ao sistema time-share, mas não são iguais.

• Tempo de resposta → dentro de intervalos rígidos.

• Conceito de prioridade →tarefa em execução enquanto não houver outro de mais prioridade do que ele

• Prioridade definida pela aplicação.

• Uso em sistemas de missão critica e controle de processos: refinarias, siderúrgicas, trafego aéreo.
CAPÍTULO 1. INTRODUÇÃO 6

1.3.3 Multiplas UCP´s


• Processamento paralelo

• Conceitos:

1. escalabilidade

2. disponibilidade

3. balanceamento de carga

• tendência atual

• Problemas:

1. Necessidade de desempenho

2. Problemas mais caros computacionalmente.

3. ”Lei” de Moore – limite físico.

• Solução:

1. uso de arquiteturas com mais de uma UCP

2. software que tire proveito e escalone entre as UCP´s presentes

• Caracteristicas desejáveis:

1. escalabilidade – alta

2. disponibilidade – alta

3. balanceamento de carga – justo

4. transparência

5. imagem única do sistema

1.3.3.1 Multiprocessadores, ou sistemas fortemente acoplados


• Memória única.

• Tudo gerênciado por um único SO.

• Subdividido em

SMP - Arquitetura simétrica.

NUMA - Acesso Não-Uniforme a Memória.

• Custo de produção mais elevado.


CAPÍTULO 1. INTRODUÇÃO 7

1.3.3.2 Multicomputadores, ou sistemas fracamente acoplados.


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

• Tendência atual
Capítulo 2

Concorrência

2.1 Introdução
• Computador - 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.
– Baixo uso da UCP em si.

• Solução: Manter a UCP o mais ocupada possível, executando instruções de forma concorrente.

Exemplo: Programa pega 100 registros, ordena e grava o resultado:

Operação Uso Tempo


Ler 100 registros: E/S 0,04 s
Ordenar: UCP 0,01 s
Gravar o resultado: E/S 0,05 s
Total: 0,10 s.
Total de uso da UCP: 0,01
0,10 s = 0, 1 = 10%.
Concorrência - conjunto de técnicas que permite a UCP passar mais tempo ocupada – desempenhando mais
tarefas por instante de tempo (throughput).
Abaixo, algumas técnicas de concorrência.

2.2 Interrupções
• Durante a execução, eventos inesperados podem ocorrer →Desvio forçado na execução - interrupção.

Características:

• Evento assíncrono.

8
CAPÍTULO 2. CONCORRÊNCIA 9

• Evento é externo ao programa.


• Evento gerado por software ou hardware.

• A interrupção é o fundamento básico de concorrência, usado para a sincronização das rotinas do S. O.,
programas, etc.

• Arquitetura IBM-PC: 16 interrupções de hardware, divididas entre 2 controladoras de interrupção (in-


terligadas em cascata):

Exemplo: IRQ1 - relógio (timer); IRQ3 - porta serial 1; IRQ7 - porta paralela; IRQ13 - IDE 1; etc.

• Há a necessidade de termos mecanismos apropriados para cada tipo de interrupção.

• Como são tratadas:

– Rotina de tratamento de interrupção


– Vetor de interrupção

• Como são assíncronos, podem ocorrer várias vezes, o que atrapalha a execução do programa. Por isso,
temos 2 tipos de interrupções:

– Mascaráveis – podem ser ignoradas.


– Não-mascaráveis – não podem ser ignoradas.

• Controlador de pedidos de interrupção - Hardware que gerencia as interrupções.

2.3 Exceções
• Parecidos com as interrupções, mas diferem nos quesitos:

– Evento interno ao programa.


– Evento síncrono.
– Tratamento é todo via software.

Exemplo: Divisão por zero, buffer overflow, stack overflow, etc.

• Tratamento feito pelo desenvolvedor, ou pelo hardware (em alguns casos).

• Segurança:

– Falhas em programas geram exceções.


– Programação segura.
CAPÍTULO 2. CONCORRÊNCIA 10

2.4 Controladoras de E/S


2.4.1 No início...
• UCP fala diretamente com os dispositivos de E/S.

• Problema: E/S é muito mais lento do que a memória ou a UCP.

• Introdução do controlador (ou controladora) de E/S:

– Gerência do acesso aos dispositivos de E/S.


– Tira da UCP o trabalho de cuidar dos dispositivos.
– Mais eficiente do que a UCP fazer o controle.

• Problema ainda existe →a transferência de dados entre a memória e dispositivo de E/S é feita pela UCP.

• ”Interferência” da UCP.

• Abaixo, algumas técnicas empregadas.

2.4.2 E/S Controlada por Programa


• UCP envia a requisição e move os dados entre a memória e a controladora, aguardando o término da
operação.

• UCP fica “presa”, aguardando o término da operação - nada eficiente.

2.4.3 Polling
• UCP envia a requisição, move os dados e é liberada.

• De tempos em tempos, testa para ver se a operação foi concluída.

2.4.4 E/S Controlada por Interrupção


• UCP envia a requisição, move os dados, e é liberada.

• Quando a operação for concluída, a controladora gera uma interrupção, avisando à UCP o término da
operação.

• Muito eficiente, mas ainda requer a interferência direta da UCP, fazendo a transferência de dados.

2.4.5 DMA
• Acesso direto a memória

• Controladora fala direto com a memória, sem passar pela UCP - apenas no início e no fim da transferên-
cia.

• A UCP repassa à controladora a posição inicial da memória a ser lida/escrita, e é liberada.


CAPÍTULO 2. CONCORRÊNCIA 11

2.4.5.1 Canal DMA


• Extensão do conceito.
• Diversas “vias” ligando as controladoras da máquina à memória.
• Na arquitetura PC há 8 canais
• Chance de uso de buffers para aumentar ainda mais o desempenho.

2.5 Buffering
• Uso de uma área na memória principal, o buffer.
• Velocidade da UCP é muito maior do que a velocidade de E/S.
• Objetivo: acelerar o acesso aos dispositivos de E/S (leitura e gravação).
• Manter UCP e E/S ocupados na maior parte do tempo.
• Registro como unidade de transferência.

2.6 Spooling
• Fila de submissão de tarefas - inicialmente em fitas magnéticas.
• Arquivo de spool - usado inicialmente em SO´s do tipo batch.
• Fila: 1º a entrar , 1º a sair (FIFO).
• Seqüencial - uso de discos com acesso direto – spooling mais eficiente.
• Não-sequencial - arquivo no disco.
• Uso no gerenciamento de impressão hoje em dia.

2.7 Reentrância
• Mais comum em sistemas multiusuário.
• Vários usuários usando os mesmos programas.
• Problema: Várias cópias do mesmo programa na memória →desperdício.
• Reentrância: capacidade do código-fonte do programa ser executado e compartilhado entre os usuários
do sistema.
• Código executável = código reentrante.
• O código deve ter compilado com essa opção.
• Uso mais eficiente da memória e aumento do desempenho do sistema.
CAPÍTULO 2. CONCORRÊNCIA 12

2.8 Proteção do Sistema


• Sistemas mais novos - mais complexos.

• 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. áreas reservadas para cada programa e seus dados - evitar a sobreposição dessas áreas.
2. comunicação entre programas de forma sincronizada.
3. Compartilhamento de arquivos no disco
4. Evitar “monopólios” da UCP.
5. Contornar exceções.

• O sistema operacional deve evitar esses problemas com mecanismos de controle.


Capítulo 3

Estrutura do sistema operacional

Um sistema operacional é composto de três partes:


1. Kernel.

2. Bibliotecas.

3. Utilitários.

3.1 Kernel
• núcleo do sistema.

• Parte central do sistema operacional.

• oferecem serviços aos usuários.

• execução não-sequencial.

• Principais funções:

1. gerência de processos e threads.


2. gerência de memória.
3. gerência de UCP.
4. gerência de dispositivos de E/S.
5. tratamento de interrupções.
6. tratamento de exceções.
7. suporte a redes.
8. segurança.
9. contabilidade e auditoria do sistema.

• Tipos de kernel: como ele fala com o hardware e software, sua organização interna varia de projeto para
projeto.

• Ideal é que seja pequeno, rápido, estável e seguro.

13
CAPÍTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL 14

3.2 Bibliotecas
• Conjunto de rotinas usadas por programas.

• Fornecem serviços para os programas.

• Contém as chamadaa ao sistema.

3.2.1 Chamadas do sistema


• Partes integrantes das bibliotecas.

• Meio organizado e padronizado para acesso ao kernel.

• Forma como o kernel pode ser acessado.

• Esconde a complexidade do acesso para o programador.

• Programa→System Calls→Kernel→Hardware

• Nomes diferentes para a mesma coisa:

1. Windows: API´s
2. Open VMS: System Services
3. UNIX: System Calls

OBS: No Unix, o que determina se um sistema é “padrão UNIX” ou não é se ele segue a especificação das
System Calls, criada pelo comitê POSIX.

3.3 Utilitários
Programas que auxiliam o funcionamento do sistema operacional.
Exemplos: Compiladores, compactadores, ferramentas de acesso ao disco, etc.

3.4 Modos de acesso


• A UCP tem instruções:

1. privilegiadas - tem acesso a todos os recursos, e mal-usadas, podem comprometer o funcionamento


do sistema, gerando instabilidade.
2. não-privilegiadas - não comprometem a estabilidade do sistema operacional.

• Modos de acesso - o que são:

1. Solução implementada em hardware, pela UCP.


2. Acesso ou não à instruções privilegiadas.
3. Informação de qual modo de acesso está salvo em um registrador de estado – PSW.
CAPÍTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL 15

4. Hoje em dia, os sistemas são montados de forma que o kernel é o único programa que pode estar
sendo executado no modo privilegiado.

• Chaveamento de modos, ou mudança de contexto:

1. Mudança entre os estados do processador, do modo privilegiado para o não-privilegiado, e vice-


versa.
2. Custa (pouco) tempo à UCP, mas é desejável que esse tempo seja ainda mais minimizado.

3.5 Tipos de kernel


Antes, dividiremos entre modo usuário (não-privilegiado) e modo kernel (privilegiado).

3.5.1 Monolítico
• Um grande bloco de código, ou dividido em módulos, todos sendo executados no modo kernel.

• Estrutura mais simples.

• Desenvolvimento mais simples.

• A manutenção pode ser complexa, se não for um projeto bem-feito e bem amarrado.

• Simples na estrutura.

• Rápido.

Ex: MS-DOS, Linux.

3.5.2 Camadas
• Níveis sobrepostos.

• Há necessidade de passar por todos os níveis para chegar ao kernel.

• Como as camadas são isoladas, facilita a manutenção e a depuração.

• Desempenho prejudicado pela estrutura - muito burocrático.

Ex: Open VMS, MULTICS, Windows 2000

3.5.3 Máquina Virtual


• Sistema computacional composto por níveis, onde o nível mais baixo é o hardware.

• Modelo de máquina virtual - nível intermediário entre o hardware e o sistema operacional - gerência de
máquinas virtuais.

• Cada máquina virtual oferece uma cópia virtual do hardware, incluindo os modos de acesso, interrupções,
dispositivos de E/S, etc.
CAPÍTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL 16

• Cada máquina virtual é independente das demais, contendo seu próprio sistema operacional, seus próprios
usuários e suas próprias aplicações.

• Conceito iniciado no VM/370, baseado no OS/370, da IBM (anos 1960).

• Conceito usado também com a linguagem Java - JVM.

• Vantagens:

1. Segurança - Isolamento total das máquinas virtuais.


2. Economia de recursos - mais barato um servidor grande do que vários servidores pequenos.
3. Portabilidade - se o hardware hospedeiro tiver um defeito, basta transferir os arquivos das máquinas
virtuais para outro hardware.

• Desvantagens:

1. Complexidade.
2. Sobrecarga - um hipervisor é complexo e consome muitos recursos do hardware hospedeiro.

3.5.4 Microkernel
• Constatação - sistemas atuais ainda são lentos e pesados.

• Microkernel - tornar o núcleo do sistema operacional o menor e mais simples possível.

• Disponibilizar os serviços através de processos a serem executados no nível usuário.

• Cada um desses processos servidores fornecem um recurso específico para o sistema: Gerência de pro-
cessos, gerência de arquivos, escalonamento de processos, etc.

• A principal função do kernel então é fazer o diálogo entre os diferentes processos servidores.

• Conceito surgido nos anos 1980, com o sistema operacional Mach, desenvolvido na Universidade Carnegie-
Mellon.

• O núcleo do Mach fornece 4 serviços, apenas: Gerência de processos, gerência de memória, comunicação
por troca de mensagens e operações de E/S, todas em modo usuário.

• Vantagens:

1. Mais seguro: Se um serviço sair do ar, é recolocado facilmente.


2. Apropriado para computação distribuída: Os serviços podem ser remanejados entre as UCPs.
3. Mais flexível.
4. Mais rápido: com o kernel enxuto, menos código a ser executado.
5. Mais facilmente portado para outras arquiteturas: Menos código no kernel, menos dificuldades para
reescrever o kernel para outras plataformas.
CAPÍTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL 17

• Há controvérsias quanto à afirmação de ser mais rápido (ponto no. 4), pois apesar do kernel ser menor, o
sistema fará muito mais chamadas e mudanças de modo de acesso, ao acessar os serviços que rodam no
modo usuário.

• Na prática, os sistemas microkernel são interessantes, mas ainda não podem estar disponíveis comercial-
mente. Existem alguns sistemas que agregam características do microkernel, mas não são completamente
nesse estado.

Exemplos: L4, Amoeba, Exokernel, Minix.


Capítulo 4

Processos e threads

4.1 Introdução
• Conceito - base para a implementação de um sistema multiprogramável.

• Um programa deve estar sempre associado a um processo.

• Processo - ambiente no qual um programa é executado.

• O processo é colocado em execução e é tirado caso o sistema operacional necessite fazê-lo.

4.2 Partes do processo


• Três partes:

1. Espaço de endereçamento: Área de memória usada pelo processo, onde as instruções e os dados do
programa são armaenados para execução.
2. Contexto de hardware: Registradores gerais e específicos da UCP. Quando um processo está em
execução, o contexto de hardware guarda os registradores do processador. Quando ele é tirado de
execução (mudança de contexto), todos os registradores são salvos no contexto de hardware, para
que o processo seja novamente colocado em execução, a partir do ponto onde parou.
3. Contexto de software: Características e limites dos recursos que podem ser alocados pelo processo.
Muitas dessas características são determinadas no momento da criação do processo, 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).
* Nome do usuário que criou o processo (UID).
* Grupo do usuário que criou o processo (GID).
– Quotas: Limites de cada recurso do sistema que um prcoesso pode alocar. Exemplos:
* Número máximo de arquivos abertos simultaneamente;
* Número máximo de operações de E/S pendentes;
* Tamanho máximo do buffer para operações de E/S;

18
CAPÍTULO 4. PROCESSOS E THREADS 19

* Número máximo de processos, subprocessos e threads que podem ser criados.


– Privilégios: Ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao
sistema operacional. Exemplos:
* Alterar a prioridade de execução;
* Limites alocados na memória principal e secundária;
* Alterar as prioridades de outros processos;
* Desativar o sistema;
* Alterar regras de segurança;
* Criar outros processos privilegiados;
* Mudar a configuração do sistema.

4.3 Bloco de controle do processo (PCB)


• O bloco de controle do processo é uma estrutura de dados, mantida pelo sistema operacional, em área
reservada, onde todas as informações necessárias para manter o processo em funcionamento são arquiv-
adas.

• A gerência de processos é feita por chamadas do sistema.

4.4 Estados do processo e mudanças de estado


• Três estados:

1. Execução: Sendo executado pela UCP.


2. Prontidão (ou pronto): Aguarda a sua vez para ser executado.
3. Espera: Aguarda pelo fim de um evento externo ou por um recurso para continuar o processamento.

Escalonamento: Conjunto de critérios que definem qual processo será colocado em execução primeiro.

4.4.1 Mudanças de estado


• Eventos voluntários ou involuntários podem mudar o estado de um processo:

1. Eventos voluntários: O processo muda por causa de eventos originários de si mesmo.


2. Eventos involuntários: O processos muda por ação do sistema operacional.

• Mudanças:

1. Pronto → execução: Colocado em execução.


2. Execução → espera: Evento externo, como uma operação de E/S, faz o processo ter seu estado
mudado.
3. Espera → pronto: O evento externo foi concluído. Note que não há como passar direto, de espera
para execução.
CAPÍTULO 4. PROCESSOS E THREADS 20

4. Execução → pronto: O término da fatia de tempo que o processo tem o coloca de volta na fila de
prontidão.

• Processos no estado de espera ou pronto podem estar na memória virtual, por falta de espaço. Logo, a
técnica de swapping consiste em mover processos entre as memórias principal e virtual.

4.5 Criação e eliminação de processos


• Dois estados adicionais:

1. Criação → Criou-se a entrada no PCB, mas o processo ainda não foi colocado na lista de prontidão.
É criado por outros processos.
2. Término → O programa foi finalizado, mas o PCB ainda existe. É eliminado por outros processos
ou pelo término nortmal da sua execução.

4.6 Concorrência dentro de uma aplicação


• Três maneiras:

1. Processos independentes: Um processo cria outros, sem vínculos. É a maneira mais simples.
2. Subprocessos: Um processo cria outros, de forma que estão vinculados hierarquicamente: Se o
processo-pai é eliminado, os processos-filho também serão. Compartilham quotas.
3. Threads: Ramificações dentro do processo, compartilhando o contexto de software e o espaço de
endereçamento. É um modo de gastar menos tempo com criação, escalonamento e eliminação de
processos.

4.7 Tipos de processo


1. Foreground: Execução em primeiro plano, interage diretamente com o usuário, com entrada-padrão
(teclado) e saída-padrão (monitor).

2. Background: Execução em segundo plano, onde não é preciso interagir diretamente com o usuário. Nesse
caso, entrada e saída podem ser arquivos, por exemplo.

3. CPU-Bound: Passa a maior parte da fatia de tempo em estado de execução, ou seja, usando a UCP
intensamente.

4. I/O-Bound: Passa a maior parte da fatia de tempo em estado de espera, com muitas operações de E/S.

4.8 Sinais
• Mecanismo que permite ”avisar” processos de eventos gerados pelo sistema operacional ou por outros
processos.

• Também são usados para comunicação e sincronização entre processos.


CAPÍTULO 4. PROCESSOS E THREADS 21

• Podem ser associados a temporizadores (eventos associados ao tempo).

Exemplos: Notificação de interrupções e exceções, alarmes de tempo, limites de quotas excedidos, etc.

• Eventos que geram sinais - síncronos ou assíncronos.

• Tratamento do sinal - semelhante ao mecanismo de interupções.

• O sinal está para o processo assim como interrupções e exceções estão para o sistema operacional.

4.9 Threads
4.9.1 Introdução
• No início, eram apenas processos.

• Conceito de processo ”leve” (lightweight) → compartilha o espaço de endereçamento.

• Thread - surge primeiro no sistema operacional Mach, da Universidade de Carnegie-Mellon (1980).

• Ganho de desempenho e flexibilidade, apesar da complexa implementação.

• Aplicações mais complexas - vários trechos de código em execução paralela - para termos comunicação
e sincronização de threads deve-se avaliar desempenho, flexibilidade e custo.

• Apesar da dificuldade em desenvolver, compensa devido aos ganhos obtidos.

Exemplos: Windows 2000 e superiores, Linux, Solaris, etc.

4.9.2 Ambientes monothread e multithread


4.9.2.1 Monothread
• Cada processo tem apenas um thread.

• Concorrência se dá apenas com processos independentes ou subprocessos.

• Problema - criar, gerenciar e eliminar processos é computacionalmente caro.

• Compartilhar o espaço de endereçamento é complexo, por conta dos mecanismos empregados.

• Processo →Unidade de alocação e de escalonamento.


CAPÍTULO 4. PROCESSOS E THREADS 22

4.9.2.2 Multithread
• Permite que tenhamos aplicações concorrentes de forma mais eficiente:

– Aumenta o desempenho, por dispensar mecanismos de comunicação dentrod o processo.


– Aumenta a eficiência, por termos menos sobrecarga do sistema como um tyodo - menos processos
e mais threads.

• Programas associados a threads.


• Os threads sofrem mudança de estado (pronto, espera e execução), e tem seu próprio bloco de controle
(o TCB).
• Processo →Unidade de alocação.
• Thread →Unidade de escalonamento.
• O S. O. vê e escalona os threads de cada processo.

4.9.3 Formas de implementação


• Pacote de threads - Conjunto de rotinas da biblioteca do sistema operacional par aa implementação de
threads.
• Falta de padrão em sistemas Unix, até o comitê POSIX liberar uma norma para termos threads, os
PThreads.

4.9.3.1 Threads em Modo Usuário (TMU)


• Implementados pela aplicação.
• O sistema operacional não vê os threads, apenas o proceso como um todo.
• Podemos ter aplicações multithread em ambientes monothread.
• São rápidos e eficientes, por não fazerem acessos ao kernel, e as mudanças de modo de acesso da UCP
(usuário-kernel-usuário).
• Uma chamada a um dispositivo de E/S, feita por um thread, coloca todo o processo em estado de espera.
• O tratamento dos sinais também é complexo, pois o processo terá que tratar o sinal e direcioná-lo ao
thread certo.

4.9.3.2 Threads em Modo Kernel (TMK)


• Implementados pelo kernel.
• O sistema operacional gerencia diretamente os threads de um processo.
• Requer mudanças de modo de acesso, logo tem desempenho degradado - bem mais lentos.
• Chamadas bloqueantes colocam apenas o thread em estado de espera, não todo o processo.
• Podemos ter vários threads de um mesmo processo em execução simultânea, em UCPs diferentes.
CAPÍTULO 4. PROCESSOS E THREADS 23

4.9.3.3 Threads em Modo Híbrido (TMH)


• Combina as vantagens dos threads em modo usuário (TMU) e em modo kernel (TMK), mas também as
desvantagens.

• Um processo tem vários TMKs, e cadas TMK tem vários TMUs.

• O sistema operacional escalona os TMKs, e eles escalonam os TMUs.

• O objetivo é aumentar a flexibilidade, já que apenas os TMKs são escalonados (diminuindo o número de
mudanças de modo de acesso), mas também traz os problemas das chamadas bloqueantes, entre outras.

4.9.3.4 Scheduler activations


• Os Threads em Modo Híbrido (TMH) tem problemas devido à falta de comunicação entre os threads.

• É desejável unir o melhor das implementações, fugindo dos problemas de cada uma.

• O scheduler activations foi implementado inicialmente na Universidade de Washington, e nessa forma,


há uma estrutura de dados que facilita a troca de informações entre o kernel e a biblioteca de threads.
Essa estrutura é o scheduler activations.

• O escalonamento é feito pela própria biblioteca, evitando as mudanças de modo de acesso, como por
exemplo a ocorrência de uma chamada bloqueante.

• Ambas as partes se comunicam, e trabalham cooperativamente.


Capítulo 5

Sincronização entre processos

24

Você também pode gostar