Você está na página 1de 23

Introduo e histrico

MARK I Computador Eletromecnico -em 1944, surgia na Universidade de Havard em Cambridge, e pela IBM -Possuia 17 metros de comprimento por 2,5 m de altura -Pesava 5 toneladas -Composto por 3000 engrenagens e 1400 comutadores rotativos, interligados por mais de 800km de cabos eltricos -projetado e construdo pelo professor Howard Aiken ENIAC ELETRONIC NUMERIC INTEGRATOR ANALYSER AND COMPUTER -em 1946, na Universidade da Pensilvnia -Primeiro computador digital totalmente eletrnico -Pesava 30 toneladas -Possua aproximadamente 18.000 vlvulas -1500 reles eletromecnicos -consumia 150.000 watts -a luz das vlvulas e o forte calor atraiam insetos(bugs em ingls), que morriam no seu interior, gerando falhas no computador -no tinha SO, ele era semelhante a uma calculadora simples, tinha que ser operado manualmente. -precisava que fosse conectados alguns fios e conjuntos de chaves e reles para funcionar, para cada tipo de calculo era preciso refazer a fiao do computador EVOLUO DOS SISTEMAS OPERACIONAIS 1950 1960 -Entrada-Processamento-Sada, independente de programas longos ou curtos -Vrios programas, utilizavam a CPU em turnos -Um mesmo SO podia ser utilizado em computadores similares

1970 -SO com mltiplos processadores 1980 -SO manipulam o compartilhamento de informaes, entre sistemas de computadores diferentes Inicialmente, existiu somente o hardware do computador. Os primeiros computadores eram mquinas fisicamente muito grandes que funcionavam a partir de um console, que consiste em um perifrico ou terminal que pode ser usado para controlar a mquina por mtodos manuais, corrigir erros, determinar o estado dos circuitos internos e dos registradores e contadores, e examinar o contedo da memria. O console o meio de comunicao entre o homem e a mquina, ou seja, o meio por onde o operador fornece as entradas e por onde recebe as sadas. O console das primeiras mquinas consistia em chaves pelas quais o operador inseria informaes, e por luzes indicativas das sadas, que podiam ser impressas ou perfuradas em uma fita de papel.

Com o passar do tempo, o uso de teclados para entrada de dados se tornou comum, e a sada passou a ser inicialmente impressa em papel. Posteriormente o console assumiu a forma de um terminal com teclado e vdeo. Nesta poca, os programadores que quisessem executar um programa, deveriam carreg-lo para a memria manualmente atravs de chaves no painel de controle, ou atravs de fita de papel ou cartes perfurados. Em seguida, botes especiais eram apertados para iniciar a execuo do programa. Enquanto o programa rodava, o programador/operador podia monitorar a sua execuo pelas luzes do console. Se erros eram descobertos, o programa precisava ser interrompido, e o programador podia examinar os contedos da memria e registradores, depurando-o diretamente do console. A sada era impressa diretamente, ou ainda perfurada em fita ou carto para impresso posterior. As dificuldades nesta poca eram evidentes. O programador era tambm o operador do sistema de computao. Devido escassez de recursos, a maioria dos sistemas usava um esquema de reserva para alocao de tempo da mquina. Se voc quisesse usar o computador, deveria reservar um horrio em uma planilha. Alm disso, este mtodo no era eficiente na utilizao de recursos. Supondo que voc tivesse reservado 1 hora de tempo de computador para executar um programa em desenvolvimento. Se voc tivesse alguns erros desagradveis voc provavelmente no terminaria dentro de 1 hora, e deveria juntar seus resultados e liberar a mquina para a prxima pessoa da fila. Por outro lado, se o seu programa rodasse sem problemas, voc poderia terminar tudo em 35 minutos, e a mquina ficaria ociosa at a prxima reserva de horrio. Como as mquinas nesta poca custavam muito dinheiro, pensou-se em algumas solues para agilizar a tarefa de programao. Leitoras de cartes, impressoras de linha e fitas magnticas tornaram-se equipamentos comuns. Montadores (assemblers), carregadores (loaders) e ligadores (linkers) foram projetados. Bibliotecas de funes comuns foram criadas para serem copiadas dentro de um novo programa sem a necessidade de serem reescritas. Um bom exemplo do uso das bibliotecas de funes sobre as rotinas que executavam operaes de entrada e sada (E/S). Cada novo dispositivo tinha suas prprias caractersticas, necessitando de cuidadosa programao. Uma subrotina especial foi escrita para cada tipo de dispositivo de E/S. Essas subrotinas so chamadas de device drivers (controladores de dispositivos), e sabem como conversar com o dispositivo para o qual foram escritas. Uma tarefa simples como ler um caractere de um disco pode envolver seqncias complexas de operaes especficas do dispositivo. Ao invs de escrever cdigo a cada momento o device driver simplesmente utilizado a partir de uma biblioteca. Mais tarde, compiladores para linguagens de alto nvel, como FORTRAN e COBOL, surgiram, facilitando muito a tarefa de programao, que antes era feita diretamente na linguagem da mquina. Entretanto a operao do computador para executar um programa em uma linguagem de alto nvel era bem mais complexa.

Por exemplo, para executar um programa FORTRAN, o programador deveria primeiramente carregar o compilador FORTRAN para a memria. O compilador normalmente era armazenado em fita magntica, e portanto a fita correta deveria ser carregada para a unidade leitora de fitas magnticas. Uma vez que o compilador estivesse pronto, o programa fonte em FORTRAN era lido atravs de uma leitora de cartes e escrito em outra fita. O compilador FORTRAN produzia sada em linguagem assembly que precisava ser montada (assembled), isto , convertida para cdigo de mquina. A sada do montador era ligada (linked) para suportar rotinas de biblioteca. Finalmente, o cdigo objeto do programa estaria pronto para executar e seria carregado na memria e depurado diretamente no console, como anteriormente. Podemos perceber que poderia existir um tempo significativo apenas para a preparao da execuo de um job (tarefa). Vrios passos deveriam ser seguidos, e em caso de erro em qualquer um deles, o processo deveria ser reiniciado aps a soluo do problema. Surgimento das Primeiras linguagens de programao Graas as pesquisas do matemtico hngaro JOHN VON NEUMANN que desenvolveu o conceito de linguagens de programao, no inicio da dcada de 50. Ele sugeriu que as instrues fossem armazenadas na memria do computador, pois as instrues seriam obtidas eletronicamente. O EDVAC(ELETRONIC DISCRETE VARIABLE AUTOMATIC COMPUTER) lanado em 1947, foi o primeiro equipamento a utilizar o conceito de programa armazenado como nmeros numa memria eletrnica, e neste ano pesquisadores dos laboratrios BELL desenvolveram o transistor, que gera menor consumo de energia, menor gerao de calor, menor espao utilizado Em 1949, o EDSAC mostra o contedo da memria e registros atravs de tubos de raios catdicos. Em 1953, surgia o FORTRAN(FORMULA TRANSLATION) para uso cientifico, desenvolvida por JOHN BACKUS e sua equipe na IBM. Em 1960, a IBM lanava o COBOL(COMMON BUSINESS ORIENTED LANGUAGE), uma das linguagens de programao mais usadas comercialmente na historia.

ENTRADA E SAIDA DE DADOS A IBM (INTERNATIONAL BUSINESS MACHINES) Corporation desenvolveu diversos equipamentos para processar dados armazenados em cartes perfurados, onde diversos modelos de computadores valeram-se de cartes perfurados. Em 1952, a IBM lanava o tape drive com capacidade de armazenar 1,4 megabytes, a fita possua cerca de meia polegada de largura e sete canais de gravao, seis para dados e o stimo servia para checar o que fora gravado nos outros seis. A velocidade de leitura e gravao era de 12500 dgitos por segundo. Em 1956, a IBM lana um dispositivo denominado RAMAC(RANDOM ACCESS METHOD OF ACCOUNTING AND CONTROL), o primeiro disco rgido magntico para armazenar dados.

TIPOS DE SISTEMAS OPERACIONAIS Classificao da capacidade de execuo dos SO Alguns SO permitem que apenas um programa seja executado de cada vez, esta a forma mais simples e fcil de desenvolvimento de um SO, uma vez que no ter que lidar com solicitao diverso e conflitantes, a MONOTAREFA. Quando o SO permite a execuo de mais de um programa ao mesmo tempo, chamado de MULTITAREFA, e que podem apresentar diferentes maneiras de gerenciar o tempo de processamento e os recursos disponveis, sendo classificados em: Existem SO diferentes: 1) Os mais simples, executam um aplicativo de cada vez; 2) O usurio executa vrios aplicativos simultaneamente; 3) Os mais complexos, atendem vrios usurios concomitantemente 4) O SO leva em conta o nmero de aplicativos ou usurios, e processadores: -MONOTAREFA -MULTITAREFA:COOPERATIVA,PREEMPTIVA -MONOUSURIO -MULTIUSURIO -MONOPROCESSAMENTO -MULTIPROCESSAMENTO

1)MONOTAREFA Apenas um programa seja executado de cada vez.Dessa forma, ele no pode alternar entre um programa e outro. -gerencia processamento de Entrada e Sada, enviar dados a um disco, impressora ou outro dispositivo, ler e interpretar as entradas do teclado; -gerenciamento de disco, manter listas de arquivos em disco, e controle de espao disponvel -gerenciamento de memria, manter compilador, editor, programas aplicativos e programas do SO em locais distintos da memria 2)MULTITAREFA Nos anos 60, ocorreu uma evoluo dos computadores, ao mesmo tempo foi reduzido o seu custo de aquisio, operao e manuteno. O programa monitor passou a organizar o processamento simultneo de diversos programas, a idia era que vrios programas fossem carregados na memria, e o programa monitor cuidasse para que o computador fosse alternando na execuo de cada um deles. Isso daria a impresso de que todos estariam sendo executados ao mesmo tempo, isto poderia ser organizado de duas maneiras: 1)forma bsica: dividir o tempo de processamento igualmente entre 2 ou mais programas, mesmo que um utilize mais recursos de E/S, e outro mais CPU 2)forma mais eficiente:um dos programas que requer menos recursos da CPU, opera com perifricos, enquanto outro que requer mais CPU pode ser processado normalmente at o momento que outro precise da CPU Muitos ainda comportam apenas um usurio, que pode, executar varias atividades ao mesmo tempo Como o usurio pode ter varias atividades em curso, as funes do SO so mais complexas, com o gerenciamento de memria, os programas no podem interferir uns nos outros, todos querem usar a CPU, o SO tem que decidir qual deles a usar e por quanto tempo Multitarefa cooperativa - Cada programa ter uma frao de segundos para executar suas tarefas.Depois, a ateno passa a um outro programa que esta sendo executado e assim sucessivamente. Todos eles contam com a mesma quantidade de tempo em que tem dedicao exclusiva do SO e do hardware. Se um programa travar, isso impede que o SO alterne para os outros aplicativos, causando uma falha geral do sistema Multitarefa Preemptiva - Um SO consegue gerenciar com maior eficincia o hardware disponvel. Ao estabelecer prioridades em funo das necessidades de cada programa, os recursos disponveis podem ser otimizados. Quando um programa trava, o SO tem como bloque-lo, evitando que os outros programas sejam afetados.

3)MONOUSURIO Quando ligado em rede, um SO pode fornecer programas para vrios usurios simultaneamente(atuando como servidor).Entretanto, esses programas sero executados nos respectivos equipamentos dos clientes e no na maquina que atuou como servidor 4)MULTIUSURIO Nos anos 70, surgiram computadores que podiam ser compartilhados por diversas pessoas ao mesmo tempo, por meio de terminais burros. Isso permitia que grupos de usurios utilizassem os mesmos recursos(informaes e perifricos) Quando ligado em rede, um SO atende a diversos usurios simultaneamente atuando como servidor.Entretanto, esses programas sero executados no prprio servidor e no na maquina dos usurios. Manter o controle para que todos os usurios no interfiram uns nos outros Os usurios no podem ter acesso a informao de outro usurio O SO deve decidir quem obter o que? E quando? Ele atribui uma prioridade para cada programa, dependendo do tipo de programa. 3.1) Tipos de programas: a)programa interativo:responde rapidamente, para evitar esperas, na digitao de comandos b)programa lote:no esperam respostas imediatas(bath) c)programa em tempo real:exigem repostas rpidas, trafego areo, reator nuclear, controladores de veculos, formula 1 4)MULTIPROCESSAMENTO E a utilizao de vrios processadores em uma nica maquina, para atender 1 ou mais usurios. Por isso so necessrios SO especialmente projetados para control-los O SISTEMA OPERACIONAL Podemos estudar SO de duas maneiras: 1) Focalizar os conceitos e princpios, em geral do uma nfase muito grande; 2) Focaliza um sistema especifico, como UNIX, MS-DOS,MAC OS,OS/2, etc.. Podemos dizer sem receio que um computador sem software no passa de peso para papel. Talvez a prova mais evidente nos dias atuais o sucesso nos sistemas operacionais da Microsoft Corp. O grande motivo deste sucesso, apesar de muitas pessoas de renome afirmarem que os sistemas operacionais da Microsoft no so tecnicamente bons, deve-se enorme quantidade de software disponvel para estes sistemas operacionais. Mas afinal, se importante para as pessoas a existncia de bons softwares que ajudem nos seus trabalhos, como pode o sistema operacional influenciar na qualidade e na disponibilidade de tais softwares?

Para responder esta pergunta, precisamos definir o que um sistema operacional. Ele nada mais do que um programa de computador, que aps o processo de inicializao (boot) da mquina, o primeiro a ser carregado, e que possui duas tarefas bsicas: --gerenciar os recursos de hardware de forma que sejam utilizados da melhor forma possvel, ou seja, tirar o mximo proveito da mquina fazendo com que seus componentes estejam a maior parte do tempo ocupados com tarefas existentes; --e prover funes bsicas para que programas de computador possam ser escritos com maior facilidade, de modo que os programas no precisem conhecer detalhes da mquina para poderem funcionar. justamente neste segundo item que os sistemas operacionais podem ser bem sucedidos ou no, em despertar interesse para que a indstria de software e os programadores independentes construam programas para determinados sistemas operacionais. Isto justifica parte do sucesso do Microsoft Windows, pois, ao mesmo tempo que ele prov uma interface bastante amigvel com o usurio, para o programador, no to difcil criar um programa com janelas, botes, listas, etc, como seria num sistema operacional como o MS-DOS. Alm disso, os sistemas operacionais da Microsoft rodam no hardware mais popular hoje em dia: os computadores baseados em IBM PC. Computadores modernos possuem um ou mais processadores, memria principal, dispositivos de entrada e sada como discos, fitas, teclado, mouse, monitor, interface de rede, entre outros. Escrever programas que utilizem um computador com esta complexidade de forma eficiente muito difcil e trabalhoso. exatamente neste ponto que entram as funes do sistema operacional: abstrair as particularidades do hardware dos programas, fornecendo a eles facilidades para sua operao, tais como: rotinas de acesso a dispositivos diversos; funes de armazenamento de dados como criao de arquivos, leitura e escrita de dados; e rotinas de acesso aos dispositivos de interao com a mquina, como teclado, mouse, monitor, etc. Dada a existncia de softwares como o sistema operacional, os programas normalmente so classificados como software bsico (que inclui o sistema operacional), e softwares de aplicao, que so voltados a resolver problemas dos usurios. Podemos visualizar atravs de um diagrama a integrao entre hardware, software bsico, e softwares aplicativos, como mostra a figura 1.1.

Figura 1.1 Integrao entre hardware, software bsico e software aplicativo

Sistema Bancrio Compiladores

Controle de Estoques Editores

Jogos Interpretador de comandos (shell)

Programas de Aplicao

Sistema Operacional
Linguagem de Mquina Microprogramao Dispositivos Fsicos

Programas de Sistema (software bsico)

Hardware

Olhando para o diagrama, veremos que o que chamamos de hardware na verdade composto de trs camadas. Nem todas as mquinas seguem este esquema, algumas podem ter uma camada a menos, ou mesmo camadas adicionais, mas basicamente, os computadores seguem o esquema ilustrado na figura 1.1. No nvel mais inferior, temos os dispositivos eletrnicos em si, como o processador, os chips de memria, controladores de disco, teclado, e outros dispositivos, barramentos, e qualquer dispositivo adicional necessrio para o funcionamento do computador. Um nvel acima, temos a camada de microprogramao, que de forma geral, so pequenos passos (chamados de microoperaes) que formam uma instruo de processador completa, como ADD, MOV, JMP, etc.

O conjunto de instrues do computador chamado de linguagem de mquina, e apesar de ser uma espcie de linguagem, podemos dizer que faz parte do hardware porque os fabricantes a incluem na especificao do processador, para que os programas possam ser escritos. Afinal, de nada adianta uma mquina maravilhosa, se no existir documentao alguma de como ela funciona. Assim, as instrues que a mquina entende so consideradas parte integrante do hardware. As instrues tambm incluem, geralmente, operaes que permitem ao processador comunicar-se com o mundo externo, como controladores de disco, memria, teclado, etc. Como a complexidade para acesso a dispositivos muito grande, tarefa do Sistema Operacional esconder estes detalhes dos programas. Assim, o sistema operacional pode, por exemplo, oferecer aos programas uma funo do tipo LEIA UM BLOCO DE UM ARQUIVO, e os detalhes de como fazer isso ficam a cargo do sistema operacional. Acima do sistema operacional esto os demais programas utilizados pelo usurio final, mas alguns deles ainda so considerados software bsico, como o sistema operacional. Entre eles podemos citar o shell, que consiste do interpretador de comandos do usurio, ou seja, a interface com o usurio. Nos sistemas operacionais mais recentes, freqentemente o shell uma interface grfica (ou em ingls GUI Graphics User Interface). Raramente, numa interface grfica bem elaborada, o usurio precisa digitar comandos para o computador. A maneira mais comuns de executar programas, copiar e mover arquivos, entre outras atividades mais comuns, atravs do uso do mouse. Nos tempos do MS-DOS, o teclado era o dispositivo de entrada dominante, por onde o usurio entrava todos os comandos para realizar suas tarefas do dia a dia. O que muito importante observar quanto ao software bsico que, apesar de que editores (ex: bloco de notas do Windows), compiladores (ex: compilador C no Unix), e interpretadores de comando (ex: command.com ou explorer.exe no Windows) normalmente serem instalados junto como sistema operacional em um computador, eles no so o sistema operacional. Eles apenas utilizam o sistema operacional. Portanto, o shell que normalmente usamos em um sistema operacional nada mais do que um programa que utiliza servios do sistema operacional, mas com a finalidade de permitir que os usurios realizem suas tarefas mais freqentes: executar programas e trabalhar com arquivos. A grande diferena entre o sistema operacional, e os programas que rodam sobre ele, sejam software bsico ou software aplicativo, que o sistema operacional roda em modo kernel (ou supervisor), enquanto os demais programas rodam em modo usurio. Estes dois modos de operao dos processadores dos computadores diferem no fato de que em modo supervisor, um programa tem acesso a todo o hardware, enquanto que os programas que rodam em modo usurio, tem acesso somente a determinadas regies de memria, no podem acessar dispositivos diretamente, e precisam pedir para o sistema operacional quando necessitam de alguma tarefa especial. Isto garante que os programas dos usurios, no acabem por invadir reas de memria do sistema operacional, e acabem por travar o sistema. Isto tambm possibilita que programas de diferentes usurios estejam rodando na mesma mquina, de forma que um usurio no consiga interferir nos programas de outro.

medida que novos avanos foram sendo obtidos, procurando facilitar a leitura de dados e programas e a impresso de informaes, as linguagens de programao passaram a ter de lidar com essas novas interfaces. Os SO surgiram para organizar e facilitar a interao dos programas com tape drives, leitoras de carto, impressoras e discos rgidos. Para isso, os SO servem como uma camada intermediaria entre programas e a maquina. O SO organiza o acesso bsico dos programas as funes bsicas do computador, por exemplo: -leitura e gravao em disco -transmisso de dados para impressora -interpretao das informaes do teclado ou mouse -Interface entre usurio e hardware Um SO no se resume a um nico programa especialmente carregado na memria e que fica monitorando funes especiais requisitadas por outros programas. Muitos SO so compostos por diversos programas que cuidam de funes especificas, quanto mais funes um SO possui, maior a quantidade de programas, rotinas ou bibliotecas ele ir possuir. EXEMPLO-Um simples comando para o sistema operacional imprimir um arquivo: 1.Determinar se o arquivo existe 2.Determinar se o usurio tem permisso para acessar o arquivo 3.Determinar a estrutura do arquivo 4.Localizar o arquivo no disco 5.Determinar onde ser impresso 6.Enviar o arquivo para o dispositivo de sada

Caractersticas em comum nos Sistemas Operacionais 1)Independente do computador(tamanho, custo, capacidade), todos tem um hardware e todo hardware precisa : executar clculos, tomar decises, armazenar informaes; 2) As instrues para usar um SO, so ilegveis para maioria de usurios; 3) O SO um programa que permite as pessoas usar o hardware. Os usurios no do instrues diretamente ao computador, eles do ao interpretador de comandos(shell command.com ou explorer.exe), que por sua vez do ao SO, que instrui o hardware a executar as tarefas; 4) O SO um programa, e deve ser adquirido separadamente, ele no faz parte do computador.

Funes do Sistema Operacional 1)Permite que os programas armazenem e obtenham informaes; 2)Controlar o fluxo de dados entre os componentes de um computador; 3)Responder aos erros ou a solicitao do usurio; 4)Impe um escalonamento entre programas que solicitam recursos; 5)Programas sejam executados sem interferncia de outros; 6)Programas independentes cooperem e compartilhem informaes. Sistema operacional Funcionamento bsico dos microcomputadores Em situaes normais, sem um SO um usurio no consegue utilizar o computador. Os computadores possuem instrues gravadas na BIOS e que permitem realizar funes bsicas. Em alguns dos primeiros microcomputadores, alm dessas instrues bsicas, eles possuam uma verso da linguagem de programao BASIC, permitindo elaborar pequenos programas. HARDWARE <-> USUARIO Nesse caso, havia um misto de linguagem de programao e comandos bsicos de um SO simplificado para que os usurios pudessem elaborar e executar seus prprios programas sem a necessidade de contar com um SO externo carregado antes Exemplo: K>LOAD PROG K>RUN K>SAVE PROG2 Alguns games, ou sofwares, por exemplo, dispensavam o SO existente e forneciam um cartucho, ou disquete para que fosse dado um boot no micro, o qual passaria a manipular o hardware. HARDWARE <-> SOFTWARE <-> USUARIO Interpretador de Comandos Para facilitar a ao dos usurios de maneira que eles possam verificar os arquivos gravados em uma mdia especifica, determinar a execuo de um programa ou tarefa, dentre diversas possibilidades, necessrio que, alm do SO, exista um programa especfico denominado interpretador de comandos, chamado shell. SHELL um termo oriundo do SO UNIX, em alguns ambientes o shell no pode ser substitudo, mas em outros casos ele pode, como o caso do MSDOS O SHELL permite ao usurio a interface com o SO O SHELL permite ao usurio digitar comandos pelo teclado, e repassa-los ao SO para sua execuo, dentre diversas outras funes de controle e acompanhamento.

Estes comandos pelo teclado torna o uso de computadores algo mais difcil, pois o usurio tem que acostumar(decorar) com inmeros comandos e instrues. Outra possibilidade mais interessante o uso de interfaces grficas, onde possvel clicar em figuras que simbolizam funes, comandos ou programas, com isso no necessrio decorar os inmeros comandos do SHELL. Para que os usurios possam interagir com o SO, necessrio um interpretador de comandos ou uma interface grfica. HARDWARE <-> SO <-> SHELL <-> USUARIO Software interagindo com SO Em vez de utilizarmos um interpretador de comandos, fazemos isso via software, embora de uma maneira mais restrita e para funes mais especificas. Dessa forma, um software constitui uma camada intermediaria entre o SO e o usurio. HARDWARE <-> SO <-> SOFTWARE <-> USURIO Os programas fazem solicitaes bsicas ao SO, que repassa ao hardware, por exemplo, abertura de arquivos, impresso, mensagens no vdeo, etc..... Algumas linguagens de programao permitem o desenvolvimento de softwares que acessam diretamente funes e recursos do hardware. A linguagem C permite o desenvolvimento de programas que acessa diretamente funes do BIOS. (BASIC INPUT OUTPUT SYSTEM - conjunto bsico de rotinas de E/S de dados, disponvel no hardware do micro tipo PC). HARDWARE <-> SO <-> SHELL <-> USUARIO SOFTWARE O SOFTWARE ACESSA FUNES DO HARDWARE

O Monitor Residente
O tempo de preparao de um job era um problema real. Durante o tempo em que fitas eram montadas ou o programador estava operando o console, a UCP (Unidade Central de Processamento) ficava ociosa. Vale lembrar que no passado muitos poucos computadores estavam disponveis e eram muito caros (milhes de dlares). Alm disso, os custos operacionais com energia, refrigerao, programadores, etc., tornava ainda mais cara sua manuteno. Por isso, tempo de processamento tinha muito valor, e os proprietrios dos computadores os queriam ocupados o mximo do tempo possvel. O computador precisava ter um alta utilizao para que o investimento fosse compensado. Uma primeira soluo foi contratar um profissional que operasse o computador. O programador no precisava mais operar a mquina, e assim que um job terminasse, o operador podia iniciar o prximo; no existia a ociosidade de tempo devido reserva de tempo de computador no utilizada. J que o operador tinha mais experincia com a montagem de fitas, o tempo de preparao foi reduzido. O usurio apenas fornecia cartes ou fitas perfuradas contendo o programa, e instrues necessrias para sua execuo. Caso erros ocorressem durante a execuo do programa, o operador emitia uma listagem dos contedos da memria e registradores para que o programador pudesse depurar seu programa. Em seguida o prximo job era posto em execuo, e assim por diante. Alm disso, para reduzir ainda mais o tempo de preparao, jobs com necessidades similares eram agrupados (batched) e executados em grupo pelo computador. Por exemplo, supondo que o operador tivesse recebido um job FORTRAN, um COBOL, e outro FORTRAN. Se ele os executasse nessa ordem, ele teria que preparar o job FORTRAN (carregar fitas de compilador, etc.), ento o COBOL, e novamente o FORTRAN. Se ele executasse os dois jobs FORTRAN como um grupo ele prepararia o ambiente FORTRAN apenas uma vez economizando tempo de preparao. Esta abordagem marcou uma poca, onde o processamento em batch (lotes) definiu uma forma de utilizao do computador: os usurios preparavam seus programas e dados, entregavam-nos ao operador do computador, que os agrupava segundo suas necessidades e os executava, produzindo as sadas para serem devolvidas aos respectivos programadores. Mesmo assim, quando um job parava, o operador teria que notar o fato observando no console, determinar porque o programa parou (trmino normal ou anormal), listar contedos de memria se necessrio e ento carregar a leitora de cartes ou de fita de papel com o prximo job e inicializar o computador novamente. Durante a transio entre os jobs, novamente a UCP ficava ociosa. Para resolver este problema, foi desenvolvido um seqenciador automtico de jobs, que consistia em um primeiro sistema operacional rudimentar. Sua funo era controlar a

transferncia automtica de um job para outro. Este programa foi implementado sob a forma de um monitor residente, sempre presente na memria da mquina para este fim. Assim que o computador era ligado, o monitor residente era chamado, e transferia o controle para um programa. Quando o programa terminava, ele retornava o controle para o monitor residente, que ia para o prximo programa. Assim, o monitor residente fornecia uma seqncia automtica entre programas e jobs. Para que o monitor residente pudesse saber qual programa deveria ser executado e de que forma, cartes de controle foram introduzidos, de maneira muito semelhante s instrues que os operadores recebiam dos programadores para execuo de seus programas. Assim, alm do programas e dos dados para um job, cartes especiais de controle eram introduzidos entre os cartes de programa e dados do job a executar, como por exemplo: $JOB - Primeiro carto, indicando o incio de um job; $FTN - Executar o compilador FORTRAN; $LOAD - Carregar o programa compilado; $RUN - Executar o programa carregado; $END - Fim do job. Os cartes de incio e fim de job eram geralmente utilizados para contabilizar o tempo de uso da mquina, para que seu tempo de processamento pudesse ser cobrado do usurio. Por isso, s vezes incluam parmetros indicando o usurio do job, nome do job, etc. Para distinguir cartes de controle dos demais cartes era necessrio identific-los com um caractere ou um padro especial no carto. Em nosso exemplo, o smbolo do dlar ($) foi utilizado para este fim. A linguagem JCL (Job Control Language) da IBM usava duas barras (//) nas primeiras duas colunas. A figura 1.1 ilustra este cenrio.

$END
dados do programa

$RUN $LOAD
pgm. a ser compilado

$FTN $JOB

Figura 1.1 - Deck de cartes de um job Um monitor residente tem vrias partes identificveis. Uma delas o interpretador de cartes de controle, responsvel pela leitura e extrao das instrues dos cartes no instante da execuo. O interpretador de cartes de controle chama um carregador em intervalos para carregar programas do sistema e programas de aplicao para a memria. Dessa forma, um carregador (loader) uma parte do monitor residente. Ambos o

interpretador de cartes de controle e o carregador precisam executar (E/S), assim o monitor residente tem um grupo de drivers de dispositivo para os dispositivos de do sistema. Freqentemente, os programas de aplicao e do sistema esto ligados ( linked) aos mesmos drivers de dispositivo, fornecendo continuidade na sua operao, bem como armazenando espao de memria e tempo de programao. Um esquema de um monitor residente mostrado na figura 1.2

Monitor Residente

Carregador Seqenciador automtico de jobs Interpretador dos cartes de controle rea do programa do usurio

Figura 1.2 - Modelo de memria de um monitor residente Sistemas batch utilizando este mtodo funcionavam razoavelmente bem. O monitor residente fornece seqenciamento automtico dos jobs conforme a indicao dos cartes de controle. Quando um carto de controle indica a execuo de um programa, o monitor carrega o programa para a memria e transfere o controle para o mesmo. Quando o programa termina, ele retorna o controle para o monitor, que l o prximo carto de controle, carrega o programa apropriado e assim por diante. Este ciclo repetido at que todos os cartes de controle sejam interpretados para o job. Ento o monitor continua automaticamente com o prximo job.

Operao Off-Line
O uso de sistemas batch com seqenciamento automtico de jobs aumentou a performance do sistema. Entretanto, ainda assim a UCP ficava freqentemente ociosa, devido baixssima velocidade dos dispositivos mecnicos em relao aos eletrnicos. Os dispositivos de E/S mais lentos podem significar que a UCP fica freqentemente esperando por E/S. Como um exemplo, um montador ou compilador pode ser capaz de processar 300 ou mais cartes por segundo. Uma leitora de cartes mais rpida, por outro lado, pode ser capaz de ler apenas 1200 cartes por minuto (20 cartes por segundo). Isto significa que montar um programa com 1200 cartes precisa de apenas 4 segundos de UCP, mas 60 segundos para ser lido. Dessa forma, a UCP fica ociosa por 56 dos 60 segundos, ou 93.3% do tempo. A utilizao de UCP resultante de apenas 6.7%. O processo similar para operaes de sada. O problema que, enquanto uma operao de E/S est acontecendo, a UCP est ociosa, esperando que o E/S termine; enquanto a UCP est executando, os dispositivos de E/S esto ociosos.

Uma soluo simples era substituir as lentas leitoras de carto (dispositivos de entrada) e impressoras de linha (dispositivos de sada) por unidades de fita magntica. A maioria dos sistemas no final dos anos 50 e comeo dos anos 60 eram sistemas batch cujos jobs eram lidos de leitoras de carto e escritos em impressoras de linha ou perfuradoras de cartes. Ao invs de a UCP ler diretamente os cartes, os cartes eram primeiro copiados para uma fita magntica. Quando a fita estava suficientemente cheia ela era transportada para o computador. Duas abordagens para esta soluo (operao off-line) foram usadas. Dispositivos especficos (leitoras de carto, impressoras de linha) foram desenvolvidos para provocar sada ou entrada direta de fitas magnticas. A outra abordagem foi dedicar um pequeno computador para a tarefa de copiar de e para a fita. O pequeno computador foi um satlite do computador principal. Processamento satlite foi um dos primeiros casos de mltiplos sistemas de computao trabalhando em conjunto para aumentar a performance. A principal vantagem da operao off-line foi de que o computador principal no estava mais restrito pela velocidade das leitoras de carto e impressoras de linha, e sim pela velocidade das unidades de fita magntica mais rpidas. Essa tcnica de usar fitas magnticas para todo o E/S podia ser aplicada com qualquer unidade de equipamento de registro (leitoras e perfuradoras de carto, leitoras e perfuradoras de fitas de papel, impressoras). Alm disso, nenhuma modificao precisa ser feita para adaptar programas de aplicao da operao direta para off-line. Considere um programa que executa em um sistema com uma leitora de cartes acoplada. Quando ele quer um carto, ele chama o driver de dispositivo da leitora de carto no monitor residente. Se a operao de carto est em modo off-line, apenas o driver de dispositivo deve ser modificado. Quando um programa precisa de um carto de entrada, ele chama a mesma rotina de sistema como antes. Entretanto, agora o cdigo para aquela rotina no o driver da leitora de cartes, mas uma chamada para o driver da fita magntica. O programa de aplicao recebe a mesma imagem do carto em ambos os casos. Essa habilidade de executar um programa com dispositivos de E/S diferentes chamada independncia de dispositivo. Independncia de dispositivo torna-se possvel pela existncia de um sistema operacional que determina qual o dispositivo que um programa realmente usa quando faz o pedido de E/S. Programas so escritos para usar dispositivos de E/S lgicos. Cartes de controle (ou outros comandos) indicam como os dispositivos lgicos deveriam ser mapeados em dispositivos fsicos. O ganho real da operao off-line vem da possibilidade de usar mltiplos sistemas leitora-para-fita e fita-para-impressora para uma mesma UCP. Se a UCP pode processar com o dobro da velocidade da leitora, ento duas leitoras trabalhando simultaneamente podem produzir fita suficiente para manter a UCP ocupada. Por outro lado, agora h um atraso mais longo para conseguir executar um job em particular. Ele deve ser lido antes para a fita. Existe o atraso at que jobs suficientes sejam lidos para a fita para preench-la. A fita deve ser ento rebobinada, descarregada, manualmente carregada para a UCP e

montada em um drive de fita livre. Alm disso, jobs similares podem ser agrupados em uma fita antes de serem levados para o computador, fazendo com que s vezes um job tenha que esperar seu agrupamento com outros jobs similares em uma fita at que possa ser levado para a UCP.

Buferizao
Processamento off-line permite a sobreposio de operaes de UCP e E/S pela execuo dessas duas aes em duas mquinas independentes. Se desejamos atingir tal sobreposio em uma nica mquina, comandos devem ser colocados entre os dispositivos e a UCP para permitir uma separao similar de execuo. Tambm, uma arquitetura adequada deve ser desenvolvida para permitir buferizao. Buferizao o mtodo de sobrepr E/S de um job com sua prpria computao. A idia muito simples. Depois de os dados terem sido lidos e a UCP estar pronta para iniciar a operao nos mesmos, o dispositivo de entrada instrudo para iniciar a prxima entrada imediatamente. Dessa forma, a UCP e o dispositivo de entrada de dados ficam ambos ocupados. Com sorte, no instante em que a UCP est pronta para o prximo item de dado (registro), o dispositivo de entrada ter terminado de l-lo. A UCP pode ento comear o processamento dos novos dados lidos, enquanto o dispositivo de entrada comea a ler os dados seguintes. De forma semelhante isto pode ser feito para a sada. Nesse caso, a UCP cria dados que so colocados em um buffer at que o dispositivo de sada possa receb-lo. Na prtica, raro UCP e dispositivos de E/S estarem ocupados o tempo todo, j que ou a UCP ou o dispositivo de E/S termina primeiro. Se a UCP termina primeiro, ela deve esperar at que o prximo registro seja lido para a memria. importante observar que a UCP no fica o tempo todo ociosa, no mximo o tempo que ficaria se no estivesse sendo utilizada buferizao. Por outro lado, se o dispositivo de entrada de dados termina primeiro, ele pode tanto esperar como continuar com a leitura do prximo registro. Neste caso ele s dever parar quando os buffers estiverem cheios. Para que o dispositivo de entrada continue sempre trabalhando, normalmente os buffers costumam ter tamanho suficiente para mant-lo sempre ocupado. A buferizao geralmente uma funo do sistema operacional. O monitor residente ou os drivers de dispositivo incluem buffers do sistema de E/S para cada dispositivo de E/S. Assim, chamadas ao driver de dispositivo pelos programas de aplicao normalmente causam apenas uma transferncia do buffer para o sistema. Apesar da buferizao ser de alguma ajuda, ela raramente suficiente para manter a UCP sempre ocupada, j que os dispositivos de E/S costumam ser muito lentos em relao UCP.

Spooling
Com o passar do tempo, dispositivos baseados em discos tornaram-se comuns e facilitaram muito a operao off-line dos sistemas. A vantagem que em um disco era possvel escrever e ler a qualquer momento, enquanto que uma fita precisava ser escrita at o fim para ento ser rebobinada e lida. Em um sistema de disco, cartes so diretamente lidos da leitora de cartes para o disco. Quando um job executado, o sistema operacional satisfaz seus pedidos por entrada da leitora de cartes pela leitura do disco. Da mesma forma, quando um job pede a impresso de uma linha para a impressora, esta copiada em um buffer do sistema que escrito para o disco. Quando a impressora fica disponvel, a sada realmente impressa. Esta forma de processamento chamada de spooling (spool = Simultaneous Peripheral Operation On-Line). Spooling utiliza um disco como um buffer muito grande para ler tanto quanto possa dos dispositivos de entrada e para armazenar arquivos de sada at que os dispositivos de sada estejam aptos para receb-los. Esta tcnica tambm muito utilizada para comunicao com dispositivos remotos. A UCP envia os dados atravs dos canais de comunicao para uma impressora remota (ou aceita um job completo de entrada de uma leitora de cartes remota). O processamento remoto feito em sua prpria velocidade sem a interveno da UCP. A UCP apenas precisa ser notificada quando o processamento termina, para que possa passar para o prximo conjunto de dados do spool. A diferena entre buferizao e spooling que enquanto a buferizao sobrepe o processamento de um job com seu prprio E/S, o spooling sobrepe o E/S de um job com o processamento de outros jobs. Assim, a tcnica spooling mais vantajosa do que a buferizao. O nico efeito colateral a necessidade de algum espao em disco para o spool, alm de algumas tabelas em memria. Outra vantagem do spooling vem do fato de que a tcnica fornece uma estrutura de dados muito importante, que a lista de jobs. A performance pode ser aumentada, pois os vrios jobs armazenados no disco podem ser processados em qualquer ordem que o sistema operacional decidir, buscando o aumento de utilizao da UCP (escalonamento de jobs). Quando jobs so lidos diretamente de cartes ou fita magntica, no possvel executar os jobs fora de ordem.

Multiprogramao
O aspecto mais importante do escalonamento de jobs a habilidade de multiprogramao. As tcnicas de operao off-line, buferizao e spooling tm suas limitaes na sobreposio de E/S. Em geral, um nico usurio no pode manter tanto UCP e dispositivos de E/S ocupados o tempo todo. A multiprogramao aumenta a utilizao de UCP, pois organiza os vrios jobs de forma que a UCP sempre tenha algo para processar. A multiprogramao funciona da seguinte maneira: inicialmente o sistema operacional escolhe um dos jobs da lista de jobs e comea a execut-lo. Eventualmente, o job deve esperar por alguma tarefa, como a montagem de uma fita, um comando digitado pelo teclado, ou mesmo o trmino de uma operao de E/S. Em um sistema monoprogramado a UCP permaneceria ociosa. Por outro lado, em um sistema multiprogramado, o sistema operacional simplesmente troca e executa outro job. Quando este novo job precisa esperar, a UCP troca para outro job e assim por diante. Em um dado momento, o primeiro job no precisa mais esperar e ganha a UCP. Assim, sempre que existirem jobs a serem processados, a UCP no ficar ociosa. Sistemas operacionais multiprogramados so bastante sofisticados. Para que vrios jobs estejam prontos para executar, necessrio que todos estejam presentes na memria RAM da mquina simultaneamente. Isto acarreta em um gerenciamento de memria para os vrios jobs. Alm disso, se vrios jobs esto prontos para executar ao mesmo tempo, o sistema deve escolher qual deles deve ser executado primeiro. A poltica de deciso de qual job ser executado chamada de escalonamento de UCP. Por fim, o sistema operacional deve garantir que vrios jobs rodando concorrentemente no afetem uns aos outros em todas as fases do sistema operacional, incluindo escalonamento de processos, armazenamento de disco e gerenciamento de memria.

Tempo Compartilhado
O conceito de sistemas de tempo compartilhado, tambm chamados de multitarefa, uma extenso lgica de multiprogramao. Neste ambiente, mltiplos jobs so executados simultaneamente, sendo que a UCP atende cada job por um pequeno tempo, um a um em seqncia. Os tempos dedicados para cada job so pequenos o suficiente para que os usurios consigam interagir com cada programa sem que percebam que existem outros programas rodando.

Quando muitos programas esto sendo executados, a impresso que o usurio tem de que o computador est lento, pois a UCP tem mais jobs para atender, e portanto aumenta o tempo entre os sucessivos atendimentos para um determinado job. fcil de entender como funcionam sistemas de tempo compartilhado quando comparados com sistemas batch. Neste tipo de sistema operacional, um fluxo de jobs separados lido (de uma leitora de cartes, por exemplo), incluindo seus cartes de controle que predefinem o que faz o job. Quando o job termina, seu resultado normalmente impresso, e o prximo job posto em execuo. A principal caracterstica (e desvantagem) deste sistema a falta de interao entre o usurio e o programa em execuo no job. O usurio precisa entregar ao operador o programa que ele deseja executar, incluindo seus dados de entrada. Algum tempo depois (podendo demorar minutos, horas ou mesmo dias), a sada do job retornada. Este tempo entre a submisso do job e seu trmino, chamado de tempo de turnaround, vai depender da quantidade de processamento necessria, tempo de preparao necessrio, e da quantidade de jobs que estavam na fila antes dele ser submetido ao processamento. Existem algumas dificuldades com o sistema batch do ponto de vista do programador ou do usurio. J que o usurio no pode interagir com o job que est executando, o usurio deve indicar os cartes de controle para manipularem todos os resultados possveis. Em um job de mltiplos passos, passos subseqentes podem depender do resultado dos anteriores. A execuo de um programa, por exemplo, pode depender do sucesso da compilao. Pode ser difcil definir completamente o que fazer em todos os casos. Outra dificuldade em um sistema batch que programas devem ser depurados estaticamente, a partir de uma listagem. Um programador no pode modificar um programa quando ele est sendo executado para estudar o seu comportamento, como hoje possvel na maioria dos ambientes de programao. Um sistema de computao interativo (chamado de hands-on), fornece comunicao on-line entre o usurio e o sistema. O usurio d instrues ao sistema operacional ou para um programa diretamente, e recebe uma resposta imediata. Usualmente, um teclado usado para a entrada de dados e uma impressora ou monitor de vdeo para a sada de dados. Este tipo de terminal s apareceu algum tempo depois, com o barateamento de componentes eletrnicos neles utilizados. Quanto o sistema operacional termina a execuo de um comando, ele passa a aceitar outros comandos do teclado do usurio, e no mais de uma leitora de cartes. Assim o usurio fornece o comando, espera pela resposta e decide o prximo comandos, baseado no resultado do comando anterior. O usurio pode fazer experimentos com facilidade e pode ver resultados imediatamente. Sistemas batch so bastante apropriados para executar jobs grandes que precisam de pouca interao. O usurio pode submeter jobs e retornar mais tarde para buscar os resultados; no necessrio esperar seu processamento. Por outro lado, jobs interativos costumam ser compostos por vrias aes pequenas, onde os resultados de cada ao

podem ser imprevisveis. O usurio submete o comando e espera pelos resultados. O tempo de resposta deve ser pequeno da ordem de segundos no mximo. Um sistema interativo usado quando necessrio um tempo de resposta pequeno. Conforme j vimos, no incio dos tempos da computao, apesar de primitivos, os sistemas eram interativos. Um novo processamento s comeava aps o operador analisar os resultados do job anterior e decidir que ao tomar. Para aumentar o uso de UCP, sistemas batch foram introduzidos, o que realmente fez com que os computadores ficassem menos tempo ociosos. Entretanto, no havia interatividade nenhuma do usurio ou programador com o sistema. Sistemas de tempo compartilhado foram desenvolvidos para fornecer o uso interativo de um sistema de computao a custos razoveis. Um sistema operacional de tempo compartilhado (time-sharing) usa escalonamento de UCP e multiprogramao para fornecer a cada usurio uma pequena poro de tempo de computador. Um sistema operacional de tempo compartilhado permite que muitos usurios compartilhem o computador simultaneamente. J que cada ao ou comando em um sistema de tempo compartilhado tende a ser pequena, apenas uma pequena quantidade de tempo de UCP necessria para cada usurio. Conforme o sistema troca de um usurio para outro, cada usurio tem a impresso de ter seu prprio computador, enquanto na realidade um computador est sendo compartilhado entre muitos usurios. A idia de tempo compartilhado foi demonstrada no incio de 1960, mas j que sistemas de tempo compartilhado so mais difceis e custosos para construir (devido aos numerosos dispositivos de E/S necessrios), eles somente tornaram-se comuns at o incio dos anos 70. Conforme a popularidade destes sistemas cresceu, pesquisadores tentaram combinar os recursos de sistemas batch e de tempo compartilhado em um nico sistema operacional. Muitos sistemas que foram inicialmente projetados como sistemas batch foram modificados para criar um subsistema de tempo compartilhado. Por exemplo, o sistema batch OS/360 da IBM foi modificado para suportar a opo de tempo compartilhado (Time Sharing Option - TSO). Ao mesmo tempo, maioria dos sistemas de tempo compartilhado foi adicionado um subsistema batch. Hoje em dia, a maioria dos sistemas fornecem ambos processamento batch e de tempo compartilhado, embora seu projeto bsico e uso sejam de um ou de outro tipo.

Sistemas operacionais de tempo compartilhado so sofisticados. Eles fornecem um mecanismo para execuo concorrente. Como na multiprogramao, vrios jobs deve ser mantidos simultaneamente na memria, o que requer alguma forma de gerenciamento de memria, proteo e escalonamento de UCP. Como a memria tem tamanho limitado, e em dadas situaes alguns jobs tero que ser retirados da memria e gravados temporariamente em disco, para que outros programas possam ser lidos do disco e postos em execuo na memria. Quando aquele job novamente precisar de continuao em sua execuo, ele ser trazido de volta para a memria. Os primeiros sistemas operacionais para microcomputadores eram muito simples, pois o poder computacional dos primeiros micros era suficiente para atender somente a programas de um nico usurio. Alm do mais, os microcomputadores foram projetados na poca para serem utilizados no mximo por uma pessoa em um determinado momento. Com o passar dos anos, os microcomputadores ganharam poder de processamento equivalente a computadores que ocupavam salas inteiras no passado. Para aproveitar este potencial, os microcomputadores ganharam sistemas operacionais multitarefa, permitindo ao usurio executar mais de uma aplicao por vez, alm de permitir situaes desejveis como imprimir um documento enquanto utilizando o editor de textos. Este processo se chama swapping, e para que isso possa ser feito, o sistema operacional deve fornecer gerenciamento de disco, e um sistema de arquivos on-line, alm de proteo para que jobs no escrevam sobre jobs que foram colocados (swapped) em disco. Hoje, multiprogramao e sistema compartilhado so os temas centrais dos sistemas operacionais modernos. Os sistemas operacionais mais recentes para microcomputadores suportam mltiplos usurios e mltiplos programas rodando concorrentemente em tempo compartilhado. Os sistemas mais conhecidos com essas caractersticas incluem: todas as verses de UNIX para PCs (UnixWare, SCO Unix, Linux, FreeBSD, Xenix, etc); o Microsoft Windows 3.x, Windows NT, e Windows 95; e o IBM OS/2. Apesar de pouco conhecidos, existem ainda alguns sistemas operacionais para PCs que rodam programas feitos para o MS-DOS, mas so multiusurio e multitarefa, como por exemplo o VM/386 e o VirtuOS/386 (produzido por uma empresa brasileira, a Microbase).

Os Conceitos de Interrupo e Trap


Pode-se dizer que interrupes e traps so as foras que movimentam e dirigem os sistemas operacionais, pois um sistema operacional s recebe o controle da execuo quando ocorre alguma interrupo ao trap. Uma interrupo um sinal de hardware que faz com que o processador sinalizado interrompa a execuo do programa que vinha executando (guardando informaes para poder continuar, mais tarde, a execuo desse programa) e passe a executar uma rotina especfica que trata da interrupo. Um trap uma instruo especial que, quando executada pelo processador, origina as mesmas aes ocasionadas por uma interrupo (salvamento de informaes para poder continuar, mais tarde, a execuo do programa e desvio para uma rotina especfica que trata do trap). Pode-se dizer que um trap uma interrupo ocasionada por software.

Interrupes podem ser originadas pelos vrios dispositivos perifricos (terminais, discos, impressoras, etc.), pelo operador (atravs das teclas do console de operao) ou pelo relgio do sistema. O relgio (timer) um dispositivo de hardware que decrementa automaticamente o contedo de um registrador ou posio de memria, com uma freqncia constante, e interrompe a UCP quando o valor decrementado atinge zero. O sistema operacional garante que ocorrer pelo menos uma interrupo (e ele voltar a trabalhar) dentro de um intervalo de tempo t, colocando no relgio um valor que demore t unidades de tempo para ser decrementado at zero. Esta atribuio de valor ao relgio feita imediatamente antes do sistema operacional entregar a UCP para um programa de usurio. Uma interrupo no afeta a instruo que est sendo executada pela UCP no momento em que ela ocorre: a UCP detecta interrupes apenas aps o trmino da execuo de uma instruo (e antes do incio da execuo da instruo seguinte). Os computadores possuem instrues para mascarar (desabilitar, inibir) o sistema de interrupes. Enquanto as interrupes esto mascaradas elas podem ocorrer, mas no so sentidas pelo processador. Neste caso, as interrupes ficam pendentes (enfileiradas) e s sero sentidas quando uma instruo que desmascara as mesmas executada. Conforme j foi dito, os traps so instrues especiais que, quando executadas, originam aes idnticas s que ocorrem por ocasio de uma interrupo. Pode-se dizer que um trap uma interrupo prevista, programada no sistema pelo prprio programador. Uma interrupo, por outro lado, completamente imprevisvel, ocorrendo em pontos que no podem ser pr-determinados. Os traps tm a finalidade de permitir aos programas dos usurios a passagem do controle da execuo para o sistema operacional. Por esse motivo tambm so denominados chamadas do supervisor ou chamadas do sistema ( supervisor call ou system call). Os traps so necessrios principalmente nos computadores que possuem instrues protegidas (privilegiadas). Nesses computadores o registrador (palavra) de estado do processador possui um bit para indicar se a UCP est em estado privilegiado (estado de sistema, estado de supervisor, estado mestre) ou no privilegiado (estado de usurio, estado de programa, estado escravo). Sempre que ocorre uma interrupo ou trap, o novo valor carregado no registrador do estado do processador, indica estado privilegiado de execuo. No estado de supervisor qualquer instruo pode ser executada e no estado de usurio apenas as instrues no protegidas podem ser executadas. Exemplos de instrues protegidas so instrues para desabilitar e habilitar interrupes e instrues para realizar operaes de E/S. Operaes que envolvam o uso de instrues protegidas s podem ser executadas pelo sistema operacional, portanto. Quando um programa de usurio necessita executar alguma dessas operaes, o mesmo deve executar um trap, passando como argumento o nmero que identifica a operao que est sendo requerida.

Você também pode gostar