Você está na página 1de 92

Sistemas Operacionais

UNIVERSIDADE CATLICA DE BRASLIA


Reitor Prof. MSc. Pe. Jos Romualdo Desgaperi Pr-Reitor de Graduao Prof. MSc. Jos Leo Pr-Reitor de Ps-Graduao e Pesquisa Prof. Dr. Pe. Geraldo Caliman Pr Reitor de Extenso Prof. Dr. Luiz Sveres

UNIVERSIDADE CATLICA DE BRASLIA VIRTUAL


Diretor Geral Prof. Dr. Francisco Villa Ulha Botelho Diretoria de Ps-Graduao e Extenso Prof. MSc. Ana Paula Costa e Silva Diretoria de Graduao Prof. MSc. Bernadete Moreira Pessanha Cordeiro Coordenao de Informtica Weslley Rodrigues Seplvida Coordenao de Secretaria Acadmica e Apoio ao Aluno Karlla Vanessa do Lago Arago Coordenao de Plos e Relacionamento Francisco Roberto Ferreira dos Santos Coordenao de Produo Edleide Epaminondas de Freitas Alves

Equipe de Produo Tcnica Anlise didtico-pedaggica Prof. MSc. Jos Eduardo Pires Campos Jnior Profa. Dra Leda Gonalves de Freitas Prof. MSc. Juarez Moreira Profa. Especialista Ana Brigatti Edio Prof. Especialista Cynthia Rosa Mrcia Regina de Oliveira Yara Dias Fortuna Montagem Marcelo Rodrigues Gonzaga Anderson Macedo Silva Bruno Marques Bea da Silva Conteudista Eduardo Augusto Oliveira Lobo

Sistemas Operacionais Sumrio

Sumrio
Ementa ................................................................................................ 6 Objetivos.............................................................................................. 6 Contextualizao .................................................................................... 6 Aula 01 - Histria e Funes dos Sistemas Operacionais .................................... 8
Histria dos Sistemas Operacionais ......................................................................11 Os Diversos Tipos de Sistemas Operacionais ...........................................................14 Alguns Conceitos Comuns aos Sistemas Operacionais .................................................15

Aula 02 - Estrutura dos Sistemas Operacionais ...............................................19


System Calls.................................................................................................20 Modos de Acesso............................................................................................21 Arquitetura..................................................................................................22 Microkernel..................................................................................................22 Mquina Virtual.............................................................................................24

Aula 03 - Gerncia de processos ................................................................29


Processos ....................................................................................................29
Conceito de Processos................................................................................................ 29 Escalonamento ........................................................................................................ 31 Processos Cooperativos .............................................................................................. 32 Processos Independentes, Subprocessos .......................................................................... 32

Threads ......................................................................................................33
Conceito de Threads.................................................................................................. 33 Mltiplas Threads ..................................................................................................... 34 Threads no Windows e Linux ........................................................................................ 36

Comunicao Interprocessos..............................................................................36
Segundo Plano ......................................................................................................... 36 Seo Crtica ........................................................................................................... 37 Semforos .............................................................................................................. 37 Problemas Tpicos de Sincronismo ................................................................................. 38 Monitores ............................................................................................................... 38 Transaes Atmicas ................................................................................................. 39

Deadlocks....................................................................................................39
Conceito de Deadlock ................................................................................................ 39 Preveno de Deadlock .............................................................................................. 40 Deteco de Deadlock................................................................................................ 41 Recuperao de Deadlock ........................................................................................... 41

Aula 04 - Gerncia de Memria..................................................................44


Conceitos Iniciais de Gerncia de Memria ............................................................44 Troca de Processos (Swapping)...........................................................................45 Alocao de Memria Contgua...........................................................................46
Alocao de Memria................................................................................................. 46 Fragmentao de Memria .......................................................................................... 48

Memria Virtual ............................................................................................49


Paginao............................................................................................................... 49 Substituio de Pgina ............................................................................................... 53 Segmentao........................................................................................................... 53

Aula 05 - Gerncia de E/S.........................................................................56


Conceitos de Entrada e Sada ............................................................................56 Subsistema de Entrada e Sada ...........................................................................59

Sistemas Operacionais Sumrio

Drivers .......................................................................................................59 Controladores ...............................................................................................61 Dispositivos de Entrada e Sada ..........................................................................62 Discos ........................................................................................................62

Aula 06 - Sistemas de Arquivos ..................................................................64


Viso do Usurio ............................................................................................64
Conceitos de Arquivo ................................................................................................. 65 Estrutura de Diretrio ................................................................................................ 66 Mtodos de Acesso .................................................................................................... 66 Montagem .............................................................................................................. 67 Compartilhamento .................................................................................................... 67 Proteo ................................................................................................................ 67

Viso do Implementador ..................................................................................69


Estrutura do Sistema de Arquivos .................................................................................. 69 Implementao ........................................................................................................ 71

Aula 07 - Estudo de Caso (Linux) ................................................................73


Histrico do Linux ..........................................................................................73 Viso Geral do Linux .......................................................................................73
Arquitetura ............................................................................................................. 74 O Kernel do Linux ..................................................................................................... 75

Distribuies Linux .........................................................................................75 Gerenciamento de Processos .............................................................................76 Gerenciamento de Memria ..............................................................................77 Gerenciamento do Sistema de Arquivos ................................................................78 Entrada e Sada .............................................................................................79 Segurana ...................................................................................................79

Aula 08 - Estudo de Caso (Windows)............................................................81


Histrico do Windows ......................................................................................81 Viso Geral do Windows ...................................................................................82 Estrutura do Sistema.......................................................................................82 Gerenciamento de Processos .............................................................................83 Gerenciamento de Memria ..............................................................................85 Gerenciamento do Sistema de Arquivos ................................................................86 Entrada e Sada .............................................................................................87 Segurana ...................................................................................................88

Referncias Bibliogrficas ........................................................................90 Glossrio .............................................................................................91

Sistemas Operacionais Ementa e Objetivos

Ementa
Histria e funes dos Sistemas Operacionais. Estrutura dos Sistemas Operacionais. Gerncia de processos. Gerncia de memria. Gerncia de E/S. Sistemas de arquivos. Estudo de caso (Linux e Windows).

Objetivos
Objetivo Geral: Ao final do semestre, o aluno dever compreender o que e como funcionam os Sistemas Operacionais, como so suas estruturas, o gerenciamento de processos, memria e dispositivos de entrada e sada, alm das implementaes mais conhecidas (Linux e Windows). Objetivos Especficos: compreender os tipos de sistemas operacionais existentes e como esto estruturados; estudar o que so processos e o que so threads, sendo capaz de diferenci-los; perceber os aspectos associados comunicao interprocessos, em especial as questes associadas a sincronismo; entender o funcionamento da memria, em especial swapping, paginao e segmentao; entender o funcionamento dos sistemas de entrada e sada, alm do armazenamento em disco e em mdias removveis; visualizar o que so sistemas de arquivos e seus princpios de funcionamento; e reconhecer os aspectos principais associados aos sistemas operacionais Linux e Windows.

Contextualizao
H alguns anos, os sistemas operacionais estavam restritos aos grandes e caros computadores, tais como mainframes. Operados por uma quantidade limitada de empresas, que os utilizavam em seus negcios, esses sistemas poderiam ir desde rodar a folha de pagamento, executar o sistema de vendas ou controle de estoque, at a execuo de clculos e simulaes (qumicas, biolgicas, geolgicas, meteorolgicas, aeroespaciais etc.). Atualmente os sistemas operacionais esto cada vez mais presentes em nosso cotidiano. Pessoalmente, voc os utiliza em uma grande variedade de equipamentos, seja por necessidade, lazer ou ambos. Como exemplo, podemos citar: telefones celulares e consoles de videogames. Profissionalmente, o uso se d por meio de computadores ou equipamentos especficos que auxiliam as atividades no ambiente empresarial, como equipamentos de rastreamento. Para onde quer que voc olhe, os equipamentos

Sistemas Operacionais Ementa e Objetivos

eletrnicos necessitam desses sistemas para executar seus programas, estando estes presentes desde em um pequeno PDA at em uma grande aeronave. A miniaturizao dos equipamentos, associada a outros fenmenos, tais como a proliferao da Internet e de redes sem fio, possibilita uma participao cada vez maior de equipamentos eletrnicos em nossa vida. Esses equipamentos interagem, por meio de seus programas, entre si e com seus usurios, o que sempre possibilitado pelos sistemas operacionais neles presentes. Tais sistemas controlam o acesso desses programas ao hardware, seja pela permisso de utilizao do processador ou dos dispositivos de entrada e sada, promovendo uma utilizao que deve sempre levar em considerao aspectos de: desempenho, consumo de energia, segurana e usabilidade, entre outros. Desse modo, o funcionamento adequado da soluo utilizada, seja para uso pessoal ou profissional, depende desses sistemas. Logo, entender como funcionam, suas vantagens e limitaes permitir que o aluno possa obter o mximo de seu equipamento e dos programas utilizados. O que, em ltima instncia, refletir no cumprimento adequado da tarefa, a um custo razovel.

Sistemas Operacionais Aula 01

Aula 01 - Histria e Funes dos Sistemas Operacionais


Entender a origem e a cronologia da evoluo dos sistemas operacionais ajudar bastante na compreenso desse importante assunto dentro da computao. Desse modo, faremos um rpido estudo dessa evoluo, o que nos permitir perceber como foram sendo utilizados, medida que evoluam. Estudaremos ainda seu relacionamento com o hardware, alm de conceitos importantes que utilizaremos ao longo da disciplina. Esta aula , portanto, um ponto de partida para o entendimento das caractersticas, funcionamento e possibilidades na utilizao dos sistemas operacionais.
Ao iniciar o estudo dos sistemas operacionais devemos procurar respostas para duas questes bem importantes: qual a funo do sistema operacional? Como esse sistema operacional se relaciona com o hardware? O objetivo do usurio executar programas que iro auxili-lo no cumprimento de suas tarefas. Esses programas podem ter as finalidades mais diversas possveis. Logo, ao sistema operacional cabe a tarefa de facilitar e coordenar o acesso aos recursos computacionais disponveis. Mas quais so esses recursos? Podemos classificar esses recursos em trs grupos: de entrada/sada; de armazenamento; de processamento. O primeiro tem a funo de fornecer ao computador os dados a serem processados e de externar o resultado desse processamento. O segundo tem por funo armazenar, de modo permanente ou temporrio, os dados utilizados. Por ltimo, aos recursos de processamento, cabe a funo de executar as rotinas necessrias ao cumprimento das tarefas.

Sistemas Operacionais Aula 01

Figura 1.1 Viso do Sistema Operacional.

Mas, e a relao do sistema operacional com o hardware? Para responder essa questo, vamos considerar a sua experincia com computadores. Em geral, voc utiliza algum programa editor de textos, planilha eletrnica, navegador, aplicativo de uso empresarial etc. Todos esses programas esto instalados em um sistema operacional e este, por sua vez, foi instalado previamente no computador. A Figura 1.2 permite uma viso geral do que est sendo mencionado. Nela, podemos ver os usurios interagindo com os aplicativos que, por seu turno, esto apoiados no sistema operacional, executado em um hardware. O detalhamento do sistema operacional, seu relacionamento com os aplicativos e o hardware sero vistos ao longo das prximas aulas.

Sistemas Operacionais Aula 01

Figura 1.2 Viso dos Componentes de um Computador.

Uma outra viso completa mostrada na Figura 1.3, onde podemos visualizar os programas em uso, o sistema operacional e os elementos de hardware nos quais este se apia.

Figura 1.3 Sistema Computacional Consistindo em Hardware, Sistema e Aplicaes.

10

Sistemas Operacionais Aula 01

Histria dos Sistemas Operacionais


Os sistemas operacionais foram evoluindo na medida em que os computadores foram se desenvolvendo; junto com estes, foram adquirindo caractersticas associadas evoluo do hardware e de conectividade.

Perodo anterior aos anos de 1940


Em 1642, Blaise Pascal inventou uma mquina de somar, visando auxiliar seu pai, que trabalhava com arrecadao de impostos. Em 1673, Gottfried Leibniz criou uma mquina que somava e multiplicava. Em 1820, Charles Colmar inventou uma mquina que realizava as quatro operaes. O primeiro computador de que se tem notcia foi projetado por Charles Babbage, em 1822. Era puramente mecnico, com engrenagens, polias e correias. Esse computador no possua sistema operacional, sendo considerado uma mquina analtica. Em 1854, George Boole criou a lgica booleana, na qual se baseia todo modelo de computao digital. Em 1890, Herman Hollerith criou o mecanismo de cartes perfurados para ajudar o processamento do censo dos EUA. Hollerith fundou, em 1896, a empresa que posteriormente se tornou a IBM.

Dcada dos anos de 1940


Nessa dcada, surgiu o que chamado de primeira gerao de computadores, onde eram utilizados vlvulas e painis de programao. Nessa poca foi criado o Electronic Numerical Integrator and Calculator (ENIAC), criado na Universidade da Pensilvnia e utilizado em clculos balsticos e, posteriormente, no desenvolvimento da bomba de hidrognio.

Dcada dos anos de 1950


Nos anos de 1950 surgiu a segunda gerao, com a utilizao de transistores e de sistemas em lote (ou batch). O processamento em lote consistia em uma maneira de otimizar a utilizao dos computadores at ento disponveis, os denominados mainframes. Nesse tipo de processamento, o programa a ser executado era preparado previamente. Inicialmente por meio de cartes perfurados e, em evolues posteriores, previamente digitados. O mainframe processava um a um os programas. Essa era uma forma de otimizar a utilizao desse caro recurso.

11

Sistemas Operacionais Aula 01

Figura 1.4 Processamento em Lote.

Dcada dos anos de 1960


Na dcada dos anos de 1960, chegou-se terceira gerao de computadores, com a disseminao dos circuitos integrados e da multiprogramao. Nessa poca ocorreu um problema, pois existiam duas linhas de produtos totalmente incompatveis. Os computadores de grande porte utilizados em clculos de engenharia e cincia, tal como o 7094 e os orientados a caracteres, como o 1401, utilizados por bancos e demais instituies financeiras. A IBM lanou ento o System/360, que cobria desde mquinas menores at as de grande porte. Nessa poca, a empresa lanou sries subseqentes, denominadas 370, 4300, 3080 e 3090. A multiprogramao surgiu nesse momento, para diminuir a ociosidade da CPU, a partir da qual a memria era dividida em partes, onde, em cada uma, colocava-se um job (trabalho) a ser executado. Desse modo, vrios jobs poderiam ser preparados para que fossem utilizados em seqncia pela CPU. A seguir (Figura 1.5), pode ser visto um mainframe da srie 4.300, o IBM 4341, fabricado entre os anos de 1979 e 1986.

12

Sistemas Operacionais Aula 01

Figura 1.5 Mainframe da Srie 4.300

Outras imagens podem ser vistas no IBM Mainframe Photo lbum.

Dcada dos anos de 1970


Nessa dcada surgiram os minicomputadores, tais como o PDP-11. Em 1971, a Intel produziu o processador Intel 4004 e, em 1974, o Intel 8080. Estes foram seguidos pela Zilog, que lanou o Z80. Com a evoluo dos processadores, surgiram ento os microcomputadores. Em 1976, Steve Jobs e Steve Wozniak produziram o Apple II que, rapidamente, se tornou um sucesso. O sistema operacional utilizado predominantemente, nesses computadores, o CP/M (Control Program Monitor), da Digital Research. Na outra extremidade do mercado, o de grande porte, era lanado o supercomputador Cray-1 capaz de realizar 100 milhes de operaes de ponto flutuante por segundo (100 MFLOPS).

Dcada dos anos de 1980


Foi o incio da quarta gerao, marcada pela entrada da IBM no mercado de microcomputadores que, em 1981, lanou o IBM PC. Esse primeiro microcomputador utilizava processador Intel 8088 de 16 bits e sistema operacional Microsoft DOS (Disk Operating System). Em 1982, foi fundada a Sun Microsystems, que lanou as estaes de trabalho SUN, que se utilizavam do SunOS (posteriormente, Sun Solaris). Nessa dcada a Universidade de Berkeley criou sua prpria verso de Unix, o BSD, introduzindo vrias melhorias, em especial, associadas ao TCP/IP. Ao longo dessa dcada, surgiram os sistemas operacionais com interface grfica, tais como o Microsoft Windows e OS/2.

13

Sistemas Operacionais Aula 01

Dcada dos anos de 1990


Nessa dcada se consolidaram os sistemas operacionais com interface grfica. Com o surgimento da Internet, a arquitetura cliente/servidor passou a ser utilizada tambm fora de redes locais. Surgiram ainda os softwares abertos (open source), com destaque para os sistemas operacionais FreeBSD e o Linux.

Dcada dos anos de 2000


Essa dcada caracteriza-se por: demanda cada vez maior por processadores e sistemas cada vez mais eficientes, surgimento de variadas interfaces de interao entre o usurio e a mquina; miniaturizao e mobilidade crescentes, o que, aliado s tecnologias de redes sem fio, tm levado a computao a locais e atuaes antes no utilizados, o que tem possibilitado uma informatizao sem precedentes. Os sistemas operacionais esto cada vez mais presentes, sendo aplicados em dispositivos diversos, tais como PDA, telefones celulares, eletrodomsticos etc.

Os Diversos Tipos de Sistemas Operacionais


Um sistema operacional pode ser aplicado nos mais diversos tipos de dispositivos existentes. Nesse item, mencionamos os mais comuns e que fazem parte de nosso dia-a-dia, desde sistemas de grande porte at pequenos cartes inteligentes (smart cards), relacionados a seguir.

Sistemas operacionais para computadores de grande porte


Computadores de grande porte so utilizados por grandes empresas e centros de pesquisa. A finalidade desses computadores lidar com grandes volumes de processamento, tais como anlise de crdito por grandes bancos ou simulaes como as efetuadas para prospeco de petrleo e gs ou para fins meteorolgicos.

Sistemas operacionais para computadores pessoais


Computadores pessoais visam oferecer ao usurio boas condies de interao na realizao de suas tarefas, sejam estas de trabalho ou lazer, sendo utilizados para uso geral. Permitem: acesso Internet para fins diversos, inclusive interao com outras pessoas, via mensageiros instantneos; utilizao de sutes de escritrio - editores de texto, planilha eletrnica etc.; uso de programas multimdia, como vdeos e msicas; interagir com variados tipos de dispositivos de E/S gravadores de mdias diversas, joysticks para jogos etc.

14

Sistemas Operacionais Aula 01

Sistemas operacionais para servidores


Sistemas operacionais para servidores podem ser executados em servidores de grande porte, servidores, estaes de trabalho ou mesmo computadores pessoais. Podem fornecer diversos servios, podendo atuar como: servidores web; servidores de arquivos; servidores de impresso, entre outros.

Sistemas operacionais para aplicaes em tempo real


Sistemas operacionais para aplicaes em tempo real tm o tempo como um fator crtico. So aplicados em equipamentos que possuem prazos rgidos para a execuo das tarefas, tais como mquinas empregadas em processos industriais.

Sistemas operacionais embarcados


Sistemas operacionais embarcados tm seu uso associado a pequenos dispositivos. Como exemplos, podem ser citados: PDA, telefones celulares e eletrodomsticos. Os dispositivos que os utilizam geralmente tm srias limitaes quanto capacidade de processamento, memria e energia que podem utilizar. Existem vrios casos de sistemas operacionais embarcados que possuem tambm caractersticas de tempo real.

Sistemas operacionais para cartes inteligentes


Os sistemas operacionais para cartes inteligentes so utililizados em dispositivos de tamanho similar a um carto de crdito. Esses dispositivos possuem uma restrio de consumo de memria e energia bem menores que os do tipo embarcado. Em geral, dedicam-se a uma nica funo como, por exemplo, executar pagamentos bancrios.

Alguns Conceitos Comuns aos Sistemas Operacionais


As caractersticas de um sistema operacional esto associadas ao hardware em que executado. Desse modo, a maneira como gerenciam processos, memria, entrada/sada, arquivos e a segurana, varia entre os sistemas. Apesar disso, os conceitos bsicos associados aos diversos sistemas operacionais existentes so os mesmos. Neste item, comearemos abordando alguns desses conceitos, os quais sero detalhados ao longo das prximas aulas.

15

Sistemas Operacionais Aula 01

Processos
Um processo um programa que est sendo executado. Um sistema operacional deve lidar com muitos processos, ou seja, deve executar vrios deles, inclusive ao mesmo tempo. O detalhamento de como isso feito ser visto na Aula 3. Por enquanto, considere fatias de tempo; a cada fatia, um processo executado. Terminada uma fatia, o processador passa a executar outro processo, alternando, desse modo, todos os processos a executar. Quando um processo interrompido, posteriormente retomado a partir de onde havia parado. A velocidade com que alterna todos os processos e retorna ao primeiro to elevada que a impresso causada que o sistema operacional est executando vrias tarefas ao mesmo tempo. Um processo composto de seu espao de endereamento e de uma entrada na tabela de processos.

Deadlocks
Deadlock uma situao que ocorre durante a execuo de vrios processos ao mesmo tempo. Isso ocorre quando dois processos ficam bloqueados, um esperando pelo outro. Considere, para isso, dois processos: o primeiro processo (P1) aloca um recurso A para uso; enquanto isso, o segundo processo (P2) aloca um recurso B para uso. Em um dado momento, o processo P1 solicita acesso tambm ao recurso B, porm, sem ainda liberar o recurso A. Nesse mesmo instante, o processo P2, por coincidncia, solicita acesso ao recurso A, sem liberar o uso de B. Ocorre ento o deadlock. Nesse instante, o processo P1 vai ficar esperando a liberao do recurso B, enquanto o processo P2 fica aguardando o recurso A, sendo que nenhum deles liberou o recurso j em uso. A preveno, deteco e recuperao de deadlocks sero vistas na Aula 3.

Gerenciamento de memria
Todo computador utiliza uma memria para apoio aos programas que esto em execuo. Em um sistema operacional simples, somente um programa por vez pode ocupar a memria. Logo, para alternncia de um processo a outro, todas as informaes devem ser salvas e o processo removido da memria, sendo em seguida colocado o prximo em memria. Os sistemas operacionais que utilizamos na prtica possuem a capacidade de manter em memria vrios processos ao mesmo tempo. Devem, portanto, controlar o acesso rea de memria ocupada por cada um, prevenindo que outros acessem esses espaos reservados. desejvel que todo o espao de endereamento a ser utilizado pelos programas seja menor do que a memria disponvel, permitindo que todos sejam mantidos em memria. Caso o espao seja maior do

16

Sistemas Operacionais Aula 01

que a memria disponvel, ser utilizada uma tcnica denominada de memria virtual (swap). Nesse caso, parte do espao de endereamento ser mantida em disco. Todo o assunto relativo memria ser visto com mais detalhes na Aula 4.

Entrada e sada
Os computadores possuem dispositivos de entrada e sada. O primeiro aquele por meio do qual passamos ao computador as informaes ou dados a serem processados enquanto, pelo dispositivo de sada, o computador apresenta o resultado das operaes solicitadas. O dispositivo de entrada mais comum o teclado e o dispositivo de sada mais comum o monitor. Entretanto, existem muitos outros dispositivos, tais como: mouse; impressora; unidades de disco ou fita; relgio; placa de rede; porta serial; porta paralela etc. Esse assunto ser abordado na Aula 5.

Arquivos
Sistema de arquivos outro conceito muito importante no estudo dos sistemas operacionais. Os arquivos guardam informaes que so manipuladas pelos programas e pelo prprio sistema. Para que um arquivo possa ser lido, deve primeiramente ser localizado e, depois, aberto. Aps ser manipulado, podendo inclusive ter seu contedo alterado, deve ser salvo e fechado. Ao sistema operacional cabe a organizao e manipulao desses arquivos. Uma forma muito comum de os sistemas operacionais organizarem seus dados sob a forma de diretrios. Cada diretrio (ou pasta) agrupa vrios arquivos. Esse assunto ser abordado em detalhes na Aula 6.

Segurana
Uma vez que muitas informaes esto armazenadas em um computador, necessrio um controle quanto ao acesso e modificao dos dados. Isso necessrio tanto para proteger o sistema operacional quanto os prprios dados dos usurios de acessos indevidos, inclusive os causados por vrus e outras pragas virtuais. A forma de controle de acesso aos dados ser abordada nas Aulas 7 (Estudo de Caso Linux) e 8 (Estudo de Caso Windows).

Shell
funo do sistema operacional a execuo de chamadas ao sistema. Vrios programas que no fazem parte do sistema operacional, necessitam de acesso a variados recursos; entre estes esto editores, compiladores, ligadores e interpretadores. Analisando o caso dos interpretadores, eles possuem algumas caractersticas.

17

Sistemas Operacionais Aula 01

Tomemos como exemplo o Shell do Unix/Linux. O usurio, quando se conecta, tem um interpretador de comandos (Shell) iniciado; este se torna a entrada e sada padro do usurio. por meio dele que o usurio digita seus comandos e recebe seus resultados, podendo, se for o caso, modificar a entrada ou sada dos dados. Por exemplo: pode utilizar como entrada um arquivo e como sada a impressora. A utilizao desse tipo de programa ser abordada nos estudos de caso das Aulas 7 e 8.

Nesta aula, estudamos a histria dos sistemas operacionais, podendo acompanhar sua evoluo e utilizao ao longo do tempo. Vimos os diferentes tipos de aplicaes para os sistemas operacionais que podem ser utilizados desde em um pequeno dispositivo mvel, at em um grande computador, incluindo sistemas de tempo real. Em seguida, foram mencionados alguns conceitos importantes e comuns a todos os sistemas operacionais, que sero estudados em detalhes mais adiante por enquanto, estes conceitos nos permitiro avanar no estudo desta disciplina. Os itens estudados serviram como preparo para o prximo contedo a ser estudado Estrutura dos Sistemas Operacionais que, por sua vez, servir de base para o estudo do gerenciamento de processos, de memria e de entrada/sada, trs conceitos primordiais ao entendimento do funcionamento dos sistemas operacionais existentes.
Aplicando o Conhecimento
1. O que voc entende por sistema operacional? Quais so suas principais funes? 2. Quais os principais componentes de um sistema operacional? 3. Quais os tipos principais de sistemas operacionais que voc conhece? Onde podem ser aplicados?

Para Refletir
a. Como seria um computador sem sistema operacional? Isso possvel? b. Qual o sistema operacional dos dispositivos a sua volta (computadores, celulares, etc.)?

18

Sistemas Operacionais Aula 02

Aula 02 - Estrutura dos Sistemas Operacionais


O sistema operacional prov uma srie de servios aos usurios e programas que o utilizam. Para realizar essas aes, o sistema operacional precisa realizar vrias atividades internamente, bem como interagir adequadamente com o hardware no qual se apia. Nesta aula, voc ver quais so essas aes e como elas funcionam. O objetivo que, a partir dos tpicos aqui abordados, voc j possa ter uma viso geral do funcionamento dos sistemas operacionais.
Para que possamos estudar a arquitetura de um sistema operacional, oportuno que vejamos os principais elementos associados a ele. Iniciando pelo ponto de vista do usurio, temos as aplicaes. Ligados a estas temos os utilitrios, que permitem uma interao dos usurios e aplicaes com o sistema operacional. Em seguida, temos o prprio sistema operacional, que se apia ainda sobre o hardware. A Figura 2.1 apresenta esses elementos.

Figura 2.1 Arquitetura de um Sistema Computacional.

Mas o que o sistema operacional faz realmente?

19

Sistemas Operacionais Aula 02

Para que voc possa entender a real funo do sistema operacional, necessrio visualizar os elementos que interagem com ele. Na aula anterior, voc viu que o sistema operacional lida com o processador, os dispositivos de entrada e sada, a memria e os dispositivos de armazenamento. O funcionamento de todos esses elementos no seqencial, havendo momentos em que existe disputa por recursos, ou mesmo enfileiramento. Logo, cabe ao sistema operacional gerenciar tudo isso. Entre as atividades gerenciadas pelo sistema operacional esto: criar e eliminar processos e threads; sincronizar a comunicao entre processos e threads; escalonar e controlar processos e threads; gerenciar a memria; gerenciar dispositivos de entrada e sada; gerenciar o sistema de arquivos; efetuar a segurana do sistema.

System Calls
Neste item, comearemos por um elemento presente em todo sistema operacional: as chamadas ao sistema, denominadas System Calls, em ambiente Unix ou Application Program Interface (API), em ambiente Windows. As System Calls funcionam como uma interface para acesso ao ncleo do sistema operacional. Desse modo, quando um usurio ou aplicao solicitam algum servio, uma chamada de sistema realizada. Cada servio possui uma chamada de sistema associada. Cada sistema operacional possui seu prprio conjunto de chamadas e formas de faz-lo. A figura a seguir mostra o esquema de interao entre aplicaes, System Calls, ncleo do sistema operacional e o hardware.

Figura 2.2 Esquema de Interao das System Calls no Hardware.

20

Sistemas Operacionais Aula 02

Uma tentativa de padronizao das chamadas, denominada POSIX, foi proposta. O objetivo era permitir que aplicaes desenvolvidas conforme as chamadas padronizadas pudessem ser executadas em qualquer sistema operacional que suportasse POSIX. Para que voc possa entender adequadamente a localizao e funo dessas chamadas ao sistema, considere o seguinte exemplo: O programador, ao escrever o cdigo de um programa, o faz utilizando uma linguagem de programao alto nvel (por exemplo: Pascal, C ou C++). O compilador ento converte esse cdigo de alto nvel em chamadas ao sistema apropriadas arquitetura do hardware onde ser utilizado. Existem muitas chamadas ao sistema que, como se disse, variam conforme o sistema operacional. Todavia, podemos reuni-las em quatro grupos:

Gerenciamento de processos e threads criao, eliminao, sincronizao, comunicao e informaes.

Gerenciamento de memria - alocao e liberao de memria. Gerenciamento de dispositivos abrir, ler, gravar, fechar ou eliminar arquivos; criar, alterar e eliminar diretrios; obter informaes de arquivos e diretrios.

Gerenciamento de dispositivos alocar ou liberar operaes de entrada ou sada e obter informaes sobre dispositivos.

Modos de Acesso
O acesso aos arquivos, a memria e aos dispositivos deve ser controlado. A razo para isso que um acesso indevido pode causar srios problemas. Imagine se cada aplicao resolve que vai acessar determinado setor do disco rgido, cada uma quando bem entender. Quais problemas isso poderia causar?

Como os recursos do computador so todos compartilhados, faz-se necessrio um controle desse acesso. Esse controle pode ser efetuado de dois modos diferentes:
No primeiro modo, algumas instrues mais crticas, ou privilegiadas, somente podem ser executadas pelo sistema operacional. Nesse caso, os aplicativos devem solicitar ao sistema que execute determinada operao. O sistema ento a executa, aps verificar a validade de tal solicitao, encaminhado o resultado a quem a solicitou. Evitam-se assim problemas de segurana ou de integridade dos dados. o denominado modo kernel (ou supervisor). No segundo modo, as instrues no crticas, ou no privilegiadas, somente podem ser executadas se o usurio ou aplicao possurem autorizao para tal. o denominado modo usurio.

21

Sistemas Operacionais Aula 02

A melhor maneira de controle da segurana permitir que somente o sistema operacional tenha acesso s instrues encaminhadas. Desse modo, as chamadas de sistema so todas encaminhadas ao sistema operacional. Essa abordagem vale tanto para acesso ao processador quanto aos demais dispositivos. Alguns sistemas operacionais permitem que a aplicao efetue uma chamada de sistema ao kernel que, ento, altera o acesso do modo usurio para o modo kernel; da, a aplicao ganha acesso ao recurso (por exemplo: processador). Aps executada a rotina, o modo usurio reativado, retirando os privilgios de acesso. O sistema operacional MS-DOS, por exemplo, no possua esse recurso de utilizao de modo usurio ou modo kernel, uma vez que foi desenvolvido para a arquitetura Intel 8088. J a arquitetura Intel x86 possui esse recurso, utilizado pelos sistemas operacionais Windows 2000 e outros mais recentes, alm do Linux e Solaris.

Arquitetura
Monoltica
A arquitetura monoltica se refere a um nico programa que pode ter at sido compilado em separado, mas foi unificado (linkado) em um programa executvel. O desenvolvimento ou manuteno desse tipo de cdigo complicado. O sistema operacional DOS da Microsoft monoltico.

Em Camadas
A arquitetura em camadas surgiu com a necessidade de melhorar o processo de desenvolvimento e manuteno de um cdigo mais complexo. Nessa abordagem, o sistema organizado em camadas, onde cada uma exerce um conjunto bem determinado de funes. Alm de facilitar a escrita e manuteno do cdigo, permite a organizao de modos de acesso associados s camadas. Tanto o Unix quanto o Windows, em suas verses mais recentes, utilizam essa arquitetura, que apresenta duas camadas: a primeira, como acesso no privilegiado (modo usurio) e a segunda, com acesso privilegiado (modo kernel).

Microkernel
O conceito de microkernel surgiu em 1980, na Universidade Carnegie-Mellon. A idia era possuir um kernel (ncleo) menor. Atualmente essa uma tendncia na maior parte dos sistemas operacionais.

22

Sistemas Operacionais Aula 02

Para isso, os servios disponibilizados pelo sistema so executados como processos, onde cada um coordena as funes de gerenciamento de arquivos, memria, processos e escalonamento. Os servios, nesses casos, so todos executados no modo usurio, sem acesso direto ao sistema. Os processos se comunicam entre si e com o microkernel, por meio de mensagens. Quando determinado processo deseja acessar o hardware, ele o faz por meio de uma mensagem ao microkernel.

Figura 2.3 Arquitetura Computacional e o Microkernel.

Essa abordagem propicia algumas vantagens. A primeira diz respeito segurana propiciada pelo acesso restrito, j que somente o microkernel possui acesso direto ao hardware. Eventuais conflitos nos processos podem causar somente a parada dos processos envolvidos, permanecendo ento os demais processos e o servidor em execuo normal. A utilizao de microkernel facilita a utilizao de mltiplos processadores, seja atravs de uma nica mquina com diversos processadores ou de um ambiente distribudo em que as mquinas podem estar distantes umas das outras. Porm, a implementao desse tipo de soluo difcil. Na prtica, o que existe atualmente uma combinao entre o modelo em camadas e o de microkernel.

23

Sistemas Operacionais Aula 02

Mquina Virtual
Mquina virtual um assunto bem atual. Possivelmente voc j deve ter ouvido falar sobre isso ou, ento, lido algo a respeito. Mas voc sabe do que se trata? E como funciona? Nos itens anteriores, voc j pde estudar que o sistema operacional funciona sobre um hardware especfico. Sabe tambm que, quando um programa criado, feito para um determinado sistema operacional. Ocorre que, atualmente, tem-se freqentemente a necessidade de executar mais de um sistema operacional, ao mesmo tempo, em um determinado computador ou servidor. Qual a razo dessa necessidade? Existem dois grandes motivos para isso. O primeiro pode ser a necessidade de suportarmos em um dado servidor aplicaes que foram feitas para sistemas operacionais diferentes. Suponha, por exemplo, que voc tenha dois aplicativos, um desenvolvido para ambiente Windows e um outro desenvolvido para ambiente Linux. Considere ainda que, por limitaes diversas, voc precise instal-los no mesmo computador. A soluo ento a utilizao do recurso de mquinas virtuais. Mquina virtual um recurso que adiciona uma camada extra entre o sistema operacional e o hardware. Essa camada adicional emula um hardware. Desse modo, o sistema operacional instalado sobre a mquina virtual pensa que est interagindo diretamente com o hardware. Assim, podemos instalar mais de um sistema operacional sobre essa camada adicional. Cada uma dessas instalaes acessa a mquina virtual como se estivesse acessando o hardware. Cabe a essa mquina virtual a interao com o hardware.

24

Sistemas Operacionais Aula 02

Figura 2.4 Sistema com trs Instncias de Mquina Virtual.

O segundo motivo diz respeito s questes de segurana e/ou gerenciamento de ambientes complexos. Voc pode ter vrias instalaes de um determinado sistema operacional em execuo em um dado computador. Cada uma dessas instalaes ter somente o que for necessrio para atender ao programa que for ser executado ali. Pense nas vantagens de segurana e de gesto que pode oferecer. Se sua empresa for um Datacenter, prestando servios de hospedagem variados (servidores web, email, ftp, banco de dados etc.) aos seus clientes, voc pode alocar cada cliente em um dos ambientes em execuo. Se, por outro lado, todos os servios so hospedados em sua prpria empresa, voc pode optar por coloc-los separadamente em mquinas virtuais diferentes. O impacto dessa deciso que um eventual problema de segurana em uma mquina (tal como uma invaso) no compromete as outras. Alm disso, voc pode lig-las e deslig-las separadamente. Pode ainda efetuar uma cpia completa de uma instalao em poucos minutos, colocando-a para executar no mesmo servidor ou em outro. Mquinas virtuais podem ser utilizadas em computadores pessoais, em servidores ou mesmo em mainframes. A nica limitao a capacidade de processamento e de memria do hardware.

25

Sistemas Operacionais Aula 02

Existem atualmente solues de virtualizao que podem ser instaladas diretamente sobre o hardware, sem a necessidade de instalar o sistema operacional previamente, enquanto outras podem ser instaladas sobre o sistema operacional j presente no computador. Entre as solues de virtualizao existentes podemos citar: VirtualBox soluo de virtualizao de cdigo livre (licena GPL) e disponvel para instalao em ambientes Windows, Linux e OpenBSD; VMWare solues diversas de virtualizao para instalao direta sobre o hardware e sobre os sistemas operacionais mais utilizados; XEN soluo de virtualizao para instalao em ambiente Linux; Virtual PC Soluo de virtualizao da Microsoft, criada pela mesma equipe do VirtualBox. Outro exemplo de mquina virtual a Java Virtual Machine (JVM), desenvolvida pela Sun Microsystems. A idia foi a criao de um ambiente que possibilitasse aplicaes desenvolvidas em Java de executar em qualquer sistema operacional que possua a JVM instalada. Foram ento criadas JVM para os sistemas operacionais mais utilizados atualmente. As caractersticas de portabilidade e segurana, entre outras, possibilitaram ao Java uma grande insero no mercado de solues em software.

Figura 2.5 Sistema com Mquina Virtual Java.

Nesta aula, voc pde estudar a estrutura de um sistema operacional, podendo perceber como se relaciona com os usurios, seus aplicativos e com o hardware. Em seguida, viu as funes que devem ser realizadas

26

Sistemas Operacionais Aula 02

pelo sistema operacional, tais como gerenciar a utilizao do processador, da memria, dos dispositivos de entrada e sada e do sistema de arquivos. Na seqncia, abordou-se o tema chamada de sistema ou system calls e seu funcionamento como uma interface entre o usurio, seus aplicativos e o sistema operacional. Entre as chamadas existentes foram mencionadas algumas como: manipulao de processo; alocao de memria; acesso a arquivos; gerenciamento de dispositivos. Ento, voc estudou o modo de acesso, por meio do qual se pode controlar melhor o acesso ao sistema operacional e, em especial, ao hardware; isso feito por meio do acesso em modo usurio ou acesso em modo privilegiado (modo kernel), sendo que, nesse ltimo, as aplicaes encaminham as solicitaes ao sistema para que sejam efetuadas. Assim, adiciona-se um recurso a mais de segurana ao sistema operacional. Mencionaram-se ainda a arquitetura monoltica e a multicamada, com as vantagens desta ltima. Ao conceito de multicamada acrescentou-se o conceito de microkerne, possibilitando uma viso da estruturao dos sistemas operacionais atuais. Por ltimo, foram vistos os conceitos associados a mquinas virtuais, descrevendo-se suas aplicaes e vantagens. A partir da prxima aula, voc comear a estudar como so gerenciados os processos e threads, passando em seguida ao gerenciamento de memria e ao gerenciamento de entrada e sada.
Aplicando o Conhecimento
1. Quais os principais elementos na arquitetura de um sistema operacional? Qual a funo de cada um deles? 2. O que uma system call? Qual o seu relacionamento com o ncleo do sistema operacional? 3. O que significa modo kernel e modo usurio em um sistema operacional? Qual a vantagem na utilizao desses dois modos? 4. O que uma mquina virtual? Qual a sua finalidade? 5. Quais so as camadas em uma soluo que se utilize de mquina virtual?

27

Sistemas Operacionais Aula 02

Para Refletir
a. Considere os sistemas operacionais utilizados em dispositivos a sua volta, tais como computadores, celulares etc. Quais so monolticos? Quais so em camadas? b. As solues de virtualizao mais comuns atualmente envolvem a instalao de mquinas virtuais sobre um sistema operacional hospedeiro. possvel a instalao de mquinas virtuais diretamente sobre o hardware sem a utilizao de um sistema operacional hospedeiro?

28

Sistemas Operacionais Aula 03

Aula 03 - Gerncia de processos


Os primeiros dispositivos computacionais permitiam que somente um programa fosse executado de cada vez. Esse programa, alm dos clculos que fazia, ainda tinha acesso e controlava todo o dispositivo. Atualmente, nos sistemas operacionais utilizados, vrios programas so executados simultaneamente. Desse modo, precisa haver um controle do acesso aos recursos de processamento (processador) que so sempre limitados. O controle do acesso ao processador pode se dar tanto para evitar conflitos quanto para melhorar a utilizao da capacidade de processamento, evitando-se a ociosidade do processador. Assim, somente disponibilizado o acesso ao processador para aquela aplicao que j est pronta para utiliz-lo. Nesta aula, voc ver os conceitos associados a processos e threads. O objetivo compreender como feita a alternncia na utilizao do processador, bem como tratar dos problemas decorrentes.

Processos
Conceito de Processos
O que um processo? Inicialmente faz-se necessrio definirmos o que um processo. O entendimento que voc deve ter que um processo nada mais do que um programa em execuo. No computador que voc possa estar utilizando, vrios programas podem estar em execuo simultaneamente, como: editor de textos; planilha eletrnica; navegador; mensageiro instantneo; reprodutor de msicas ou vdeo. Alm desses, outros programas presentes no sistema operacional tambm podem estar em execuo. Entre esses, podemos citar os que controlam o relgio que aparece na tela; a otimizao no consumo de energia; e a interao com outros dispositivos que possam vir a ser conectados pelo usurio.

Estado de um processo
Um processo passa por vrias fases, tambm denominadas de estado, do momento em que criado at o momento em que se encerra. Os estados em que um processo pode estar so: Criao momento em que esta sendo criado.

29

Sistemas Operacionais Aula 03

Execuo instrues do programa esto sendo executadas. Espera ou bloqueado processo esperando a ocorrncia de algum evento, por exemplo, o retorno de um dispositivo de entrada ou sada.

Pronto processo pronto aguardando sua vez de ter acesso ao processador. Terminado o processo encerrou a execuo.

Estrutura de um processo
O processo, como vimos, um programa em execuo. Todavia, para que ele seja executado adequadamente pelo sistema operacional, fazem-se necessrios trs elementos: contexto de hardware; contexto de software; espao de endereamento. estrutura composta por esses trs contextos dado o nome de bloco de controle do processo.

Figura 3.1 Estrutura de um Processo.

O contexto de hardware armazena o contedo dos registradores da CPU, como: contador de programas (program counter); pilha (stack pointer); status. Quando em execuo, o contedo do contexto de hardware est armazenado nos registradores do processador. Assim que saem do processador, essas informaes so salvas no contexto de hardware. O processador, ao trocar um processo pelo outro, est efetuando uma troca de contexto. Isso se faz salvando as informaes do processo que est saindo do processador e carregando as relativas ao processo que est entrando.

30

Sistemas Operacionais Aula 03

O contexto de software consiste em informaes relativas s caractersticas e limites de recursos que podem ser alocados pelo processo. Entre as informaes disponveis esto: nome; identificador de processo ou PID (Process Identifier); identificador de grupo ou UID (User Identifier); prioridade de execuo; data e hora de criao; tempo de processador; quotas; e privilgios. Os identificadores (PID ou UID) permitem ao sistema operacional ou outros processos fazerem referncia ao processo em questo. As quotas impem um limite de uso, como: a quantidade de arquivos que se pode abrir; nmero mximo de operaes de entrada ou sada; tamanho de buffers; nmero mximo de subprocessos que podem ser criados. O espao de endereamento a rea de memria associada ao processo. Nesse espao so alocados os endereos de memria utilizados. Esse item ser abordado na Aula 4 Gerncia de Memria.

Escalonamento
No item anterior, foram apresentados os estados de um processo (criao, execuo, espera ou bloqueado, pronto e terminado). O processo dito em execuo quando est sendo processado na CPU. Em computadores com uma nica CPU, somente um processo estar em execuo. Quando est no estado pronto, um processo est apenas aguardando a liberao do acesso ao processador. De maneira geral, muitos processos podem estar no estado pronto. Esses processos ficam ento em uma fila de espera denominada lista encadeada. Nessa lista, os processos prioritrios tero privilgio no acesso ao processador. Durante seu ciclo de vida um processo passa por vrias mudanas de estado. So elas: Pronto -> execuo Aps ser criado o processo fica na lista de processos prontos, aguardando sua vez de ter acesso ao processador. Execuo -> espera Um processo em execuo passa para o estado de espera por vrios motivos, entre eles, o aguardo de uma operao de entrada ou sada. Espera -> pronto O processo retorna ao estado pronto aps a operao solicitada ser concluda (por exemplo: entrada ou sada). Execuo -> pronto Quando terminado o tempo a que tem direito de utilizar o processador. Havendo ainda processamento a ser feito, colocado na fila de prontos. Como j se disse, nos sistemas operacionais atuais temos muitos programas em execuo ao mesmo tempo. Vimos ainda que, se o computador possui somente uma CPU, somente um processo estar em execuo ao mesmo tempo. Desse modo faz-se necessria essa alternncia entre os processos, em que cada qual tem uma fatia de tempo antes de passar a vez para outro processo.

31

Sistemas Operacionais Aula 03

Ocorre que, muitas vezes, ainda durante o tempo de processamento, um processo necessita parar por algum tempo. Isso pode ser dar em razo de estar aguardando o retorno de um dispositivo de entrada ou sada, ou de alguma solicitao feita a outro processo. Logo, necessrio liberar o processador, um precioso recurso, enquanto no estiver sendo utilizado. Para isso temos o escalonador de processos. O objetivo do escalonamento otimizar a utilizao do processador, de modo que o processador esteja em uso o mximo do tempo possvel. A finalidade dele escolher entre os processos na fila, que ganhar o acesso ao processador.

Processos Cooperativos
Os processos nos sistemas operacionais atuais podem ser independentes ou cooperativos. Independente quando sua execuo no depende de interao com nenhum outro processo. Cooperativo quando sua execuo depende dessas interaes. Existem vrios motivos para um processo ser cooperativo: Compartilhar informaes Uma dada informao compartilhada por vrios processos e essa informao pode estar sendo modificada com o tempo. Agilizar a execuo de tarefas Para completar uma tarefa mais rapidamente, um determinado processo pode criar vrios subprocessos, sendo que cada qual executar uma parte da tarefa, que ser ento consolidada pelo processo original. Modularizar soluo Um programa pode fazer uso de modularizao para o cumprimento das tarefas que lhe so delegadas. Dessa forma podem existir mdulos que podem, em dado momento, ser criados para cumprir determinada tarefa.

Processos Independentes, Subprocessos


O que so processos independentes, subprocessos? Qual a finalidade de utiliz-los? Como se viu, podemos ter diversos processos em execuo simultaneamente no computador. Esses processos podem ser totalmente independentes ou cooperativos. Lembre-se ainda de que cada processo possui trs componentes: contexto de hardware; contexto de software; e espao de endereamento. Considere que voc utiliza um programa que efetua vrias atividades ao mesmo tempo. Esse programa pode ser para gerenciar seus e-mails. Por exemplo, o Outlook ou Evolution. Neles, voc pode ao mesmo tempo enviar, receber ou escrever mensagens. Cada uma dessas atividades pode ser implementada como um processo independente em separado (modo mais fcil) ou como processos cooperativos, que utilizam melhor os recursos computacionais.

32

Sistemas Operacionais Aula 03

Um processo pode criar outros subprocessos para executar tarefas que lhe so delegadas. Cada novo subprocesso criado demanda a criao de um novo bloco de controle de processo (contexto de hardware, contexto de software e espao de endereamento). Essa operao de criao de processos dispendiosa, do ponto de vista computacional. A Figura 3.2 mostra o esquema da criao de alguns subprocessos:

Figura 3.2 Estrutura de um Processo e seus Subprocessos.

Existe ainda uma terceira opo, denominada threads, que ser vista no tpico seguinte.

Threads
Conceito de Threads
Como vimos no tpico anterior, o processo de criao de processos uma atividade onerosa do ponto de vista computacional. Pode ento surgir a seguinte questo: existe algum modo mais fcil e rpido de criao de subprocessos? A resposta sim. Temos um novo elemento, denominado thread, que implementa uma soluo menos onerosa.

33

Sistemas Operacionais Aula 03

O que thread? Como utiliz-la? Tomemos o servidor web Apache como exemplo. Como todo servidor web, ele tem de ser capaz de atender a vrios usurios diferentes que podem estar acessando-o ao mesmo tempo. Temos aqui uma soluo muito interessante de como isso feito. Nesse caso, o servidor web cria um processo para cada requisio web que chega, ou seja, para cada usurio que acessa o servidor criado um processo para atend-lo. Agora, veja que as pginas em geral possuem um texto acompanhado de imagens. Para acelerar o atendimento, criada uma thread para transferir cada imagem. Temos, desse modo, para cada usurio, um processo e vrias threads executadas simultaneamente. Em resumo, em um ambiente com mltiplas threads, o conceito de um programa associado a cada processo no verdadeiro. O que temos que cada processo tem pelo menos uma thread, criando quantas mais forem necessrias para cumprir as atividades. Uma thread , ento, uma sub-rotina que, em um programa, chamada para cumprir uma determinada tarefa. Qual a diferena entre processos e threads? Um processo possui seu prprio contexto de hardware, de software e espao de endereamento (bloco de controle de processo), onde os espaos de endereamento so individuais e protegidos. Threads compartilham esses espaos dentro de um mesmo processo. Isso permite que a criao de threads dentro de um processo seja mais rpida e eficiente.

Mltiplas Threads
Uma grande quantidade de programas que utilizamos faz uso do recurso de multithreads. Como j se disse, a criao de threads para execuo de determinadas tarefas mais rpida do que a criao de processos adicionais, uma vez que no precisamos criar novos blocos de controle de processo. As threads dentro de um mesmo processo compartilham o contexto de software e o espao de endereamento, tendo somente seu espao de hardware individual.

34

Sistemas Operacionais Aula 03

Figura 3.3 Processo com uma Thread e com Mltiplas Threads.

Assim, como os processos disputam o acesso ao processador, o mesmo acontece com threads dentro de um mesmo processo. Desse modo, enquanto uma thread aguarda um retorno de dispositivo de entrada ou sada, outra assume o processador. Dentro de um mesmo processo, as threads podem acessar o espao de endereamento umas das outras sem restries, facilitando o trabalho cooperativo. A ttulo de comparao, se tivssemos vrios processos fazendo a mesma atividade (ao invs de um nico processo com vrias threads), os processos no acessariam os contextos e espaos um do outro. A troca de informaes e dados entre eles se d por comunicao entre processos, ou seja, um processo tem que parar o que est fazendo para passar informaes a outro processo. Logo, os benefcios de utilizao de multithreads so: aumento da responsividade uma vez que o programa continua em execuo mesmo que uma parte esteja em estado de espera; compartilhamento de recursos as threads compartilham o contexto de software e espao de memria de um processo; economia a criao de threads menos onerosa do que a criao de outros processos; utilizao de arquiteturas multiprocessadas nesse caso, as threads podem estar em execuo em diferentes processadores.

35

Sistemas Operacionais Aula 03

Threads no Windows e Linux


Os sistemas operacionais Windows (desde o Windows 95) e Linux implementam threads. No Windows, cada programa executado em um processo, sendo que cada processo pode conter uma ou mais threads. Cada thread possui: um identificador de thread, que identifica cada uma unicamente; um conjunto de registradores; uma pilha de usurios, quando a thread est sendo executada no modo usurio, ou uma pilha do kernel, quando a thread est sendo executada no modo kernel; rea de armazenamento privada, usada por bibliotecas diversas em tempo de execuo e bibliotecas de vnculo dinmico ou DLL (Dynamic Link Libraries). No Linux no h uma distino entre processos e threads. Isso se d em razo de como o Linux implementa um processo (ou tarefa). O compartilhamento do espao de endereos permitido em virtude de como o processo representado no Kernel do Linux. Cada processo no Linux possui uma estrutura de dados exclusiva para ele. Todavia, a estrutura de dados, ao invs de armazenar os dados, possui ponteiros para outras estruturas de dados, onde eles realmente esto. Essas estruturas representam a lista de arquivos abertos, de memria virtual etc. Existem sinalizadores (flags) que indicam quanto do processo (pai) pode ser compartilhado com os subprocessos (processos filho). Se os sinalizadores estiverem desligados, naquele processo pai no haver compartilhamento; se estiverem ligados, haver o compartilhamento; se parte deles estiver ligada e parte desligada, haver o compartilhamento parcial dos recursos.

Comunicao Interprocessos
Segundo Plano
Um processo pode estar em execuo de dois modos diferentes: primeiro plano (ou foreground); segundo plano (ou background). O que define se um processo de primeiro plano ou de segundo a interao com seus canais de entrada e sada, que podem ser: teclado, mouse, monitor, impressoras, arquivos ou outros processos. O processo dito de primeiro plano, quando permite a comunicao com o usurio enquanto executa. Geralmente a entrada por meio de um teclado ou mouse, enquanto que a sada pode ser o monitor ou impressora. o caso de um usurio que est utilizando um editor de texto. Um processo em segundo plano no possui comunicao com o usurio durante o processamento. Como exemplo, podemos considerar o agendador de tarefas, no Windows, ou o Cron, no Linux.

36

Sistemas Operacionais Aula 03

Seo Crtica
Um conceito importante o de seo crtica. Ele diz respeito a um trecho de cdigo em execuo pela thread, durante o qual no pode haver acessos por parte de outras threads como, por exemplo, quando est escrevendo em um arquivo. Assim, quando uma thread est executando uma seo crtica, nenhuma outra thread pode executar sua prpria seo crtica, o que conhecido como excluso mtua. O grande problema criar um algoritmo que permita que as threads possam executar cooperativamente e sem conflitos, em razo dessas sees crticas. Existem trs consideraes que devem ser feitas: somente uma thread pode estar em sua seo crtica; escalonamento de qual thread poder entrar em sua seo crtica, quando mais de uma deseja faz-lo; controle de quantas vezes uma determinada thread fez uso de sua seo crtica, evitando-se assim que esse acesso privilegie umas sees em detrimento de outras, causando o que conhecido por starvation.

Semforos
A sincronizao de processos um assunto extremamente importante no estudo de sistemas operacionais. O acesso aos recursos, controlado pelo sistema operacional, pode cair em algumas armadilhas se a sincronizao no for efetuada corretamente. O conceito de semforo foi proposto por Dijkstra, em 1965, com o objetivo de criar um mecanismo de excluso mtua e sincronizao entre os processos. O recurso utilizado na maior parte dos sistemas operacionais atuais e em linguagens de programao. Os semforos podem ser: do tipo binrio, quando podem assumir somente os valores 0 (zero) ou 1 (um); do tipo contador, no qual podem assumir qualquer valor positivo e 0 (zero). Aqui nos restringiremos ao funcionamento do semforo binrio.

Semforo binrio
O semforo tem valor 0(zero) ou 1 (um). O valor 0 (zero) indica que algum processo est acessando sua regio crtica, enquanto o valor 1 (um) indica que nenhum processo est em sua regio crtica. O semforo manipulado pelas instrues DOWN e UP. Caso um processo deseje entrar em sua regio crtica, este aciona a instruo DOWN. A instruo DOWN decrementa a varivel, enquanto a instruo UP incrementa uma unidade varivel.

37

Sistemas Operacionais Aula 03

Assim, se o semforo estiver com valor 1 (um) e um processo necessita entrar em sua regio crtica, este chama a instruo DOWN. O valor do semforo decrementado e o processo executa sua regio crtica. Se, por outro lado, o valor do semforo for 0 (zero), o processo fica impedido de entrar na regio crtica e fica em espera. Quando o processo sai de sua regio crtica, executa a instruo UP, tornando o valor do semforo 1 (um) e liberando o acesso a outros processos.

Problemas Tpicos de Sincronismo


No item anterior, voc pde ver como o semforo utilizado para lidar com questes de sincronismo. Todavia, existe um problema clssico de sincronizao que voc deve compreender: o problema dos filsofos.

Problema dos filsofos


O problema dos filsofos, tambm conhecido como o jantar dos filsofos, consiste na seguinte situao: Numa mesa de jantar, onde esto sentados cinco filsofos, esto disponveis cinco pratos e cinco garfos. No centro da mesa h uma tigela com arroz. Cada vez que um filsofo pra de pensar e vai comer, necessitar de dois garfos. Se cada filsofo pegar um garfo ningum conseguir comer, uma vez que so necessrios dois garfos. Esse problema conhecido como deadlock (descrito brevemente na Aula 1). Existem trs possibilidades para permitir um funcionamento adequado do jantar, so elas: limitar a quatro o nmero de filsofos na mesa. Todavia, isso resolve apenas parcialmente o problema; o filsofo somente pode pegar um garfo se o outro estiver disponvel; permitir que o filsofo mpar pegue primeiro o garfo situado esquerda e depois o situado direita, enquanto o filsofo par efetua o inverso. Veja que, qualquer que seja a soluo, no h um controle de escalonamento; logo, no h nada que impea um dos filsofos de morrer de fome (starvation).

Monitores
Monitores utilizam uma forma mais sofisticada de controle de sincronizao do que o semforo. considerado um mecanismo estruturado. A utilizao de monitores no desenvolvimento de programas mais fcil do que semforos, dando menos chances de que o programador cometa um erro.

38

Sistemas Operacionais Aula 03

O monitor consiste em mdulos; cada mdulo constitudo de procedimentos e variveis; cada regio crtica definida como procedimento no monitor. Nessa soluo, somente um processo pode chamar um dos procedimentos do monitor. Caso j exista algum acesso, os demais processos aguardam em uma fila.

Transaes Atmicas
Transao atmica consiste em garantir que uma determinada operao seja executada no seu todo ou que nenhuma parte seja executada. Em muitos sistemas, a simples excluso mtua de regies crticas garante a coerncia dos resultados, no importando a ordem em que sejam executadas. Todavia, a garantia de execuo de ambas essencial. Um exemplo clssico disso a transferncia de recursos entre duas contas bancrias. Essa operao consiste em duas operaes bsicas: efetuar o saque de uma das contas e efetuar o depsito na outra. Para que no haja problemas para o banco, as duas operaes devem ser efetuadas. Efetuar somente o saque de uma das contas ou simplesmente o depsito na outra, no uma opo. Devem existir ento tcnicas para que caso ocorram problemas com uma das aes, a outra seja automaticamente desfeita.

Deadlocks
Conceito de Deadlock
Deadlock pode ser definida como uma situao em que um processo aguarda por um evento que no acontecer. Isso se d, sobretudo, em razo de problemas de compartilhamento de recursos, em especial quando se usa excluso mtua. Na Aula 1, abordamos o conceito de deadlock, situao na qual dois processos ficam bloqueados, um esperando pela liberao de um recurso alocado pelo outro. A seguir apresentada uma figura que ilustra um exemplo de deadlock.

39

Sistemas Operacionais Aula 03

Figura 3.4 Deadlock Espera Circular.

Para que uma deadlock acontea so necessrias quatro condies. So elas: Problema com excluso mtua Nesse caso, um recurso j est alocado para um processo. Espera por um recurso Um processo que alocou um recurso aguarda outro recurso sem liberar o primeiro recurso j em uso. Recurso no preemptivo incapacidade do sistema operacional de alternar o uso do recurso entre os processos que o necessitam, ou seja, um recurso j alocado por um processo no pode ser alocado para outros que necessitam. Espera circular um processo com um recurso j alocado espera pela liberao do recurso alocado por outro processo, enquanto o outro processo aguarda a liberao do recurso ocupado pelo primeiro processo. Quanto mais so utilizados os recursos de processamento paralelo, maiores so as chances de esse tipo de problema ocorrer. Nos itens a seguir, sero abordadas a preveno, deteco e recuperao de deadlocks.

Preveno de Deadlock
A preveno da ocorrncia de deadlock passa por aes que impeam uma das quatro condies necessrias para uma deadlock ocorrer.

40

Sistemas Operacionais Aula 03

A eliminao da primeira condio citada problema com excluso mtua impede que uma deadlock ocorra. Isso se deve ao fato de que um processo no ter de aguardar por um recurso alocado por outro processo. Em relao segunda condio espera por recurso o melhor modo de preveni-la garantir que um processo somente possa alocar todos os processos que necessitar ao mesmo tempo. Porm, essa abordagem pode levar o processo ao problema de starvation, ou seja, essa condio pode nunca ocorrer e o processo pode ficar parado eternamente. A terceira condio recursos no preemptivos pode ser eliminada se um processo puder alocar um recurso j alocado por outro. Embora impea o problema de no preempo, pode levar alguns processos ao problema de starvation, pois um processo pode liberar um recurso sem ter terminado seu uso e demorar a consegui-lo de volta. A quarta condio espera circular pode ser evitada se for permitido que um processo somente solicite um novo recurso se liberar o recurso j em uso. Apesar de a proposta de impedir uma das quatro condies de ocorrer resolver teoricamente o problema do deadlock, na prtica, esse problema ainda pode ocorrer em razo de situaes adversas no previstas.

Deteco de Deadlock
O recurso de deteco de deadlock utilizado em sistemas operacionais que no tenham mecanismos de preveno de deadlocks, permitindo que sejam identificados os processos e recursos envolvidos no problema. Funciona baseado em estruturas de dados capazes de identificar os recursos do sistema, os processos que os alocaram e os processos que esto aguardando a liberao de algum desses recursos j em uso. O funcionamento desses recursos geralmente se baseia em detectar a ocorrncia de espera circular. Todavia, como o tempo de deteco varia conforme a implementao desse algoritmo, deve-se ter cuidado ao utiliz-lo em sistemas operacionais baseados em tempo real. Exemplo: sistemas utilizados em controle industriais, inclusive indstrias qumicas e nucleares, alm de trfego areo e outros.

Recuperao de Deadlock
A recuperao de um deadlock pode utilizar duas tcnicas: eliminar um dos processos na espera circular; suspender um dos processos na espera circular, liberando o recurso do mesmo.

41

Sistemas Operacionais Aula 03

A primeira tcnica de eliminao de um dos processos sem dvida a mais simples e rpida. Todavia, pode causar problemas para a aplicao que o utiliza. J a segunda tcnica suspender o processo embora mais trabalhosa, permite resolver o problema sem provocar erros nos processos envolvidos. Nela, um dos processos suspenso, seu recurso liberado e, depois de utilizado pelo outro processo, devolvido ao primeiro processo, ento reativado. Essa segunda tcnica denominada de rollback.

Nesta aula, voc pde estudar o gerenciamento de processos, cujo objetivo compreender e visualizar como a manipulao dos mesmos pelo sistema operacional. Inicialmente foram abordados os conceitos de processos e de escalonamento dos mesmos e de seu funcionamento cooperativo. Na seqncia foi apresentado o conceito de thread. Voc pde ento perceber que uma thread criada e iniciada mais facilmente pelo sistema operacional. Nesse caso, um processo pode ter uma ou mais threads que compartilham recursos no cumprimento de suas atividades. Nos itens seguintes associados comunicao interprocessos e deadlocks foram apresentados conceitos e algumas situaes-problema. Foram em seguida apresentadas as solues tpicas para resolv-los. Com isso, espera-se que tenha sido cumprido o objetivo desta aula, que foi ensinar sobre como melhorar a utilizao do processador, permitindo que muitos processos (e threads) possam compartilh-lo, inclusive em ambientes multiprocessados.
Aplicando o Conhecimento
1. O que um processo? 2. Por quais estados passa um processo? Explique cada um. 3. Quais as partes que compem um processo? 4. O que so threads? 5. Em quais situaes vantajoso utilizar threads? 6. O que um processamento em primeiro plano e em segundo plano? 7. Em que consiste uma seo crtica? Como a utilizao de semforos pode ajudar? 8. O que um deadlock? Quais as formas de preveno?

42

Sistemas Operacionais Aula 03

Para Refletir
a. Como implementar concorrncia em um ambiente monothread? b. Qual a vantagem de compartilhamento do espao de endereos entre as threads de um mesmo processo? c. O sistema operacional que voc utiliza em seu computador utiliza processos e threads? Quantos processos e threads esto em execuo neste momento?

43

Sistemas Operacionais Aula 04

Aula 04 - Gerncia de Memria


O gerenciamento de memria um assunto sempre presente no estudo dos sistemas operacionais. Sempre foi considerado um recurso escasso e caro e, mesmo com a reduo de preos que temos atualmente, ainda um recurso disponvel em quantidade limitada na mquina. Ento, em razo dessas limitaes, temos que ter um gerenciamento adequado de seu uso. Esse fato se torna ainda mais importante medida que os sistemas operacionais atuais lidam com uma quantidade cada vez maior de programas em execuo, simultaneamente. Na aula anterior, vimos que os processos precisam alocar reas na memria para que possam funcionar. Veremos agora como feita essa alocao, alm de outras aes, tais como: swapping (troca), paginao, segmentao e memria virtual. O objetivo que, ao final desta aula, voc compreenda a finalidade do gerenciamento de memria, incluindo o princpio de funcionamento das aes citadas.

Conceitos Iniciais de Gerncia de Memria


Em um sistema computacional existem dois tipos de memria: a principal a ser tratada nesta aula; a secundria que cuida do armazenamento de dados em dispositivos auxiliares como discos rgidos, memrias flash ou fitas. Existem algumas caractersticas importantes que voc deve saber neste momento. A primeira que o processador somente executa instrues que estejam armazenadas na memria principal. A segunda que o tempo de acesso memria secundria muito mais alto do que o de acesso memria principal. Assim, interessante que a memria principal seja suficiente para todos os processos em execuo. Caso contrrio, o sistema ter que descarregar para a memria secundria os dados referentes a um processo que no esteja mais em execuo, de modo a permitir que os dados de outro processo sejam carregados na memria principal. Essa ao denominada swapping (troca) e ser abordada a seguir. Desse modo, no gerenciamento da memria, o sistema operacional deve fazer o melhor uso possvel da memria principal, inclusive minimizando o nmero de operaes de entrada e sada de dados na memria secundria.

44

Sistemas Operacionais Aula 04

Troca de Processos (Swapping)


A tcnica de troca de processos, ou swapping, disponvel nos sistemas operacionais atuais, permite que um sistema operacional utilize mais memria do que a disponvel na memria principal. Conforme mencionado anteriormente, todos os processos em execuo devem ter seus espaos de endereamento presentes na memria principal. Hoje em dia, com a utilizao da multiprogramao, temos em um dado sistema operacional dezenas ou centenas de processos em execuo. Em muitos casos a memria principal torna-se insuficiente para lidar com todos eles. Para lidar com esse problema surgiu a tcnica de swapping. Por meio dessa tcnica o sistema decide qual processo ser removido da memria principal e transferido para a memria secundria que pode ser, por exemplo, um disco rgido. A essa operao dado o nome de swap out.

Figura 4.1 Utilizao de rea de Troca (Swap).

Em outro momento, o processo removido para a memria secundria pode ser transferido de volta para a memria principal; a isso se d o nome de swap in. Para que funcione adequadamente o swapping, deve utilizar-se um algoritmo que priorize a transferncia de processos menos sujeitos de serem executados em um instante prximo. Com isso, evita-se que um processo recm-removido venha a ter que ser recolocado imediatamente. Sistemas operacionais que implementam essa troca de processos devem ter o recurso de relocao dinmica de programas. Isso necessrio porque, quando h o retorno memria principal, a posio j

45

Sistemas Operacionais Aula 04

no mais a mesma que ocupava anteriormente, sendo ento necessrio que essa nova posio seja informada ao carregador (loader) que efetua essa relocao. Considere que, apesar de permitir a execuo de mais processos do que a mquina suportaria, introduzse uma perda de desempenho considervel, que tanto maior quanto maior for a quantidade de memria secundria necessria ao processo de swap. Quando a quantidade de memria principal muito menor do que a necessria, pode-se observar que a mquina fica sobrecarregada, efetuando operaes de troca o tempo todo. Isso ocasiona, como se disse, perda considervel de desempenho, o que pode muitas vezes ser evidenciado pela quantidade excessiva de acessos (de leitura e escrita) no disco rgido.

Alocao de Memria Contgua


Alocao de Memria
Para que voc possa compreender como funciona a alocao de memria, interessante entender antes alguns conceitos: alocao contgua simples; overlay; proteo de memria. Na alocao contgua simples, presente nos primeiros sistemas operacionais, que eram

monoprogramveis, a memria dividida em duas partes. A primeira, dedicada ao sistema operacional e a segunda, ao programa. Em geral, eram acompanhadas de um registrador que limita o acesso do usurio rea para programa.

Figura 4.2 Utilizao de Memria Principal.

46

Sistemas Operacionais Aula 04

Em relao ao overlay, anteriormente, um programa estava limitado ao tamanho da memria disponvel, o que limitava muito o programador. O overlay permitiu a utilizao de um recurso importante, que o uso de um processo que necessite de uma rea de memria maior do que a disponvel para ele. Desse modo, o overlay permite que um processo carregue na memria apenas parte das instrues e dos dados, justamente os que sero necessrios naquele momento. medida que as primeiras instrues forem sendo utilizadas, elas vo sendo descarregadas e substitudas pelas prximas. Logo, um processo que necessite de 200 KB pode ser utilizado quando o limite disponvel para cada processo seja de 150 KB.

Figura 4.3 Utilizao de Memria Principal Tcnica de Overlay.

A proteo de memria outro conceito importante. Sua finalidade a proteo do sistema operacional contra o acesso indevido a processos do usurio, assim como prevenir a interferncia de um processo na memria de outro. Esse controle feito pela utilizao de um registrador, que contm o menor endereo fsico e o intervalo de endereos lgicos. Desse modo, o endereo a ser utilizado est no intervalo entre esses dois valores. O controle do acesso aos endereos nesse intervalo feito por um dispositivo denominado Unidade de Gerenciamento de Memria (Memory Management Unity - MMU). O MMU efetua um mapeamento entre o endereo lgico e o endereo fsico realmente utilizado para armazenar os dados na memria principal. A figura a seguir ilustra esse funcionamento.

47

Sistemas Operacionais Aula 04

Figura 4.4 Relocao Dinmica.

O processo do usurio no visualiza os endereos fsicos utilizados, ele simplesmente tem um ponteiro direcionado para um local cuja associao com a localizao real (fsica) feita pelo MMU. O processo do usurio entende que est acessando endereos, por exemplo, entre 0 (zero) at M (mximo), enquanto o MMU converte esses endereos para algo do tipo: R+0 at R+M.

Fragmentao de Memria
Um aspecto importante em memria o conceito de fragmentao. Mas o que fragmentao? Lembre-se de que o sistema operacional mantm uma tabela com a alocao da memria, ou seja, onde est o qu. Nesse conceito, o sistema tem as informaes sobre quais trechos da memria esto ocupados e quais esto livres. Considere que um processo entra em execuo; ele precisar de um espao de memria que possa utilizar. O sistema procura um espao livre onde possa coloc-lo e continua a fazer assim para cada processo que precisar de memria. Em um dado momento, algum processo no mais necessitar da memria alocada e o sistema a liberar. Perceba ento que, aos poucos, comearo a surgir espaos (buracos) na memria. Outros processos que venham a surgir sero colocados pelo sistema operacional nesses espaos. Nesse momento, o sistema procura por um espao grande o suficiente para alocar. Caso no haja um espao grande o suficiente, o sistema alocar parte da memria em um espao e parte em outro espao. Ocorre ento o que chamamos de fragmentao de memria.

48

Sistemas Operacionais Aula 04

Existe um meio de eliminar essa fragmentao? No, se a alocao de memria for esttica. Porm, se a alocao de memria for dinmica, essa desfragmentao pode ser feita. Utilizando a alocao dinmica podemos fazer uso de um algoritmo que efetua a movimentao dos processos para os espaos disponveis em uma extremidade da memria e a movimentao dos espaos (buracos) para a outra extremidade. A cada movimentao de processo, o registrador atualizado para refletir a nova posio. Alternativas podem ser utilizadas com paginao ou segmentao. Esses dois conceitos so abordados nos itens seguintes.

Memria Virtual
Como vimos, os programadores e os sistemas h muito lidam com programas maiores do que a memria. Voc viu as tcnicas de swapping, que utiliza a memria secundria como apoio, e a de overlay, que carrega partes do processo que necessitem de mais espao do que o estabelecido como tamanho de bloco. A memria virtual se tornou uma tcnica em que partes de um programa podem estar em memria e o resto no disco. Voc ver a seguir algumas tcnicas adicionais que visam otimizar o uso da memria fazendo uso desse recurso.

Paginao
A paginao consiste em permitir que o espao de endereamento seja no contguo. Ela resolve alguns problemas. Um deles que a fragmentao ocorrida na memria se d tambm na memria secundria (por exemplo: disco). Logo, quando algum fragmento de cdigo ou dados da memria principal precisar ser retirado, esse espao precisar ser localizado tambm no armazenamento secundrio. Ocorre que o acesso nesse tipo de armazenamento mais lento. Como funciona a paginao? A paginao divide a memria fsica em blocos de tamanho fixo, tambm denominados quadros. Um processo que entre em execuo tem suas pginas carregadas em quadros disponveis na memria. Observe que o armazenamento secundrio (disco) tambm dividido em blocos que possuem tamanho igual aos dos quadros de memria.

49

Sistemas Operacionais Aula 04

O funcionamento pode ser representado pela figura a seguir:

Figura 4.5 Paginao.

Cada endereo gerado dividido em duas partes: um nmero de pgina (p) e um deslocamento de pgina (d). O primeiro utilizado como um ndice para a tabela de pginas; o segundo utilizado como deslocamento. A tabela de pginas contm o endereo denominado endereo de base de cada pgina. O endereo de base combinado ao deslocamento para definir o endereo na memria, em um sistema semelhante ao descrito anteriormente, no item Alocao de Memria (R+0 e R+M). Os tamanhos de pgina, sempre uma potncia de 2, variam entre 512 bytes e 16 MB, conforme a arquitetura do computador utilizado. Em geral, o suporte paginao feito por hardware; entretanto, em alguns sistemas operacionais, em especial os mais novos de 64 bits, possuem parte da paginao implementada em software. Considere o seguinte exemplo terico (Figura 4.6):

Tamanho de pgina 4 bytes. Memria fsica 32 bytes (equivalente a 8 pginas).

50

Sistemas Operacionais Aula 04

Figura 4.6 Paginao para uma Memria de 32 bytes e Pginas de 4 bytes.

Veja as seguintes situaes: Antes, atente para que:

Os quadros (na memria lgica) esto numerados de 0 (zero) a 3 (trs). Os quadros (na memria fsica) esto numerados de 0 (zero) a 7 (sete). A tabela de pgina efetua a associao entre a posio na memria lgica e memria fsica.

51

Sistemas Operacionais Aula 04

Situao 1 - A pgina 0 (zero) est no quadro 5


Logo, o endereo lgico 0 (zero) est mapeado para o endereo fsico 20 (quadro 5). Ou ento (5x4)+0 = 20. J o endereo lgico 3 (trs) est mapeado para o endereo fsico 23 (quadro 5). Ou ento (5x4)+3 = 23.

Situao 2 - A pgina 1 est no quadro 6


endereo lgico 4 est mapeado para o endereo fsico 24 (quadro 6). Ou ento (6x4)+0 = 24.

Situao 3 - A pgina 2 est no quadro 1


endereo lgico 8 est mapeado para o endereo fsico 4 (quadro 1). Ou ento (1x4)+0 = 4 endereo lgico 9 est mapeado para o endereo fsico 5 (quadro 1). Ou ento (1x4)+1 = 5

Dedique um tempo a compreender o que est colocado nas situaes anteriores. Assim que voc perceber que cada quadro da memria lgica foi colocado em um quadro da memria fsica e que o mapa disso est na tabela de pgina, sinal de que voc est compreendendo o significado de paginao.

Algumas consideraes sobre paginao e fragmentao


No exemplo anterior, foram apresentados exemplos de paginao. Veja que as pginas foram preenchidas completamente. Na prtica podemos ver o que chamado de fragmentao interna. Fragmentao interna significa um processo que dificilmente ocupa completamente todas as pginas alocadas. Por exemplo: um processo que necessita de 102950 bytes; considerando uma pgina de 4096 bytes, seriam necessrias 25 pginas completas e mais 550 bytes, o que significam 26 pginas, sendo que a ltima teria ocupados somente 550 dos 4096 bytes disponveis; logo, na ltima pgina sobram 3546 bytes. Desse modo, um processo pode alocar n pginas + 1 byte, o que significa que o fragmento teria praticamente o tamanho da pgina. Esse raciocnio leva a crer que, quanto menor a pgina, menores os fragmentos. Porm, a tabela de pginas aumentaria, uma vez que a quantidade de pginas a gerenciar aumentaria. Valores razoveis para o tamanho de pgina atual variam de 4KB a 8KB.

52

Sistemas Operacionais Aula 04

Substituio de Pgina
A substituio de pgina consiste em uma tcnica de substituio quando no houver mais nenhuma pgina livre na memria principal. O sistema operacional deve decidir quais pginas devem ser retiradas. Caso as pginas a serem removidas no tenham sofrido alteraes e estejam de acordo com a cpia na memria secundria, elas so ento removidas. Se houve modificaes, estas tm que ser salvas no disco antes de removidas da memria. A identificao de quais pginas foram alteradas feita atravs de um bit que identifica se a pgina sofreu alterao. Duas possibilidades podem ser utilizadas para decidir quais pginas sero removidas: substituio local e substituio global. Na primeira, as pginas escolhidas esto entre as utilizadas pelo processo que necessita de pginas adicionais. Na segunda, as pginas escolhidas podem estar entre todas utilizadas pelo sistema operacional.

Segmentao
A segmentao uma tcnica de gerenciamento de memria em que os blocos de memria possuem tamanhos diferentes. Em geral, essa alocao feita pelo compilador, o qual, a partir do cdigo fonte, decide o que cada bloco ir conter: procedimento, funo, vetor ou pilha. Essa alocao pode ser feita dinamicamente durante a execuo. Isso permite que uma sub-rotina seja modificada, sem a necessidade de se recompilar o programa todo. O mapeamento do endereo similar paginao e utiliza um mapa que identifica os blocos (ou segmentos) da memria virtual com os blocos da memria principal. O sistema operacional mantm ainda uma tabela indicando as reas livres e ocupadas. Havendo um novo bloco a ser carregado, o sistema operacional aloca um espao suficiente para caber os dados em questo. Enquanto na paginao ocorre o problema de fragmentao interna dentro de cada pgina, uma vez que a paginao divide os dados em blocos de tamanho fixo na segmentao se d a fragmentao externa, j que no sobra espao no bloco, uma vez que os blocos so de tamanho varivel.

53

Sistemas Operacionais Aula 04

Porm, podem sobrar espaos na memria principal e estes podem no ser suficientes para alocar um novo processo. necessrio, ento, realocar os segmentos na memria, com a finalidade de reunir os vrios pequenos espaos, o que pode vir a servir para algum outro bloco a ser carregado. A segmentao permite ainda o compartilhamento de dados da memria, pois permite que mais de um processo aponte para um mesmo segmento na memria.

Nesta aula, voc estudou como o sistema operacional efetua o gerenciamento da memria. Foram abordados os conceitos mais importantes relativos ao tema, entre eles: swapping, fragmentao, memria virtual, paginao e segmentao. Cada um desses recursos permite ao sistema operacional um melhor uso dos recursos da mquina, ou seja, tanto da memria principal, quanto da memria secundria. Assim, procura-se fazer o melhor uso de tcnicas que permitam que se utilize mais memria do que a fisicamente existente em sua memria principal, permitindo aos sistemas operacionais atuais lidarem com uma grande quantidade de processos em execuo simultaneamente na mquina. At aqui, voc j estudou, alm dos conceitos bsicos, a gerncia de processos e de memria, todos eles de fundamental importncia no aprendizado de sistemas operacionais. Na prxima aula, sero vistos tpicos relativos ao gerenciamento de dispositivos de entrada e sada. Ento, voc poder relembrar alguns dos conceitos da disciplina de Arquitetura de Computadores, que serviro de base para o estudo dos sistemas de arquivos. Por fim, voc passar aos estudos de caso em dois sistemas operacionais muitos utilizados atualmente.
Aplicando o Conhecimento
1. Qual a funo da gerncia de memria? 2. O que swapping? Explique swap out e swap in. 3. O que endereo fsico e endereo lgico? 4. O que overlay? 5. O que fragmentao interna e fragmentao externa? 6. O que memria virtual? 7. O que paginao? Qual a finalidade em utiliz-la?

54

Sistemas Operacionais Aula 04

Para Refletir
Verifique se o sistema operacional utilizado em seu computador utiliza os conceitos apresentados nesta aula. Verifique: a. Se utiliza rea de troca. Se sim, qual o tamanho? b. Se utiliza paginao. Se sim, qual o total de pginas utilizadas? Quanto de espao ocupa?

55

Sistemas Operacionais Aula 05

Aula 05 - Gerncia de E/S


O gerenciamento de dispositivos de entrada e sada (E/S) uma atividade bem importante em um sistema operacional, pois cuida dos aspectos relacionados com os dispositivos de E/S de um modo transparente ao usurio. Oferece, assim, uma interface mais simples para o usurio. Os equipamentos associados ao processo de E/S so os mais diversos possveis, como teclado, mouse, monitor, impressora, pendrive etc. Como voc viu na disciplina de Arquitetura de Computadores, tm caractersticas bem diversas velocidade, formato dos dados porm, so todos muito mais lentos do que o processador e a memria. Assim, o objetivo desta aula fazer voc compreender como o gerenciamento de dispositivos de E/S lida com essas questes, permitindo ao sistema operacional no perder tempo aguardando os dispositivos de E/S e, ao mesmo tempo, lidando com as questes de diversidade entre eles.

Conceitos de Entrada e Sada


O gerenciamento de dispositivos de E/S, em razo de sua complexidade, dividido em camadas. Nas camadas inferiores feito o controle dos dispositivos, enquanto que as camadas superiores oferecem uma interface mais simples para que os usurio ou aplicaes possam interagir com os dispositivos. De outro modo, pode-se raciocinar que as camadas inferiores dependem dos dispositivos que controlam. J as camadas superiores funcionam independentes dos dispositivos. Cabe ao sistema operacional facilitar o acesso a esses dispositivos. So utilizadas para isso rotinas de entrada e sada, que permitem aos usurios e aplicaes efetuar as operaes de entrada e sada independentemente do dispositivo que est sendo acessado.

56

Sistemas Operacionais Aula 05

Figura 5.1 Gerenciamento de Dispositivos.


Assim, o usurio ou aplicativo pode ler ou gravar, em um dado dispositivo por exemplo um disco, um CDROM ou pendrive sem se preocupar com detalhes do dispositivo, como o local no disco em que isso ser feito ou informaes de formatao (trilha, setor). Tm-se ento operaes de E/S que, sendo independentes do dispositivo, podem ser realizadas para qualquer um deles. A essas operaes se d o nome de system calls, ou chamadas de sistema. A figura a seguir mostra como so organizadas as operaes de E/S, desde a aplicao at a chegada ao dispositivo.

57

Sistemas Operacionais Aula 05

Figura 5.2 Operaes de Entrada e Sada.

As chamadas de sistema eliminam a necessidade de incluir no cdigo das aplicaes as instrues para acesso a cada um dos tipos de dispositivos. Cabe, ento, ao sistema operacional lidar com os detalhes associados a cada tipo. Observe a Figura 5.1. Voc perceber elementos independentes do dispositivo, implementados em software e j presentes no sistema operacional. Ver ainda alguns elementos dependentes do dispositivo, sendo alguns implementados em software, outros em hardware, geralmente incorporados ao sistema operacional na instalao desses dispositivos. As operaes de E/S podem ser do tipo sncrona ou assncrona. Na primeira, o processo que solicitou a operao fica aguardando o seu trmino; j na segunda, o processo continua o que estava fazendo enquanto aguarda uma sinalizao de que a operao foi concluda. As operaes relativas ao sistema de arquivos sero vistas na prxima aula, no estudo do sistema de arquivos. Os itens subseqentes device drivers, controladores e dispositivos de E/S sero abordados a seguir.

58

Sistemas Operacionais Aula 05

Subsistema de Entrada e Sada


O subsistema de entrada e sada, tambm denominado de mdulo de entrada e sada, responsvel por algumas atividades genricas, ou comuns, a todos os dispositivos. J as atividades especficas ficam a cargo dos drivers ou device drivers. Entre essas atividades esto: controle de temporizao tem por funo compensar as diferenas de velocidade entre o processador e o dispositivo; interligao do dispositivo ao processador objetiva prover um maior compartilhamento entre os usurios e um mecanismo de proteo; armazenamento temporrio de dados agrupa os dados, em geral lidos byte a byte (ou bit a bit), para serem transferidos em blocos para a memria; deteco de erros mecanismo de controle de acesso ao dispositivo, para torn-lo mais seguro e confivel. Assim, os subsistemas de E/S devem organizar o acesso ao dispositivo. Caso o dispositivo seja compartilhado (exemplo: disco compartilhado) deve organizar o acesso, procurando evitar conflitos durante as etapas de leitura ou escrita, solicitadas por processos diversos. Caso o dispositivo seja de acesso exclusivo (exemplo: impressora) deve prover um mecanismo de ordenao e controle de acesso. Logo, o subsistema de E/S o responsvel por prover um mecanismo de proteo no acesso aos dispositivos, verificando, por exemplo, a permisso de acesso. Cabe ao subsistema padronizar a comunicao com os device drivers, ou programas, que acompanham os dispositivos e so necessrios para que funcionem corretamente. No item a seguir, voc obter mais informaes sobre eles.

Drivers
Voc j deve ter, em algum momento, ouvido falar de drivers. Isso ocorre, geralmente, quando vamos conectar um novo perifrico ao computador. Entre esses equipamentos esto: impressora; monitor; placa (de rede, vdeo ou outra); gravador de CD ou DVD. Mas o que so drivers? Drivers so programas que tm por funo possibilitar a comunicao entre o subsistema de E/S e o controlador do dispositivo. A figura a seguir ilustra a relao entre eles.

59

Sistemas Operacionais Aula 05

Figura 5.3 Interao entre Subsistema de E/S, Drivers e Controladores.

Cabe aos drivers receber comandos de aes destinadas aos dispositivos e solicitaes de leitura ou escrita, convertendo-os em comandos especficos a serem executados pelo controlador do dispositivo.

Figura 5.4 Driver de Disco.

60

Sistemas Operacionais Aula 05

Um driver especfico para um tipo de dispositivo ou dispositivos semelhantes. Por exemplo: podemos ter um driver para controlar o vdeo, outro para uma unidade de CDROM, outro para uma determinada impressora ou grupo de impressoras similares. A seqncia de funcionamento comea pelo processo, que encaminha a solicitao ao subsistema de E/S. A seguir, o driver envia a instruo especfica ao controlador do dispositivo, que finalmente coordena seu funcionamento. Considere que o dispositivo controlado seja um disco. Cabe ao driver receber do subsistema de E/S a solicitao de leitura de um bloco. A seguir, o driver passa ao controlador a informao sobre qual disco, cilindro, trilha e setor. Nesse instante o processo ou a thread associada, fica aguardando a interrupo que indica que a operao foi executada ou, na ocorrncia de falha, esta informada ao subsistema de E/S. Como se viu na Figura 5.1, grande a integrao entre os drivers e o kernel (ncleo) do sistema operacional. Desse modo, muitos drivers depois de instalados solicitam que o sistema operacional seja reiniciado.

Controladores
Os controladores de dispositivos so elementos pertencentes ao hardware da mquina e so responsveis por receber a informao do driver e, em seguida, operar diretamente o dispositivo. Possuem memria e registradores e, ao receberem as instrues, liberam o processador enquanto efetuam a transferncia dos dados, informando ao processador (processo), por meio de uma interrupo, que a operao foi concluda. Essa etapa necessria para liberar o processador, que tem que ficar aguardando a transferncia dos dados, pois, como vimos, o processador muito mais rpido do que os dispositivos de E/S. Um dos elementos presentes nos controladores que possibilita essa ao o Acesso Direto Memria (DMA Direct Memory Access).

61

Sistemas Operacionais Aula 05

Figura 5.5 Memria, Controladores e Dispositivos.

Dispositivos de Entrada e Sada


Os dispositivos, como j se disse, podem ser de entrada ou sada. Temos dispositivos que so unicamente de entrada (teclado e mouse), os que so de sada (como monitor e impressora) e, ainda, os que realizam as duas funes como uma unidade de leitura e gravao de CDROM. Outra classificao importante se so dispositivos de bloco (block devices) ou de caracteres (character devices). Os primeiros se caracterizam pela transferncia da informao em unidades denominadas blocos; o caso dos discos rgidos. Nessas situaes, a informao est organizada no dispositivo (estruturada), podendo, portanto, ser localizada a partir de um endereo. J nos de caracteres, a informao transmitida em unidades menores, (caracteres). Essas informaes no esto organizadas (no estruturadas), no sendo, portanto, endereadas.

Discos
Os discos rgidos, tambm denominados de hard disk drive ou mesmo winchester, so em muitos casos os dispositivos mais acessados. Isso ocorre por duas razes. Uma delas o armazenamento dos dados dos usurios e programas em virtude de seu carter no voltil. Outro motivo pelo qual bastante acessado em alguns quando est atuando como rea de troca (swapping). Essas duas atuaes geram uma grande quantidade de operaes de leitura e escrita. So dispositivos estruturados, possuindo cilindros, trilhas e setores, como voc deve se lembrar de ter estudado na disciplina Arquitetura de Computadores.

62

Sistemas Operacionais Aula 05

Nesta aula, voc pde estudar a atuao do gerenciamento de entrada e sada em um computador. Foram abordados inicialmente alguns conceitos bsicos sobre o assunto. Em seguida, voc teve acesso organizao em camadas, onde pde visualizar que alguns recursos so implementados em software, enquanto outros so implementados em hardware. Pde perceber tambm que, na organizao em camadas, os nveis mais elevados tm funes genricas, enquanto os nveis mais baixos tm funes so mais especficas. As etapas, para que ocorra uma operao de leitura ou escrita, iniciam-se pelo processo que as solicita, passam ao subsistema de E/S, que organiza o acesso ao dispositivo e padroniza a comunicao com os device drivers. Estes, por sua vez, enviam instrues ao controlador do dispositivo. Finalmente o controlador manobra o dispositivo para que a operao de leitura ou escrita seja completada. Nos tpicos seguintes, voc estudou, com um pouco mais de detalhes, o princpio de funcionamento dos drivers e dos controladores. Por fim, estudou a classificao dos dispositivos em dispositivos de bloco ou de caractere. Na prxima aula, voc ir estudar os sistemas de arquivos, tendo a oportunidade de compreender o princpio de funcionamento e sua aplicao prtica. Em seguida, sero abordados os estudos de caso de dois importantes sistemas operacionais: o Windows e o Linux.
Aplicando o Conhecimento
1. Quais as funes do gerenciamento de E/S? 2. O que diferencia os dispositivos de E/S da memria e processador? 3. O gerenciamento de dispositivos de E/S feito em camadas. Quais so essas camadas? Descreva brevemente cada uma delas. 4. Qual a funo do subsistema de E/S? 5. O que driver? Como interage com os controladores do dispositivo? 6. O que acesso direto memria (DMA)? Qual sua finalidade? 7. Quais os tipos de dispositivos de E/S?

Para Refletir
Seria possvel a utilizao dos dispositivos de E/S sem o uso de drivers ou controladores? Como seria o funcionamento nessa situao?

63

Sistemas Operacionais Aula 06

Aula 06 - Sistemas de Arquivos


O sistema de arquivos um dos componentes do sistema operacional com que interagimos; ele que nos d a viso de parties, pastas e arquivos que temos ao manipular um sistema operacional. Desse modo, ao criar uma pasta, inserir arquivos e mov-los de uma pasta a outra, voc est na verdade se relacionando com o sistema de arquivos. O sistema de arquivos cuida ainda de outras tarefas no to visveis ao usurio, como cuidar do relacionamento das aplicaes com o sistema de arquivos lgico, com o sistema de arquivos bsico, com o controle de E/S (entrada/sada) e com os dispositivos. Entre os dispositivos, podemos mencionar os discos rgidos, leitores/gravadores de CDROM/DVD, pendrive etc. O objetivo desta aula que voc veja como estas atividades so manipuladas, alm dos diferentes tipos de sistemas de arquivos existentes nos sistemas operacionais atuais.
Ao utilizar um computador o usurio manipula, atravs do sistema operacional, seus programas e dados, armazenados na memria secundria: disco rgido, tico, CD, DVD, disquete e pendrive, entre outros. Para que isso seja feito adequadamente, o sistema operacional implementa uma viso lgica que mapeia os dados armazenados nesses dispositivos fsicos. Assim, esta aula est estruturada em duas partes. Na primeira, voc ver como esse mapeamento lgico e como acessado e manipulado. Na segunda, voc ver como essa interao em um nvel mais bsico do computador. Tenha em mente que os dados esto armazenados, considerando um disco rgido, em cilindros, trilhas e setores. Voc no sabe onde esses dados esto fisicamente no disco. O que voc e todos os usurios desejam manipular seus arquivos e pastas conforme voc os organizou em sua rea de trabalho no computador. Cabe, ento, ao sistema operacional fazer esse mapeamento lgico para o que, fisicamente, ocorre no disco de uma maneira transparente para o usurio.

Viso do Usurio
Nesse item, comearemos pela viso que o usurio tem do sistema de arquivos e como interage com ele, passando pelos conceitos de arquivos, diretrios, montagem de um sistema de arquivos e

compartilhamento.

64

Sistemas Operacionais Aula 06

Conceitos de Arquivo
Um arquivo a representao, para o usurio, de um grupo de bytes (ou bits) relacionados de alguma forma. Desse modo, um arquivo pode ser um conjunto de dados alfanumricos que tem um significado para seu criador ou usurio. Como exemplo de arquivo, temos: um cdigo fonte de um programa; um programa executvel; um texto; uma planilha; uma gravao de som ou udio; animaes etc. Desse modo, tudo que temos armazenado no computador um arquivo. Assim, um arquivo um arquivo, um programa um arquivo, uma imagem um arquivo e assim por diante. Um arquivo possui uma estrutura definida, sobre a qual temos vrios atributos e podemos realizar vrias atividades. Entre os atributos de um arquivo temos: nome identifica o arquivo para o usurio; identificador identifica o arquivo dentro do sistema de arquivos; tipo informao para os sistemas de arquivos que identificam tipos; local um ponteiro que indica uma posio relativa do arquivo; tamanho tamanho do arquivo, que pode ser em bytes, palavras ou blocos; proteo informao de controle de acesso; data e hora informao de data e hora de criao e /ou ltimo acesso. As atividades que podemos realizar sobre um arquivo envolvem: criar, escrever, ler, alterar, movimentar e excluir.

Tipos de arquivo
Os sistemas operacionais, de modo geral, classificam os arquivos tambm por tipo. Assim, temos arquivos que so executveis, enquanto outros so reconhecidos como bibliotecas pelo sistema operacional, alm dos vrios tipos de arquivos manipulados pelo usurio e seus programas. Considere os seguintes exemplos de extenses para os arquivos no ambiente Windows: Cdigo fonte - c; .java. Objeto - obj; .o. Executvel - .exe; .com; .bin. Lote - .bat; .sh. Texto - .txt; .doc; rtf. Biblioteca - .lib; .dll. Multimdia - .mpeg; .rm. Compresso - .tar; .zip.

Considere que a forma como os tipos de arquivos so manipulados variam entre os sistemas operacionais. No sistema operacional Linux, por exemplo, as extenses no so obrigatrias.

65

Sistemas Operacionais Aula 06

Estrutura de Diretrio
O sistema de arquivos em um computador pode conter centenas de pastas, com dezenas, centenas ou mesmo milhares de arquivos em cada uma. essencial que haja uma forma de organiz-los. Inicialmente, temos o disco (rgido) utilizado pelo computador. Nesse disco, temos pelo menos uma partio. Cada partio organizada em uma estrutura que se chama diretrio. Assim, para cada diretrio, temos as pastas, com seus arquivos dentro de cada uma. Considere, ainda, que um diretrio possa conter vrios nveis.

Figura 6.1 Organizao de Pastas no Sistema Operacional Linux.

A essa estrutura podem ser aplicadas permisses de acesso. Pode-se permitir que determinados usurios possam acessar somente algumas pastas. Outra forma de restrio quanto s operaes que se pode fazer sobre determinados arquivos. Entre essas operaes esto: a leitura, modificao ou execuo do arquivo.

Mtodos de Acesso
Os mtodos de acesso aos dados podem ser de dois tipos: seqencial e direto. Nos primeiros sistemas computacionais os dados eram armazenados em fitas. O que fazia com que o acesso fosse seqencial, ou seja, na ordem em que foram escritos. Com a utilizao de discos rgidos, que so dispositivos estruturados, os dados podem ser acessados diretamente. Logo, no acesso direto os dados podem ser acessados, como leitura ou escrita, em qualquer ordem, independentemente da posio em que se encontram no disco rgido. Lembre-se de que isso s possvel em dispositivos estruturados, ou seja, os registros no disco possuem tamanho fixo. O acesso direto pode contar ainda com o recurso da indexao. Nele, antes de acessar os dados, primeiro pesquisado no arquivo de ndice sua posio, para ento ser feito o acesso direto. O objetivo dessa tcnica permitir um acesso mais rpido.

66

Sistemas Operacionais Aula 06

Montagem
Para que um arquivo possa ser visualizado necessrio que um sistema de arquivos seja montado antes. A montagem consiste em associar um ponto do sistema de arquivos com o dispositivo. Desse modo, o sistema operacional verifica se o dispositivo contm um sistema de arquivos vlido. Consideremos o exemplo do Linux: A unidade de disquete considera a mdia como /dev/df0. Ao montar esse dispositivo, o /dev/fd0 associado a um ponto no sistema de arquivos denominado /media/floppy. Desse modo, o usurio acessa a pasta /media/floppy para visualizar o contedo do disquete. Porm, os dados esto no /dev/fd0. A propsito, o /dev uma pasta que contm todos os dispositivos mapeados pelo sistema (dev = device) e fd0 se refere primeira unidade de disquete da mquina (fd0 = floppy disk 0). Na montagem so consideradas, ainda, as permisses de acesso (leitura, modificao e escrita), conforme se viu no item Proteo.

Compartilhamento
Muitas vezes, um usurio necessita compartilhar arquivos com outros usurios ou mesmo permitir o acesso a sistemas remotos. Assim, o desafio do compartilhamento permitir que os usurios locais e mesmo remotos, possam acessar esses arquivos de acordo com as permisses dadas. Deve-se, ainda, evitar os conflitos associados manipulao de um mesmo arquivo por vrios usurios ao mesmo tempo. No Linux so considerados fatores como o proprietrio do arquivo e grupos de usurios. Podem-se estabelecer critrios baseados no proprietrio (usurio) para outros usurios do mesmo grupo e demais usurios. No Windows, h os identificadores de usurio (user ID) ou ID de segurana (Security ID SID). Outro exemplo de compartilhamento o NFS, utilizado em sistemas Linux.

Proteo
O controle do acesso aos arquivos visa permitir que somente usurios autorizados tenham acesso ao arquivo. Esse controle pode ser implementado de duas maneiras: listas de controle de acesso; controle em cada arquivo.

67

Sistemas Operacionais Aula 06

O controle feito atravs de listas de controle de acesso, ou ACL (Access Control List), permite a elaborao de uma lista com regras de acesso to sofisticadas quanto se deseje, o que, medida que o tempo passa, pode se tornar ainda mais complicado. As tcnicas mais recentes consideram trs fatores: proprietrio, grupo e outros. Assim, todo o controle de acesso, seja de uma pasta ou dos arquivos, baseado nesses fatores. A cada um deles, podem-se associar trs possveis permisses: leitura, escrita e execuo. Logo, ao proprietrio, outros usurios do mesmo grupo ou demais usurios pode-se dar permisses diferentes de leitura, escrita ou execuo. A figura a seguir ilustra o exposto.

Figura 6.2 Permisses em um Sistema de Arquivo Linux.

Veja os seguintes exemplos, presentes em ambientes Linux: 1. Caso: Proprietrio (rwx), Grupo (rwx), Outros (rwx): rwxrwxrwx 2. Caso: Proprietrio (rwx), Grupo (r-x), Outros (--x): rwxrw---x 3. Caso: Proprietrio (rwx), Grupo (--x), Outros (---): rwx---x---

Considere que: R (read ou leitura), W (write ou escrita) e X (execute ou execuo). Assim, no primeiro caso temos permisso total (leitura, escrita e execuo) a todos os usurios do sistema, seja o proprietrio, outros usurios (do mesmo grupo do proprietrio) ou demais usurios. No segundo caso, o proprietrio tem permisso total, enquanto os outros do mesmo grupo podem ler e executar e, os demais, somente executar. No terceiro caso, o proprietrio pode tudo, outros do mesmo grupo podem executar e os demais no podem fazer nada.

68

Sistemas Operacionais Aula 06

Viso do Implementador
Neste item voc ver como o sistema de arquivos relacionado ao dispositivo de armazenamento secundrio (disco). Abordaremos: as estruturas do disco e alguns aspectos de particionamento e montagem.

Estrutura do Sistema de Arquivos


Como dissemos, os dados esto armazenados em dispositivo estruturado, no caso, um disco rgido que possui cilindros, trilhas e setores. Voc j viu, inclusive, quando estudou arquitetura de computadores, que os dados podem ser lidos em blocos a partir do disco rgido, podendo ser modificados e salvos no mesmo lugar. Viu ainda que o acesso aos dados direto, ou seja, o dispositivo manipulado de modo a permitir que esses dados sejam acessados diretamente de onde estejam, atravs do deslocamento (giro) do disco e da movimentao das cabeas de leitura do disco. Isso permite que os dados sejam recuperados a partir de cada bloco e seus setores. Para efetuar essas operaes corretamente, duas aes devem ser implementadas pelo sistema de arquivos: definir como o sistema de arquivos aparecer para o usurio; mapear o sistema de arquivos lgico para o armazenamento no dispositivo fsico. O sistema de arquivos ento implementado em camadas, como mostra a figura.

Figura 6.3 Sistema de Arquivos em Camadas.

69

Sistemas Operacionais Aula 06

No nvel mais baixo, o controle de E/S manipula o dispositivo atravs dos drivers. Os drivers informam ao controlador a posio no dispositivo e aes que devem ser efetuadas para acesso aos dados. No sistema de arquivos bsico, so emitidos comandos genricos, independentes de dispositivos, os quais sero interpretados pelo driver de dispositivo, que tomar as aes apropriadas. O mdulo de organizao de arquivo relaciona os arquivos, blocos lgicos e blocos fsicos; pode traduzir os endereos de bloco lgico em endereos de bloco fsico. Esse mdulo controla ainda os espaos livres e pode alocar esses blocos, quando necessrio. J o sistema de arquivos lgico organiza os metadados. Os metadados so as informaes sobre os dados; incluem a estrutura do sistema de arquivos, mas no os dados. Essas informaes sobre propriedade, permisses e local do arquivo so armazenadas no denominado bloco de controle de arquivo (file control block).

Figura 6.4 Bloco de Controle de um Arquivo.

Existem atualmente muitos sistemas de arquivos em uso pelos sistemas operacionais. Entre eles, convm citar: FAT, FAT32, NTFS, EXT2, EXT3, ReiserFS, JFS etc. Os sistemas de arquivos FAT, FAT32 e NTFS so utilizados pelos sistemas operacionais Windows, o qual, em suas verses mais recentes, privilegia o uso do NTFS por questes de segurana e desempenho. Os sistemas operacionais EXT2, EXT3 e ReiserFS so utilizados nas vrias distribuies Linux. Anteriormente a preferncia era pelo EXT2, todavia, atualmente, pelo EXT3 que, por utilizar um recurso denominado journaling, permite uma melhor recuperao caso ocorra alguma corrupo nos arquivos (quando ocorre, por exemplo, desligamento brusco de uma mquina). Algumas distribuies utilizam ReiserFS, que tem uma maior estabilidade no controle dos metadados, caso ocorram problemas de corrupo no sistema de arquivos.

70

Sistemas Operacionais Aula 06

O JFS foi desenvolvido pela IBM e disponibilizado aos sistemas Unix/Linux. Logo, ter uma estrutura em camadas permite aos diversos sistemas operacionais utilizar seus prprios sistemas de arquivos, com as suas particularidades associadas organizao e controle de acesso.

Implementao
Para a utilizao de um sistema de arquivos so necessrias algumas estruturas no disco. Essas estruturas armazenam informaes relevantes para que o sistema consiga iniciar-se e, em seguida, comear a funcionar. Um primeiro elemento que deve existir o bloco de controle de boot (boot control block), o qual contm informaes necessrias ao processo de inicializao (boot) da mquina. Essas informaes costumam estar no primeiro bloco da primeira partio do disco, o que, no NTFS, denominado de partition boot sector. Outro elemento o bloco de controle da partio (partition control block) e contm as informaes sobre a quantidade de blocos, o tamanho de cada bloco e a quantidade de blocos livres, alm de ponteiros para os blocos de controle de arquivos. No NTFS denominado de master file table. Tem-se ainda, conforme o sistema operacional, outras parties que so utilizadas para armazenar os dados ou auxiliar no processo de boot. Alguns detalhes sero vistos nos estudos de caso do Windows e Linux.

Nesta aula, voc estudou a forma como os sistemas operacionais mapeiam os dados presentes nos dispositivos de armazenamento secundrios (discos) e os organizam e apresentam aos usurios e aplicaes. Viu que os dados presentes nos dispositivos na forma de blocos so apresentados sob a forma de arquivos, os quais possuem vrios atributos, como: nome, tipo, tamanho e informaes de data e hora. Viu ainda que esses arquivos esto organizados em diretrios. Assim, um diretrio contm pastas e, dentro delas, arquivos. Essa organizao facilita ainda o controle de acesso a essas pastas e arquivos, sendo possvel controlar no somente quem pode acess-los, mas quem pode manipul-los (ler, escrever ou executar). Voc teve acesso ainda a informaes sobre como feito esse mapeamento pelo ponto de vista do sistema operacional que, em ltima instncia, efetua uma apresentao lgica dos dados fisicamente presente nos dispositivos, como blocos contendo bytes.

71

Sistemas Operacionais Aula 06

Por ltimo, viu que um sistema operacional precisa utilizar estruturas que informam ao computador onde esto as informaes de que precisa para, aps o processo de boot, entregar o controle ao sistema operacional (bloco de controle de boot), alm do bloco de controle de partio (com informaes sobre esta). Essas informaes, em conjunto com os itens a serem abordados nos estudos de caso do Windows e Linux, permitiro que voc tenha uma viso bem abrangente sobre o que so e como funcionam os sistemas operacionais atuais. Esse estudo permitir que voc consiga determinar os pontos fortes e fracos de cada sistema, o que ajudar voc nos processos decisrios de que ir participar.
Aplicando o Conhecimento
1. O que um arquivo? 2. Quais os atributos de um arquivo? 3. Quais tipos de arquivo voc mais utiliza? 4. O que um sistema de arquivos? 5. O que a montagem de um sistema de arquivos? 6. Como feito o controle de acesso aos arquivos em um sistema operacional?

Para Refletir
Considerando o computador que voc utiliza normalmente, pesquise: a. Quantas parties existem no disco rgido? b. Qual o sistema de arquivos em cada uma das parties? c. Voc concorda que o sistema de arquivos utilizado em cada partio o mais adequado ao seu uso? Quais as vantagens e limitaes?

72

Sistemas Operacionais Aula 07

Aula 07 - Estudo de Caso (Linux)


O GNU/Linux ou simplesmente Linux um sistema operacional amplamente utilizado atualmente. Est presente em um grande nmero de empresas onde o sistema operacional utilizado em servidores com as mais diversas funes. Possui vrios aspectos que atraem a ateno de usurios e administradores em todo o mundo, pelo fato de ser um sistema operacional de cdigo aberto (open-source) e livre (free). O termo open-source vem do fato de que todo o cdigo fonte utilizado est disponvel. O segundo termo, free, no quer dizer grtis, sendo seu significado correto livre, permitindo ao usurio, inclusive, alterar o sistema, se julgar conveniente. Esses fatores, aliados s caractersticas de segurana, estabilidade e desempenho, tm feito com que a cada dia mais usurios o utilizem em suas mquinas sejam elas computadores, servidores ou mesmo dispositivos mveis como celulares. Nesta aula, voc ver algumas das caractersticas desse sistema operacional, o que, sem dvida, ir apoilo na deciso sobre onde e como poder ser mais bem aplicado.

Histrico do Linux
O Linux surgiu em 1991, quando o estudante finlands Linus Torvalds o escreveu. Foi baseado no GNU criado em 1984 por Richard Stallman. Consistia inicialmente de um pequeno kernel para processadores Intel 80386, um processador de 32 bits criado pela Intel. Segundo Linus, era preciso muito mais do que esse pequeno kernel, que controlava os recursos do sistema e interagia com o hardware. O fato de ter sido disponibilizado na Internet desde o comeo fez com que a colaborao de usurios do mundo inteiro o levasse, em relativamente pouco tempo, a um sistema estvel e confivel de ampla utilizao.

Viso Geral do Linux


O Linux um sistema operacional multiusurio e multitarefa com suporte a multiprocessamento. Est disponvel para vrias arquiteturas, desde arquiteturas x86, at arquiteturas Alpha, Sparc e PowerPC.

73

Sistemas Operacionais Aula 07

Entre

suas

principais

caractersticas,

podemos

citar:

multitarefa;

bibliotecas

compartilhadas;

carregamento de mdulos sob demanda; gerenciamento completo de memria; utilizao de memria virtual; suporte a TCP/IP; suporte a consoles virtuais.

Arquitetura
A arquitetura do Linux composta de camadas que vo desde as aplicaes do usurio ao hardware, o que pode ser visualizado na figura a seguir.

Figura 7.1 Arquitetura em Camadas do Linux.

O usurio e as aplicaes interagem com o kernel por meio de um shell. por meio desse shell que o usurio e as aplicaes enviam solicitaes ao kernel. Diferentemente de outros sistemas operacionais, o kernel do Linux no libera o acesso ao hardware para as aplicaes; ele mesmo faz o acesso e controle, encaminhando os resultados das operaes a quem as solicitou. , portanto, uma garantia de segurana extra. Cabe, ento, ao kernel efetuar o gerenciamento de memria e servir de intermedirio no acesso ao hardware.

Figura 7.2 Interao Usurio e Shell.

74

Sistemas Operacionais Aula 07

O Kernel do Linux
O Kernel do Linux foi lanado em 1991, em sua verso 0.01. Consistia em 9300 linhas de cdigo C e 950 de linguagem de montagem. Implantava processos Unix em espaos de endereo protegidos e inclua um sistema bsico de memria virtual. Porm, o sistema de arquivos utilizado era do Minix, no qual tambm se baseava. A verso 1.0, lanada em 1994, possua 16.5000 linhas de cdigo, contando inclusive com um novo sistema de arquivos. Em 1996, foi lanada a verso 2.0, a partir da qual o Linux ganhou o mercado. A essa altura, possua 47.0000 linhas de cdigo e 8.000 linhas de cdigo de montagem. Inclua melhorias no desempenho do TCP/IP, suporte a threads internas do kernel e tratamento de dependncias entre mdulos carregveis, alm de carregamento automtico de mdulos sob demanda. Na verso 2.2 foi melhorado o tratamento de sinais e de interrupes, alm de operaes de entrada e sada com bloqueios mais confiveis. O kernel do Linux possui a capacidade de carregar e descarregar da memria partes do kernel (mdulos), conforme a demanda. A utilizao de mdulos no kernel um aspecto altamente positivo no Linux. Em geral, sempre desejvel deixar o kernel mais enxuto e compacto. Desse modo, tudo o que no for absolutamente essencial e de uso intensivo pode ficar em mdulos. Um exemplo clssico quando h necessidade de utilizao de um novo driver para reconhecimento de um dispositivo recm incorporado. O driver pode ser incorporado ao sistema na forma de um mdulo. O kernel possui ainda, como recursos, em relao aos mdulos: gerenciamento de mdulos permite aos mdulos carregados na memria conversarem com o kernel; registro de driver permite aos mdulos informarem ao kernel sobre um novo driver disponvel; mecanismo de soluo de conflito permite que drivers de diferentes dispositivos reservem recursos de hardware sem a ocorrncia de conflitos.

Distribuies Linux
A utilizao de distribuies a forma mais prtica de se obter e instalar um sistema operacional Linux. Elas consistem em sistema operacional bsico, utilitrios extras, programas de uso geral, sutes de escritrio (planilhas, editor de texto etc.), navegadores web, jogos e outros. Podem-se considerar trs componentes principais em uma distribuio Linux: o kernel mantm todas as abstraes do sistema operacional, inclusive a manipulao de processos, threads e memria virtual; as bibliotecas do sistema funes que permitem s aplicaes interagirem com o kernel; os utilitrios

75

Sistemas Operacionais Aula 07

do sistema utilitrios de uso geral dentro do sistema, para gerenciamento e configurao de servios, incluindo os daemons. Uma distribuio obtm o kernel original e, a partir dele, efetua uma recompilao, ajustando o que julgar necessrio, seja por questo de desempenho para algum componente especfico ou mesmo para adicionar suporte a outros. A partir da, adiciona os programas mencionados anteriormente, incluindo ainda um instalador que facilite a vida do usurio. Existem atualmente centenas de distribuies disponveis para download. Algumas com instalao mais amigvel, outras com finalidades bem especficas, como as dedicadas para dispositivos mveis. Entre as distribuies para uso geral, em computadores e servidores, podemos citar: Red Hat Fedora Debian SuSE OpenSuSE Mandriva Slackware

Se voc novato na utilizao do Linux, qualquer uma dessas distribuies pode ser utilizada, pois so de fcil instalao e uso, exceto o slackware, que apresenta uma dificuldade maior de instalao e configurao em virtude de sua proposta de ser um sistema bem enxuto e estvel.

Interface grfica
Ao contrrio de outos sistemas operacionais, o Linux oferece algumas opes em termos de interface grfica. As mais comuns so KDE e Gnome. Existem ainda opes para computadores com pouca memria, tal como o XFCE.

Gerenciamento de Processos
No Linux, cada processo em execuo uma instncia de um programa. A criao de novos processos no Linux baseada na chamada de sistema fork. Atravs dessa chamada um processo (pai) cria outro processo (filho). Esse novo processo possui um espao de memria prprio e tambm um identificador nico (PID). O processo associado ainda ao usurio que o criou, o que d ao processo certas permisses e privilgios.

76

Sistemas Operacionais Aula 07

Figura 7.3 Criao de Processos.

Ambiente do processo
Quando um processo filho criado, este herda do pai um ambiente. Todavia, na chamada de sistema execve o processo passa as variveis de ambiente que possui ao novo programa. Cabe ento ao kernel passar essas variveis de ambiente ao programa seguinte. Com isso, o ambiente ajustado a cada processo e no ao sistema operacional como um todo. Pode-se ento estabelecer configuraes personalizadas e restries de segurana para cada usurio ou processo em execuo no sistema.

Processos e threads
Cada processo em execuo possui seu prprio espao de endereamento, enquanto duas threads dentro de um mesmo processo compartilham o espao de endereos. Assim, qualquer modificao efetuada por uma thread ser percebida pelas outras threads presentes no mesmo processo. No Linux utilizada a mesma representao para processos e threads. A diferena consiste em que um thread um processo que compartilha o espao de endereamento com o processo pai. A chamada fork cria um novo processo com seu prprio contexto. Enquanto a chamada clone cria um novo processo que compartilha as estruturas de dados do processo pai, ou seja, uma thread.

Gerenciamento de Memria
O gerenciamento de memria no Linux possui duas partes: memria fsica e memria virtual. No gerenciamento de memria fsica feita a alocao e liberao, seja de pginas, grupo de pginas ou blocos de memria. No gerenciamento de memria virtual, esta mapeada no espao de endereos dos processos em execuo. Deve manter os espaos de endereos para cada processo, criando pginas sob demanda. No

77

Sistemas Operacionais Aula 07

Linux, esse gerenciamento feito sob duas vises, como um conjunto de pginas separadas ou como um conjunto de pginas. Como um conjunto de pginas separadas a viso lgica, descreve instrues do sistema de memria virtual em relao ao esquema de endereos. Consiste em um subconjunto contnuo do espao de endereos, alinhado por pgina. J o conjunto de pginas se refere a uma viso fsica. Possui as tabelas de pginas do hardware associadas ao processo.

Swapping e paginao
O Linux implementa a rea de troca (swapping) transferindo pginas da memria principal para a secundria, quando necessrio. Como vimos em aulas anteriores, isso necessrio sempre que se deseja liberar espao na memria para processos que esto em execuo. A rea de troca possui um algoritmo que define quais pginas sero transferidas para o disco (swap out) e um mecanismo de paginao que resolve quais pginas deve trazer de volta (swap in).

Gerenciamento do Sistema de Arquivos


O sistema de arquivos mais utilizado no Linux o EXT2 ou seu sucessor, o EXT3. O EXT2 pode enderear at 4 Terabytes (TB), quando utilizados blocos de 4 KB. J o EXT3 pode enderear desde 1TB, quando utiliza blocos de 1 KB, at 32 TB, quando utiliza blocos de 8 KB. A principal vantagem desse sistema de arquivos a utilizao de journaling, tcnica em que as atividades no sistema de arquivos so registradas em log, permitindo identificar os arquivos danificados durante uma queda brusca do sistema operacional (crash). O EXT3 possui trs nveis de journaling: journal os metadados e os dados so escritos no log antes de efetivamente escritos; ordered escreve os metadados no log e fora que os dados sejam escritos no sistema de arquivos; writeback escreve somente os metadados no log. O journal acaba escrevendo os dados duas vezes; o sistema mais confivel, porm, o mais lento. O ordered o journaling padro, pois fora o sistema de arquivos a escrever os dados cujos metadados acabaram de ser colocados no log. Desse modo, em caso de crash, os metadados anotados no log referem-se ao que o sistema de arquivos estava fazendo imediatamente antes do crash.

78

Sistemas Operacionais Aula 07

Por fim, o writeback atua de modo semelhante ao ordered. Porm, no h garantias, pois a ordem dos dados no log pode no corresponder exatamente ordem em que as coisas estavam sendo feitas, podendo provocar erros.

Virtual filesystem
O Linux implementa ainda um sistema de arquivos virtual, denominado sistema de arquivos de processo, ou sistema de arquivos proc, em referncia ao diretrio /proc presente na mquina. um sistema de arquivos cujo contedo no est salvo em nenhum diretrio da mquina e calculado sob demanda. Desse modo, se voc for visualizar o contedo de algo no diretrio /proc, saiba que aquele contedo est sendo calculado no momento em que lhe for apresentado, no estando em nenhum arquivo.

Entrada e Sada
O Linux tambm dispe dos dispositivos de bloco e os de caractere, relembrando que os dispositivos de bloco so aqueles em que os dados esto armazenados em estruturas organizadas (por exemplo, em trilhas e setores). Para esse tipo de E/S, a velocidade importante e cabe ao sistema operacional garantir que seja a mais rpida possvel, o que feito por meio do cache de buffer de bloco e pelo gerenciador de requisies. O cache do buffer de bloco atua como um buffer para E/S e como um cache para operaes j efetuadas e completadas. Desse modo, pode agilizar operaes de E/S e utilizar-se de cache para repetir operaes j efetuadas. J o gerenciador de requisies supervisiona a leitura e escrita do buffer no driver do dispositivo. J na comunicao com dispositivos de caracteres, o kernel simplesmente passa a requisio para o dispositivo, no realizando nenhum pr-processamento. A exceo so os dispositivos que implementam terminal (tty). Estes possuem buffers para controle de fluxo. Um terminal tty responsvel por centralizar a entrada e sada de terminal do usurio a ele conectado.

Segurana
O controle de segurana no Linux feito utilizando autenticao e controle de acesso. A autenticao visa garantir que somente se pode acessar o sistema aps provar que se possui direitos para isso. O controle de acesso verifica se um usurio (ou aplicao) tem direito de acessar um objeto (arquivo ou dispositivo).

79

Sistemas Operacionais Aula 07

O controle de acesso feito conforme descrito na aula anterior, ou seja, por controle em cada arquivo. Havendo direitos de usurio, de grupo e dos demais usurios (global). H ainda as permisses de leitura, escrita e execuo que so concedidas a cada um desses trs grupos, para cada arquivo ou pasta.

Nesta aula, voc estudou como o sistema operacional Linux implementa os vrios assuntos estudados ao longo da disciplina, entre eles: a estrutura do sistema operacional; o gerenciamento de processos, de memria, de E/S e do sistema de arquivos. No Aplicando o Conhecimento, voc ter indicaes sobre como testar e verificar alguns tpicos apresentados, tendo ento a oportunidade de compar-los com as atividades da Aula 8 Estudo de Caso Windows.
Aplicando o Conhecimento
Para resoluo destes exerccios necessrio que voc tenha acesso a um computador com sistema operacional Linux. Caso seu computador no utilize Linux voc pode fazer o download de uma verso LiveCD de uma distribuio que voc tenha preferncia. O tamanho do download varia de 40 MB a 650 MB. A vantagem de um LiveCD que voc pode dar o boot no computador com o CD-ROM e utilizar o Linux. Aps remov-lo e reiniciar o computador o sistema operacional original estar intacto. Obs.: Existem algumas distribuies, como a Mandriva, que possuem uma verso para uso em pendrive. Desse modo voc pode utilizar o sistema operacional instalado no pendrive. 1. Utilizando o comando ps, verifique os processos em execuo no computador. Caso voc tenha dvidas quanto sintaxe utilize a ajuda on-line com o comando man os. Voc pode utilizar, por exemplo, ps aux ou ps Ahl, entre outras opes. 2. Acesse o diretrio /proc (diretrio virtual) e verifique os dados sobre o sistema. Para isso, utilize os comandos: Para mudar para o diretrio /proc, digite cd /proc. Para listar o contedo do diretrio, digite ls ou dir. Para visualizar o contedo de um arquivo, digite cat <nome do arquivo>. Obs.: Ao responder s questes 1 e 2 procure verificar sobre como so apresentadas as caractersticas da mquina (processador, memria, perifricos etc). Veja ainda quantos processos esto em execuo. Dedique um tempo a pesquisar o que faz cada um. Uma dica: procure pelo nome deles em http://www.google.com/linux.

Para Refletir
a. Quais os fatores que levam ao grande nmero de usurios e solues baseadas em Linux disponveis atualmente? b. Em seu ambiente de trabalho ou estudo voc j utiliza ou considera utilizar Linux? Por qual razo?

80

Sistemas Operacionais Aula 08

Aula 08 - Estudo de Caso (Windows)


Nesta aula, voc estudar algumas das caractersticas presentes nos sistemas operacionais Windows. Presente em grande parte das empresas e residncias ao redor do mundo, o Windows possui vrios fatores que o tornaram um dos sistemas mais utilizados em computadores pessoais e servidores. O objetivo desta aula possibilitar que voc perceba, nesse sistema operacional, as caractersticas e conceitos estudados durante este curso, tendo ainda a oportunidade de compar-lo com o sistema operacional Linux.

Histrico do Windows
A histria do Windows se confunde com a da empresa que o criou, a Microsoft. Em 1981, a empresa lanou seu primeiro sistema operacional, denominado MS-DOS (Microsoft Disk Operating System), concebido para ser o sistema operacional padro dos computadores IBM PC. O MS-DOS foi criado para atender a computadores pessoais; um sistema operacional 16 bits, monousurio e com acesso por linha de comando. Reunia algumas idias do Unix e do CP/M. Em 1985, foi lanada a primeira verso do MS-DOS que contava com interface grfica, chamada de Windows 3.1. Essas verses foram seguidas pelas verses Windows 95, Windows 98 e Windows ME. Em 1988, em funo das limitaes experimentadas por essas verses, baseadas no MS-DOS, a Microsoft optou por criar um novo sistema operacional. Em 1993, foi lanado o sistema operacional Windows NT, utilizando uma arquitetura de 32 bits, multitarefa, preemptiva, multithread. Suportava ainda memria virtual e mltiplos processadores. Inicialmente, a idia era utilizar no Windows NT a API (Application Program Interface) do OS/2. Porm, durante a etapa de desenvolvimento, resolveu-se que seria utilizada a API 32 bits do Windows. A primeira verso do Windows NT a ser lanada foi o Windows NT 3.1, pois coincidia com o perodo de comercializao do Windows 3.1. Em sua verso 4.0, o Windows NT passou a adotar interface similar do Windows 95. Rotinas da interface com o usurio e de controle da interface grfica foram incorporadas ao kernel do sistema operacional. No NT, foi incorporado ao sistema operacional o servidor Web. Em 2000, foi lanado o Windows 2000, baseado no Windows NT 4, mantendo a arquitetura deste. No Windows 2000 foi incorporado o Active Directory, um servio de diretrio ento baseado no X.500 e depois no LDAP.

81

Sistemas Operacionais Aula 08

Em 2001, foi lanado o Windows XP, oferecido como uma atualizao ao Windows 2000 e uma substituio ao Windows 95 e 98. Todavia, em 2003, foi lanado o Windows 2003, cuja finalidade era suceder o Windows 2000. Incorporando recursos do XP, tinha como objetivo ser o principal produto relacionado a servidores. Em fins de 2007, foi lanado o Windows 2008 RC2 (Release Candidate), verso de avaliao com todos os recursos da verso final. Nela, foram incorporados importantes recursos ao servidor web, alm de recursos de virtualizao e de segurana, esse deve ser o sistema preferencial da Microsoft destinado a servidores. Ainda em 2007, foi lanado o Windows Vista, destinado a computadores pessoais, conta com vrias melhorias em termos de interatividade e recursos grficos.

Viso Geral do Windows


Como vimos, as verses disponveis do Windows XP, Vista, 2003 e 2008, so multitarefa, multithread, suporte a arquiteturas 32 e 64 bits e autenticao Kerberos, estando disponveis somente para processadores Intel compatveis. Entre suas principais caractersticas, podemos citar: escalonamento preemptivo; multiprocessamento simtrico; memria virtual; sistemas de arquivos FAT, FAT32 e NTFS; compresso e criptografia de arquivos, entre outras.

Estrutura do Sistema
A estrutura dos sistemas operacionais Windows envolve algumas similaridades, entre elas, a utilizao de modo kernel e modo usurio, incluindo ainda um subsistema protegido. No so consideradas, neste item e nos prximos, as verses mais antigas do Windows, tais como NT4.0 (e anteriores) e Windows ME (e anteriores). A seguir apresentada uma figura com a arquitetura do Windows 2000.

82

Sistemas Operacionais Aula 08

Figura 8.1 Arquitetura do Sistema Operacional Windows 2000.

Observe a presena do Hardware Abstraction Layer (HAL), uma biblioteca que incorpora o cdigo do sistema dependente do hardware, como endereamento de dispositivos e DMA. Acima do HAL, est o kernel, cuja funo tornar o sistema operacional independente do hardware, alm de controlar o acesso a este. A seguir vem o ncleo executivo, independente do hardware e que gerencia servios diversos. Fazem parte dele: Gerncia de Objetos (GO); Gerncia de Processos e Threads (GPT); Gerncia de Memria Virtual (GMV); Monitor de segurana (MS); Gerncia de Cach (GC); Plug and Play (P&P); Gerncia de Energia; Configurao do Registry (CR); Local Procedure call (LPC); Gerncia de E/S (GES); Drivers de Recursos Grficos - Graphics Device Interface (GDI). Em seguida tm-se as APIs, implementadas com o uso de DLL e do subsistema Win32.

Gerenciamento de Processos
O kernel do Windows a base do sistema operacional. Entre as principais funes esto: o escalonamento de threads; tratamento de interrupo; sincronismo de baixo nvel com processador e recuperao em caso de falta de energia.

83

Sistemas Operacionais Aula 08

O kernel orientado a objetos. Sendo um objeto uma instncia de um tipo de objeto. Um tipo de instncia de objeto um tipo de dado com um conjunto de atributos e mtodos. Cabe ao kernel executar as tarefas no suportadas pelo HAL; o Kernel que efetua as trocas de contexto, escalonamento e o tratamento das interrupes e excees. O kernel utiliza um despachante (dispatcher) que atua como uma base para o executivo e os subsistemas. Entre as funes desse despachante esto: o escalonamento de threads; interrupes de software. O despachante no paginado para fora da memria, nem sua execuo preemptada. Uma thread pode ter seis estados diferentes: pronto pronto para executar; standby thread em estado de pronta e com prioridade mais alta, devendo ser a prxima a executar; em execuo thread executando no processador; em espera; em transio esperando por recursos necessrios execuo; terminada. Pode ainda ser considerado um stimo estado, que o de criao. O Windows utiliza 32 nveis de prioridade. Esses nveis esto divididos em duas faixas: 1-15 (escalonamento de prioridade varivel); 16-31 (escalonamento em tempo real). A prioridade 0 (zero) serve para execuo e uma thread especial, quando no existirem threads prontas para executar.

Figura 8.2 Nveis de Prioridade.

O escalonamento de prioridade varivel uma poltica que implementa escalonamento circular com prioridade. A thread de maior prioridade executada durante a fatia de tempo determinada no sistema.

84

Sistemas Operacionais Aula 08

Aps esse tempo, essa thread preemptada (removida) do processador e retorna para o final de fila de threads com o mesmo nvel de prioridade que ela. No escalonamento em tempo real, adotado o escalonamento por prioridades. As threads em execuo permanecem em execuo pelo tempo que for necessrio. No existe fatia de tempo. O processamento interrompido sempre que surgir um processo com mais prioridade. Nessa faixa (16-31) ficam somente threads do sistema operacional. A possibilidade de utilizar prioridade por tempo compartilhado e por tempo real possibilita uma certa flexibilidade de usos para o sistema operacional.

Gerenciamento de Memria
O Windows utiliza o gerenciamento de memria virtual com paginao. Considere que o gerenciamento de memria lida com processos e no com as threads, uma vez que as threads de um mesmo processo compartilham seu espao de endereamento. O tamanho de pgina varia entre 4 e 64 KB, sendo em geral 4 KB. A figura a seguir ilustra a utilizao do espao de endereamento.

85

Sistemas Operacionais Aula 08

Figura 8.3 Espao de Endereamento Virtual.

Gerenciamento do Sistema de Arquivos


Os sistemas de arquivo suportados pelo Windows so o FAT, o FAT32 e o NTFS, alm dos sistemas de arquivos especficos para CDROM e DVD. O FAT suporta parties de at 2 GB, pouco para os padres atuais. O FAT32 j consegue lidar com at 2 TB. Porm, tambm possui poucos recursos de segurana, alm de um desempenho inferior ao NTFS. O NTFS suporta: RAID 0, RAID 1 e RAID 5; desfragmentao e quotas; criptografia e compresso; proteo de arquivos e pastas por ACL (listas de controle de acesso); nomes de arquivos com at 255 caracteres. O NTFS utiliza volumes, que so parties lgicas de um disco. Cada volume pode representar parte de um disco. A estrutura de um volume feita a partir de um arquivo com 1 Kb, denominado MFT (Master File Table), que possui os metadados do arquivo.

86

Sistemas Operacionais Aula 08

Figura 8.4 Master File Table.

Entrada e Sada
A entrada e sada controlada pela gerncia de entrada e sada (GES). Ela recebe as solicitaes das threads e as repassa aos drivers e ao HAL. A gerncia de E/S oferece suporte a operaes sncronas e assncronas. Os drivers para Windows deve ter suporte a plug and play, mltiplos processadores e gerenciamento de energia. Esse desenvolvimento deve seguir um modelo especificado pela Microsoft e denominado Windows Driver Model (WDM). Devido complexidade para se implementar um driver completo conforme a WDM, utilizado um conceito denominado driver de porta e driver de mini-porta. O primeiro um driver genrico para classes de dispositivos, que suporta operaes padro para aquele tipo de dispositivo. O de mini-porta implementa as funes especficas daquele dispositivo. Convm ressaltar que o Windows utiliza drivers tambm para emular aplicaes MS-DOS e implementar sistemas de arquivos. Por exemplo, o sistema NTFS e FAT tambm so implementados atravs de drivers que recebem as solicitaes da gerncia de E/S e repassam aos drivers de disco.

87

Sistemas Operacionais Aula 08

Segurana
A segurana no Windows implementada pelo monitor de segurana. Com isso, permite a utilizao de um mecanismo padronizado para validar o acesso em tempo de execuo e verificar as condies de auditoria para cada entidade acessvel ao usurio. Sempre que um processo abre o descritor de um objeto, o monitor verifica o token de segurana do processo e a lista de controle de acesso. Desse modo, determinadas operaes podem ser executadas somente por determinados usurios que possuem acesso privilegiado. Os tokens podem permitir ainda que determinados programas tenham tambm acessos restritos, o que evita danos caso executem cdigos maliciosos. J na segurana no sistema de arquivos NTFS, cada arquivo referencia um descritor de segurana que contm um token e uma lista de acesso. Indicando as permisses concedidas aos usurios. Essas permisses podem ser ativadas ou no. A outra parte da segurana implementada pelo WINLOGON. Cabe a ele interceptar o acesso pelas teclas (CRTL-ALT-DEL), alm de montagem de tela de login, de troca de senha e bloqueio da estao de trabalho.

Nesta aula, voc pde visualizar uma srie de caractersticas do Windows. Viu ainda que possui uma srie de diferenas em relao ao Linux. Em essncia, a diferena est na estrutura do sistema operacional, ou seja, na forma como o kernel e demais elementos do sistema operacional lidam com as solicitaes do usurio ou aplicaes. A forma como gerencia os processos outra particularidade do Windows, inclusive com a utilizao de dois nveis de prioridade. No Aplicando o Conhecimento, voc ter a oportunidade de verificar essas caractersticas, podendo compar-las ao que foi visto na aula anterior.

88

Sistemas Operacionais Aula 08

Aplicando o Conhecimento
Para resoluo destes exerccios necessrio que voc tenha acesso a um computador com sistema operacional Windows. Caso seu computador no utilize Windows voc pode fazer o download de uma verso para testes a partir do site da Microsoft. O tamanho do download pode variar entre 650 MB e 4.7 GB. Voc pode alternativamente utilizar as verses disponibilizadas em revistas de computador que podem ser encontradas em bancas de revistas. 1. Quais as configuraes (processador, memria, perifricos) do computador? 2. Quantos processos e threads esto em execuo neste momento em seu computador? 3. Dica: utilize o task manager e as informaes disponveis no painel de controle.

Para Refletir
a. Quais os pontos positivos e negativos do sistema operacional Windows? b. Voc utiliza somente o sistema operacional Windows? Qual a razo?

89

Sistemas Operacionais Referncias Bibliogrficas

Referncias Bibliogrficas
ELZOLT, Phillip G. Optimizing Linux performance. Prentice Hall, 2005. FERREIRA, Rubem E. Linux Guia do administrador do sistema. Novatec, 2003. MACHADO, Francis B. e MAIA, Luiz P. Arquitetura de Sistemas Operacionais. LTC, 2004. Microsoft Technet Homepage. Disponvel em: <http://technet.microsoft.com/pt-br/default.aspx>. SILBERSCHATZ, Abraham. Sistemas Operacionais: conceitos e aplicaes. Elsevier, 2004. SINGHAL, Mukesh. Advanced concepts in Operating Systems: distributed, database, and

multiprocessor operating systems. McGraw Hill, 1994. TANENBAUM, Andrew S. Sistemas Operacionais modernos. Prentice Hall, 2003. The Linux Documentation Project. Disponvel em: <http://tldp.org/>. The Linux Kernel Archives. Disponvel em: <http://www.kernel.org/>. THOMPSON, Marco A. Microsoft Windows 2003 Server administrao de redes. Editora rica, 2003.

90

Sistemas Operacionais Glossrio

Glossrio
A
ACL Lista de Controle de Acesso.

C
CPU Central Processing Unit ou Unidade Central de Processamento, onde o processamento de um computador efetuado. composto basicamente de duas partes: Unidade Lgico Aritmtica (ULA) que efetua clculos aritmticos e lgicos; Unidade de Controle que extrai as instrues da memria, decodifica e as executa, se necessrio, chamando a ULA.

D
Daemons Programas que ficam em execuo permanente em segundo plano (background), aguardando para responder a conexes de rede ou receber requisies de login. DLL Dynamic Link Library Biblioteca de funes executveis ou dados que podem ser utilizadas por uma aplicao Windows. Uma DLL prov uma ou mais funes para os programas ligados esttica ou dinamicamente a ela. DMA Direct Memory Access Componente que permite a transferncia de dados diretamente da memria ao dispositivo de entrada ou sada. Utilizado para tornar mais rpida a transferncia dos dados e para liberar o processador para outras atividades.

J
JVM Java Virtual Machine.

L
LDAP Lightweight Directory Access Protocol Servio de diretrio hierrquico baseado no X.500; porm, mais simples, rpido e com mais recursos.

M
Mainframe Computador de grande porte, capaz de suportar o uso simultneo por centenas ou mesmo milhares de usurios ao mesmo tempo. Utilizado, sobretudo, por governos, grandes empresas e universidades, em razo de seu alto custo.

91

Sistemas Operacionais Glossrio

N
NFS Network File System Servio que efetua a montagem de pastas remotas localmente no computador do usurio. Permite aos usurios acessarem arquivos localizados em mquinas remotas como se estivessem localizados em sua prpria mquina.

P
PDA Personal Digital Assistant. PID Process Identifier Nmero que identifica unicamente um processo em execuo no sistema operacional.

U
UID User Identifier Nmero que identifica o usurio ou processo que criou o processo atual.

X
X.500 Servio de diretrio hierrquico, criado pela ITU-T, com diferentes nveis para cada categoria.

92