01 Sistemas Operacionais

64
 UNIVERSIDADE FEDERAL DE SANTA CATARINA Sistemas Operacionais Curso Técnico em Informática MÓDULO III – SISTEMAS OPERACIONAIS E REDES DE COMPUTAD ORES

Transcript of 01 Sistemas Operacionais

UNIVERSIDADE FEDERAL DE SANTA CATARINA

Sistemas OperacionaisCurso Tcnico em InformticaMDULO III SISTEMAS OPERACIONAIS E REDES DE COMPUTADORES

NDICE1 INTRODUO A SISTEMAS OPERACIONAIS...................................................................................................1 HISTRICO DOS SISTEMAS OPERACIONAIS..................................................................................................................................1 Primeira fase (1945-1955).........................................................................................................................................1 Segunda fase (1956-1965)..........................................................................................................................................1 Terceira fase (1966-1980)..........................................................................................................................................1 Quarta fase (1981-1990)............................................................................................................................................2 Quinta fase (1991-2005).............................................................................................................................................2 Sexta Fase (2006-????)..............................................................................................................................................2 O QUE UM SISTEMA OPERACIONAL.......................................................................................................................................2 A DIVISO DO HARDWARE DE UM COMPUTADOR........................................................................................................................4 SISTEMAS OPERACIONAIS DE HOJE..........................................................................................................................................5 CTSS...........................................................................................................................................................................6 Multics........................................................................................................................................................................6 UNIX...........................................................................................................................................................................6 CLASSIFICAES DE SISTEMAS OPERACIONAIS............................................................................................................................7 ARQUITETURA DE SISTEMAS OPERACIONAIS...........................................................................................................................10 Componentes do SO..................................................................................................................................................10Gerenciador de processos.....................................................................................................................................................10 Gerenciador de memria.......................................................................................................................................................10 Gerncia de arquivos............................................................................................................................................................11 Sistema de Entrada e Sada...................................................................................................................................................11 Gerncia de Armazenamento Secundrio.............................................................................................................................11 Redes....................................................................................................................................................................................11 Proteo................................................................................................................................................................................11 Interpretador de comandos....................................................................................................................................................11

Servios do SO..........................................................................................................................................................12Execuo de Programas........................................................................................................................................................12 Operaes de E/S..................................................................................................................................................................12 Manipulao do Sistema de Arquivos...................................................................................................................................12 Comunicao........................................................................................................................................................................12 Deteco de Erros.................................................................................................................................................................12 Alocao de Recursos...........................................................................................................................................................12 Contabilizao......................................................................................................................................................................12 Proteo................................................................................................................................................................................12

Chamadas de Sistema...............................................................................................................................................12Tipos de chamadas de sistema..............................................................................................................................................13

Programas de Sistema..............................................................................................................................................13 Estrutura do sistema operacional.............................................................................................................................13Estrutura simples..................................................................................................................................................................13 Estrutura em camadas...........................................................................................................................................................14 Microkernel..........................................................................................................................................................................14

Mquina virtual........................................................................................................................................................14Mquina virtual Java............................................................................................................................................................14

TIPOS DE SISTEMAS OPERACIONAIS.......................................................................................................................................14 POSIX / UNIX-like....................................................................................................................................................14 Microsoft Windows...................................................................................................................................................15 Apple / Macintosh.....................................................................................................................................................15 Amiga........................................................................................................................................................................15 Atari ST.....................................................................................................................................................................16 Be-like.......................................................................................................................................................................16 DOS..........................................................................................................................................................................16 IBM...........................................................................................................................................................................16 Digital / Compaq......................................................................................................................................................16 PDAs.........................................................................................................................................................................16 Outros.......................................................................................................................................................................16 2 GERNCIA DE PROCESSOS.................................................................................................................................18 DEFINIO........................................................................................................................................................................18 ESTADOS DE UM PROCESSO...................................................................................................................................................18 CONCEITOS LIGADOS A PROCESSOS.......................................................................................................................................18 System Calls..............................................................................................................................................................18

Mtodos de acesso....................................................................................................................................................19 Hierarquia entre Processos......................................................................................................................................19 Thread's....................................................................................................................................................................19 Comunicao Entre Processos.................................................................................................................................21 PROBLEMAS DE SINCRONIZAO...........................................................................................................................................22 Velocidade de execuo dos processos....................................................................................................................22 Starvation..................................................................................................................................................................23 Sincronizao condicional.......................................................................................................................................23 SOLUES DE HARDWARE...................................................................................................................................................23 Desabilitao de interrupes..................................................................................................................................23 Instruo Test-And-Set.............................................................................................................................................23 SOLUES DE SOFTWARE.....................................................................................................................................................23 Semforos.................................................................................................................................................................23 Monitores..................................................................................................................................................................24 Troca de mensagens.................................................................................................................................................24 DEADLOCK........................................................................................................................................................................25 Preveno do Deadlock............................................................................................................................................25 Deteco do Deadlock..............................................................................................................................................25 Correo do Deadlock..............................................................................................................................................26 3 GERNCIA DE MEMRIA....................................................................................................................................27 INTRODUO......................................................................................................................................................................27 Gerncia Sem Permuta.............................................................................................................................................28Monoprogramao................................................................................................................................................................28 Multiprogramao e Uso da Memria..................................................................................................................................28 Multiprogramao com Parties Fixas................................................................................................................................29

Gerncia com Permuta.............................................................................................................................................29Multiprogramao com Parties Variveis.........................................................................................................................30 Gerncia com Mapa de Bits..................................................................................................................................................31 Gerncia com Listas Encadeadas..........................................................................................................................................31 Alocao de Espao para Permuta........................................................................................................................................32 Troca de Processos (Swapping)............................................................................................................................................32 Paginao.............................................................................................................................................................................33 Segmentao.........................................................................................................................................................................33

MEMRIA VIRTUAL............................................................................................................................................................33 Mapeamento.............................................................................................................................................................35 Paginao.................................................................................................................................................................36 Polticas de Busca de Pginas..................................................................................................................................37 Poltica de Alocao de Pginas..............................................................................................................................37 Working Set...............................................................................................................................................................37 Polticas de Substituio de Pginas........................................................................................................................38First-In-First-Out (FIFO)......................................................................................................................................................38 Buffer de Pginas.................................................................................................................................................................39

Swapping..................................................................................................................................................................39 Thrashing..................................................................................................................................................................39 4 GERNCIA DE ARQUIVOS.....................................................................................................................................40 SISTEMA DE ARQUIVOS ......................................................................................................................................................40 ARQUIVOS ........................................................................................................................................................................40 Tipos de arquivo ......................................................................................................................................................41 Estrutura de arquivos ..............................................................................................................................................41 Mtodos de acesso ...................................................................................................................................................41 DIRETRIOS ......................................................................................................................................................................41 Organizao de diretrios........................................................................................................................................41 PROTEO ........................................................................................................................................................................42 Tipos de acesso ........................................................................................................................................................42 Listas de acesso .......................................................................................................................................................42 ESTRUTURA DO SISTEMA DE ARQUIVOS ..................................................................................................................................43 Organizao ............................................................................................................................................................43 Mtodos de Alocao ...............................................................................................................................................43 Gerncia de espao livre .........................................................................................................................................43 RECUPERAO ..................................................................................................................................................................44 Consistncia .............................................................................................................................................................44 Backup e restaurao ..............................................................................................................................................44 SISTEMAS DE ARQUIVOS FAT E FAT32 ..............................................................................................................................44 Introduo................................................................................................................................................................44

ii

O sistema de arquivos FAT......................................................................................................................................44 Funcionamento do sistema FAT...............................................................................................................................44 Tamanho de cluster..................................................................................................................................................45 Diferenas entre FAT e FAT32................................................................................................................................45 Mais sobre FAT32....................................................................................................................................................46 O que VFAT...........................................................................................................................................................46 SISTEMAS DE ARQUIVOS NTFS............................................................................................................................................46 Introduo................................................................................................................................................................46 Como o NTFS surgiu................................................................................................................................................47 Caractersticas do NTFS..........................................................................................................................................47 Verses do NTFS......................................................................................................................................................48 Funcionamento do NTFS..........................................................................................................................................48 SISTEMAS DE ARQUIVOS NO LINUX.......................................................................................................................................48 Um pouco de histria...............................................................................................................................................49 EXT2.........................................................................................................................................................................49 Journaling.................................................................................................................................................................50 ReiserFS....................................................................................................................................................................50 EXT3 ........................................................................................................................................................................50 5 GERNCIA DE ENTRADA E SADA.....................................................................................................................52 INTRODUO......................................................................................................................................................................52 Princpios do Hardware...........................................................................................................................................52Dispositivos de E/S...............................................................................................................................................................53 Controladores de Dispositivos..............................................................................................................................................53 Acesso Direto Memria (DMA)........................................................................................................................................54

Princpios do Software.............................................................................................................................................55Objetivos do Software de E/S...............................................................................................................................................55 Manipuladores de Interrupes.............................................................................................................................................56 Drivers de Dispositivos........................................................................................................................................................56 Software de E/S Independente do Dispositivo......................................................................................................................57 Software em Nvel do Usurio..............................................................................................................................................58

Definies.................................................................................................................................................................59Buffer...................................................................................................................................................................................59 Cache....................................................................................................................................................................................59 Spool....................................................................................................................................................................................59

6 REFERNCIAS BIBLIOGRFICAS......................................................................................................................60

iii

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

1 Introduo a Sistemas Operacionais

Histrico dos sistemas operacionaisFaremos um breve resumo da histria dos sistemas operacionais com objetivo ilustrativo, apenas para termos uma idia da ordem cronolgica de fatos importantes. A evoluo do software dos computadores, especialmente os sistemas operacionais, est relacionada ao desenvolvimento de equipamentos cada vez mais velozes, menores no tamanho e com custo cada vez menor, e necessidade de aproveitamento e controle desses recursos.

Primeira fase (1945-1955)Computadores baseados em vlvulas (ENIAC, criado para fins militares de clculos balsticos, com 18 mil vlvulas, 30 toneladas, consumo de cerca de 140.000 watts; EDVAC, utilizado por universidades e tambm rgos militares; UNIVAC I, criado para auxiliar no censo americano de 1950, aplicao comercial); Ausncia de sistema operacional: programao feita por painis, atravs de fios, sem uso de linguagens de programao.

-

Segunda fase (1956-1965)Criao do transistor (maior velocidade e confiabilidade no processamento, menor dissipao de energia) e das memrias magnticas (acesso mais rpido aos dados, maior capacidade de armazenamento e diminuio do tamanho dos computadores); Surgimento das primeiras linguagens de programao (Assembly e Fortran) os programas deixam de ser feitos diretamente no hardware; Seqenciamento da execuo dos programas, sem interveno do operador, conhecido como processamento batch (em lote); Importantes avanos com a linha de computadores 7094 da IBM

Terceira fase (1966-1980)Diminuio do tamanho e dos custos de aquisio do hardware com a criao dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores lanamento da srie 360 de computa-dores da IBM e da linha PDP-8 da DEC; Evoluo dos processadores de E/S, possibilitando a utilizao da tcnica de compartilhamento da memria e do processador denominada multiprogramao; Substituio das fitas por discos magnticos, possibilitando a alterao na ordem de submisso dos programas em lote (spooling); Surgimento em 1969 do sistema operacional UNIX.

Quarta fase (1981-1990)Miniaturizao e barateamento dos computadores atravs da integrao cada vez maior dos componentes; Surgimento dos microcomputadores pessoais (PCs) e do sistema operacional DOS (Disk Operating System); Sistemas multiusurio e multitarefa, permitindo a execuo de diversas tarefas de forma concorrente; Equipamentos com mltiplos processadores, processadores vetoriais e diversas tcnicas de paralelismo em diferente nveis (multiprocessamento); As redes de computadores se difundiram por todo mundo software de redes intimamente relacionados ao sistema operacional e surgimento dos sistemas operacionais de rede.

Quinta fase (1991-2005)Grandes avanos de hardware (microeletrnica), software e telecomunicaes processadores e memrias cada vez menores e mais baratos; Processamento distribudo em sistemas operacionais; Novas interfaces homem/mquina linguagens naturais, sons e imagens; Sistemas multimdia, bancos de dados distribudos e inteligncia artificial.

Sexta Fase (2006-????)Crescimento de novas tecnologias Novas arquiteturas paralelas Maior avano em sistemas multimdia, bancos de dados distribudos, inteligncia artificial. Processadores e sistemas operacionais voltados a sistemas embarcados

O que um Sistema OperacionalSistema Operacional um conjunto de ferramentas necessrias para que um computador possa ser utilizado de forma adequada. Consiste na camada intermediria entre o aplicativo e o hardware da mquina. Este conjunto constitudo por um Kernel, ou ncleo, e um conjunto de Software bsicos, que executam operaes simples, mas que juntos fazem uma grande diferena. Se no existissem sistemas desse tipo, todo software desenvolvido deveria saber se comunicar com os dispositivos do computador de que precisasse. Quando temos um Sistema Operacional, ele quem precisa saber lidar com os dispositivos, sabendo falar com a placa de som, a internet, os disquetes... Assim, um software que seja feito para funcionar neste sistema no precisar de informaes especficas do equipamento. Ao invs disso, ele chamar a funo do kernel e o Sistema Operacional que far a comunicao, repassando os resultados. Cada Sistema Operacional pode ter uma linguagem de mquina prpria e distinta. Por isso comum que softwares feitos para um Sistema Operacional no funcionem em outro.Linguagem de mquina: Todo computador possui um conjunto de instrues que seu processador capaz de executar. Essas instrues so representadas por seqncias de bits, normalmente limitadas pelo nmero de bits do registrador principal da CPU.

Outras definies e funes para sistema operacional: Um programa que atua como um intermedirio entre um usurio de um computador e o hardware do computador. 2

Um conjunto de programas indispensveis ao funcionamento do computador e cuja funo servir de interface (ligao, elo) entre o homem e a mquina; fazer a comunicao entre o usurio, o computador e seus perifricos; Um conjunto de rotinas executadas pelo processador, da mesma forma que os nossos programas. Controla o funcionamento do computador, como um gerente dos vrios recursos disponveis no sistema;

Metas de um SO: Executar os programas dos usurios e fazer a soluo de problemas mais fcil. Tornar o sistema de computao mais conveniente ao uso. Utilizar o hardware do computador de um modo eficiente.

FIGURA 1 O que um Sistema Operacional

Desta forma o sistema operacional facilita do acesso aos recursos do sistema, transparente para o usurio, e no caso de muitos usurios, proporciona compartilhamento de recursos de forma organizada e protegida. Algumas atividades que envolvem o sistema operacional: leitura de um disquete (acionar a cabea de leitura e gravao, posicionar trilha e setor, dados do disco para a memria); quando um usurio solicita a execuo de um programa, o sistema operacional deve alocar espao na memria para carregar e acessar o programa.

Quais so as etapas anteriores carga do sistema operacional em um microcomputador? Quando o microcomputador ligado, realiza o POST (Power On Self Test) que consiste em um conjunto de testes para determinar se o hardware est funcionando corretamente (verificao da RAM, vdeo e outros dispositivos; localizao da unidade de disco de inicializao; etc.). Estes testes so realizados a partir do BIOS (Basic Input Output System, podendo variar conforme cada fabricante). Se o BIOS for compatvel com a tecnologia Plug and Play, algumas rotinas adicionais sero realizadas para reconhecimento dos dispositivos. Aps a inicializao dos dispositivos, o computador localiza e l o setor de inicializao, contendo o arquivo carregador, que ser carregado para a memria principal e passar a controlar a carga do sistema operacional (boot).

3

A diviso do hardware de um computadorPara entendermos o funcionamento de um Sistema Operacional, devemos conhecer a diviso bsica de um hardware. Os componentes do hardware de um computador so divididos em trs grupos/subsistemas bsicos: 1. Unidade Central de Processamento (UCP ou processador) o crebro do computador, responsvel pela execuo de todos os programas armazenados na memria principal. A UCP composta de vrias partes: ULA (Unidade Lgica e Aritmtica) que realiza operaes tais como adies e deslocamento, necessrias execuo das instrues; UC (Unidade de Controle) que responsvel pela busca das instrues e determinao de seus tipos; Registradores (PC, IR, MAR, MBR, SP e outros) que consistem em reas de memria para armazenamento de resultados temporrios e informaes de controle. Dois registradores importantes so o Program Counter (PC), que guarda o endereo da prxima instruo a ser executada, e o Instruction Register (IR) que armazena a instruo que est sendo executada; Clock um dispositivo interno ao processador que gera pulsos eltricos sncronos em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a freqncia do clock, medida em Hertz. O sinal de clock utilizado pela unidade de controle para a execuo das instrues. Cada programa formado por uma seqncia de instrues que ser executada pelo processador do computador. O prprio sistema operacional conjunto de programas que devem ser executados pelo processador para controlar o funcionamento do prprio computador. A importncia da execuo desse conjunto de programas, porm, evidente, pois sem isto os outros programas de usurio do computador no seriam executados. 2. Memria Principal (RAM) a parte do computador onde programas (instrues) e dados so armazenados, sendo composta por unidades de acesso chamadas clulas, sendo que: - A clula a menor unidade enderevel. A maioria dos fabricantes de computador padronizam a clula em 8bits de tamanho (byte). Bytes so agrupados em palavras; um computador com palavra de 16bitas tem 2bytes/palavra, enquanto que um computador com palavra de 32bits tem 4bytes/palavra. O significado de uma palavra que a maioria das instrues operam em palavras inteiras, por exemplo, somando duas palavras. Ento uma mquina de 16bits ter registradores de 16bits e instrues que manipulam palavras de 16bits; - Todas as clulas em uma memria possuem o mesmo nmero de bits; - Cada clula da memria possui um endereo nico; a quantidade de bits do endereo, que nada tem haver com a quantidade de bits da clula, est relacionado ao nmero mximo de clulas endereveis. Por exemplo, com 16bits podemos enderear 65536 combinaes diferentes, ou seja, uma memria de 64K de capacidade de armazenamento. Depois do processador, que o componente que executa as instrues dos programas, a memria o componente mais disputado pelos programas, uma vez que os programas devem estar carregados na memria principal para ser enxergado e executado pelo processador. Esta memria classificada como voltil, ou seja, no tem capacidade de preservar o seu contedo sem uma fonte de alimentao. Por esse motivo devemos sempre gravar nossos programas/arquivos quando estes forma alterados e permanecem na memria principal. O tempo de acesso aos dados contidos na memria principal pode ser agilizado quando se coloca no computador uma memria auxiliar, chamada memria cache. A memria cache uma memria voltil de alta velocidade, localizada na placa-me do computador. O tempo de acesso a um dado nela contido muito menor que se estivesse na memria principal. Toda vez que o processador faz 4

referncia a um dado armazenado na memria principal, ele olha antes na memria cache. Se o processador encontrar o dado na cache, no h necessidade do acesso memria principal; do contrrio, o acesso obrigatrio. Neste ltimo caso, o processador, a partir do dado referenciado, transfere um bloco de dados para o cache. O tempo de transferncia entre as memrias pequeno, se comparado com o aumento do desempenho obtido com a utilizao desse tipo de memria. Existe tambm um outro nvel de memria cache que encontrado em alguns processadores da linha PC existentes no mercado, cujo funcionamento semelhante, tendo velo-cidade de acesso ainda superior ao da memria cache da placa-me. 3. Dispositivos de Entrada/Sada So os componentes que permitem a comunicao entre o computador e o mundo externo. Podem ser divididos em duas categorias: - os que servem apenas de interface homem/mquina - atravs deles, o processador e a memria principal podem comunicar-se com os usurios (teclado, monitor, impressoras, scanner, caneta tica, mouse). O desenvolvimento de interfaces cada vez mais amigveis permite que as pessoas sem conhecimento especfico sobre informtica possam fazer uso de computadores; - aqueles destinados ao armazenamento de programas e dados (discos e fitas magnticas), chamados de memrias secundrias. Seu custo relativamente baixo, porm o tempo de acesso maior quanto comparado ao tempo de acesso memria principal ou mesmo memria cache. No podemos esquecer que a UCP, a memria principal e os dispositivos de E/S encontra-se interligados fisicamente atravs de linhas de comunicao denominadas barramento. Um barramento (bus) pode ser visto como um conjunto de fios paralelos, onde trafegam informaes.

Sistemas Operacionais de HojeNo incio da computao os primeiros "sistemas operacionais" eram nicos, pois cada mainframe vendido necessitava de um sistema operacional especfico. Este problema era resultado de arquiteturas diferentes e da linguagem utilizada, no caso assembly (linguagem de baixo nvel). Aps essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de jobs (tarefas), pois os sistemas eram mono-usurio e tinham cartes perfurados como entradas (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartes perfurados). Um dos primeiros sistemas operacionais foi o CTSS, desenvolvido no MIT. Outro que na poca revolucionou o conceito de sistema operacional foi o Multics, desenvolvido nos laboratrios da AT&T. Os sistemas operacionais eram geralmente programados em assembly, at mesmo o UNIX em seu incio. Aps poucas verses, o UNIX comeou a ser desenvolvido atravs de uma nova linguagem (a Linguagem C) e teve em seus princpios muitas inovaes do Multics. O UNIX criou um ecossistema de verses e inovaes, entre estes, destacam-se: System V e derivados - famlia BSD (FreeBSD, NetBSD, OpenBSD, etc..), Linux (e derivados), HP-UX, AIX, e at o Mac OS X (que uma variante dos BSDs). Na dcada de 70, quando comearam a aparecer os computadores pessoais, houve a necessidade de um sistema operacional de utilizao mais fcil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e venderam licenas IBM. O DOS vendeu muitas cpias, como o sistema operacional padro para os computadores pessoais desenvolvidos pela IBM. No comeo da dcada de 1990, um estudante de computao finlands postou um comentrio numa lista de discusso dizendo que estava desenvolvendo um kernel de sistema operacional e perguntou se algum gostaria de auxili-lo na tarefa. Este estudante chamava-se Linus Torvalds e o primeiro passo em direo ao to conhecido Linux foi dado naquele momento. 5

Um mainframe um computador de grande porte, dedicado normalmente ao processamento de um volume grande de informaes. Os mainframes so capazes de oferecer servios de processamento a milhares de usurios atravs de milhares de terminais conectados diretamente ou atravs de uma rede. (O termo mainframe se refere ao gabinete principal que alojava a unidade central de processamento nos primeiros computadores.). O Massachusetts Institute of Technology, mais conhecido pela sua sigla MIT, um centro universitrio de educao e pesquisa localizado em Cambridge, nos EUA. O MIT um dos lderes mundiais em cincia e tecnologia, bem como outros campos, como administrao, economia, lingstica, cincia poltica e filosofia. AT&T (Abreviao em ingls para American Telephone and Telegraph) Corporation uma companhia estadounidense de telecomunicaes. AT&T prov servios de telecomunicao de voz, vdeo, dados e Internet para empresas, particulares e agncia governamentais. Durante sua longa histria, AT&T foi a maior companhia telefnica e o maior operador de televiso por cabo do mundo, constituindo por vezes um monoplio.

CTSSCTSS a sigla para Compatible Time-Sharing System (Sistema compatvel de diviso por tempo) CTSS foi escrito por um time do Centro Computacional do MIT, liderado pelo Prof. Fernando J. Corbat, conhecido por todos como Corby. Muito da pesquisa do CTSS foi patrocinada pela Fundao Nacional de Cincia dos Estados Unidos (US National Science Foundation) A verso do CTSS que foi disponibilizada para usurios foi demonstrada no IBM 7090 no MIT em novembro de 1961. O CTSS foi descrito como um Sistema de compatilhamento no tempo experimental, por Fernando J. Corbat, Marjorie Merwin Daggett e Robert C. Daley na primavera de 1962 durante uma conferncia intitulada Spring Joint Computer Conference. Na poca, o software ainda no estava funcionando bem no IBM 7090. Em 1963, O CTSS j funcionava bem e era suportado pelo hardware RPQs no IBM 7090, e pesquisadores de computadores por todo os Estados Unidos usavam o CTSS para computao interativa.

MulticsO Multics (Multiplexed Information and Computing Service) era um sistema modular montado em uma bancada de processadores, memrias e equipamentos de comunicao de alta velocidade. Pelo desenho, partes do computador poderiam ser desligadas para manuteno sem que outras partes ou usurios fossem afetados. O objetivo era prover servio 24 horas por dia 365 dias por ano - um computador que poderia ser tornado mais rpido adicionando mais partes.

UNIXUNIX um sistema operacional multitarefa e multiusurio originalmente criado por um grupo de programadores da AT&T e dos Bell Labs, que incluem Ken Thompson, Dennis Ritchie e Douglas McIlroy. Em 1969 Thomson escreveu o primeiro sistema UNIX totalmente em assembly e destinado a funcionar em mquinas PDP-7, com objetivo de criar um sistema operacional, de respostas rpidas, com os mesmos conceitos do OS Multics (que ele ajudou a desenvolver), mas que pudesse ser rodado em computadores de pequeno porte como o PDP-7. Mais tarde Ken Thompson e Dennis Ritchie reescreveram ainda em assembly o UNIX para as plataformas PDP-11 e PDP-20. Apenas no incio da dcada de 1970 o UNIX passou a ser desenvolvido usando exclusivamente a nova linguagem C (criada tambm por Ritchie nessa poca) e comeou a tornar forma semelhante que possui atualmente e a tornar-se porttil atravs de vrias plataformas. Finalmente, ao longo dos anos 70 e 80 foram sendo desenvolvidas as primeiras distribuies de grande dimenso como os sistemas BSD (na Universidade de Berkeley na Califrnia) e os System III e System V (nos Bell Labs). 6

Atualmente, UNIX (ou *NIX) o nome dado a uma grande famlia de Sistemas Operacionais que partilham muitos dos conceitos dos Sistemas UNIX originais, sendo todos eles desenvolvidos em torno de standards como o POSIX (Portable Operating System Interface) e outros. Alguns dos Sistemas Operacionais UNIX atuais so: BSD (FreeBSD, OpenBSD e NetBSD), Solaris (anteriormente conhecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas suas milhares de distribuies), e at o Mac OS X (baseado num kernel Mach BSD chamado Darwin).

Classificaes de sistemas operacionaisOs sistemas operacionais podem ser classificados sob trs pontos de vista diferentes: 1) Do ponto de vista do nmero de usurios que utilizam o sistema, podemos ter um sistema operacional: monousurio apenas um e s um usurio trabalha de cada vez. Ex.: DOS, Windows 95/98. multiusurio permite o uso da mquina por vrios usurios ao mesmo tempo, ou seja, cada usurio pode executar um ou mais programas simultaneamente. Ex.: Unix, Linux, Windows XP. 2) Dependendo da forma como os programas so executados, de forma seqencial ou concorrente, os sistemas operacionais podem ser classificados como: monoprogramado ou monotarefa - o sistema operacional s tem capacidade de controlar e gerenciar um programa de cada vez. So de simples implementao, se comparados a outros sistemas, no havendo muita preocupao com problemas de proteo, pois s existe um usurio/programa utilizando-o. Exemplos: o Esto tipicamente relacionados ao surgimento dos mainframes e a introduo dos computadores pessoais e estaes de trabalho o O sistema DOS pode ser considerado um sistema monoprogramado com algumas caractersticas especiais; os programas TSR (Terminate and Stay Resident) tm a capacidade guardar o contexto do que estava sendo executado, desviando o fluxo original de execuo, ou seja, pode haver um nmero arbitrrio de processos na memria, mas somente um deles pode estar ativo; apesar de suportar a existncia simultnea de vrios processos, ele no um sistema multiprogramando. Sistema multiprogramado ou multitarefa - Os recursos da mquina so alocados de modo dinmico entre o nmero de programas ativos de acordo com o nvel de prioridade ou o estgio de execuo de cada um dos programas. O sistema operacional gerencia o acesso concorrente aos seus diversos recursos, de forma ordenada e protegida, pelos diversos programas. Dessa forma possvel aumentar a produtividade e reduzir os custos de utilizao do sistema, aproveitando melhor o hardware. Por exemplo, enquanto um programa espera por uma operao de leitura ou gravao em disco, outros programas podem estar sendo processados no mesmo intervalo de tempo. So mais complexos e eficientes do que os sistemas monoprogramados, j que vrios programas utilizam os mesmos recursos. Resumindo, o Sistema Operacional pode controlar e gerenciar mais de um programa em execuo ao mesmo tempo. Podem ser classificados pela forma com que suas aplicaes so gerenciadas/interao com os usurios, sendo que um sistema operacional pode suportar um ou mais desses tipos de processamento: o BATCH (LOTE) - Os programas quando executados so armazenados em disco ou fita, onde esperam para serem atendidos. Normalmente, os programas (jobs ou tarefas) que so executados nesses sistemas no exigem interao com os usurios (por exemplo, compilaes e linkedies); o TIME-SHARING (TEMPO-COMPARTILHADO) - O sistema operacional aloca uma fatia de tempo (time-slice) do processador para cada usurio. Caso o programa do usurio no esteja concludo nesse intervalo de tempo, ele substitudo por um de 7

outro usurio, e fica esperando por uma nova fatia de tempo. Permitem a interao dos usurios com o sistema; o REAL-TIME (TEMPO-REAL) - Semelhante ao time-sharing, sendo a maior diferena o tempo de resposta exigido na execuo. Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rgidos. No existe a i-dia de fatia de tempo, um programa executa o tempo que for necessrio, ou at que aparea outro prioritrio em funo de sua importncia. Essa importncia ou prioridade de execuo controlada pela prpria aplicao e no pelo sistema operacional, como acontece no sistema de tempocompartilhado. Esse tipo de sistema est normalmente presente em controle de processos, como no monitoramento de refinarias de petrleo, controle de trfego areo, usinas termoeltricas e nucleares, ou em qualquer aplicao onde a segurana fator fundamental. Ex.: Windows 95/98/XP/NT/2003, OS/2, UNIX e LINUX, entre outros. 3) Do ponto de vista do nmero de processadores, podemos ter: Sistema Operacional Monoprocessado O SO controla e gerencia apenas um processador. Ex.: Windows 95/98, DOS, Windows XP Home Edition. Um sistema monoprocessado (diferente de Sistema Operacional Monoprocessado) caracteriza-se por possuir um nico processador, sendo este controlado pelo sistema operacional instalado. Ex.: Microcomputador PC com Windows 98. Sistema Operacional Multiprocessado O SO pode controlar e gerenciar dois ou mais processadores ao mesmo tempo. Ex.: Windows XP Professional, Linux... Um sistema multiprocessado (diferente de Sistema Operacional Multiprocessado) caracteriza-se por possuir mais de um processador, sendo que estes podem compartilhar o mesmo sistema operacional, ou cada um pode possuir o seu prprio sistema. Mltiplos processadores permitem que vrios programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas, para execuo simultnea por mais de um processador. Sistemas com mltiplos processadores possibilitam aumentar a capacidade computacional com menor custo (escalabilidade), alm de permitirem a reconfigurao e o balanceamento do sistema. A reconfigurao a capacidade de um sistema poder continuar o processamento, mesmo se um dos processadores falhar ou parar de funcionar, embora com menor capacidade de computao. O balanceamento possibilita distribuir a carga de processamento entre os diversos sistemas da configurao, melhorando o desempenho como um todo. O multiprocessamento mantm todos os conceitos de multiprogramao, s que aplicados a vrios processadores. Com o multiprocessamento, novos problemas de concorrncia foram surgindo, pois vrios processadores podem estar acessando as mesmas reas de memria, alm da dificuldade de interligao eficiente dos processadores, memria e perifricos. Para o desenvolvimento de sistemas operacionais com mltiplos processadores importante que se conhea a forma de comunicao entre esses processadores e o grau de compartilhamento da memria principal e dos dispositivos de E/S. Em funo desses fatores, podemos classificar os sistemas em: o fortemente acoplados dois ou mais processadores (multiprocessadores) compartilhando uma nica memria e controlados por apenas um nico sistema operacional. Podem ser divididos conforme a simetria existente entre os processadores, ou seja, se todos os processadores podem executar ou no as mesmas funes: nos sistemas assimtricos ou mestre/escravo somente um processador (mestre) pode executar servios do sistema operacional, como realizar operaes de E/S. Sempre que um processador do tipo escravo precisar 8

realizar uma operao de E/S, ter que requisitar o servio ao processador mestre; nos sistemas simtricos (SMP Simmetric MultiProcessing) todos os processadores realizam as mesmas funes, ficando a cargo de um nico processador algumas poucas funes, como, por exemplo, a inicializao (boot). Ex.: microcomputadores PC com vrios processadores que servem de servidores de redes departamentais com sistema operacional Windows NT, que implementa SMP; o fracamente acoplados caracterizam-se por possuir dois ou mais processadores (multicomputadores), conectados atravs de linhas de comunicao, onde cada um desses sistemas funciona de forma independente, possuindo seu(s) prprio(s) processador(es), memria principal e dispositivos de E/S. Em uma rede multicomputadores, onde existem dois um mais sistemas independentes, tambm chamados de ns, hosts ou estaes, podemos classificar os sistemas como sendo: Sistemas operacionais de redes cada n possui seu prprio SO, alm de hardware e software que possibilitam ao sistema ter acesso o outros ns da rede. Cada n totalmente in-dependente um do outro, podendo inclusive possuir sistemas operacionais diferentes. Os sistemas operacionais de redes permitem copia de arquivos, impresso e at gerncia re-motas, alm de servios de correio eletrnico, emulao de terminais. A idia prover o compartilhamento de recursos e troca de informaes. Ex.: Redes locais Sistemas operacionais distribudos cada n tambm possui seu prprio sistema operacional, memria principal, processador e dispositivos de E/S. Porm, existe um relacionamento mais forte entre esses ns, que, geralmente, possuem o mesmo SO. Para o usurio e suas aplicaes, o conjunto de computadores visto como um nico sistema, como se no existisse uma rede de computadores. A grande vantagem a possibilidade do balance-amento de carga, ou seja, quando um programa admitido para execuo, o sistema escolha o n que est com menor carga de processamento e este vai execut-lo. Tambm permitido o compartilhamento de recursos independentemente do computador em que a aplicao estiver sendo executado. Esse tipo de sistema distribudo muitas vezes chamado de cluster. Ex.: Rede de computadores com sistema operacional UNIX SOLARIS da SUN.

9

SISTEMAS OPERACIONAIS MONOPROGRAMADOS / MONOTAREFA MULTIPROGRAMADOS / MULTITAREFATipos de processamento: BATCH

MONOPROCESSADOS

TIMESHARING

REAL-TIME

MULTIPROCESSADOSComunicao entre UCPs e compartilhamento de memria principal e dispositivos de E/S:

FORTEMENTE ACOPLADOSSIMTRICOS

FRACAMENTE ACOPLADOSS.O. DE REDES

ASSIMTRICOS

MONOUSURIOS

SISTEMAS DISTRIBUDOS

MULTIUSURIOS FIGURA 2 Classificao dos Sistemas Operacionais

Arquitetura de Sistemas OperacionaisComponentes do SOGerenciador de processosEm uma definio geral, um processo um programa em execuo (um compilador, um processador de textos, etc). Cada processo precisa de certos recursos para ser executado (CPU, Memria, Arquivos e Dispositivos de E/S). O processo a unidade de trabalho de um sistema de computao e tais sistemas possuem processos do SO e do usurio sendo executados. As funes do SO com relao aos processos so: criar, excluir, suspender e retomar processos; fornecer mecanismos para sincronizao e comunicao entre os processos; tratar deadlocks.

Gerenciador de memriaPara que um programa seja executado, ele precisa ser carregado na memria e ser mapeado com endereos de memria absolutos. Conforme ele executado, far referncia a estes endereos e por fim, quando termina, a memria alocada para ele deve ser liberada. Para fazer uso eficiente do 10

sistema, diversos processos devem ser carregados na memria para execuo. H vrias formas de fazer isso dependendo de diversos fatores (inclusive suporte do hardware). Funes do SO com relao memria: manter uma relao de quais partes da memria esto sendo usadas e por quais processos, decidir quais processos devem ser carregados na memria se houver espao, alocar e desalocar espao, conforme necessrio.

Gerncia de arquivosOs dispositivos de armazenamento possuem uma srie de propriedades particulares (velocidade e mtodo de acesso, taxa de transferncia, etc). A funo da gerncia de arquivos do SO prover um meio lgico e uniforme, para que os processos e usurios possam lidar mais facilmente com tais particularidades. O conceito de arquivo (e o sistema de diretrios) uma forma de mapear as unidades fsicas para conceitos lgicos que tornam seu uso mais fcil. Ainda funo do SO controlar os direitos de acesso a tais arquivos. Funes do sistema de arquivos: criar, excluir e fornecer outros meios de manipular arquivos e diretrios; mapear arquivos nos meios de armazenamento secundrios; permitir um meio de se fazer backup dos arquivos e meios no-volteis.

Sistema de Entrada e Sada funo do SO esconder as peculiaridades dos dispositivos de E/S. O subsistema de E/S consiste em: um componente da gerncia de memria responsvel por buffering, cache e spooling; uma interface geral de drivers; os drivers especficos para cada dispositivo.

Gerncia de Armazenamento SecundrioComo a memria principal voltil (e limitada) preciso uma forma de armazenar permanentemente arquivos de dados e de programas. A gerncia de armazenamento secundrio responsvel por: gerenciar espao livre, alocar espao, escalonar o acesso ao disco.

RedesOs computadores podem ser ligados em redes de diversos nveis de complexidade e funo do mdulo de redes de um SO, permitir que os sistemas se comuniquem e que o processamento seja distribudo adequadamente.

ProteoEm um sistema onde vrios usurios e processos podem trabalhar simultaneamente, deve-se garantir que um no interfira na operao do outro, protegendo-se o espao de memria, evitando que um processo controle a CPU indefinidamente e controlando o acesso aos diversos recursos, permitindo-se que somente os usurios autorizados faam uso dos mesmos.

Interpretador de comandos um dos mdulos mais importantes, chegando a definir a "aparncia" do sistema para o usurio final. O interpretador de comandos (ou shell) pode ser uma parte do prprio ncleo do sistema operacional, ou um processo separado. Sua funo receber comandos do usurio, que definem o que deve ser feito pelo SO para cumprir uma determinada tarefa. A forma como ele funciona, pode variar desde um programa que l uma srie de informaes de controle de jobs a partir da entrada; passando por um complexo sistema onde se digita comandos com parmetros em um prompt; at um sistema completamente grfico, onde se utiliza um dispositivo apontador para tratar dos 11

processos, arquivos e demais recursos, que so todos representados graficamente como "cones" e "janelas".

Servios do SOExecuo de ProgramasCarregar o programa na memria, executar e encerrar sua execuo (possivelmente, podendo indicar algum erro).

Operaes de E/SAcesso a arquivos ou dispositivos de E/S que no podem ser acessados diretamente pelos usurios e processos (por questes de segurana e eficincia).

Manipulao do Sistema de ArquivosCriar, excluir, ler e gravar arquivos.

ComunicaoTroca de mensagem entre processos ou memria compartilhada.

Deteco de ErrosO SO deve detectar e tratar adequadamente os erros de hardware, memria, nos dispositivos, nos programas de usurio, etc.

Alocao de RecursosEm sistemas com mltiplos usurios e processos, preciso controlar quem vai acessar cada recurso e reserv-lo, para que outros processos e usurios no interfiram na sua execuo.

ContabilizaoRegistrar os recursos que so utilizados por usurio importante para contabilizao ou mesmo para fornecer estatsticas a serem usadas para otimizar o sistema.

ProteoEvitar que processos interfiram na execuo um do outro, assim como o acesso no autorizado ao sistema ou recursos do mesmo.

Chamadas de SistemaChamada de Sistema o mecanismo pelo qual os processos de usurio tem acesso aos servios do SO. Em geral so implementadas na forma de instrues em linguagem assembly, mas comumente podem ser acessadas atravs de linguagens de alto nvel (C, C++, Perl, Delphi, etc). A maior parte da complexidade do uso das chamadas de sistema est "escondida" nas rotinas das bibliotecas de sistema, sendo que a maior parte dos usurios e programadores jamais far uso direto delas. 12

Tipos de chamadas de sistema Controle de processos: criar, carregar, executar e terminar; pegar e alterar atributos; sinalizar ou esperar um evento; alocar e liberar memria. Manipulao de arquivos: criar, apagar, abrir, fechar, ler e gravar; pegar e alterar atributos do arquivo. Manipulao de dispositivos: reservar e liberar dispositivos; ler, gravar e reposicionar; conectar ou desconectar logicamente. Manuteno de informaes: ler e alterar informaes como data e hora, dados do sistema, atributos de processos, arquivos e dispositivos. Comunicao: criar e apagar conexes de comunicao; enviar e receber mensagens e informaes de status; conectar ou desconectar dispositivos remotos.

Programas de SistemaUm sistema de computao formado por hardware, sistema operacional, programas de sistema, e aplicativos do usurio. Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execuo de programas. Categorias Gerncia de arquivos: criar, excluir, copiar, renomear, imprimir, listar e manipular arquivos e diretrios. Informaes de status: programas que pedem ao sistema informaes gerais e as exibem, tais como: data, hora, quantidade de memria e espao em disco, usurios, etc. Modificao de arquivo: diversos tipos de editores de texto. Suporte linguagem de programao: compiladores, montadores e interpretadores para linguagens de programao. A maior parte destes programas agora so distribudos separadamente, geralmente de forma paga. Carregamento e execuo de programas: utilitrios de carga, linkeditores, sistemas de depurao (alto nvel e linguagem de mquina). Comunicao: programas para criar conexes remotas com processos em outros computadores. Exemplos: FTP, navegadores Web, correio eletrnico, etc.

Estrutura do sistema operacionalEstrutura simplesSistemas que no possuem uma estrutura bem definida, sendo que os diversos mdulos do kernel esto "misturados" num nico programa. Em sistemas com o MS-DOS, nem mesmo o hardware era separado dos programas de usurio, sendo que os programas poderiam ter acesso direto aos 13

dispositivos do sistema. O Unix original sofria de problemas semelhantes devido falta de suporte de hardware, que foi implementado depois, permitindo um melhor controle do SO sobre a mquina.

Estrutura em camadasUma das formas de modularizar um sistema atravs de camadas, sendo que cada uma construda sobre as outras e possui nveis de acesso diferentes. As camadas inferiores so construdas de forma a prover servios convenientes s camadas acima. As camadas superiores fazem uso das camadas mais baixas, sem nem precisar "saber" como os servios so implementados. Neste tipo de projeto a implementao e depurao do sistema mais simples. No entanto, alguns problemas surgem como performance reduzida e dificuldade ao definir as funes das camadas.

MicrokernelNo modelo de microkernel, todos os servios no-essenciais do sistema operacional so removidos do kernel e passam a ser executados no modo usurio. O microkernel faz ento apenas o controle de processos e memria, sendo que outros servios como sistema de arquivo, entrada e sada, etc, so executados por processos do SO que executam com privilgio de usurio. As vantagens so que o sistema mais fcil de expandir (um novo mdulo pode ser acrescentado sem alterar o kernel), mais robusto (uma falha em algum mdulo no resultar numa pane geral, j que apenas o microkernel roda em modo protegido) e facilidade ao portar para outros sistemas (j que apenas o kernel precisa ser adaptado na maioria dos casos).

Mquina virtualNum modelo de mquina virtual, a abordagem em camadas levada ao extremo. O SO de mquina virtual usa tcnicas de escalonamento de CPU e memria virtual para simular diversas "instncias" de mquinas virtuais. Cada uma delas uma cpia exata do Hardware original, sendo que os programas podem ser executados como se estivessem rodando no prprio hardware. possvel inclusive executar Sistemas Operacionais diferentes e cada uma das mquinas virtuais, sendo que cada uma est totalmente isolada das outras.

Mquina virtual JavaJava uma tecnologia e no apenas uma linguagem de programao. Ela fornece trs itens: a linguagem de programao, a interface de programao de aplicaes (API), a mquina virtual Java. A mquina virtual Java consiste num computador abstrato sobre os quais so executados os programas criados na linguagem Java e compilados em "bytecode" que so os cdigos (instrues) para essa mquina virtual. A mquina virtual ento "interpreta" este cdigo, executando o programa. A vantagem deste modelo que a mquina virtual torna os programas totalmente independentes de hardware, pois uma determinada aplicao, uma vez compilada, pode rodar em qualquer mquina virtual Java, no importa em que arquitetura. Os detalhes dependentes da mquina e do sistema operacional so tratados por cada implementao da mquina virtual Java.

Tipos de Sistemas OperacionaisPOSIX / UNIX-likeo o

AIX BSD

386BSD FreeBSD OpenBSD 14

4.4BSD

o o o o

NetBSD NeXTSTEP BSDI (BSD/OS) Darwino

Caixa Mgica Outras Distribuies HP-UX IRIX OSF/1 OS-9 POSYS QNX Solaris SunOS SCO-UNIX Tropix Tru64 Digital UNIX] Ultrix UniCOS UNIflex Xenix z/OS

System V

Cromix GNU/Hurd Minix GNU/Linux (Linux)

Conectiva (Mandriva) Debian Knoppix Kurumin Kalango Famelix Mandrake (Mandriva) RedHat Fedora Core Slackware SuSE Ubuntu Linux

Microsoft Windowso o

MS-DOS Windows

Windows NT 4 Windows 2000 Windows XP Windows Starter Edition Windows Media Center Windows Pc Table Windows for PDA Windows Server 2003 Windows Vista (Codename Longhorn)

Windows 386 Windows 2.x Windows 3.x Windows 95 Windows 98 Windows ME

o o

Windows CE Windows NT

Windows NT 3.5

Apple / Macintosho o

Apple DOS Mac OS

o o

Mac OS X (Darwin) ProDOS

Amigao o

AmigaOS AROS

o

MorphOS

15

Atari STo o

TOS MultiTOS

o

MiNT

Be-likeo o o

BeOS BeIA BlueEyedOS

o o

OpenBeOS Zeta

DOSo o o o

DR-DOS FreeDOS MS-DOS PC-DOS

o o o o

VirtuOS Sisne SO16 QDOS

IBMo o o o o o o

AIX OS/2 OS/360 OS/390 OS/400 VM/CMS DOS/VSE

o o o o o o

MFT MVT SVS MVS TPF ALCS

Digital / Compaqo o o o

AIS OS-8 RSTS/E RSX

o o o o

RT-11 TOPS-10 TOPS-20 VMS (OpenVMS)

PDAso o o

EPOC Palm OS Pocket PC

o o

SymbianOS Windows CE

Outroso o o o o o o

AtheOS BS2000 CP/M FLEX9 FLEX MP/M-80 Mach

o o o o o o o

MenuetOS Mini-FLEX Multics Native Oberon NetWare Plan 9 PrimOS 16

o o o o o

ReactOS RiscOS SkyOS Syllable QNX

o o o o

SSB-DOS TUNES TripOS UCSD P-system

17

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

2 GERNCIA DE PROCESSOS

Definio o ambiente onde se executa um programa. O processo quem define o ambiente, os recursos, e os Buffers disponveis a este. Nenhum programa executado diretamente na memria e sim dentro de um processo. Se no fosse isto, o programa poderia fazer uso indiscriminado de qualquer rea de memria inclusive reas protegidas ou ento efetuando operaes de I/O indiscriminadamente em qualquer rea aleatria do disco, provocando o maior balaio de gato no computador e comprometendo a integridade e a consistncia dos dados. Da conclui-se que atravs do processo que o sistema operacional controla a execuo, as permisses e as restries que o programa ter quando estiver sendo executado, bem como os recursos que estaro e quando estaro disponveis a ele.

Estados de um processoExecuo (Running): Quando um processo est sendo processado pela CPU. Tais processos se revezam na execuo. Pronto (Ready): Quando um processo aguarda que o sistema operacional aloque a CPU para sua execuo. Espera (Wait): Quando um processo est aguardando algum evento externo para prosseguir com o processamento. Quando um processo passa a maior parte do tempo no estado de execuo, a este chamamos de CPU BOUND. Este tipo de processo muito comum em aplicaes matemticas, cientficas e grficas por efetuarem muitos clculos. Quando o processo passa a maior parte do tempo em estado de espera e realizando muitas operaes de I/O, a este chamamos de I/O BOUND. o processo mais comum em aplicaes comerciais.

Conceitos Ligados a ProcessosSystem Calls um mecanismo que protege o ncleo do sistema operacional intermediando as chamadas dos aplicativos ao ncleo processando as solicitaes e as respostas a estas solicitaes. Suas funes bsicas so: - Gerencia de processos. - Gerncia de memria. - Gerncia de Entrada e Sada.

Mtodos de acesso um mecanismo que monitora as instrues executadas pelos programas de forma que estes no executem instrues que possam comprometer a integridade tanto do sistema como dos dados. As instrues que podem comprometer o sistema so autorizadas apenas ao Sistema operacional e este ir intermediar as chamadas a estas instrues pelos aplicativos.

Hierarquia entre ProcessosUm processo pode criar outros processos e que podem, por sua vez, criarem tambm outros processos de maneira hierrquica. Quando um processo (Processo pai) cria um outro processo, a este chamamos de subprocesso ou processo filho, e este subprocesso poder criar subprocessos que podem criar outros subprocessos etc. gerando uma arvore hierrquica de processos. Este tipo de recurso evita que o usurio tenha que esperar que um processo termine para que sua requisio seja processada melhorando o desempenho do sistema. Se a hierarquia de processos possui este benefcio, ela consome recursos dele, pois para cada processo ser necessria alocao dos referidos recursos de memria, buffers, etc., principalmente nos SO's atuais que so multitarefa e muitas vezes so obrigados a rodarem em mquinas domsticas e de recursos de hardware limitados, de forma que depois de certo numero de subprocessos a situao se torna crtica gerando erros no sistema como podemos ver abaixo:

Quando voc manda executar um programa dentro de outro, na verdade voc est criando um subprocesso que subordinado ao processo principal e assim por diante. Imagine a situao em que o Command.com executado dentro do processo principal e os programas, que sero executados no prompt do DOS, em subprocessos. Neste caso imagine um programa que carregado e neste programa tem uma opo "Ir para o DOS". Quando voc executar esta opo, ser criado mais um subprocesso dentro deste subprocesso que est sendo executado o referido programa. Se, dentro deste ambiente do DOS, voc executar algum outro programa voc nada mais estar fazendo do que criando mais um subprocesso. No confunda hierarquia de processos com multiprocessamento. O ambiente de multiprocessamento aquele ambiente onde vrios processos podem ser executados ao mesmo tempo, o chamado "Multitarefa".

Thread'sPara resolver o problema da hierarquia de processos, foi criado o conceito de "Thread" onde um processo pode efetuar varias operaes concorrentemente ou simultaneamente atravs das chamadas "Linhas de execuo". Neste caso, o processo dividido no numero de Threads sem que haja necessidade de ser criado um outro. Desde que a IBM comeou a promover o seu sistema operacional OS2 2.0 em 1991, ouvimos falar de "threads" e software "Multi-thread". Mas o que este recurso? Threads compartilham o processador da mesma maneira que um processo. Por exemplo, enquanto uma Thread espera por uma operao de I/O, outra Thread pode ser executada. Cada Thread tem

seu prprio conjunto de registradores, mas todas elas compartilham o mesmo espao de endereamento, pois se lembre que o processo um s. As Threads passam pelos mesmos estados de espera que o processo, ou seja, Running, ready, wait. Um programa "Multi-thread" pode estar sendo executado em vrios locais ao mesmo tempo. E qual a vantagem disso? Vamos supor que um programa deseje imprimir um relatrio. Enquanto o programa estiver enviando os dados para a impressora, a execuo dele estar bloqueada. O usurio no poder emitir novos comandos, inserir um novo registro, por exemplo, enquanto a impresso no terminar. Um programa "Multi-thread" pode iniciar uma "Thread" para imprimir enquanto os resto do programa continua funcionando. Mas qual a diferena de "Multi-thread" para Multi Tarefa? A diferena que o Multi Tarefa requer que seja iniciado um outro processo caso se deseje a execuo simultnea. Isto aumenta bastante a complexidade dos aplicativos e traz uma grande perda de performance. Para efetuar troca de informaes entre duas Threads de um mesmo programa, basta utilizar uma varivel comum. Entre programas devem ser utilizados recursos mais sofisticados como arquivos comuns, filas, etc. As vrias threads podem ser codificadas em um mesmo fonte. Mltiplos processos exigem a quebra do projeto em vrios executveis. Iniciar uma Thread uma tarefa barata para o sistema operacional, bem mais simples do que carregar um outro processo. Alm disto, a troca de execuo entre threads de um mesmo programa feita com um mnimo de desperdcio.

Exemplo de uma thread, duas sees de copia de arquivos no Explorer so iniciadas simultaneamente. Isto somente possvel porque cada seo corresponde a uma thread.

Um interessante exemplo de como usar threads so as DLL's, procedimento este conhecido como API. Diversos fornecedores oferecem API's proprietrias que permitem que outros aplicativos sejam ampliados de uma maneira mais eficiente. Utilizando este mtodo, a lgica implementada por meio de um conjunto de funes de aplicativos que so empacotadas como bibliotecas compartilhadas na forma de DLL (Dynamic Linked Library) no ambiente Windows ou um SO (Shared Object) no ambiente UNIX/LINUX e que permitem, s funes do aplicativo, o acesso direto s estruturas de dados do sistema Operacional. Por exemplo, no ambiente Windows, um aplicativo qualquer chama uma DLL atravs de um pedido de um recurso para o qual foi definida uma associao DLL/funo. O sistema operacional aloca este pedido recebido em uma thread, que ficar em uma fila de espera. Quando chegar sua vez, ser criada para ela, uma estrutura de dados sobre o pedido e este ento comear a ser executado. Quando estiver completo, a thread ser retornada ao pool de threads gerenciadas, at que sejam necessrias novamente. Normalmente esta tcnica tem um desempenho de at 5 vezes superior ao de um processo comum. A razo disto muito simples. A chamada a um programa substituda pelo carregamento de um objeto compartilhado (DLL) que normalmente feito somente uma vez. Depois disto, este objeto

permanece dentro do espao de endereo do sistema operacional, e as sobrecargas se restringem s chamadas de funo. estrutura de dados sobre o pedido, fornecida pelo sistema operacional para se comunicar com o objeto compartilhado, recebe o nome de ECB (EXTENSION CONTROL BLOCK) e consiste em um conjunto de variveis, tanto de ambiente como oriundas do pedido e funes de chamada para suporte gerao da resposta. Cada pedido tem seu prprio ECB alocado e estes no se comunicam entre si em hiptese alguma. Em outras palavras, um ECB a forma que o sistema operacional tem de compartilhar entre as threads, o conjunto de variveis ambientes e tambm de disponibilizar dados que somente interessaro ao pedido sem que outro pedido tenha acesso a estes. Outra grande diferena entre as threads e os processos que cada processo tem seu prprio espao de endereamento, enquanto N threads compartilham um espao de endereamento de um nico processo, otimizando o sistema e consumindo menos recursos dele. Mas assim aparece tambm a grande desvantagem deste recurso: por causa desta caracterstica (serem executadas no mesmo espao de endereamento), elas compartilham este espao sem nenhuma proteo ou restrio o que permite que uma Thread possa alterar dados de uma outra ou vice versa. Assim, para que uma aplicao possa funcionar eficientemente com threads, deve existir mecanismos de sincronizao robustos e consistentes que possam ter controle total sobre a fila de threads que acessaro as funes e os recursos globais. Um bug ou um erro lgico de programao pode criar um conflito entre duas ou mais Threads que acabaria destruindo todas as outras e consequentemente derrubar o processo.

Comunicao Entre Processos comum processos trabalharem concorrendo e compartilhando recursos do sistema, como arquivos, registros, dispositivos e reas de memria. Na verdade o importante como estes processos iro usar e o que iro fazer com estes recursos. Um recurso mal usado ou usado indevidamente pode comprometer o sistema ou o prprio processo gerando falhas como podemos ver abaixo:

Um dos exemplos de dois processos concorrentes que trocam informaes atravs de operao de gravao e leitura em um Buffer. Um processo s poder gravar dados no Buffer caso ele no esteja cheio, da mesma forma, um processo s poder ler dados armazenados no Buffer se existir algum dado a ser lido. Para gerenciar este compartilhamento de forma que dois ou mais processos tenham acesso a um mesmo recurso compartilhado, existe um mecanismo que controla este acesso, chamado de MECANISMO DE SINCRONIZAO. Este mecanismo tem o propsito de garantir a confiabilidade e a integridade da gravao dos dados, evitando que os dados armazenados fiquem sem consistncia. Como exemplo dois processos efetuando operaes de gravao, de dados

diferentes, em disco exatamente no mesmo setor ou no mesmo arquivo. Esta situao se torna mais crtica ainda em sistemas operacionais MULTIPROGRAMVEIS.

Excluso Mtua - este conceito se aplica tambm aos subprocessos e as threads.Na abordagem dos problemas de comunicao entre processos, so usados algoritmos nos programas que incorporam o mecanismo de sincronizao e gerenciam este acesso. Um bom exemplo disto quando desenvolvemos programas para trabalharem em rede onde voc precisar fazer o bloqueio de um arquivo para us-lo impedindo assim que outra estao de trabalho manipule aquele mesmo arquivo no momento em que voc estiver usando-o. Para que sejam evitados problemas desta natureza, onde dois processos manipulem o mesmo arquivo ou a mesma varivel de memria simultaneamente, enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessar esse mesmo recurso devero esperar. Isso se chama EXCLUSO MUTUA. A excluso mtua dever agir apenas sobre os processos que esto concorrendo em um determinado recurso. Quando desenvolvemos um programa, que faa tratamento de excluso mutua, este dever ter uma seo chamada REGIO CRTICA. Nesta regio existe uma serie de procedimentos e protocolos que o programa dever fazer para que o sistema operacional libere o recurso para o mesmo. A regio critica deve ser sempre usada quando seu programa for fazer uso de recursos que so passiveis de compartilhamento com algum outro suposto programa na memria. nela tambm que os processos encontram-se em um momento mais critico, pois qualquer erro ocorrido ali dentro pode fazer com que dois ou mais processos colidam gerando falhas e derrubando o sistema. A figura abaixo mostra uma falha ocasionada quando um processo apresentou problemas e acabou interferindo no funcionamento de outro:

Problemas de SincronizaoA tentativa de implementar a excluso mtua nos programas traz alguns problemas com sincronizao. As mais freqentes so:

Velocidade de execuo dos processosUm dos problemas causados pela excluso mutua quando um processo mais rpido obrigado a esperar que um lento use o recurso e o libere. Um gargalo gerado pela consistncia dos processos onde o mais rpido ficar limitado velocidade do mais lento. Conseqncia disto, o sistema todo fica lento comprometendo o seu desempenho.

StarvationQuem determina as prioridades dos processos o sistema operacional. Neste caso existem duas formas do sistema operacional determinar qual ser a vez de quem. Ou por escolha aleatria ou por prioridades. Quando a escolha aleatria, existir a probabilidade de um processo nunca ser escolhido, quando for uma escolha por prioridades, um processo de menor prioridade nunca receber o acesso ao recurso, e ento este processo nunca executar sua rotina.

Sincronizao condicionalQuando um recurso no est pronto para ser utilizado, o processo que vai acessar o recurso ficar em estado de espera at que o mesmo esteja pronto. Existe o risco deste recurso nunca ficar pronto por j estar com problemas. Ento todo o sistema fica esperando o Recurso resolver sua vida. Um exemplo disto o caso do uso de Buffers para leitura e gravao de dados feita pelos processos. Uma possvel falha na memria que impea o acesso aos buffers e todo o sistema est parado...

Solues de HardwareTambm o hardware traz algumas solues que ajudam a diminuir o problema da excluso mtua dos processos:

Desabilitao de interrupesFaz com que o processo, antes de entrar em sua regio crtica desabilite todas as interrupes externas e a reabilite aps deixar a regio critica. Este mecanismo tambm traz seus inconvenientes. Se um processo entrou na regio crtica e desabilitou todas as interrupes ao sair dela ele dever HABILIT-LAS novamente sob risco de todo o sistema estar comprometido.

Instruo Test-And-SetInstruo especial onde um processo apenas l o contedo de uma varivel, e armazena seu valor em outra rea podendo neste caso fazer todas as manipulaes necessrias e devidas sem precisar de prioridades ou esperar que a varivel original seja liberada.

Solues de SoftwareAlm da excluso mtua, que soluciona os problemas de compartilhamento de recursos, existem outros fatores fundamentais para a soluo de problemas de sincronizao: - O nmero de processadores e o tempo de execuo dos processos. - Um processo fora de sua regio crtica no pode impedir que outros processos entrem em suas prprias regies crticas. - Um processo no pode permanecer indefinidamente esperando para entrar em sua regio crtica. Todas as solues que foram apresentadas para contornar estes inconvenientes apresentavam problemas da ESPERA OCUPADA. Na espera ocupada, todas as vezes que um processo tenta entrar em sua regio crtica ele impedido por j existir um outro processo usando o recurso, fazendo o sistema ficar parado esperando que o mesmo tenha acesso a este respectivo recurso.

SemforosO semforo uma varivel que fica associada a um recurso compartilhado, indicando quando este est sendo acessado por um outro processo. Ela ter seu valor alterado quando o processo entra e quando sai da regio crtica de forma que se um outro processo entrar em sua regio critica ele

possa checar antes este valor para saber se o recurso esta ou no disponvel. Quando o processo tiver seu acesso impedido, ele ser colocado em uma fila de espera associada ao semforo aguardando sua vez de utilizar o recurso. Todos os processos da fila tero acesso ao recurso na ordem de chegada. O semforo pode ser usado tambm para implementar sincronizaes condicionais. Isto consiste em um processo que necessita ser notificado sobre a ocorrncia de um evento. Pode-se usar o semforo para notificar este processo sobre a ocorrncia deste evento. Outro tipo de semforo usado SEMFORO CONSUMIDOR onde ele pode informar ao processo se o buffer est cheio ou est vazio. SEMFORO CONTADOR aquele que notifica os processos sobre o uso dos recursos. Sempre que um processo usa um recurso qualquer, este semforo incrementado sempre que um processo liberar um recurso ele ser decrementado. Este semforo til para evitar que um processo na regio crtica sem que hajam recursos disponveis no sistema. O uso de semforos exige do programador muito cuidado, pois qualquer engano pode gerar bugs em seu programa que o levem a falhas de sincronizao ocasionando quedas e travamento geral do sistema.

MonitoresSo mecanismos de sincronizao compostos de um conjunto de procedimentos, variveis e estrutura de dados definidos dentro de um mdulo cuja finalidade a implementao automtica da excluso mtua entre seus procedimentos. Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante. Toda vez que um processo chamar um destes procedimentos, o monitor verifica se j existe outro processo executando algum procedimento do monitor. Caso exista, o processo fica aguardando a sua vez ate que tenha permisso para execut-lo. A implementao da excluso mtua nos monitores realizada pelo compilador do programa e no mais pelo programador. Para isto ele ir colocar todas as regies crticas do programa em forma de procedimentos no monitor e o compilador se encarregar de garantir a excluso mtua destes procedimentos. A comunicao do processo com o monitor passa a ser feita atravs de chamadas a seus procedimentos e dos parmetros passados para eles. Outra caracterstica do monitor que os processos, quando no puderem acessar estes procedimentos, ficaro aguardando em uma fila de espera e enquanto isto, eles podero executar outros procedimentos. Como ele escrito em uma linguagem de programao, o compilador das outras demais linguagens devero ser capazes de reconhec-la e implementa-la. So raras as linguagens que permitem tal implementao criando uma limitao para o uso deste recurso.

Troca de mensagensA troca de mensagens um mecanismo de comunicao e sincronizao entre os processos, implementado pelo sistema operacional atravs de duas rotinas do sistema SEND e RECEIVE. A rotina SEND a responsvel pelo envio de uma mensagem para o processo receptor enquanto a rotina RECEIVE por receber a mensagem do processo transmissor. Tais procedimentos mesmo no sendo mutuamente exclusivos permitem a comunicao entre os processos e a sincronizao entre eles, pois uma mensagem somente poder ser lida depois de ter sido enviada e ela somente ser envidada aps a ocorrncia de um evento. No sistema de troca de mensagens, existe a possibilidade da mensagem se perder. Para isto foi implementado o recurso de que o processo receptor ao receb-la dever enviar ao processo transmissor uma mensagem de recebimento. Caso o transmissor no receber esta mensagem em certo espao de tempo ele ir retransmitir esta mensagem. A comunicao entre processos pode ser feita diretamente. Bastando que o processo que deseja enviar uma mensagem enderece explicitamente o nome do receptor. Esta caracterstica chama-se ENDEREAMENTO DIRETO e s permitida comunicao entre dois processos.

Existe tambm o ENDEREAMENTO INDIRETO que um mecanismo que consiste no uso de uma rea compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e retiradas por qualquer processo. Existem duas formas de comunicao entre os processos: COMUNICAO SINCRONA e COMUNICAO ASSINCRONA. Uma comunicao dita Sncrona, quando um processo envia uma mensagem e fica esperando at que o processo receptor leia a mensagem e mande a notificao de recebimento. Uma comunicao assncrona aquela em que o processo que envia a mensagem no espera notificao de recebimento.

DeadlockO Deadlock existe em qualquer sistema multiprogramvel. Um processo est em Deadlock quando este pra de responder por estar esperando um evento que nunca ocorrer. Esta situao conseqncia do problema da excluso mtua. Existem as condies onde o Deadlock ir ocorrer: - Cada recurso s pode estar alocado a um nico processo em um determinado instante. (Excluso mtua) - Um processo alm dos recursos j alocados, pode estar esperando por outros recursos. - Um recurso no pode ser liberado de um processo porque outros processos desejam o mesmo recurso (No-preempo) - Um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa (Espera circular).

Preveno do DeadlockPara prevenir o Deadlock preciso garantir que uma das quatro condies acima citada nunca ocorra, dentre as diversas situaes j citadas pode ser feito um minucioso trabalho de determinar muito bem que recursos, quais recursos e quando estes recursos devero ser disponibilizados aos processos.

Deteco do DeadlockEm sistemas que no possuam mecanismos que previnam a ocorrncia de deadlocks, necessrio um esquema de deteco e correo do problema. A Deteco do Deadlock um mecanismo que determina a existncia deste e identifica os recursos envolvidos no problema. Um Exemplo deste tipo de detector o prprio Gerenciador de tarefas do Windows que detecta o aplicativo que parou de responder ao sistema causado, possivelmente, por um deadlock, como podemos ver logo abaixo:

Correo do DeadlockGeralmente o problema resolvido eliminando os processos envolvidos e desalojando os recursos para ele j garantidos. aquele processo em que voc d um Alt+Crtl+Del no Windows e aparece uma janela informando o aplicativo que no responde. Este aplicativo pode estar em um processo de Deadlock, neste caso voc manda finalizar o aplicativo e tudo voltar ao normal. Muitas vezes este mecanismo no resolve e pelo contrrio gera novos problemas. Se voc finalizar um processo que esteja intimamente envolvido com o sistema operacional ou que esteja usando recursos de baixo nvel do mesmo, voc poder vir a deix-lo instvel ou travado. Abaixo vemos a caixa de dialogo do Windows que tentar fechar o processo que pode estar parado por falta de comunicao com o sistema.

O problema do Deadlock tende a tornar-se mais crtico medida que os sistemas operacionais evoluem no sentido de implementar o paralelismo e permitir a alocao dinmica d