Você está na página 1de 5

Plano da aula

• Introdução
• Histórico
• Multiprogramação
Noções de Processos – Noção de processo
• Definição
• Ciclo de vida do processo
Marcelo Johann – Suporte de Hardware para multi-programação
• Mecanismo de interrupção
• Modo de execução do processador
• Linguagem C, Linux, Módulos e Makefile

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 2

Definição & Objetivos


Sistemas Operacionais : introdução

• Definição & Objetivos Aplicativo do usúario


Pessoa, outra
máquina…
• Serviços oferecidos
– API – chamadas de sistema – programas de sistema
• Histórico
– Lotes – monitor – multi-programação – timesharing Sis. Op. Interface entre os dois
• Categorias de Sis. Op. atuais
• Exemplos de Sis. Op.

CPU, Memória,
Hardware discos, E/S, …

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 3 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 4

Definição & Objetivos Serviços oferecidos


• O Sistema Operacional é uma interface HW / • O Sis. Op. deve fornecer uma interface aos
SW aplicativo programas do usuário
• Duas formas de vê-lo: – Quais recursos de HW?
– Qual seu uso?
– É um “fiscal” que controla os usuários
– Tem algum problema? (Segurança, falha…?)
– É um “juiz” que aloca os recursos entre os usuários
– É preciso de manutenção?
• Objetivos contraditórios: – Chegou um email?
– Conveniência – Etc…
– Eficiência
– Facilidade de evolução • Chamadas de sistema – programas de sistema
– A melhor escolha sempre DEPENDE de alguma
coisa…

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 5 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 6
Núcleo, chamadas de sistema, programas
Organização e serviços do Sis. Op. de Sistemas
Chamadas de sistema

• Núcleo: é o conjunto mínimo de serviços


executados pelo Sis. Op.
– Definição de processos, escalonamento,…

Programas de Sistema • Chamadas de sistema: são funções que os


programas dos usuários podem usar para acessar
os serviços do núcleo
Sistema – Exemplo: ls, mkdir, cd, format, CTRL-C…
Operacional – O núcleo assume a execução.
Núcleo do Sistema (Kernel)
• Programas de sistema: são serviços menos
críticos
Driver Driver Driver Driver – Compiladores, editores de texto, shell, GUI (Windows),
Navegador…

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 7 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 8

Histórico – sistemas em lotes Histórico – monitor residente


• Nos primórdios da Computação, não tinha Sis. • Evolução natural: automatizar o andamento dos
Op… batches
– O programador interagia diretamente com o HW; – O controle passa a ser feito por um programa, o
– A alocação dos recursos de HW era feita por planilha. monitor, residente na memória;
• Nos anos 50, automatizou-se a execução dos – O monitor carrega o job na memória;
jobs – Passa o controle do fluxo de execução ao job;
– Definição de categorias de programas (filas) com uso – Volta a exercer o controle ao terminar o job;
parecido dos recursos = lotes (batches);
– Centraliza os acessos aos periféricos (fitas, discos…)
– Possibilidade de definir bibliotecas especializadas;
– Um operador profissional opera o HW para executar
os jobs. • Melhor, porém possibilita a execução de apenas
– O mesmo fiscaliza a atribuição do HW e o andamento um job por vez!
dos jobs.
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 9 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 10

Histórico – multi-programação Histórico – multi-programação

• Idéia seguinte: poupar o desperdício de CPU • Mais de um job?


devido às Entradas/Saídas – Terá um só na CPU, em execução…
– Onde guardar o job que não estará executando?
Ociosidade da CPU
• Em fita? Muito lento!
• Em disco (acesso randômico!)
Job A Job B Job A

Requisição E/S E/S terminada • Como fazer com que o “monitor” saiba que um
tempo job acessa a dispositivos de E/S?
– Mecanismo de interrupção.
• Mantém-se mais de um job em execução!

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 11 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 12
time-sharing, multi-usuário, multi-tarefa Categorias de Sis. Op. modernos
• Sistemas distribuídos
• Evoluções naturais da multi-programação: – Distribuição de uma (ou mais) tarefa entre vários computadores;
– Compartilhamento de tempo: cada usuário – O usuário não enxerga a distribuição (visão única)
possui um terminal próprio e acessa à mesma – Útil para tolerança a falhas.
CPU; – Fracamente acoplados.

• Sistemas Paralelos
– Multi-usuário:mais de uma sessão podem ser – Um computador possui mais de um processador
abertas em um computador só, por vários • Com ou sem memória compartilhada (SMP)
usuários (Windows NT/2000, Unix…) • Fortemente acoplados!

• Sistemas mais antigos eram mono-usuários (MS-


DOS) • Sistemas embutidos
– Celulares, Palm, carros, satélites…

– Multi-tarefa:cada usuário pode usar mais de • Sistemas de tempo real


um job “simultaneamente” – Hard real-time vs. soft real-time

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 13 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 14

Exemplos: Windows Exemplos: Linux


• Windows NT 3.1, 1993 • 1991 com o trabalho de Linus Torvalds sobre o kernel
– Multi-tarefas, mono-usuário para i386 (kernel 0.01, maio 1991)
– 32 bits
– “casca gráfica” (janela) em cima de MS-DOS e/ou OS/2
• Março de 94: kernel 1.0 com suporte de rede
• Windows NT 4.0, 1995: mudanças sobretudo na API gráfica, – Março de 95: kernel 1.2
suporte a SMPs • suporte a novo HW (Sparc, Alpha).
• Windows 2000, 1999: serviços distribuídos • Junho de 96: versão 2.0
– Cliente/servidor – suporte a SMP, Sparc,
– Organização em “micro-núcleo” e orientada a objetos
– Multi-usuários – melhora na memória virtual e no sistema de arquivos,
– NTFS – threads no kernel,
• Windows XP, 2001 – módulos
– API gráfica integrada com Web
– Melhor segurança (firewalls)
• 2002 versão 2.4.x
– 32-64 bits – melhora nos algoritmos de escalonamento das
• Windows VISTA, 2007. threads.
• Agora versão 2.6.y

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 15 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 16

O conceito de processo O processo do ponto de vista do S.O.


• Um programa é: • Imagem de um programa
– Uma seqüência finita de instruções; – Segmento de código
– Uma entidade passiva (que não se altera com o passar do – Espaço de endereçamento
tempo). • Conjunto de recursos de HW alocados pelo Sis. Op.:
– Armazenado em disco. – Registradores (PC, Stack Pointer…);
• Um processo é: – Memória;
– Uma abstração que representa um programa em – Espaço no disco (arquivos de E/S).
execução;
– = Contexto do processo.
– Uma entidade dinâmica: seu estado se altera conforme for
executando. • Unidade de escalonamento
– Armazenado na memória. – Estado;
– Algoritmos de escalonamento para otimizar o uso do HW.
• Pode-se encontrar mais de um processo
– Alocar a CPU a um processo implica em uma troca de
instanciando um programa único.
contexto
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 17 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 18
Tabela de Processos Relacionamento entre processos
• Para manter as informações relativas aos • Caso mais simples: os processos são
processos, o núcleo deve manter: independentes.
– Uma estrutura de dados relativa a um dado – Sem relacionamento
processo • Grupo de processos
• struct proc – Compartilhamento de recursos
• Process Control Block (PCB) – Baseados em hierarquia de processos:
– Uma estrutura de dados que gerencia o conjunto • Um processo pai cria processos filhos;
de processos • Os filhos podem executar o mesmo código, ou trocá-lo;
• Tabela de processos. • Obtem-se uma árvore de processos.

• As chamadas de sistema que manipulam os • Implica na definição da semântica de termino


de um processo:
processos irão interagir com essas estruturas – Só o processo morre;
de dados.
– Toda sua descendência morre.
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 19 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 20

Sinalização de processos Suporte de Hardware: interrupções


• Uma das formas de interagir entre processos • Erros e eventos são detectados por hardware
é através de sinais. – Exemplos de evento: inserir um pendrive na porta
USB, escrever um bloco em disco, receber um
– A recepção é assíncrona
pacote pela rede, escrever numa área proíbida…
– Ao receber um sinal, o processo para sua – O HW emite uma interrupção.
atividade,
– Ele executa um tratamento de sinal adaptado
(signal handler), • São tratados pelo Sis. Op.
– Identifica a interrupção (número);
– Ao se encerrar o tratamento, o processo pode
voltar ao estado onde estava antes. – Verifica sua prioridade;
– Acha no vetor de interrupções qual procedimento é
• Um sinal é uma versão em nível de software apropriado (handler).
das interrupções de hardware.
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 21 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 22

Suporte de Hardware: modos de execução Exemplo importante de uso dos 2 modos


• O HW provê no mínimo dois modos de • Para proteger os periféricos, as instruções de E/S são
execução diferentes: privilegiadas.

– Modo privilegiado (protegido, sistema…) – todo o


conjunto de operações é disponível. É o modo de • Logo, um processo usuário não pode acessá-los
execução do Sis. Op. – E.g.: escrita em disco, leitura de um CD…

– Modo usuário: uso limitado. Os processos usuários


operam neste modo. • O usuário deve passar pelo Sis. Op. através de uma chamada
de sistema, que gera uma interrupção (trap).
• Chaveamento de modos:
– É o fato de passar de um modo para o outro.
– Usuário -> protegido: por interrupção. TRAP
– Protegido -> usuário: por instrução clássica (yield, Processo usuário Sis. Op.
RETORNO
return, …).
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 23 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 24
Chamada de sistema com interrupção Processos e Disco
• A chamada de sistema oferece o serviço ao processo usuário, • Os processos devem interagir com o disco para armazenar e
em modo “seguro”. recuperar dados não voláteis.
• Ela gera uma interrupção
– Identificação, prioridade, handler… • O disco físico é abstraído pelo Sistemas de Arquivos, de
• Ela implica em uma troca de contexto acordo com uma hierarquia:
– O processo chamador deve deixar o lugar para o código do núcleo! – Diretórios
– A troca de modo implica em uma troca de contexto. – Arquivos.
• Conforme for a prioridade e o tipo de escalonador, a troca de • Os diretórios estão freqüentemente organizados de acordo
contexto pode ser imediata ou atrasada. com uma hierarquia em árvore
• O que acontece se houver uma interrupção durante o – Raiz (‘/’)
tratamento de uma interrupção? – Diretório de trabalho de um processo ( ‘.’)
– Comparam-se as prioridades – Caminho relativo / absoluto
– Possibilidade de desabilitar as interrupções em casos críticos.
• Deve ter chamadas de sistema para acessar o Sistema de
Arquivos!

INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 25 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 26

Chamadas de sistema (Linux) para


Exemplos de chamadas de sistema
gerenciar processos
• Minix 2 provê 53 chamadas de sistema no total
• Gerenciamento de processos: • Criação de processo: fork()
– fork(), waitpid(), exit(), execve(...), getpid()... – Cria um novo processo
• Sinais – Igual ao pai (clone!)
– sigaction(), sigreturn(), sigprocmask(), kill()... – No processo pai, fork() retorna o pid do filho;
– No processo filho, fork() retorna 0.
• Gerenciamento de arquivos
– open(), close(), mknod(), read(), write(), pipe(),... • Mudar o segmento de código: exec()
– mkdir(), mount(),... – Executa o binário apontado em argumento.
– Em geral, chamado logo após o fork() (“fork-exec”)
• Direitos de acesso
• Recuperar o identificador: getpid()
• Gerenciamento de tempo
– Retorna um int, que identifica o processo.
– Time()
• Terminar o processo: kill()
– Manda um sinal (e.g. TERM) para o processo cujo pid é
dado em argumento.
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 27 INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 28

Próxima Aula

Laboratório de
Programação
C / UNIX
INF01142 - Sistemas Operacionais I N - Marcelo Johann - 2009/2 Aula 03 : Slide 29