Você está na página 1de 37

Reviso geral

SO 07/08

Histrico (de acordo com Tanenbaum)

Primeira gerao (1945-55)


Mquinas com tubo vcuo Perfuradoras de carto Clculos numricos simples

e plugboards

Nenhuma

linguagem ou SO presentes

Segunda gerao (1955-65)


Transistores e sistemas em lotes (batch systems) Assembler ou Fortran usados como linguagem

Processamento

em lotes deu origem a uma forma muito primitiva de SO (o primeiro ancestral )

Histrico (cont.)

Terceira gerao (1965-1980)


Circuitos

integrados e multiprogramao IBM OS/360: primeiro a introduzir o conceito de multiprogramao Spooling (Simultaneous Peripheral Operation on Line) Time sharing ou multitasking MULTICS (MULTiplexed Information and Computing Service)

Histrico (cont.)

Quarta gerao (1980-)


Computador

pessoal MS-DOS e UNIX Criao de SOs user-friendly SOs para redes de computadores SOs distribudos

Conceitos bsicos

Sistema de Operao: difcil definir... Dois conceitos dependendo da funo que se quer enfatizar:
Mquina

estendida

Estende o hardware com uma camada amigvel que permite ao usurio manipular de forma mais conveniente os recursos de hardware (instrues de mquina, organizao de memria, entrada e sada e estrutura dos barramentos)

Gerenciador

de recursos

Prov uma forma ordenada, controlada e eficiente de alocao de processadores, memrias e dispositivos de entrada e sada entre os vrios programas que competem para us-los

Conceitos bsicos (cont.)

Sistema em lotes (batch system): programas so executados do incio at o fim (podendo ser interrompidos apenas por operaes de entrada e sada) e novos programas so enfileirados esperando pela CPU Programa: texto do cdigo de um programa, ainda no em execuo (esttico) Processo: programa em execuo (dinmico) Job: termo utilizado para um processo de um sistema em lotes

Conceitos bsicos (cont.)

Multiprogramao: permite sobreposio de computao com entrada e sada. Permite que mltiplos processos estejam em memria ao mesmo tempo Timesharing: variante de multiprogramao, que define quotas de tempo para um processo utilizar a CPU. Permite interromper um processo em operaes diferentes de entrada e sada Tarefa (task): termo utilizado para um processo em um sistema multiprogramado Spooling: capacidade de processar algum job assim que este chega no sistema atravs da sobreposio de operaes muito lentas (por exemplo, dispositivos de entrada e sada) com processamento

Conceitos bsicos (cont.)


Starvation (inanio): processo fica na fila para sempre sem ter chance de executar Deadlock (impasse): condio em que processos ficam bloqueados esperando por algum evento que nunca vai poder acontecer Buffering: utilizao de pores de memria para guardar dados que vm de dispositivos com baixa velocidade para agilizar o processamento de algum dado Caching: guardar dados para posterior utilizao evitando ter que fazer novo acesso a dispositivos lentos (pode ser implementado aproveitando buffering)

Funes de um SO atual

Interface com o usurio (shell, janelas grficas, linguagem de comandos, chamadas s bibliotecas do sistema)
Comandos bsicos: Manipulao de ficheiros e diretrios Manipulao de processos Comunicao entre processos Manipulao de dispositivos de entrada e sada Manipulao de data/hora Consulta sobre o estado do sistema (cpu, memria, sistema de ficheiros, dispositivos de entrada e sada etc)

Funes de um SO atual (cont.)

Gerncia de recursos:
Memria Cpu

Disco
Outros

dispositivos

Gerncia de processos:
Usurio
Sistema

Estrutura de SOs

Monoltica: todas as funes concentradas no kernel sem interface bem definida Em camadas: interface bem definida entre funes Mquinas virtuais: permite vrios SOs sobre um mesmo hardware Cliente-servidor: funes rodam a nvel de usurio como clientes. Kernel apenas estabelece a comunicao entre o cliente e o servidor Micro-kernel: funes do SO passam para espao de usurio

Processos

Hierarquia Estados: running, ready, blocked Tabela de processos Process Control Block (PCB)

Registradores PC PSW Ponteiro para a pilha Estado do processo Hora em que o processo comeou a executar Tempo de cpu utilizado Tempo de cpu dos filhos Hora do prximo alarme Ponteiros para filas de mensagens Bits de sinal pendentes Id do processo Vrios flags

Processos (cont.)

reas de memria (tabela de processos)


Ponteiro

para o segmento de texto Ponteiro para o segmento de dados Ponteiro para o segmento bss Estado de trmino Id do processo Id do processo pai

Processos

Interrupes
Associado

com cada classe de dispositivo de entrada e sada h um vetor de interrupes localizado na base da memria. Contm o endereo do servio de interrupo Servio de interrupo:
Salva contexto do processo Troca de contexto: substituio de um processo que estava na cpu por um outro processo que estava na fila de prontos (ready)

Threads

So criadas e executam no contexto de um processo Troca de contexto para threads no retira o processo da cpu! Informao a ser guardada com uma troca de contexto de thread menor do que a info necessria para trocar o contexto de um processo Criao de uma thread: usualmente, thread_create()

Processos

Criao no programa do usurio: fork() Comunicao entre processos (IPC Inter Process Communication):

Pipes

pipe() signal(), kill(), alarm(), pause(), sleep() etc

Sinais

exit(), return(), wait(), waitpid() Memria compartilhada

mmap(), shmget(), shmat()

Troca de mensagens

send(), receive()
socket(), bind(), connect(), listen(), accept(), send(), recv(), sendto(), recvfrom()

Sockets

Processos (cont.)

Condies de corrida (race conditions): 2 ou + processos tentando escrever no mesmo recurso simultaneamente Como resolver: (espera ocupada ou filas) Excluso mtua em sees crticas Solues em hardware: Instrues atmicas (read-modify-write) test-and-set, swap, fetch-and-phi, etc Solues em software: Dekker, Petterson (2 e n processos) Semforos (binrios e contadores) Variveis condicionais Monitores

Processos (cont.)

Problemas clssicos de sincronizao entre processos:


Produtor-consumidor

Jantar

dos filsofos Leitores e escritores Barbeiro dorminhoco

Processos (cont.)

Escalonamento: forma de impor uma ordem para execuo de processos


Problema:

1 nica CPU para todos os processos, como escolher o prximo processo? de CPU (curto prazo) de longo prazo

2 nveis:
Escalonador

Escolhe prximo processo da fila de prontos

Escalonador

Processos (cont.)

Variveis:
Justia:

todos os processos tero chance de executar em algum momento no futuro? Eficincia: o processador ficar ocioso por longo tempo? Tempo de resposta: quanto tempo o usurio deve esperar para obter a primeira resposta? Turnaround: quanto tempo o processo vai passar no sistema at finalizar sua execuo? Throughtput: quantos processos o meu sistema vai conseguir processar por unidade de tempo?

Processos (cont.)

Algoritmos mais comuns:


Primeiro

a chegar o primeiro a sair (FCFS/FIFO) Menor job primeiro (SJF Shortest Job First) Shortest Remaining Time First (SRTF): utiliza tcnica de envelhecimento para evitar starvation Escalonamento baseado em prioridades Round-robin Filas de nveis mltiplos Filas de nveis mltiplos com realimentao

Gerncia de Memria

Requisitos:
Relocao

de endereos Proteo de espao de endereamento de processos de usurio e de sistema Compartilhamento Organizao lgica Organizao fsica

Gerncia de Memria (cont.)

Tcnicas bsicas:

Parties fixas Parties dinmicas/variveis


Bitmaps ou listas encadeadas: first-fit, next-fit, best-fit, worst-fit, quick-fit, sistema buddy

Paginao Segmentao Combinao de ambas pode ser utilizada

Overlays e Memria virtual: permitem que programas maiores do que a memria fsica da mquina (RAM) possam executar Memria virtual tb permite utilizao mais eficiente da memria

Gerncia de Memria (cont.)


Endereos lgicos e fsicos Tabelas de pginas TLB (Tanslation Lookaside Buffer): cache de pginas de processos O que fazer quando a memria est totalmente ocupada e um novo processo precisa executar?

Gerncia de Memria (cont.)

Algoritmos de substituio de pginas


Pgina tima No usada recentemente FIFO

(NRU)

Segunda tentativa Relgio LRU NFU Working Space WSclock

Sistemas de Ficheiros

Gerncia
Funes

para operaes bsicas e avanadas sobre ficheiros Organizao lgica e fsica


Acesso rpido (leituras e escritas) Fcil de atualizar Economia de armazenamento Manuteno simples confiabilidade

Sistemas de Ficheiros (cont.)

Tipos de estrutura de ficheiros:


Sequencial Registros

rvore

Tipo de acesso:
Sequencial

ou aleatrio

Atributos e operaes sobre ficheiros

Diretrios

Um nico nvel
Problema

para separar usurios e ficheiros com mesmo nome, mas de contedos diferentes
para separar ficheiros com mesmo nome, mas de contedos diferentes ou rvores balanceadas

2 nveis
Problema

Hierrquico
rvores

Operaes sobre diretrios

Sistemas de ficheiros

Implementaes Layouts i-nodes Superblocks Compartilhamento de ficheiros e diretrios (links, formas de implementao) Aproveitamento de espao Confiabilidade (formas de recuperao de erros) Exemplos de sistemas de ficheiros RAIDs

Entrada e sada

Principles of I/O hardware

Interrupes e funcionamento do hardware de E/S


Objetivos, programmed I/O etc Problemas de ordenao de pedidos (impasses)

Principles of I/O software


I/O software layers Disks

Disk scheduling (SCAN)

Character-oriented terminals Graphical user interfaces Network terminals Power management

Impasses

Deteco e preveno de impasses (deadlocks)


Condies

necessrias para a ocorrncia de um impasse Modelagem atravs de um grafo Utilizao do grafo para implementao de algoritmos de deteco e preveno

Sockets

Comunicao entre processos


AF_UNIX:

na mesma mquina AF_INET: entre mquinas numa rede

Clientes e servidores Comunicao fivel (TCP) ou no fivel (UDP) Protocolo comumente utilizado: IP

Sockets (cont.)

Normalmente:
Cria-se

um socket Associa-se o socket criado mquina (IP e porta) Se ativo: estabelece conexo e faz o pedido Se passivo: espera pedidos numa porta especfica e aceita ligaes na porta Quando termina: fecha o socket

Sockets (cont.)

SOCK_STREAM (TCP) pode ser ativo ou passivo Um socket inicialmente ativo, e se torna passivo depois de uma chamada funo listen() Somente sockets ativos podem ser referidos em chamadas funo connect() Somente sockets passivos podem ser referidos em chamadas funo accept()

Sockets (cont.)

Chamadas tpicas para UDP


socket() bind()

sendto()
close()

e/ou recvfrom()

Sockets (cont.)

Chamadas tpicas de um cliente TCP:


socket() bind()

connect()
send() close()

e/ou recv()

Sockets (cont.)

Chamadas tpicas de um servidor TCP:


socket() bind()

listen()
accept() send() close()

e/ou recv()