Você está na página 1de 27

SISTEMA OPERACIONAL MULTIPROGRAMADO ABERTO PARA TREINAMENTO - SOMAT CLAUDIO KIRNER - UNIFEI HLIO CRESTAN GUARDIA - UFSCar

(Documento recuperado e revisado em 2010) RESUMO: Este trabalho apresenta uma ferramenta desenvolvida para apoiar o ensino de sistemas operacionais e para gerar o ambiente propcio para o desenvolvimento de novos sistemas. Esta ferramenta composta pelos seguintes mdulos: hardware simulado com recursos de multiprogramao, sistema operacional multiprogramado, editor de programas do usurio, mdulo de visualizao do funcionamento do hardware e do software com recursos de animao. So discutidos tambm os aspectos relacionados com o desenvolvimento de sistemas operacionais, mostrando o desenvolvimento da ferramenta e a sua utilizao.

1 - Introduo
Um Sistema Operacional um programa que age como uma interface entre um usurio e o hardware de um computador. Sua funo gerar um ambiente no qual usurios possam executar programas, utilizando o computador de maneira eficiente. Para isto, o sistema operacional deve atuar como um gerenciador dos recursos de hardware disponveis, e como um programa de controle, encarregado de administrar a execuo de programas, impedindo erros ou uso imprprio do computador. A existncia de diferentes tipos de sistema computacionais, como microcomputadores, redes de computadores, sistemas com mltiplos processadores, e at mquinas no convencionais, faz com que os sistemas operacionais tambm difiram, variando em estrutura, potncia e complexidade, de acordo com os recursos disponveis que sero gerenciados. Os principais recursos que um sistema operacional gerencia so: processadores, unidades de armazenamento, dispositivos de entrada e sada, e dados. Sem tornar inconsistentes os tempos de execuo dos programas, um sistema operacional procura maximizar a utilizao da UCP, maximizar o nmero de programas executados num perodo de tempo, executar cada programa o mais rapidamente possvel e minimizar o tempo de resposta entre a mquina e seus usurios interativos. As operaes definidas em um sistema operacional incluem: implementao de uma interface com os usurios do sistema computacional, compartilhamento dos recursos disponveis entre os usurios, possibilidade de troca de informaes, facilidades para a realizao de operaes de entrada e sada, e capacidade de regenerao a partir de situaes de erro. Uma das caractersticas mais importantes dos sistemas operacionais o suporte para multiprogramao.

Multiprogramao uma forma de otimizar o uso do computador, atravs da execuo simultnea de programas e de atividades de E/S, fazendo com que a UCP trabalhe a maior parte do tempo executando programas do usurio. Um sistema operacional multiprogramado com tempo compartilhado mantm residentes em memria diversos programas prontos para execuo. Cada programa executado durante um determinado tempo (time slice), ou at que tenha que esperar pelo atendimento de alguma operao do sistema operacional (tipicamente operaes de entrada e sada), passando a UCP execuo de outra tarefa. Aps a realizao dessa tarefa, o sistema, o sistema operacional pode continuar a execuo do programa interrompido, ou escalar um novo programa para execuo. Polticas de escalao de programas e de tarefas do sistema operacional podem ser baseadas em anlises do desempenho dos programas, no tamanho e tempo previsto para suas execues, na ordem de entrada no sistema, em prioridades pr-determinadas, ou em outros mtodos de avaliao que garantam tempos razoveis para suas execues. O armazenamento simultneo de diversos programas, entretanto, exige forma de armazenamento de memria. Tcnicas de compartilhamento permitem que mais programas do que poderiam ser fisicamente armazenados em memria possam estar em execuo ao mesmo tempo. Uma unidade de armazenamento externo (disco, tambor, fita, etc) utilizada pelo sistema operacional como uma memria secundria onde esto armazenadas todos os programas completos. O sistema operacional faz um particionamento da memria principal, dividindo-a em pedaos de tamanho fixo (pginas) ou variados, que so compartilhados no armazenamento dos programas em execuo. Sistemas operacionais que fazem uma diviso dinmica da memria principal transferem um programa inteiro da memria secundria para a principal sempre que este programa for ser executado. O programa alocado em um espao onde ele caiba sobrando o menor ou maior espao possvel, dependendo da poltica implementada. Nos sistemas que utilizam pginao, os pedaos dos programas dos programas so trazidos para a memria principal medida que so necessrios para a continuao das suas execues. A transferncia de um programa (inteiro ou em partes) da memria principal para a secundria feita quando ele no est sendo executado e o espao que est sendo utilizado para seu armazenamento necessrio para a execuo de outro programa. Os critrios utilizados para escolha das pginas de programas que sero substitudas podem ser baseados em filas, onde a ordem de alocao indica a ordem de substituio: em critrios de utilizao, eliminando da memria as pginas que foram utilizadas pela ltima vez h mais tempo (Least Recently Used LRU), ou outros mtodos. Ponteiros so mantidos pelo sistema operacional para a identificao do endereo relativo de cada programa na memria. No caso de sistemas que utilizam pginao, uma Tabela de Pginas armazenada para identificar a presena das pginas dos programas na memria e o endereo de onde elas se encontram. Com a finalidade de no comprometer o tempo da UCP nas operaes de entrada e sada e explorar a possibilidade de paralelismo no funcionamento destes

dispositivos, sistemas operacionais utilizam-se de sistemas de spool e buffers na memria. A existncia de canais de controle independentes nos dispositivos de E/S permite atualizao de buffers na realizao de operaes de entra e sada de dados. Um canal um sistema computacional dedicado, utilizado para o controle das operaes de E/S. O canal de entrada ativado para leitura sempre que houver dados do dispositivo de entrada (terminais, leitora de cartes, fitas, etc). A sua operao iniciada pela UCP, mas no necessita de superviso para ser executada. Enquanto existem buffers disponveis para o preenchimento com os dados de entrada, o canal de entrada pode esperar, avisando a UCP, atravs de uma interrupo, sempre que um buffer for completamente preenchido e necessita de tratamento. Para a realizao de operaes de sada de dados, o sistema operacional insere os dados em buffers e ativa a operao do canal de sada. O canal de sada capaz de imprimir os dados sem o controle da UCP, gerando uma interrupo, assim que a impresso for completada, liberando o buffer para reutilizao. Por serem controladas por canais independentes, as operaes de E/S podem ser realizadas paralelamente s atividades de controle da UCP na execuo de outras tarefas. O sistema de SPOOL (Simultaneous Peripherals Operation On Line) introduz a utilizao do disco na execuo das operaes de E/S armazenando nele os dados que sero lidos pelos programas e os dados que estes iro imprimir. Atravs deste sistema, a UCP, responsvel pelo controle da transferncia dos dados do dispositivo de entrada para a memria e dos dados de sada da memria para o dispositivo de sada, no tem que esperar pelas condies de operao desses dispositivos, quando precisa ler ou imprimir dados. Dados de entrada so lidos do dispositivo de entrada e armazenados no disco, em uma rea cujo endereo mantido pelo sistema operacional, para utilizao pelo programa a que se destina, quando, quando este executar uma operao de leitura de dados. Da mesma forma, os dados da impresso so gravados em disco, e impressos quando o programa terminar sua execuo. Utilizando buffers e o sistema de spooling, o sistema operacional evita que a UCP tenha que aguardar pela operao dos canais de E/S, que operam em velocidades relativamente baixas, comparadas UCP. A existncia de um sistema de interrupes permite ao sistema operacional compartilhar a utilizao da UCP entre os diversos programas residentes e tarefas de controle, alocando-a para a execuo dessas atividades, e retomando o controle quando interrupes forem geradas. As interrupes indicam tambm a situao da operao dos canais de E/S. Para poder alternar a UCP na execuo de diversos programas, o sistema operacional armazena as informaes relevantes sobre um programa interrompido, podendo restaur-las quando for retomar a sua execuo. Um programa representado no sistema operacional atravs de um Bloco de Controle de Programa (BCP), mantido desde a sua entrada no sistema at o final de sua execuo. O BCP uma estrutura de dados que armazena informaes sobre um programa, incluindo o estado atual da sua execuo, uma identificao particular a esse programa, a sua prioridade de execuo, ponteiros para os recursos e reas de

memria e disco que ele est alocando, o endereo da prxima instruo desse programa que ser realizada, informaes sobre seu tempo de execuo, e uma rea onde so salvos os contedos dos registradores. Sistemas de alocao de recursos, tratamento de situaes de deadlock, controle de concorrncia, e sistemas de proteo a recursos e dados nas unidades de armazenamento, so outras caractersticas de sistemas operacionais multiprogramados.

2 - Descrio do Sistema Operacional Simplificado


O Sistema Operacional Simplificado um sistema operacional multiprogramado com execuo de programas de usurio em tempo partilhado que opera atravs de compartilhamento da UCP entre seus diversos processos concorrentes e os programas de usurios provenientes de terminais. O sistema operacional est estruturado de acordo com a figura 1, contendo sete processos concorrentes, que atuam sobre perifricos, buffers, disco, memria, e outros recursos, como blocos de controle de programas, variveis de controle, etc. O conjunto de processos simples formado pelos seguintes processos concorrentes: P1 - Leitura P2 - Spool de entrada P3 - Loader P4 - E/S Usurio P5 - Pginao P6 - Spool de sada P7 - Impresso Os processos 1,2,6 e 7 constituem o Spooling do sistema operacional. A descrio dos processos do Sistema Operacional a seguinte: P1 - Leitura: preenche buffers de entrada com o contedo das pginas de informao (programas e dados) provenientes dos usurios de um terminal. Ser executado sempre que existem dados para serem lidos, a leitora no est sendo ocupada e existem buffers disponveis. P2 - Spool de entrada: responsvel pela interpretao das pginas de informao lidas dos buffers de entrada, e pela colocao dos programas e dados no disco, bem como pela abertura de espao para impresso, tambm no disco. Ser executado quando houver buffers preenchidos com dados para leitura, espao livre em disco, BCPs disponveis e o disco no estiver sendo utilizado. P3 - Loader (carregamento de programas): tem a funo de alocar um nmero mnimo de pginas de memria, e realizar a carga das pginas necessrias do disco, de forma a permitir o incio da execuo do programa. Quando existirem programas residentes em disco que ainda no foram carregados na memria, existir espao em memria e o disco no estiver sendo acessado, este processo poder ser executado.

P4 - Pginao: processo encarregado de buscar uma pgina do disco e de carreg-la na memria, para permitir a continuao da execuo de um programa, sempre que o sistema detectar falta de pgina durante a execuo de um programa. Se no houver mais pginas disponveis, o processo de pginao dever escolher uma pgina para ser retirada, criando espao. O processo de pginao proporciona ao sistema operacional um sistema de memria virtual no armazenamento dos programas em execuo. Est em condio de ser executado sempre que o sistema operacional detectar a ausncia de uma pgina de programa em memria e o disco no estiver sendo utilizado.

Figura 1 Organizao do Sistema Operacional e seus processos concorrentes. P5 - Entrada e Sada de dados de programas de usurios: permite trazer o contedo de pginas de dados do disco para a memria, ou remeter para o disco as pginas de impresso previamente preparadas na memria. Para ser realizado preciso que o disco no esteja sendo utilizado por nenhum outro processo, e haja solicitao de leitura ou escrita por algum programa de usurio. P6 - Spool de Sada : encarregado da sada de um programa do sistema. Carrega o contedo das pginas do disco (programa, dados, resultados) em buffers para impresso. Terminada a execuo de um programa, com sucesso ou no, existindo buffers disponveis e o disco no estando em utilizao, este processo ser executado.

P7- Impresso : sua tarefa comandar a impresso do contedo dos buffers de impresso, sempre que houver buffer preenchido para impresso e o dispositivo de sada no estiver sendo utilizado. Os processos denominados de escalador, espera de interrupo e o tratamento de interrupo so os processos especiais do sistema operacional, que proporcionam o seu funcionamento. - Escalador : responsvel pela verificao de quais eventos esto em condies de serem executados, e pela alocao dos recursos necessrios para que eles ocorra. Quando no existirem mais processos simples em condio de serem executados, o escalador tentar escolher um programa de usurio para execuo. - Espera de interrupo : ativado quando no h processos simples ou programas de usurios em condies de serem executados, o processo de espera representa a situao onde o sistema operacional aguarda somente o trmino da operao de algum canal de E/S que, ao terminar, ir gerar uma interrupo. - Tratamento de interrupo : fornece ao S.O condies de retomar o controle dos recursos do sistema. Possu, por isso a maior prioridade de execuo atribuda pelo sistema operacional. responsvel pela anlise das necessidades dos programas de usurios pelo posicionamento dos BCPs nas filas correspondentes, e pelo controle do status dos canais de E/S e disco, que habilitam ou bloqueiam a execuo dos processos simples. O Sistema Operacional Simplificado corresponde ao seguinte algoritmo :

repeat EXECUTA_PROCESSOS_SIMPLES ; If not VAZIA ( FILA_DE_PROGRAMAS_EXECUTAVEIS ) then begin ESCALA_PROGRAMA_DE_USUARIO; HARDWARE end; if not INTERRUPO then ESPERA_INTERRUPO ; {BUSY WAIT. } TRATA_INTERRUPO until FALSE; { REPEAT FOREVER }

3 - Descritor de Programa : BCP


Os programas so representados no sistema operacional atravs de Blocos de Controle de Programa (BCP), com o formato mostrado na Figura 2.

Identificador de JOB
Endereo da Tabela Pginas ACC CP TIMER TS FP ( nro da pgina em falta ) End do programa no disco Tamanho do programa End rea de dados no disco Apontador corrente dos dados End do final da rea de dados End rea impresso no disco Apontador corrente da impresso End do final da rea de impresso Cdigo de Condio de interrupo { rea de trabalho } Ligao para outro BCP Figura 2 Detalhamento do Bloco de Controle de Programa (BCP) Na rea de dados do S.O, so criadas filas de Blocos de Controle de Programas (BCPs) , que contm os descritores dos programas nos diversos estados da transio durante a execuo no sistema operacional. As filas existentes, conforme a figura 3, so as seguintes : Fila 0 : Fila dos BCPs disponveis Fila 1 : Programa em processo de entrada ( Spool In ) Fila 2 : Programas residentes em disco. Fila 3 : Programas prontos para execuo Fila 4 : Programa sendo executado Fila 5 : Programas suspensos aguardando operaes de E/S Fila 6 : Programas suspensos por falta de pgina Fila 7 : Programas acabados Fila 8 : Programas em estado de sada Outras filas podem ainda ser utilizados para a implementao de sistemas de espera com prioridade, para programas que j entraram no sistema e esto aguardando a operao do Loader, ou filas de programas suspensos por situaes diversas.

Figura 3 Fluxo dos Blocos de Controle de Programa (BCP), mostrando a transio dos programas no sistema operacional.

4 - Transio de Estado dos Programas


Para ser executado, um programa ser lido, armazenado em disco, e carregado na memria do computador. Uma vez residente em memria, passar ento a ser interpretado e executado, at o trmino normal de sua execuo ou at que alguma interrupo fatal ocorra. Terminada sua execuo, com sucesso ou no, o programa passar fase de sada e impresso do seu cdigo e dos resultados das suas operaes.

O diagrama de acesso aos recursos do sistema operacional (Figura 4) mostra os recursos usados pelo sistema operacional e os processos envolvidos com cada um, visando facilitar a compreenso do funcionamento do sistema operacional.

Figura 4 Diagrama de acesso aos recursos do Sistema Operacional. Para um melhor entendimento do funcionamento do sistema operacional, veja as Figuras 1, 2, e 4, durante a explicao dos processos. O processo de Leitura responsvel pela leitura dos dados do dispositivo de entrada e pelo seu armazenamento em buffers. Quando o processo de Spool In encontrar um buffer com informaes que indicam o incio de um novo programa, ele ir alocar um BCP disponvel e coloc-lo na fila 1,conforme a Figura 2. Conseguindo interpretar corretamente os dados do programa contidos nos buffers de leitura e preencher os dados do seu BCP, o Spool In passar ento esse BCP da fila 1 para a Fila 2, dos programas residentes em disco. O processo Loader ser responsvel pela criao da tabela de pginas dos programas na fila 2, pelo carregamento da sua primeira pgina de cdigo na memria, e pela transferncia dos seus BCPs para a fila 3, dos programas prontos para execuo. Quando, no SO, o escalador escolher um programa para ocupar a UCP, ser necessrio carregar os registradores com as informaes referentes ao estado de execuo do programa escalado. Um programa em execuo poder ser interrompido pelos seguintes motivos : - O programa requer a execuo de uma operao de E/S, e gera uma interrupo. Ao tratar a interrupo, o sistema operacional colocar o BCP na fila 5, dos programas aguardando E/S. - O pedao do programa que contm a prxima instruo que dever ser executada no est presente na memria, gerando uma interrupo por falta de pgina. O tratamento de interrupes ir transferir o BCP para a fila 6, dos programas aguardando pginao.

- Uma interrupo na execuo do programa gerada, devido ao tempo de execuo, trmino normal de execuo, ou ocorrncia de situaes que causariam um erro fatal ( proteo de memria, cdigo de operao invlido, ou overflow em operaes matemticas ). O tratamento de interrupo do sistema operacional ser responsvel pela transferncia do BCP do programa para a fila 7, dos programas terminados aguardando sada do sistema. OBS : nas filas 1, 4 e 8 poder haver somente um programa de cada vez, visto que s poder existir um programa m fase de entrada, um programa sendo executado, e um estado de sada sendo atendidos pelo sistema operacional. Nas demais filas possvel a existncia de mais de um BCP`s aguardando tratamento.

5 - Organizao dos Programas no Disco


Funcionando como uma memria secundria de armazenamento externo, o disco utilizado para conter os programas em execuo no sistema operacional. Existem trs reas que um programa precisa alocar no disco: - rea de programa: Para armazenamento do cdigo do programa. - rea de Dados: pginas de dados, lidos do dispositivo de entrada, utilizados pelas operaes de leitura do programa. - rea de impresso: Espao vazio que precisa ser reservado para as operaes de impresso de dados do programa. Para a manipulao dessas reas, necessrio que o sistema operacional mantenha ponteiros que indicam o endereo da pgina corrente de dados, que ser lida por um programa, e o endereo de ode ser impressa a prxima pgina indicas por umas instrues de impresso dos programas de usurios.

6 - Filas de Buffers de E/S


O SO possui 8 buffers, do tamanho das pginas de memria e disco, que so utilizados pelo spooling do sistema operacional na realizao das operaes de E/S. Trs filas de buffers so utilizadas pelo sistema: fila de buffers aguardando spool in, fila de buffers aguardando impresso, e fila de buffer livre. No inicio da operao do sistema operacional todos s buffers esto disponvel, na fila de buffers livre. O processo de leitura aloca buffers livres, para preencher com dados lidos dos dispositivos de entrada, e os insere na fila de buffers aguardando spool in. Buffers na fila para spool in so tratados pelo processo spool in e liberados para reutilizao. O processo spool out responsvel pela sada de um programa do sistema operacional, colocando os dados que sero impressos em buffers disponveis, inseridos na fila de buffers para impresso. A impresso dos buffers comandada pelo processo de impresso, que envia os dados para o dispositivo de sada e devolve os buffers para a fila de buffers livres, para reutilizao.

7 - Problemas de Deadlock na Alocao de Buffers


Uma das possveis situaes de deadlock previstas e que deve ser evitada pelo sistema operacional a alocao de buffers pelos processos de spooling. Em de terminado instante, o disco poder ficar complemente cheio, impedindo a ao do processo de spool in de carregar novos programas dos buffers no disco. Se, neste instante, todos os buffers estiverem sido preenchidos com dados de entrada, ocorrer uma situao de deadlock, pois : - Spool in no pode atuar, e por isso mantm buffers preenchidos bloqueados, pois precisa de espao em disco. - Spool out no opera, mesmo quando programas terminam suas execues, porque precisa preencher buffers com os dados de sada, e estes esto bloqueados pelo spool in. Portanto, no libera espao. Uma soluo para este problema nunca permitir que todos os buffers sejam preenchidos pra o spool in simultaneamente. Desta forma, garante-se que o spool out poder atuar, liberando espao em disco para o spool in.

8 - Paralelismo de Execuo
Processamento paralelo uma forma eficiente de processamento de informao que enfatiza a explorao de eventos concorrentes no processo computacional, onde a ocorrncia desses eventos concorrentes pode dar-se durante o mesmo perodo de tempo, durante o mesmo instante de tempo ou durante espaos de tempos sobrepostos. Em um ambiente com um nico processador, o paralelismo de execuo explora as seguintes caractersticas: - sobreposio de operaes da UCP com operaes de entrada e sada que podem ser controladas por canais de processamento autnomo nos dispositivos perifricos. - uso de multiprogramao e tempo partilhado, com intercalao da UCP na execuo de processos dos subsistemas do ambiente com o objetivo de eliminar gargalos.

9 - Processos Simples
As operaes de E/S do sistema, a pginao dos programas na memria e as instrues de E/S dos programas, so aes que utilizam os canais de E/S no sistema operacional simplificado e podem ocorrer paralelamente execuo de programas pela UCP. Embora possam ser executadas de maneira concorrente, essas operaes necessitam da superviso da UCP para ocorrerem. A UCP encarregada de verificar quando essas aes devem ser executadas, de iniciar suas execues e de tratar os resultados das suas operaes. Com a finalidade de transformar o controle dessas operaes em processos que, assim como os programas de usurios, concorrem pela utilizao da UCP, o sistema operacional simplificado (SOS) implementou os processos simples.

Desta forma, os processos simples so procedimentos que controlam a utilizao dos recursos envolvidos em operaes de E/S e armazenamento de dados e programas. Um processo simples pode estar ativo, concorrendo pela utilizao da UCP, ou inativo. Sua ativao feita sempre que as condies necessrias para que ele concorra so satisfeitas, indicando a necessidade da atuao da UCP no controle de alguma operao de transferncia de dados ou programa. A seguir, so relacionadas as condies necessrias para a realizao dos processos, cuja ilustrao consta na Figura 5.

Figura 5 - Organizao geral dos processos e recursos do sistema operacional. Leitura: - existem dados disponveis na fila de buffers p/ spool in - existe buffer disponvel - o canal de leitura no esteja ocupado. - existe buffer na fila de buffers p/ spool in - existe espao disponivel em disco. - existe BCP disponvel ou em estado de spool in - o canal de controle do disco no est em uso - existe espao na memria ( pelo menos 2 pginas : uma para a tabela de pginas e outra para pgina de cdigo do programa.) - existe BCP na fila dos programas residentes em disco, aguardando carregamento na memria. - o canal de controle do disco no esta em uso.

Spool In:

Loader:

Pginao: - existe BCP na fila de programas aguardando pginao. - o canal de controle do disco no est em uso.

E/S usurio: - existe BCP na fila de programas que j terminaram suas execues - existe buffer disponvel - o canal de controle do disco no est uso. Spool out: - existe BCP na fila de programas que j terminaram suas execues - existe execues - existe buffer disponvel - o canal do isco no esta em uso. - existe buffer na fila de buffers para impresso - o canal de controle do dispositivo de sada no est sendo utilizado

Impresso:

A UCP capaz de identificar quais condies so satisfeitas para a ativao dos processos simples. Quando for executado, um processo simples ir ativar a operao de um canal de controle de perifrico, requerendo leitura ou escrita em um dispositivo. Enquanto espera pelo trmino da operao iniciada, a UCP no tem mais tarefas para realizar nesses processos e pode ento ser alocada para o controle de outras tarefas. Ao completar a leitura ou escrita que estava executando, o canal gera uma interrupo, indicando UCP que os dados j foram lidos e podem ser tratados, ou j foram escritos, e que o dispositivo est pronto para reutilizao. O processo simples que havia sido suspenso volta a ser executado, e faz o tratamento da situao. Para facilitar a verificao de quais condies so satisfeitas para a realizao de cada processo simples, til a implementao de uma tabela que indique a relao entre os recursos e os processos, conforme a Figura 5.

10 Tratamento de Interrupes
Num sistema computacional, uma interrupo um evento que altera a seqncia de execues pro um processador. Uma interrupo gerada pelo hardware do computador e, quando ocorre, causa a execuo dos seguintes passos: - O controle do processador retornado para o sistema operacional. - O sistema operacional salva o estado do processo que estava sendo executado. - A interrupo analisada e o sistema do processo que executar a rotina de tratamento correspondente. No SO simplificado, o tratamento de interrupes funciona, de acordo com o esquema da Figura 6, e pode ser representado pelo seguinte algoritmo:

Ao fazer o tratamento de uma interrupo de perifrico, o SO capaz de identificar qual processo simples havia comandado a sua operao e deve ser reativado. O tratador de interrupo libera o perifrico para reutilizao, mas necessrio que o processo simples que iniciou a sua operao seja reativado para tratar outros recursos envolvidos, como buffers ou BCPs, que devem ser liberados

ou transferidos para outras filas existentes, ou dados que foram lidos e devem ser tratados. Na implementao do SO simplificado, pode ser utilizado um vetor que indique quais processos simples, suspensos enquanto aguardavam pela operao de perifricos, podem ser reativados depois do tratamento de interrupes de perifricos.

Figura 6: Tratamento de interrupes

VETOR DE CONDIO DE PROCESSOS SIMPLES SEGUNDA PARTE

Leit 0/1

Sp In 0/1

Load 0/1

Pag 0/1

E/SUs 0/1

Sp Out 0/1

Impr 0/1

Cada elemento do vetor assinalado pelo tratamento de interrupo e zerado pelo escalador do sistema, aps a escolha do processo simples que ser reativado para o termino de sua execuo.

11 - Hardware
O hardware do computador simplificado (CS) implementado por software atravs de procedimentos e estruturas de dados, simula um computador, contendo os recursos necessrios para sustentar multiprogramao (Figura 7). Seus componentes incluem: - uma unidade central de processamento (CPU) - memria principal de acesso rpido - uma unidade de armazenamento externo (disco) - contador do tempo para execuo de programas (timer) - contador da fatia de tempo da CPU para a execuo de cada programa (time slice) - relgio (clock) - unidade de entrada e sada de dados controladas por canais autnomos - vetor de interrupes Construdo com a finalidade de proporcionar um ambiente que restringisse os detalhes da implementao do SO somente as suas caractersticas funcionais, o hardware simulado abstrai detalhes de baixo nvel na sua construo. Desta forma, a unidade bsica do sistema de armazenamento (palavra), especificada atravs de uma estrutura de dados. Uma palavra do CS um registro contendo trs campos para valores inteiros: Palavra: | C1 | C2 | C3 | Ao armazenar uma palavra de instruo, os campos de uma palavra tero os seguintes significados: C1: cdigo da operao C2: pgina referida pela instruo C3: deslocamento dentro da pgina referida (palavra) Quando representar um dado, somente o primeiro campo da palavra ser relevante, armazenando o valor do dado: C1: valor do dado armazenado C2: valor do dado armazenado (irrelevante) C3: valor do dado armazenado (irrelevante) Para facilidade de desenvolvimento do sistema simulado, foi definida uma memria do usurio, composta por 256 palavras e sujeita a controles e manipulao por parte do sistema operacional. Para a implementao de um sistema de

pginao e memria virtual entretanto, o sistema operacional ira estrutur-la em blocos de 8 palavras, formando 32 pginas.

Figura 7 Diagrama do fluxo de dados no hardware simulado. Desta forma, um endereo qualquer valido XYZ se refere palavra Z, dentro da pgina. endereo absoluto (decimal)
00 C C ... C 00 Pg 0 C C 07 00 32 Pginas

deslocamento dentro de uma pgina

07
08

C C

C C ...

249

C ...

00 Pg 31

255

07

Com a finalidade de permitir que mais programas possam ser posicionados na memria simultaneamente para execuo, o SO implementa no sistema de endereamento relativo, com memria compartilhada atravs de pginao. Esse sistema de pginao faz com que os programas sejam tratados por partes, de modo que seus cdigos no necessitam estar completamente carregados em memria durante as suas execues e nem estejam alocados de maneira seqencial, ocupando espaos contguos na memria. Os programas so divididos em pginas, do mesmo tamanho que as pginas de memria, que so carregadas em espaos disponveis da memria ou sobrepondo outros pedaos de programa, a medida em que so necessrias para a continuidade da execuo dos programas. Para poder identificar a presena das pginas dos programas na memria e a sua eventual localizao, o SO monta ento uma tabela de pginas, para cada programa, instalada em uma pgina comum de memria. C1: indica presena ou ausncia de uma pgina do programa na memria C2: endereo efetivo da pgina na memria (se estiver presente) C3: (no utilizado) Em qualquer condio de interrupo, se houver um programa em execuo, ele interrompido logo aps a realizao da instruo que estava sendo tratada, e o controle desviado para a rotina de tratamento de interrupes do sistema operacional. As informaes referentes situao dos registradores do hardware e do estado de execuo do programa so salvos no seu BCP e podem ser restauradas quando ele voltar a ser executado.

0/1 Pgina de Memria (0..31) 0/1 : 0/1

0..31 0..31 : 0..31

: -

0 : Pgina 0 do programa 1 : Pgina 1 do programa

7 : Pgina 7 do programa

Desta forma, para obter o endereo efetivo de onde se encontra uma palavra de instruo ou de dados, de um programa o sistema operacional segue o seguinte procedimento: Identifica a pgina de memria que contm a Tabela de Pginas do programa. Pesquisa nessa pgina, na palavra correspondente pgina buscada, a presena e o endereo efetivo da pgina. O sistema operacional mantm uma Tabela de Pginas para cada programa em execuo. Por ser instalada em uma pgina comum de memria, entretanto, o tamanho dos programas limitado a, no Maximo, 8 pginas.

A Unidade Central de Processamento do CS foi projetada com o intuito de prover suporte de hardware necessrio execuo de vrios programa com tempo partilhado e pginao na memria do usurio. Os principais registradores da UCP so: ACC (Acumulador): Um registrador, para valores inteiros, para finalidades gerais. ACC CP (Contador de Programa): Um registrador de dois campos para valores inteiros, que fazem referncia pgina e palavra da prxima instruo de programa a ser executada. CP Pag Desl

TP (Tabela de Pginas): Um registrador que contm o endereo da Tabela de Pginas de um programa na memria (0..31) e o tamanho do programa, em pginas (0..7). TP Tam Pag

FP (Falta Pgina): Um registrador para um campo de valor inteiro que armazena o nmero da pgina em falta no programa que estava sendo executado. FP CK (Clock): relgio da UCP (valor inteiro). CK TIMER: Registrador para um campo de valor inteiro que inicializado com o tempo previsto para a execuo de um programa e decrementado medida em que ele executado. TIMER TS (TIME SLICE): Contador da Fatia de Tempo atribuda pelo sistema operacional a um programa, para utilizao da UCP na sua execuo. TS

A unidade central de processamento opera atravs de um conjunto simplificado de instrues de mquina que permite a elaborao de programa de usurio, envolvendo manipulao de posies de memria, operaes aritmticas, controle de desvio e parada de programas, e operaes de E/S. Algumas das instrues permitem o endereamento de pginas de memria. As seguintes operaes so implementadas: HLT: Indica o fim de processamento de um programa. Instruo: 0 -

RD XY 0: L a pgina corrente a rea de dados do programa no disco e carrega o seu contedo na pgina XY do programa. Instruo: 1 XY 0

PRN XY 0: Imprime, na rea de impresso do disco alocada pelo programa, o contedo da pgina XY desse programa. Instruo: 2 XY 0

LD XYZ: Carrega no acumulador (ACC) o contedo da palavra Z da pgina XY do programa sendo executado. No caso do sistema simulado, a operao carrega no acumulador somente o contedo do primeiro campo da palavra de dados. Instruo: 3 XY Z

STR XYZ: Armazena o contedo do acumulador na palavra Z da pgina XY do programa. Atribui o valor do primeiro campo da palavra. Instruo: 4 XY Z

SUB XYZ: Atribui ao acumulador o valor correspondente ao valor que continha subtrado do valor armazenado no primeiro campo da palavra Z da pgina XY do programa do usurio. Instruo: 5 XY Z

ADD XYZ: Idem subtrao, atribuindo ao acumulador o resultado da soma ao invs da subtrao. Instruo: 6 XY Z

JMP XYZ: Atribui um novo valor para o Contador de Programa do programa em execuo, que passa a ser executado a partir dessa posio. CP.PAG = XY CP.DESL = Z Instruo: 7 XY Z

JNG XYZ: O contedo do acumulador checado e, caso contenha um valor negativo, o valor de XYZ atribudo ao CP. Caso o acumulador no seja negativo, o programa continua sua execuo a partir da prxima instruo em relao ao endereo em que se encontra. Se ACC < 0 Ento (CP.PAG = XY CP.DESL = Z) Instruo: 8 XY Z

O CS contm ainda um registrador de interrupes que indicam anomalias ou sinais de alerta gerados pelo hardware em determinadas condies. O registrador de interrupes implementado atravs de um vetor de 12 posies com campos que podem assumir os valores 0 ou 1. O valor 1 em um elemento desse vetor representa a ocorrncia da interrupo a que corresponde. O valor 0 indica a no ocorrncia de uma interrupo. Vetor de Interrupes 0 1 2 3 4 5 6 7 8 9 10 11 12 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 Proteo de Memria Cdigo de operao invlido Overflow Falta de pgina Timer TS Leia Imprima Pare Canal 1 (Leitora) Canal 2 (Impressora) Canal 3 (Disco) Interrupo Externa

Os elementos de 0 a 3 do vetor correspondem a interrupes de programa, que so geradas em decorrncia das usas execues. O valor 1 no elemento 0 do vetor indica que o programa tentou acessar uma posio de memria fora da rea do seu programa, ou tentou ler ou imprimir dados do disco numa rea fora do espao que havia alocado. O elemento 1 do vetor recebe o valor 1 sempre que um programa tentar executar uma operao cujo cdigo no reconhecido pelo sistema operacional. Se, durante a operao de uma instruo aritmtica, houver overflow no valor armazenado no acumulador, o elemento 2 do vetor de interrupes receber o valor 1. Caso, no clculo do endereo efetivo de uma posio de memria referenciada por um programa, sua tabela de pginas indique que a pgina no est presente na memria, uma interrupo por falta de pgina gerada, atribuindo-se o valor 1 ao elemento 3 do vetor. TIMER e TS so interrupes de tempo e so geradas quando esses registradores assumem o valor 0. Leia, Imprima e Pare so interrupes do sistema e indicam a necessidade de realizaes de aes do sistema operacional. As interrupes dos canais de controle dos perifricos indicam ao sistema operacional o estado da Leitora, da Impressora e do Disco, e so atividades sempre que estes dispositivos completam a realizao de uma operao de Entrada/Sada. Interrupes externas, geradas e so identificadas pelo usurio dos sistema, podem ser geradas e so identificadas pelo elemento 12 do vetor de interrupes. Em qualquer condio de interrupo, se houver um programa em execuo, ele interrompido logo aps a realizao da instruo que estava sendo tratada, e o controle desviado para a rotina de tratamento de interrupes do sistema operacional. As informaes referentes situao dos registradores do hardware e do estado de execuo do programa so salvos no seu BCP e podem ser restauradas quando ele voltar a ser executado. As interrupes por proteo de memria, cdigo de operao invlido, overflow e timer so consideradas fatais e sua ocorrncia durante a execuo de um programa causa o trmino forado de sua execuo e a sua sada do sistema.

12 - Hardware Simulado
A simulao do hardware leva em conta o funcionamento da UCP, realizando busca e execuo de instrues, e o funcionamento dos perifricos, executando suas operaes principais, de acordo com diagrama da Figura 8. Durante a simulao, so verificadas as condies de interrupo e atualizado o tempo definido para execuo dos diversos mdulos do sistema. A simulao do hardware ocorre de acordo com o algoritmo colocado a seguir:

repeat BUSCA_INSTRUO; {FETCH} If not INTERRUPO then begin EXECUTA_INSTRUO; SIMULA_PERIFRICOS end; until INTERRUPO;

Figura 8 - Organizao do Hardware Registradores e Vetor de Interrupes

13 - Simulao dos Perifricos


O Computador Simplificado suporta um dispositivo de entrada de programas dos usurios, uma impressora e um disco ou tambor, cada um ligado ao seu respectivo canal de controle. Um registrador de comando, contendo trs campos, representa o estado de operao dos canais e E/S.

RC :

Leit

Impr

Disc

0 1 2

0/1 0/1 1..5

Leitora Impressora Disco

- 0 : leitora disponvel; 1: em operao - 0: Impressora disponvel; 1: em operao - 0: Disco disponvel 1: Disco sendo utilizado para Spool In 2: Disco sendo utilizado para Spool Out 3: Disco sendo utilizado pelo Loader 4: Disco sendo utilizado pela Pginao 5: Disco sendo utilizado para E/S

A simulao dos perifricos ocorre de maneira bastante simplificada, uma vez que so considerados somente a execuo das operaes e o tempo estabelecido para isto. Ao iniciar sua operao ( ativao do perifrico ) , a varivel associada ao perifrico atualizada com o valor do tempo padro gasto na operao do dispositivo e, aps o decorrer desse tempo, que pode ser uti1izado para execuo de atividades da UCP e operaes de outros canais, uma interrupo gerada, indicando que a operao foi desempenhada. Um registrador de trs campos para va1ores inteiros, associados aos canais de E/S utilizado para simular o tempo de operao dos perifricos. T: Leit Impr Disc

Especificaes dos perifricos:

Perifrico Leitora Impressora Disco

Canal 1 2 3

Registro 1 pgina 1 pgina 1 pgina

Tamanho 256 pg

Vel (tempo Operao 10 unidades 10 unidades 3 unidades

14 - Organizao dos Programas de Usurio CS /SOS


Para efeito de se verificar a organizao de um programa de usurio importante que se observe algumas caractersticas bsicas do sistema de armazenamento do sistema operacional. - Uma palavra formada por trs campos para va1ores inteiros e pode armazenar uma instruo ou um dado; - Uma pgina composta de 8 palavras; - o espao de memria destinado aos programas de usurios contm 32 pginas; - para cada programa mantida uma tabela de pginas, que ocupa uma pgina comum de memria

- as instrues em geral referem-se a palavras, exceto as instrues LEIA e IMPRIMA que fazem referncia a pginas do programa; - qualquer endereo referenciado por uma instruo ou pelo contador de programa ( CP ) sempre relativo a uma pgina dentro do programa do usurio e no a uma posio efetiva na memria . Para encontrar o endereo efetivo a que se refere a instruo ou o CP, o sistema operacional deve consultar a tabela de pginas desse programa. - as palavras da Tabela de Pginas representam exatamente a organizao em pginas do programa do usurio, ou seja, a palavra O da tabela a corresponde pgina O do programa, a pa1avra 1 corresponde pgina 1 e assim por diante. Cada palavra da tabela contm informaes sobre a presena ou no da pgina correspondente na memria e, caso esteja presente, o endereo de onde ela se encontra. Desta maneira, poder-se-ia pensar que o tamanho mximo do programa de usurio capaz de ser submetido ao sistema seria de 64 instrues ( 8 pginas ) . Ocorre porm que, para a realizao de entrada e sada atravs das instrues LEIA PAG e IMPRIMA PAG, o programa deve prever pginas para leitura e para impresso de dados, reduzindo portanto o tamanho mximo do programa; Assim, se for suficiente para o usurio trabalhar com uma pgina de dados e uma pgina de impresso, executando instrues que manipulem as palavras dessas pginas, o programa ficar limitado a 6 pginas ( 48 instrues ). Podero aparecer casos onde uma nica pgina satisfaz as necessidades de E./S, sendo que a montagem da pgina de impresso feita sobre a pgina de dados, que no tem mais utilizao, ou casos onde so necessrias mais de uma pgina para leitura ou para impresso, quando os dados manipulados so em nmero maior. que a capacidade de armazenamento de uma pgina, ou quando a gerao de dados para impresso ocorre em posies seqenciais, exigindo uma rea maior que uma pgina . Deve-se considerar que o programa dever prover uma rea de traba1ho onde e1e possa armazenar os valores intermedirios gerados e utilizados pelo programa. Desta forma: Tam mx do programa = 64 - n de palavras da rea de trabalho - ( 8 * n pg simultneas de leitura) - ( 8 * n pg simultneas de impresso) Essas limitaes no tamanho do programa do usurio se devem simplicidade do tratamento da Tabela de Pginas. O espao para a rea de trabalho pode ser reservado atravs da incorporao de pginas em branco no fim do programa, ou atravs da alocao de pginas de rascunho utilizando-se comandos da Linguagem de Controle de Programas do sistema operacional.

15 - Linguagem de Controle de Programa


O sistema operacional trabalha sob o comando de linhas de controle preparadas pelos usurios, que podem configurar o sistema e pedir a execuo de programas, passando automaticamente de programa para programa com um mnimo de tempo e interveno de operadores. Atravs da Linguagem de Controle de Programas, o sistema operacional controla e direciona as operaes de E/S dos programas controla o armazenamento e a alocao de espaos em disco, determina as prioridades de execuo dos programas e dispe sobre a configurao do sistema . A Linguagem de Controle de Programas do Sistema Operacional Simplificado possui a seguinte sintaxe para as. linhas de controle: *Job { Incio de um novo programa } Identificao do programa Tempo previsto para execuo Nmero de pginas de rascunho Nmero de pginas de impresso *Prog {Incio das linhas de cdigo } Linhas de programa {Instrues } *Dado {Incio das linhas de dados} Linhas de dados {Dados} *FIM A interpretao das 1inhas de controle executada pelo processo de Spool de Entrada do sistema operacional e opera segundo o autmato de transio de estados ilustrados na Figura 9.

Figura 9: SPOOL de Entrada Autmato de interpretao das linhas de controle.

16 - Execuo do SOMAT
Para executar o SOMAT, o usurio deve baixar o arquivo somat.zip em: http://www.ckirner.com/apoio/so/somat.zip e descompact-lo. Em seguida, baixe o programa DOSBOX para o seu sistema operacional e faa sua instalao. Veja as instrues para execuo do somat.exe no DOSBOX. No caso do Windows, pegue o arquivo somat.exe e o arraste at o cone do DOSBOX, que ele ser ativado. No caso do Linux, clique com o boto direito do mouse sobre o somat.exe e nas opes escolha <abrir com outras aplicaes> e <usar comandos personalizados DOSBOX>, que o somat ser ativado. Outra maneira de ativar o somat ativar o DOSBOX e colocar os comando a seguir: Z:\>mount c c:\users\...\somat (coloque o caminho do somat aqui) Z:\>c: C:\>somat