TC – DEI, 2005/2006
Paulo Marques pmarques@dei.uc.pt http://www.dei.uc.pt/~pmarques Sistemas Operativos Paulo Marques pmarques@dei.uc.pt http://www.dei.uc.pt/~pmarques Tecnologia dos Computadores 2005/2006
Organização do Software/Hardware Aplicações Sistema Operativo Hardware TC – DEI, 2005/2006
Diferentes Tipos de Software Device Drivers TC – DEI, 2005/2006
Funções do Sistema Operativo Esconder os detalhes do hardware subjacente ao sistema Gestão de memória Gestão de dispositivos genéricos Gestão de dispositivos de armazenamento (discos/etc.) Segurança “Virtualizar” a utilização do processador e dos recursos associados à máquina Cada programa corre sobre a aparência de ser o único no sistema O sistema operativo fornece um interface unificado aos dispositivos da máquina TC – DEI, 2005/2006
Virtualização do Processador/Dispositivos Processadores Virtuais (... máquinas virtuais...) Processador Real TC – DEI, 2005/2006
Virtualização da Máquina Dois aspectos fundamentais... Multiprogramação Trata-se de uma técnica de manter múltiplos programas em memória simultaneamente. Cada programa executa como se fosse o único existente na máquina. Gestão de Memória Em qualquer altura o Sistema Operativo tem de saber que programas estão em memória e onde é que cada um deles reside TC – DEI, 2005/2006
Conceito de Processo Um programa em execução com... Um identificador único Recursos próprios (e.g. ficheiros abertos) Um espaço de endereçamento (i.e. memória própria protegida de todos os outros “processos”) MS Word (1 processo) MS Excel (1 processo) TC – DEI, 2005/2006
Comutação entre Processos De alguns em alguns ms é gerada uma “interrupção” Quanto existe uma interrupção, deixa-se de executar o código do utilizador e passa-se a executar o código do sistema operativo O sistema operativo pode então comutar para outro processo (escalonamento preemptivo) total = 0; for (int i=0; i<20000; i++) total = total + i; printf(“total=%d\n”, total); while (!feof(fd)) { if (fscanf(fd, “%d”, &d) == 1) printf(“%d\n”, d); } (...) Nível do Utilizador Nível do Kernel RTC Interrupt Handler TC – DEI, 2005/2006
Comutação de Processos TC – DEI, 2005/2006
Ciclo de Vida de um Processo Terminated New Ready (to execute) Dispatch Running Interrupt I/O or event waiting Blocked (waiting for something) End of I/O or event completed TC – DEI, 2005/2006
Filas do Sistema Operativo Ready Queue Fila onde aguardam todos os processos que estão à espera de executar Blocked Queue Fila onde aguardam todos os processos que estão à espera que uma operação de entrada/saída complete ou de um “evento especial” Running (não é uma fila) Processo que se encontra a executar Apenas este processo o Sistema Operativo ocupam tempo de processador TC – DEI, 2005/2006
Escalonamento de Processos Suponhamos que existem vários processos na Ready Queue.... Como é que se decide qual é que executa a seguir? Existem diversos algoritmos, um bastante conhecido e utilizado é o Round-Robin TC – DEI, 2005/2006
Round Robin É decidido à priori qual a fatia de tempo a atribuir a cada processo. Timeslice ou Quantum de Execução A “Ready Queue” é um lista ordenada Cada processo executa até se esgotar o seu timeslice. Quando isso acontece, é colocado no final da ready queue O próximo processo a executar é o que está à frente na ready queue TC – DEI, 2005/2006
Gestão de Memória É absolutamente fundamental que cada processo não possa aceder à memória dos outros processos Questão de segurança de dados Protecção contra “ponteiros” perdidos e bugs de software Grande problema dos Windows 95, 98 e Macs antigos! TC – DEI, 2005/2006
Memória Segmentada “Real” A cada processo corresponde um endereço base e um limite (registos especiais no processador) Sempre que existe um acesso a memória, o processador verifica se o processo se encontra a aceder à sua memória ou não 71433 Processo B MOV AX, [60000] ERRO, Acesso proibido! 70000 60530 Processo A OK, dentro do espaço de endereçamento MOV AX, [50124] 50060 TC – DEI, 2005/2006
GPF e Segmentation Faults! TC – DEI, 2005/2006
Memória Virtual Actualmente, todos os sistemas utilizam o conceito de memória virtual Cada processo vê toda a memória do computador, como sendo dele Quando um processo gera um endereço, esse endereço é virtual. O processador, com a ajuda do sistema operativo transforma-o num endereço físico 4Gb 4Gb Disco 5000 256Mb 1000 1000 Espaço de endereçamento do processo A Espaço de endereçamento do processo B Tabela(s) de Tradução de Endereços Memória física TC – DEI, 2005/2006
Memória Virtual Paginada O sistema mais utilizado nas máquinas actuais Funciona tal como o esquema indicado anteriormente, com os seguinte pormenores A memória física é dividida em pequenos pedaços chamados páginas (e.g. 4Kbytes) A memória de cada processo também é dividida em páginas Existe uma tabela de páginas por cada processo, que é gerida pelo sistema operativo. É utilizando esta tabela que é feita a tradução dos endereços virtuais em endereços físicos Sempre que é colocado outro processo em execução, a sua tabela de páginas é carregada e utilizada TC – DEI, 2005/2006
Noção de Thread Processo Thread 1 Thread 2 Thread 3 TC – DEI, 2005/2006
Noção de Thread A troca de processos é uma operação extremamente cara... É necessário reorganizar os espaços de endereçamento É necessário estabelecer novos contextos de segurança É necessário gerir a informação associada aos processos em causa Thread É um “fluxo de execução” dentro de um processo; é um mini-processo dentro de um processo. O espaço de endereçamento é o mesmo A comutação entre threads é muito, muito rápida! TC – DEI, 2005/2006
Quem são estes Senhores? Dennis Ritchie Ken Thompson Steve Jobs Bill Gates Bill Joy Linus Torvalds Andrew Tanenbaum TC – DEI, 2005/2006
» OPERATING SYSTEMS ARE LIKE UNDERWEAR – NOBODY REALLY WANTS TO LOOK AT THEM « Bill Joy, Chief Scientist and Co-Founder of Sun Microsystems TC – DEI, 2005/2006
Para saber mais... Computer Science, An Overview Capítulo 3 (3.1, 3.2, 3.3) Computer Science Illuminated Capítulo 10 (10.1, 10.2, 10.3, 10.4 [apenas “Round-Robin”]) TC – DEI, 2005/2006