Você está na página 1de 8

Resumos dos captulos do livro Sistemas Operacionais Silberchatz

CAPTULO 1:

Os sistemas operacionais foram desenvolvidos nos ltimos 40 anos para alcanar dois objetivos principais. Em primeiro lugar, o sistema operacional tenta escalonar as atividades computacionais para garantir um bom desempenho do sistema de computao. Em segundo lugar, fornece um ambiente conveniente para o desenvolvimento e a execuo de programas. Inicialmente, os sistemas operacionais eram usados a partir da console principal. Software montadores, utilitrios de cargas, linkeditores e compiladores melhoraram a convenincia da programao do sistema, mas tambm exigiam tempo substancial de configurao. Para reduzir o tempo de configurao, as empresas contrataram operadores e reuniram em lotes jobs semelhantes. Os sistemas em batch permitiam o seqenciamento automtico de jobs por um sistema operacional residente e melhoraram consideravelmente a utilizao geral do computador. O computador no tinha mais de esperar a operao humana. A utilizao da CPU era ainda baixa, no entanto devido baixa velocidade dos dispositivos de I/O em relao velocidade da CPU. A operao offline de dispositivos lentos fornece um meio de utilizar vrios sistemas do tipo leitora-fita e fita-impressora para uma nica CPU. Para melhorar o desempenho geral do sistema de computao, os desenvolvedores introduziram o conceito de multiprogramao. Com a multiprogramao, vrios jobs so mantidos na memria ao mesmo tempo, pois a CPU alterna entre eles para aumentar a utilizao da CPU e diminuir o tempo total necessrio para executar os jobs. A multiprogramao, que foi desenvolvida para melhorar o desempenho, tambm permite o compartilhamento de tempo. Os sistemas operacionais de tempo compartilhado permitem que muitos usurios (de um a centenas) utilizem um sistema de computao de forma interativa ao mesmo tempo. Os PCs so microcomputadores consideravelmente menores e mais baratos do que mainframe. Os sistema operacionais para esses computadores se beneficiaram do desenvolvimento dos sistemas operacionais para mainframes de diversas maneiras. No entanto, como as pessoas tm computadores para uso exclusivos, a utilizao de CPU no mais preocupao importante. Portanto, parte das decises de projeto realizadas em sistemas operacionais para mainframes talvez no seja adequada para sistemas menores. Os sistemas paralelos tem mais de uma CPU em comunicao direta, as CPUs compartilham o barramento e, s vezes, compartilham memria e

dispositivos perifricos. Tais sistemas podem fornecer maior produtividade e melhor confiabilidade. Um sistema de tempo crtico geralmente usado como um dispositivo de controle em uma aplicao dedicada. Um sistema operacional de tempo real crtico tem limitaes de tempo fixas e bem definidas. O processamento precisa ser feito dentro dos limites definidos, ou o sistema falhar. Os sistemas de tempo real no-crtico tm limitaes de tempo menos rigorosas e no suportam escalonamento de prazos.

CAPITULO 2

Os sistemas de multiprogramao e de tempo compartilhado melhoram o desempenho fazendo a sobreposio das operaes de I/O e da CPU em uma mquina. Tal sobreposio requer a transferncia de dados entre a CPU e um dispositivo de I/O seja realizada baseada por acesso baseado em interrupes ou polling a uma porta de I/O, ou por uma transferncia de dados DMA. Para que um computador realize sua tarefa de execuo de programas eles devem estar na memria principal. A memria principal a nica rea de armazenamento grande que o processador pode acessar diretamente. uma matriz de palavras e bytes, variando em tamanho de centenas de milhares a centenas de milhes. Cada palavra tem o seu prprio endereo. A memria principal um dispositivo de armazenamento voltil que perde o seu contedo quando a fonte de energia desligada ou perdida. A maioria dos sistemas de computao fornece armazenamento secundrio como uma extenso da memria principal. O principal requisito de armazenamento secundrio ser capaz de armazenar grandes quantidades de dados de forma de forma permanente. O dispositivo secundrio mais comum o disco magntico, que armazena programas e dados. Um disco magntico um dispositivo de armazenamento no-voltil que tambm fornece acesso aleatrio. As fitas magnticas so usadas basicamente para backup, para armazenamento de informaes usadas com pouca freqncia e como meio de transferir informaes de um sistema para outro. A grande variedade de sistemas de armazenamento em um sistema de computao pode ser organizada em uma hierarquia de acordo com a sua velocidade e custo. Os nveis mais altos so mais caros, mas rpidos. medida que descemos na hierarquia, o custo por bit geralmente diminui, enquanto o tempo de acesso geralmente aumenta. O sistema operacional precisa garantir a operao correta do sistema de computao. Para evitar que os programas de usurio interfiram na operao correta do sistema, o hardware possui dois modos: o modo usurio e o modo monitor. Vrias instrues (como as de I/O e as de parada) so privilegiadas e

s podem ser executadas no modo monitor. A memria na qual o sistema operacional reside tambm deve estar protegida contra modificaes pelo usurio. Um timer impede laos infinitos. Esses recursos (modo dual, instrues privilegiadas, proteo de memria, interrupo do timer) so os blocos bsicos usados pelos sistemas operacionais para alcanar a operao correta.

CAPITULO 3 Os sistemas operacionais fornecem muitos servios. No nvel mais baixo, as chamadas de sistema permitem que um programa em execuo faa pedidos do sistema operacional diretamente. Em um nvel mais alto, o interpretador de comandos ou Shell fornece um mecanismo para o usurio efetuar um pedido sem escrever um programa. Os comandos podem vir dos arquivos durante a execuo em modo batch, ou diretamente de um terminal quando em modo interativo ou de tempo compartilhado. Programas de sistema so fornecidos para satisfazer muitos pedidos comuns de usurios. Os tipos de pedido variam de acordo com o nvel do pedido. O nvel da chamada ao sistema deve fornecer as funes bsicas, tais como controle de processo e manipulao de arquivos e dispositivos. Pedidos de nvel mais alto, satisfeitos pelo interpretador de comandos ou programas de sistema, so traduzidos em uma sequncia de chamadas ao sistema. Os servios de sistema podem ser classificados em vrias categorias: controle de programa, pedidos de status e pedidos de I/O. Os erros de programa podem ser considerados pedidos implcitos de servio. Depois que os servios do sistema estiverem definidos, a estrutura do sistema operacional pode ser desenvolvida. Vrias tabelas so necessrias para registrar as informaes que definem o estado do sistema de computao e o status dos jobs do sistema. O projeto de um novo sistema operacional uma tarefa importante. E essencial que os objetivos do sistema sejam bem definidos antes que o projeto comece. O tipo de sistema desejado a base para a escolha dentre vrios algoritmos e estratgias que sero necessrios. Como um sistema operacional grande, a modularidade importante. Projetar um sistema como uma sequncia de camadas ou usando um microkernel considerado uma boa tcnica. O conceito de mquina virtual utiliza a abordagem em camadas e trata o kernel do sistema operacional e o hardware como se fossem apenas hardware. Mesmo outros sistemas operacionais podem ser carregados sobre essa mquina virtual. Qualquer sistema operacional que tenha implementado a JVM pode executar todos os programas Java, j que a JVM abstrai o sistema subjacente

para o programa arquitetura.

Java,

fornecendo

uma

interface

independente

de

Em todo o ciclo de projeto do sistema operacional, preciso ter cuidado para separar as decises baseadas em polticas dos detalhes de implementao (mecanismos). Essa separao permite flexibilidade mxima caso as decises baseadas em polticas sejam alteradas posteriormente. Os sistemas operacionais agora so quase sempre escritos em uma linguagem de implementao de sistema ou em uma linguagem de nvel mais alto. Esse recurso melhora a sua implementao, manuteno e portabilidade. Para criar um sistema operacional para determinada configurao de mquina, devemos realizar a gerao de sistema.

CAPITULO 4 processos Um processo um programa em execuo. medida que um processo executa, ele muda de estado. O estado de um processo definido pela atividade atual daquele processo. Cada processo pode estar em um dos seguintes estados: novo, pronto, cm execuo, em espera ou encerrado. Cada processo representado no sistema operacional pelo seu prprio bloco de controle de processo (PCB).Um processo, quando no estiver executando, colocado em alguma fila de espera. Existem duas classes principais de filas em um sistema operacional: filas de pedido de l/O e a fila de processos prontos. A fila de processos prontos contm todos os processos que esto prontos para executar e esto esperando pela CPU.Cada processo representado por um PCB, e os PCBs podem ser unidos para formar uma fila de processos prontos. O escalonamento de longo prazo (de jobs) a Seleo de processos que recebero permisso para disputar CPU. Normalmente, o escalonamento de longo prazo altamente influenciado por consideraes de alocao de recursos, especialmente a gerncia de memria. O escalonamento de curto prazo (de CPU) a seleo de um processo da fila de processos prontos. Os processos no sistema podem executar concorrentemente. Existem vrios motivos para permitir a execuo concorrente: compartilhamento de informaes, velocidade de computao, modularidade e convenincia. A execuo concorrente requer um mecanismo para a criao e excluso de processos. Os processos executando no sistema operacional podem ser independentes ou cooperativos. Os processos cooperativos devem ter meios de se comunicar entre si. Em princpio, existem dois esquemas de comunicao complementares: sistemas de memria compartilhada c de mensagens. O mtodo de memria compartilhada requer que os processos em comunicao compartilhem algumas variveis. Os processos devem trocar informaes usando essas variveis compartilhadas. Em um sistema de memria compartilhada, a responsabilidade de fornecer a comunicao est com os programadores da aplicao; o sistema operacional precisa fornecer apenas a memria compartilhada. O mtodo do sistema de mensagens permite que os

processos troquem mensagens entre si. A responsabilidade por fornecer a comunicao poder estar com o prprio sistema operacional. Esses dois esquemas no so mutuamente exclusivos, e podem ser usados ao mesmo tempo em um nico sistema operacional. Podemos implementar a memria compartilhada ou troca de mensagens usando Java. Threads separados de controle podem ser criados podem se comunicar usando qualquer um dos mtodos. CAPITULO 5 Threads Um thread um fluxo de controle cm um processo. Um processo multithread contm vrios fluxos de controle distintos no mesmo espao de endereamento. Os benefcios do multithreading incluem maior capacidade de resposta ao usurio, compartilhamento de recursos no processo, economia c capacidade de aproveitas arquiteturas com mltiplos processadores. Os rhrcads de usurio so threads visveis ao programador e desconhecidos do kernel. Alm disso, geralmente so gerenciados por uma biblioteca de threads no espao de usurio. Os threads de kernel so suportados e gerenciados por uma kernel do sistema operacional. Emgeral, os threads de usurio so mais rpidos de criar e gerenciar do que os threads de kernel. Existem trs tipos diferentes de modelos relacionados os threads de usurio aos de kernel: o modelo muitos-para-um ma-peia muitos threads de usurio em uni nico thread de kernel. O modelo um-para-um mapeia cada thread deusurio em um thread de kernel correspondente. O modelo muitos-para-muitos multiplexa muitos threadsde usurio em um nmero menor ou igual de threads de kernel.Java notvel por fornecer suporte para threads DO nvel da linguagem. Todos os programas Java consistem em pelo menos um thread de controle, sendo fcil criar vrios threads de controle no mesmo programa. Java tambm fornece um conjunto de APIs para gerenciar threads, incluindo mtodos para suspender e retomar threads, suspender um thread por determinado perodo de tempo e interromper um thread cm execuo. Um thread Java tambm pode estar em um de quatro estados possveis: Novo, Executvel, Bloqueado e Terminado. As diferentes APIs para gerenciar threads geralmente mudam o estado do thread. Apresentamoscomo exemplo uma soluo Java com multithread ao problema do produtor-consumidor .import java.util.-;class Consumer Consumer(MessageQueue m) |mbox = m; ) public void run( ) (Date message;whil (true) (int sleeptime (int) (Server.NAPJIHE * Math.random( ));System.out.println("Consumer sleeping for +sleeptime * " seconds");try (Thread.sleep(sleeptime*1000); catch(InterruptetlException e) extends Thread(public

{ ) //consome um item do buffermessage (Date)mbox.receive( ); if (message message); I private MessageQueue mbox; Figura 5.13 Thread do consumidor. ! null)System.out.println("Consumer consumed " *

Capitulo 6- Escalonamento de CPU O escalonamento de CPU consiste em selecionar um processo em espera na fila de processos prontos e alocara CPU a esse processo. A CPU alocada ao processo seleeionado pelo dispatcher.O escalonamento first-come, first-served (FCFS) o algoritmo de escalonamento mais simples, mas podefazer com que processos curtos esperem por processos muito longos. O escalonamento do tipo job mais curto(SJF) comprovadamente ideal, fornecendo o menor tempo de espera mdio. A implementao do escalonamento SJF difcil porque prever a durao do prximo surto de CPU difcil. O algoritmo SJF um caso especial de algoritmo geral de escalonamento por prioridade, que simplesmente aloca a CPU ao processo de prioridade mais alta. O escalonamento SJF e o escalonamento por prioridade podem sofrer de paralisao. Envelhecimento a tcnica usada para evitar a paralisao. O Round-Robin (RR) mais adequado para um sistema de tempo compartilhado (interativo). O escalonamento RR aloca a CPU ao primeiro processo na fila de processos prontos durante q unidades de tempo, em que q o quantum de tempo. Aps q unidades de tempo, se o processo no tiver abandonado a CPU, ele interrompido e colocado no final da fila de processos prontos. O principal problema a Seleo do quantum detempo. Se o quantum for grande demais, o escalonamento RR degenera para escalonamento FCFS; se O quantum for pequeno demais, o custo de escalonamento na forma de tempo de troca de contexto se torna excessivo.O algoritmo FCFS nopreemptivo; o algoritmo RR preemptivo. Os algoritmos SJF e de prioridade podem ser premptivos ou no-preemptivos. Os algoritmos de mltiplas filas permitem que diferentes algoritmos sejam usados para vrias classes de processos. O mais comum ter uma fila interativa de primeiro plano, que

utiliza o escalonamento RR, e uma fila cm batch de segundo plano, que utiliza o escalonamento FCFS. As mltiplas filas com realmentao permitem que os processos passem de uma fila para outra.Muitos sistemas de computao contemporneos agora oferecem suporte a mltiplos processadores, em que cada processador escalonado de forma independente. Em geral, existe uma fila de processos (ou threads), todos os quais esto disponveis para execuo. Cada processador toma uma deciso de escalonamento e seleciona a partir dessa fila.A JVM usa um algoritmo de escalonamento de threads preemptivo e baseado em prioridade que seleciona para execuo o thread com a prioridade mais alta. A especificao no indica se a JVM deve fracionar o tempo dos threads; isso cabe implementao especfica da JVM. A grande variedade de algoritmos de escalonamento exige que tenhamos mtodos para selecionar dentre eles. Os mtodos analticos utilizam anlise matemtica para determinar o desempenho de um algoritmo. Os mtodos de simulao determinam o desempenho imitando o algoritmo de escalonamento em uma amostra "representativa" de processos e calculando o desempenho resultante.

Capitulo 7 Escalonamento de CPU Dado um conjunto de processos ou threads sequenciais cooperativos que compartilham dados, a excluso mtua deve ser fornecida para evitar a ocorrncia de uma condio de corrida em relao aos dados compartilhados. Uma soluo garantir que uma seo crtica de cdigo esteja sendo usada apenas por um processo ou thread de cada vez. Existem diferentes solues de software para resolver o problema de seo crtica, partindo do pressuposto de que apenas o bloco de operaes de memria est disponvel. A principal desvantagem das solues de software que no so fceis de generalizar para mltiplosthreads ou para problemas mais complexos do que a seo crtica. Os semforos superam essa dificuldade. Podemos usar semforos para resolver vrios problemas de sincronizao e podemos implement-los de forma eficiente, especialmente se houver suporte de hardware disponvel para operaes atmicas. Vrios problemas de sincronizao distintas (tais como buffer limitado, dos leitores-escritores e do jantar dos filsofos) so importantes, basicamente porque so exemplos de uma vasta classe de problemas de controle de concorrncia. Esses problemas so usados para testar praticamente todos os novos esquemas de sincronizao propostos. Java fornece um mecanismo para coordenar as atividades de mltiplos threads quando estiverem acessando dados compartilhados, atravs das instrues synchronized, wait( ), notify )e notifyAll ( ). A sincronizao Java fornecida no nvel da linguagem, sendo considerada um exemplo de um mecanismo de sincronizao de nvel mais alto chamado monitor. Alm de Java, muitas linguagens forneceram suporte a monitores, incluindo Concurrent Pascal c Mesa.Os sistemas operacionais

tambm suportam a sincronizao de threads. Por exemplo, 0 Solaris 2 e o Windows NT fornecem mecanismos tais como semforos, mutexes e variveis de condio para controlar o acesso a dados compartilhados.

Você também pode gostar