• Nenhum resultado encontrado

Fundamentos Em Sistemas Operacionais

N/A
N/A
Protected

Academic year: 2021

Share "Fundamentos Em Sistemas Operacionais"

Copied!
178
0
0

Texto

(1)
(2)

Fundamentos em

Sistemas Operacionais

(3)

Amélia Maria Cerqueira Uchôa Vice-Reitora

Jouberto Uchôa de Mendonça Junior Pró-Reitoria Administrativa - PROAD Ihanmarck Damasceno dos Santos Pró-Reitoria Acadêmica - PROAC Domingos Sávio Alcântara Machado Pró-Reitoria Adjunta de Graduação - PAGR Temisson José dos Santos

Pró-Reitoria Adjunta de Pós-Graduação e Pesquisa - PAPGP

Gilton Kennedy Sousa Fraga Pró-Reitoria Adjunta de Assuntos Comunitários e Extensão - PAACE Jane Luci Ornelas Freire

Gerente do Núcleo de Educação a Distância - Nead Andrea Karla Ferreira Nunes

Coordenadora Pedagógica de Projetos - Nead Lucas Cerqueira do Vale

Coordenador de Tecnologias Educacionais - Nead Equipe de Elaboração e

Produção de Conteúdos Midiáticos: Alexandre Meneses Chagas - Supervisor Ancéjo Santana Resende - Corretor Andira Maltas dos Santos – Diagramadora Claudivan da Silva Santana - Diagramador Edilberto Marcelino da Gama Neto – Diagramador Edivan Santos Guimarães - Diagramador Fábio de Rezende Cardoso - Webdesigner Geová da Silva Borges Junior - Ilustrador Márcia Maria da Silva Santos - Corretora Marina Santana Menezes - Webdesigner Matheus Oliveira dos Santos - Ilustrador Monique Lara Farias Alves - Webdesigner Pedro Antonio Dantas P. Nou - Webdesigner Rebecca Wanderley N. Agra Silva - Designer Rodrigo Otávio Sales Pereira Guedes - Webdesigner Rodrigo Sangiovanni Lima - Assessor

Walmir Oliveira Santos Júnior - Ilustrador Redação:

Núcleo de Educação a Distância - Nead Av. Murilo Dantas, 300 - Farolândi Prédio da Reitoria - Sala 40 CEP: 49.032-490 - Aracaju / SE Tel.: (79) 3218-2186 E-mail: infonead@unit.br Site: www.ead.unit.br Impressão: Gráfi ca Gutemberg Telefone: (79) 3218-2154 E-mail: grafi ca@unit.br Site: www.unit.br Banco de Imagens:

Shutterstock Copyright © Sociedade de Educação Tiradentes

C331f Carvalho, Márcio Rodrigo Elias. Fundamentos em sistemas opera-cionais. / Márcio Rodrigo Elias Carvalho. – Aracaju : UNIT, 2010.

176 p.: il. : 22 cm. Inclui bibliografia.

1. Sistemas operacionais. 2. Informática. I. Universidade Tiradentes – Educação a Distância II. Titulo.

(4)

Prezado(a) estudante,

A modernidade anda cada vez mais atrelada ao tempo, e a educação não pode ficar para trás. Prova disso são as nossas disciplinas on-line, que possibi-litam a você estudar com o maior conforto e comodi-dade possível, sem perder a qualicomodi-dade do conteúdo.

Por meio do nosso programa de disciplinas on-line você pode ter acesso ao conhecimento de forma rápida, prática e eficiente, como deve ser a sua forma de comunicação e interação com o mundo na modernidade. Fóruns on-line, chats, podcasts, livespace, vídeos, MSN, tudo é válido para o seu aprendizado.

Mesmo com tantas opções, a Universidade Tiradentes optou por criar a coleção de livros Série Bibliográfica Unit como mais uma opção de acesso ao conhecimento. Escrita por nossos professores, a obra contém todo o conteúdo da disciplina que você está cursando na modalidade EAD e representa, sobretudo, a nossa preocupação em garantir o seu acesso ao conhecimento, onde quer que você esteja.

Desejo a você bom aprendizado e muito sucesso!

Professor Jouberto Uchôa de Mendonça

(5)
(6)

Parte 1: Princípios e Estruturas de Sistemas

Operacionais

. . .

11

Tema 1: Introdução aos Sistemas Operacionais . . . 13

1.1 História dos Sistemas Operacionais . . . 14

1.2 Tipos de Sistemas Operacionais . . . 23

1.3 Funções dos Sistemas Operacionais . . . .31

1.4 Estruturas do Sistema Operacional . . . 39

Resumo . . . 48

Tema 2: Gerenciamento de Processos . . . 51

2.1 Conceitos Fundamentais de Processos . . . 52

2.2 Tipos de Processos . . . .61

2.3 Comunicação entre Processos . . . 69

2.4 Escalonamento de Processos . . . 79

Resumo . . . 86

Parte 2: Funcionamento de Sistemas Operacionais

. . .

87

Tema 3: Funções essenciais de um Sistema Operacional . . . .89

3.1 Gerência de Múltiplos Processadores . . . .91

3.2 Gerência de Memória . . . 100

3.3 Memória Virtual . . . 110

3.4 Gerência de Dispositivos de Entrada e Saída . . . 120

Resumo . . . .129

Tema 4: Segurança de Sistemas Operacionais . . . 131

4.1 Sistemas de Arquivo . . . .132

4.2 Princípios de Segurança de Sistemas Operacionais . . . 144

4.3 Cases Windows . . . 154

4.4 Cases Linux . . . 164

Resumo . . . .172

(7)
(8)

Ementa

Introdução aos Sistemas Operacionais: História dos Sistemas Operacionais, Tipos de Sistemas Opera-cionais, Funções de Sistemas OperaOpera-cionais, Estruturas de Sistemas Operacionais. Gerenciamento de Proces-sos: Conceitos Fundamentais de Processos, Tipos de Processos, Comunicação entre Processos, Escalona-mento de Processos. Funções Essenciais de um Siste-ma Operacional: Gerência de Múltiplos Processadores, Gerência de Memória, Memória Virtual, Gerência de Dispositivos de Entrada e Saída. Segurança de Sistemas Operacionais: Sistemas de Arquivo, Princípios de Segurança de Sistemas Operacionais, Cases Windows, Cases Linux.

Objetivos

Geral

Levar ao aluno os conceitos básicos sobre os sistemas operacionais de forma a compreender o fun-cionamento lógico de um computador.

Específicos

• Compreender a importância das técnicas de sistemas operacionais nos computadores; • Proporcionar aos alunos conhecimentos

sobre a arquitetura funcional dos sistemas operacionais e suas relações com o proces-samento de dados;

(9)

aplicação de sistemas de operacionais no processo operacional dos computadores e suas estruturas;

• Proporcionar entendimento das aplicabili-dades operacionais dos principais sistemas operacionais existentes.

Orientação para Estudo

A disciplina propõe orientá-lo em seus procedi-mentos de estudo e na produção de trabalhos científi-cos, possibilitando que você desenvolva em seus traba-lhos pesquisas, o rigor metodológico e o espírito crítico necessários ao estudo.

Tendo em vista que a experiência de estudar a distância é algo novo, é importante que você observe algumas orientações:

• Cuide do seu tempo de estudo! Defina um horário regular para acessar todo o conteúdo da sua disciplina disponível neste material impresso e no Ambiente Virtual de Aprendi-zagem (AVA). Organize-se de tal forma para que você possa dedicar tempo suficiente para leitura e reflexão;

• Esforce-se para alcançar os objetivos pro-postos na disciplina;

• Utilize-se dos recursos técnicos e humanos que estão ao seu dispor para buscar escla-recimentos e para aprofundar as suas reflexões. Estamos nos referindo ao contato permanente com o professor e com os cole-gas a partir dos fóruns, chats e encontros presenciais, além dos recursos disponíveis no Ambiente Virtual de Aprendizagem – AVA.

(10)

e estar sempre em contato com o professor, além de acessar o AVA.

Para se estudar num curso a distância deve-se ter a clareza de que a área da Educação a Distância pauta-se na autonomia, responsabilidade, cooperação e colaboração por parte dos envolvidos, o que requer uma nova postura do aluno e uma nova forma de con-cepção de educação.

Por isso, você contará com o apoio das equipes pedagógica e técnica envolvidas na operacionalização do curso, além dos recursos tecnológicos que contribuirão na mediação entre você e o professor.

(11)
(12)

DE SISTEMAS OPERACIONAIS

Parte 1

(13)
(14)

1

Introdução aos Sistemas

Operacionais

No texto a seguir, veremos os conceitos básicos e os principais fundamentos de sistemas operacionais. Juntos conheceremos sua evolução através da história, seus tipos e funções primordiais interagindo o usuário com o hardware do sistema.

Você será capaz, ao final deste tema, de perceber a complexidade envolvida na comunicação dos sistemas operacionais com os dispositivos físicos do computador a fim de criar um ambiente mais amigável para o usuário.

(15)

1.1 História dos Sistemas Operacionais

Um sistema operacional pode ser visto como um conjunto de instruções executadas pelo proces-sador que gera determinado resultado. Analisando desta forma, sugiro levantar a seguinte questão:

Podemos considerar o sistema operacional um pro-grama da mesma forma que um aplicativo de usuário?

Para responder com segurança esta questão é preciso saber mais sobre as funções de um sis-tema operacional e para isso nada melhor do que analisarmos a evolução do desenvolvimento dos computadores, já que os sistemas operacionais estão historicamente ligados a ela. Vejamos então um pequeno resumo dos principais fatos históricos.

Desde 1642, quando Blaise Pascal (1623-1662), matemático inglês, inventou uma máquina de somar, diversos matemáticos se esforçaram em criar máquinas para calcular operações aritméticas. Até que em 1833, Charles Babbage (1791-1871) projetou uma máquina capaz de realizar qualquer tipo de operação chamada “Máquina Analítica”.

Figura 01 – Parte de um desenho da máquina analítica de Babbage Fonte: GUIMARÃES, Angelo M.; CASTILHO, Newton A. Introdução à ciência da computação. 2. ed. Rio de Janeiro: LTC, 1985, cap. 1, p. 12.

(16)

Apesar da impossibilidade de sua construção, devido aos limites tecnológicos da época, seus con-ceitos de uma unidade central de processamento, de dispositivos de entrada e saída, memória e, é claro, o fato de ser programável, torna o seu inven-to o que mais se aproxima de um computador atual.

Outro personagem da história que vale a pena ser citado é George Boole (1815-1864), tam-bém matemático inglês, criador da lógica booleana em 1854, base da computação digital utilizada até hoje e que permitiu o desenvolvimento de compo-nentes como relés e válvulas, implementados nos primeiros computadores em 1940.

Nos anos de 1900 apontamos outro marco importante no desenvolvimento dos computadores. No final da década de 30, Alan Turing (1912-1954), um matemático inglês, publicou em um trabalho científico uma máquina imaginária, projetada para executar uma operação matemática específica. Em outras palavras, a máquina seria capaz de reali-zar uma série de etapas fixas, prescritas, que, por exemplo, resultariam na multiplicação de dois nú-meros. E imaginou um conjunto dessas máquinas, cujo funcionamento interno pudesse ser alterado, realizando todas as funções matemáticas concebí-veis. Chamou-a de Máquina Universal de Turing.

Alguns anos depois, durante a Segunda Guerra, o também matemático inglês Max Newman (1897-1984), baseou-se em grande parte no con-ceito de Alan Turing para uma máquina universal, projetando uma máquina capaz de se adaptar a diferentes problemas.

Como você conceituaria hoje um compu-tador programável? Se o que pensou foi uma máquina capaz de se adaptar a dife-rentes problemas, está correto.

(17)

Em 1943, através do projeto de Newman, foi construído pelo engenheiro inglês, Tommy Flowers (1905-1998), o Colossus, considerado o precursor do moderno computador digital.

Dois anos depois, em 1945, J. Eckert (1919-1995) e J. W. Mauchly (1907-1980), da Universidade da Pensilvânia, completaram o ENIAC (Electronic Numerical, Integrator And Calculator) que consistia em 18.000 válvulas eletrônicas capazes de realizar cinco mil cálculos por segundo.

O professor John Von Neumann (1903-1957), que trabalhou como consultor na construção do ENIAC, desenvolveu a ideia de uma máquina de propósito geral na qual tanto as instruções quanto os dados compartilhassem uma mesma memória. Este conceito, hoje conhecido como Ar-quitetura Von Neumann, é a base da arAr-quitetura da computação atual.

Você consegue perceber que com a Arquitetura de von Neumann foi possível colocar as ideias de Babbage e Turing em um mesmo sistema computacional?

Diversos computadores foram construídos com o conceito da Arquitetura de von Neumann (também chamado de “programa armazenado”).

Vale a pena citar o EDSAC (Electronic Delay Stora-ge Automatic Calculator), construído em CambridStora-ge, Inglaterra, em 1949, por ter sido o primeiro com-putador a implementar esse conceito, e o EDVAC (Electronic Discrete Variable Automatic Computer)

construído na mesma época, na Pensilvânia, EUA1.

Sugiro aqui uma pausa para levantar a seguinte questão: E os sistemas operacionais?

Onde entram nesta história?

1 Reveja o conte-údo da disciplina Introdução à Com-putação e relembre com mais detalhes seus conhecimentos em relação ao desenvolvimento dos computadores até a importância da invenção do transistor.

(18)

Até a década de 50, os computadores ainda não possuíam interface com o usuário como tecla-dos e monitores e o conceito de sistema operacional surgiria somente nesta década.

Até então, os programas eram perfurados em cartões que eram carregados em uma leitora para serem gra-vados em uma fita de entrada. Essa fita era, então, lida pelo computador que rodava um programa por vez, gravando o resultado de seu processamento em uma fita de saída lida pelo computador que rodava um programa por vez, gravando o resultado de seu processamento em uma fita de saída. Quando todos os programas terminavam sua execução, a fita de sa-ída era lida e impressa. Esse processamento, em que vários programas eram submetidos ao computador, era conhecido como processamento batch.

Figura 02 – Exemplo de cartão perfurado

Fonte: GUIMARÃES, Angelo M.; CASTILHO, Newton A. Introdução à ciência da computação. 2. ed. Rio de Janeiro: LTC, 1985, cap. 5, p. 117.

O primeiro sistema operacional foi desen-volvido em 1953, pelo grupo de usuários de um computador IBM (IBM 701) para tentar automatizar as tarefas manuais de inserção de cartões para a leitura. Pela simplicidade deste sistema, ficou co-nhecido como monitor.

(19)

Com o desenvolvimento dos circuitos integra-dos na década de 60, houve um grande aumento do poder de processamento e, com isso, inúme-ras inovações na área de sistemas operacionais surgiram, com a implementação de técnicas pre-sentes até hoje, sendo a multiprogramação a mais importante de todas. Isto porque, sem o conceito de multiprogramação, toda vez que um programa realizava uma operação de acesso a dispositivos de entrada e saída, o processador tinha de aguardar o término deste processo. Contudo, com a multi-programação, programas poderiam compartilhar a memória e aguardar os dispositivos de entrada e saída enquanto o processador se ocupava de outro programa.

Em 1962 o MIT (Massachusett Institute Technology) desenvolveu um dos primeiros siste-mas operacionais de tempo compartilhado, o CTSS (Compatible Time Sharing System) que suportava no máximo 32 usuários.

Em 1964 a IBM lança o System /360, que re-volucionou a indústria de informática por diversos motivos: foi a primeira linha de computadores a utilizar circuitos integrados em pequena escala e introduziu o conceito de máquinas de diferentes portes com a mesma arquitetura onde era possível que programas escritos em uma máquina pudessem ser executados em outra.

Em 1965, a General Electric, a Bell Labs e o MIT estavam desenvolvendo um projeto de um sistema operacional portável, que poderia ser uti-lizado em plataformas de hardware diferentes. O

MULTICS (Multiplexed Information and Computing

Service) implementava memória virtual, multipro-gramação e deveria suportar múltiplos processadores e usuários.

(20)

Já em 1969, Ken Thompson começou a escrever uma versão simplificada monousuária do MULTICS (ele fez parte do projeto de sua criação) para um minicomputador na Bell Labs. Seu trabalho mais tarde deu origem ao sistema operacional UNIX, que devido ao fato de seu código fonte estar ampla-mente disponível, várias organizações criaram suas próprias versões, que não eram compatíveis entre si, o que levou ao desenvolvimento de um padrão para o UNIX chamado POSIX.

Na década de 70, com o advento da integração em larga escala (LSI – Large Scale Integration e VLSI – Very Large Scale Integration), fez com que a miniaturização e o barateamento dos computa-dores se tornassem possíveis. Nesta mesma década, mais precisamente em 1974, a Intel produz o processador Intel 8080 utilizado no primeiro micro-computador, o Altair.

Em 1976, Steve Wozniak e Steve Jobs fabri-cam o Apple II com microprocessador de 8 bits e no mesmo ano são fundadas a Microsoft e a Apple. Em 1981 a IBM lança sua filosofia de com-putador pessoal lançando o PC-XT (Personal Com-puter – Extended Technology) que vinha com um processador Intel 8088 de 16 bits e com o sistema operacional baseado em linha de comando, o MS-DOS (Microsoft – Disk System Operation).

Esse sistema operacional iria evoluir jun-tamente com os micros que ficaram conhecidos como 286, 386, 486 e a linha Pentium recebendo

um shell que rodava por cima do MS-DOS que

ficou conhecido como Windows, até que em 1995 foi lançada uma versão que não dependia mais do

MS-DOS por trás para rodar, ele foi chamado de Windows 95.

(21)

Lembra-se por que não era possível rodar o Windows 95 em um 286? Quem possuiu

um 286 na época e tentou instalar o Win-dows 95 obviamente não teve sucesso, já que o Windows 95 era um sistema opera-cional de 32 bits, enquanto um processa-dor 286 trabalhava a 16 bits.

Em meio a esses acontecimentos, em 1982, foi fundada a SUN Microsystems, que lançou as pri-meiras estações RISC com o sistema operacio-nal SunOS e logo depois o Sun Solaris. Surgiram, assim, os sistemas operacionais para redes e sistemas distribuídos.

Na década de 90 houve a consolidação dos sistemas operacionais baseados em interfaces gráficas. Além disso, a utilização de conceitos e implementações, que eram usados em computa-dores de grande porte, passaram a ser utilizados em sistemas para desktop, como no Windows NT e

Unix (IBM-AIX, HP-UX e Sun Solaris).

Ainda nos anos 90, mais precisamente em 1991, o estudante finlandês Linus Torvalds inicia o desenvolvimento do sistema operacional Linux, que foi “construído” a partir da colaboração de diversos programadores que auxiliaram no desen-volvimento do seu núcleo.

Já na década de 2000 temos os processa-dores de 64 bits, que necessitam de um sistema operacional que trabalhe a 64 bits. Além disso, vemos a Microsoft unificando recursos de servidores e desktops em suas novas versões de sistemas operacionais e a popularização das distribuições

Linux como uma alternativa real para os usuários

(22)

Atualmente é possível rodar o Linux di-retamente do CD ou mesmo de um pen drive sem instalá-lo na máquina! Experi-mente.

Com a popularização da internet o concei-to de sistemas distribuídos será bastante explora-do nos sistemas operacionais. Com a redução explora-do custo da tecnologia, dos custos de comunicação e aumento na taxa de transmissão temos sistemas operacionais hoje em telefones celulares, palmtops e diversos dispositivos móveis.

Neste sentido, os sistemas operacionais evo-luíram com o objetivo de facilitar o trabalho de co-dificação, execução e manutenção dos programas, já que esses programas deixaram de ter relação di-reta com o hardware dos computadores eliminando a necessidade dos programadores desenvolverem suas próprias rotinas de leitura/gravação específica para cada dispositivo.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre História dos Sistemas

Opera-cionais, leia o item 1.4 (p. 6-14) do livro de:

MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de

sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007.

No primeiro capítulo de um dos livros referência no assunto de sistemas operacionais, Francis Ma-chado e Luiz Maia resumem a história da evolução dos computadores em paralelo com a evolução dos sistemas operacionais analisando suas inovações a cada década do século passado.

(23)

Para saber mais sobre História dos Sistemas

Opera-cionais, leia o item 1.2 (p. 19-25) do livro de:

TANENBAUM, Andrew S.; WOODHULL, Albert S.

Sistemas operacionais: projeto e implementação.

2. ed. Porto Alegre: Bookman, 2000.

Livro referência no estudo de sistemas operacionais distribui em seu primeiro capítulo a evolução dos sistemas operacionais dentro do contexto das gerações de computadores ao longo do século passado.

PARA REFLETIR

Se equipamentos como celulares, palmtops, handhelds já vêm com um sistema operacional embutido, por que o microcomputador não possui este mesmo princípio? Pense a respeito.

(24)

1.2 Tipos de Sistemas Operacionais

Como foi visto no tópico anterior, a evolução do sistema operacional está associada diretamente à arquitetura dos computadores sobre o qual estão implementados e das aplicações por ele suportadas. Isso fez com que muita coisa mudasse num esforço para o aperfeiçoamento de interações e proces-samentos. Podemos a partir daí classificá-los em diferentes tipos:

Figura 03 – Tipos de sistemas operacionais

SISTEMAS MONOPROGRAMÁVEIS

Também conhecidos como Sistemas Mono-tarefa, caracterizam-se por permitir que todos os recursos do sistema fiquem exclusivamente dedica-dos a uma única tarefa. Só um programa pode ro-dar por vez, qualquer outra aplicação deverá aguar-dar seu término para que possa iniciar. Com isso, haverá uma subutilização dos recursos de hardware (memória, processador e periféricos).

Figura 04 – Sistemas Monoprogramáveis Fonte: MACHADO, Francis B.; MAIA, Luiz

Paulo. Arquitetura de sistemas

opera-cionais. 4. ed. Rio de Janeiro: LTC, 2007,

(25)

O sistema operacional MS-DOS é um bom exemplo deste tipo de sistema. Foi criado com o princípio de que uma pessoa estaria usando o computador e um único usuário estaria executando uma tarefa de cada vez. O MS-DOS foi desenvolvi-do para ser usadesenvolvi-do em um ambiente monousuário e de monoprocessamento.

Uma vantagem nesse tipo de sistema é sua implementação, já que não existe a preocupação de criar soluções para o compartilhamento dos re-cursos de hardware entre os programas.

Quantas desvantagens você é capaz de

enu-merar para um sistema monoprogramável?

SISTEMAS MULTIPROGRAMÁVEIS

Também conhecidos como Sistemas Multita-refas sua principal característica é o compartilha-mento dos recursos de hardware entre usuários e aplicações. Neste modelo, o sistema operacional se preocupa em gerenciar o acesso concorrente aos seus recursos de hardware, como memória, proces-sador e periféricos de forma ordenada e protegida entre os diversos programas.

Figura 05 – Sistemas Multiprogramáveis Fonte: MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio

(26)

Este tipo de sistema pode ser classificado de acordo com o número de usuários que o uti-lizam. Podemos ter então um Sistema Multitarefa Monousuário, quando existe somente um usuário interagindo com o sistema. Um exemplo disso era o Windows 98, em que para trocar de usuário era necessário fazer o log off do usuário atual para acessar um novo usuário.

O outro tipo de sistemas multiprogramáveis é o Sistema Multitarefa Multiusuário, em que diversos usuários podem se conectar ao sistema simultane-amente. É o que acontece hoje com os usuários desktops do sistema Windows XP (ou posterior) ou as distribuições Linux, em que é possível ter vários usuários logados no sistema simultaneamente.

Os Sistemas Multiprogramáveis podem ainda ser classificados pela forma na qual suas aplicações são gerenciadas:

Sistemas Batch

Tinha como uma de suas características não necessitar da interação do usuário com a aplicação, suas entradas e saídas de dados eram implementadas normalmente por arquivos em disco.

Como visto no tópico anterior, na década de 60, os programas em um sistema Batch (conhecidos como job - algo parecido com os arquivos de lote do DOS), eram colocados em execução a partir de cartões perfurados e armazenados em disco ou fita, onde aguardavam para serem processados.

A implementação do sistema Batch fazia com que ao invés de os programas serem submetidos pelo operador, um a um, um conjunto de programas era submetido de uma só vez, permitindo um melhor aproveitamento do processador.

(27)

Sistemas de Tempo Compartilhado (time Sharing)

Sua característica é permitir que diversos pro-gramas sejam executados a partir da divisão do tempo do processador em pequenos intervalos, chamados de fatia de tempo (time-slice). O sistema cria um ambiente de trabalho próprio para cada usuário, dando a impressão de que todos os recur-sos estão disponíveis somente para ele.

Caso o tempo atribuído a determinado pro-grama não seja suficiente para sua conclusão, ele é interrompido e colocado em espera aguardando por uma nova fatia de tempo.

Ao contrário dos Sistemas Batch, os Sistemas de Tempo Compartilhado geralmente permitem a interação do usuário com o sistema através de ter-minais, por exemplo, para interromper a execução de um programa. Por isso, os sistemas de Tempo Compartilhado ficaram também conhecidos como sistemas on-line.

Sistemas de Tempo Real

A principal diferença entre Sistemas de Tem-po Compartilhado e Sistemas de TemTem-po Real é que neste último um programa utiliza o processador o tempo que for necessário, ou até que apareça outro mais prioritário, não existindo a ideia de time-slice.

Um fator questionável nesse tipo de geren-ciamento é que a importância ou prioridade de execução de um programa é definida pela própria aplicação e não pelo sistema operacional.

SISTEMAS COM MÚLTIPLOS PROCESSADORES

A principal característica deste sistema é pos-suir duas ou mais CPUs (ou UCP, Unidade Central de Processamento, em português) trabalhando em con-junto na execução de vários programas ao mesmo

(28)

tempo, ou em um único programa subdividido em partes para serem executadas simultaneamente por mais de um processador.

Os mesmos princípios básicos e benefícios aplicados à multiprogramação podem ser atribuídos a sistemas com múltiplos processadores, além de vantagens específicas como: disponibilidade,

escalabilidade e balanceamento de carga.

A vantagem da disponibilidade está associa-da à capaciassocia-dade de manter o sistema em operação mesmo em caso de falhas. Imagine um computador com dois processadores em que um deles apre-senta uma falha e suas atividades são automatica-mente transferidas ao outro processador de forma transparente para os usuários e os programas. Em situações como essa o que irá ocorrer, porém, é a diminuição da capacidade de processamento.

Já a característica da escalabilidade é a capacidade de ampliar o poder computacional do sistema apenas adicionando novos processadores. Não seria ótimo se ao perceber uma diminuição na performance de processamento ao utilizar um novo programa bastasse adicionar mais um processador ao invés de trocar todo o micro?

O que chamamos de Balanceamento de carga é a capacidade de distribuir o processamento entre os diversos processadores a partir da carga de trabalho de cada um.

O grau de compartilhamento entre a memó-ria e os dispositivos de entrada/saída com os pro-cessadores criam características distintas na forma como eles se comunicam entre si que podem ser classificadas como:

Sistemas Fortemente Acoplados (tightly coupled)

Neste tipo de sistema, vários processadores compartilham uma mesma memória física (memó-ria compartilhada) e o gerenciamento dos dispo-sitivos de entrada e saída é feito por um único sistema operacional. É também conhecido como Multiprocessadores.

(29)

Figura 06 – Sistemas fortemente acoplados

Fonte: MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap. 1, p. 21.

Este sistema pode ser dividido em SMP -

Mul-tiprocessadores Simétricos (Symmetric

Multiproces-sors) onde o tempo de acesso à memória principal pelos processadores é uniforme e NUMA - Acesso

à Memória Não-Uniforme (Non-Uniform Memmory

Access) onde o tempo de acesso à memória pelos processadores varia de acordo com sua localização física, já que existem diversos conjuntos reunindo processadores e memórias conectados através de interconexões.

Sistemas Fracamente Acoplados (loosely coupled)

Possui dois ou mais sistemas computacionais conectados por meio de linhas de comunicação, cada uma possuindo seu próprio sistema opera-cional e gerenciando seus próprios recursos (UCPs, dispositivos de entrada/saída e memória). Também conhecido como Multicomputadores.

Se antes as aplicações eram centralizadas em sistemas de grandes portes com um ou mais processadores, onde terminais eram conectados através de comunicação serial (ou telefônica) para interagir neste sistema, hoje, devido à evolução da

(30)

telecomunicação, das tecnologias de redes e dos computadores pessoais, temos o modelo de rede de computadores. Neste modelo, sistemas opera-cionais de rede permitem que sistemas indepen-dentes (host) compartilhem recursos e informa-ções, tratando-os como um conjunto único, como se fosse um sistema fortemente acoplado.

A partir da integração dos hosts que compõem uma rede, os sistemas fracamente acoplados podem ser divididos em sistemas distribuídos e sistemas operacionais de rede. A principal característica que os difere é a capacidade do sistema em criar uma ima-gem única dos serviços disponibilizados pela rede.

Nos sistemas distribuídos, é possível um pro-cesso ser dividido em partes e cada uma dessas partes serem executadas por um host diferente da rede. Isso não é perceptível para o usuário e para a aplicação que tem a impressão de existir um único sistema centralizado.

Figura 07 – Sistemas fracamente acoplados

Fonte: MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap. 1. p. 21.

Um bom exemplo disso foi o filme Titanic que utilizou dezenas de máquinas para renderizar os efeitos criados para o filme em um sistema distribuído que é conhecido como cluster.

(31)

Nos sistemas operacionais de rede, um host compartilha seus recursos com os demais hosts da rede. Um bom exemplo disso é uma rede local em que diversos microcomputadores utilizam a mesma impressora para impressão de arquivos.

Não é difícil concluir que em sistemas for-temente acoplados a taxa de transferência entre a memória e os processadores envolvidos no pro-cesso é muito maior, já que existe apenas uma me-mória principal sendo compartilhada por todos os processadores, enquanto nos sistemas fracamente acoplados esta taxa de transferência está limitada à velocidade da linha de comunicação entre os hosts.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Tipos de Sistemas Operacionais, leia o item 1.5 (p. 15-22) do livro de:

MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de

sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007.

Francis Machado e Luiz Maia expõem em seu livro de forma clara e dividido em tópicos os tipos de siste-mas operacionais ressaltando suas características e aplicações no ambiente computacional.

Para saber mais sobre Tipos de Sistemas Operacionais, leia o item 1.2 (p. 19-25) do livro de:

TANENBAUM, Andrew S.; WOODHULL, Albert S.

Sistemas operacionais: projeto e implementação.

(32)

Livro referência no estudo de sistemas operacionais distribui em seu primeiro capítulo os tipos de sistemas operacionais dentro do contexto das gerações de computadores ao longo do século passado.

PARA REFLETIR

Diante do que foi visto, existe um tipo de sistema operacional que melhor atenderia a todo tipo de aplicação? Reflita sobre isso.

1.3 Funções dos Sistemas Operacionais

Nem todo dispositivo microprocessado pos-sui um sistema operacional. O microprocessador que controla o microondas na sua cozinha, por exemplo, não precisa de um sistema operacional. Ele possui um conjunto de tarefas prédefinidas e uma expectativa de entrada de comandos muito restrita e simples (um teclado numérico e alguns botões com funções prédefinidos). Além disso, sua configuração de hardware a ser controlada nunca será alterada, pois sua função será sempre a mesma.

Para o computador, porém, é indispensável a existência de um sistema operacional que pos-sua a habilidade de servir a uma diversidade de propósitos, interagir com o usuário das mais di-versas formas e lidar com os mais diversos tipos de hardware.

(33)

Pensando no trabalho de um usuário, inde-pendente das atividades e programas utilizados ao manipular o computador, percebemos que ele está sempre percorrendo o mesmo ciclo de trabalho, que pode ser visto da seguinte maneira:

Figura 08 – Ciclo de trabalho do usuário

Os diferentes programas existentes permitem que o usuário peça coisas diferentes e tenha, con-sequentemente, resultados diferentes. É o que dá ao computador a característica de ser programável. Você pode programá-lo para realizar determinada atividade e gerar um resultado específico.

Agora vamos questionar o seguinte: quando

o usuário pede ao micro para executar um programa,

quem verifica a existência desse programa? Quem acessa o disco para copiá-lo para a memória? Quem avisa ao processador que ele pode ser executado? E se o processador já estiver rodando um programa? E se a memória estiver cheia?

Essas são apenas algumas questões envol-vendo o gerenciamento do sistema operacional

com alguns dispositivos de hardware. Algo que um

programa de usuário não faria.

Outra abordagem para a compreensão do sistema operacional é o ponto de vista do usuário, em que o sistema operacional pode ser visto como uma interface entre o usuário e a máquina, isolando-o de tisolando-oda a cisolando-omplexidade disolando-o hardware, gradual-mente, através de camadas de software por sobre

(34)

o hardware básico do micro, para gerenciar todas as partes do sistema, oferecendo uma interface amigável para este usuário (Máquina Estendida ou Máquina Virtual), mais fácil de entender e programar.

Figura 09 – Computador sob a ótica do usuário

Podemos então arriscar um primeiro conceito destacando o sistema operacional, das categorias existentes de softwares e suas funcionalidades, como o programa de sistema mais fundamental atuando como um intermediário entre o usuário e o hardware controlando-o e gerenciando processos, arquivos, recursos e usuários.

Uma visão ampla da funcionalidade de um sistema operacional apresenta-o como um gerente. Ele é o responsável pelo gerenciamento de recursos,

gerenciamento de dados, gerenciamento de tarefas

e o gerenciamento do usuário.

Gerenciamento de Recursos

A função de gerenciamento de recursos de um sistema operacional envolve a alocação de dispositivos computacionais como: tempo de uso do processador, memória principal, memória virtu-al e dispositivos de entrada/saída.

Pensando no sistema operacional como um gerenciador de recursos, estamos levando em consideração todas as partes de um sistema com-plexo, no qual recursos de hardware (dispositivos

(35)

de entrada/saída - disco, impressora, vídeo, etc.) podem ser utilizados por diversos processos que competem pela utilização dos mesmos.

Na gerência do processador, o sistema opera-cional é responsável por alocá-lo entre os diferentes programas usando um algoritmo de agendamento específico. O tipo de agendamento é totalmente dependente do sistema operacional, de acordo com o objetivo desejado.

Ao gerenciar a memória, o sistema operacio-nal é responsável por alocar o espaço de memória para cada aplicação e para cada usuário. Se não houver espaço físico suficiente na memória, o sis-tema operacional pode criar em uma área do dis-co um espaço dis-conhecido dis-como memória virtual. A memória virtual permite que você rode aplicativos utilizando mais memórias do que a disponível no sistema.

A gerência dos dispositivos de entrada e saída envolve o controle de acesso a esses dispositivos pelos programas através de seus drivers de controle.

Gerenciamento de Dados

A função de gerenciamento de dados de um sistema operacional implica no controle da entrada e saída de dados, sua alocação, armazenamento e recuperação, lendo e escrevendo esses dados em um sistema de arquivo específico com permissões bem definidas de autorização e acesso.

Gerenciamento de Tarefas

A função de gerenciamento de tarefas de um sistema operacional é preparar, agenda, controlar e monitorar a execução de tarefas para garantir seu pro-cessamento da maneira mais eficiente. Essas tarefas

(36)

correspondem a um ou mais programas relaciona-dos e seus darelaciona-dos.

SERVIÇOS DE SISTEMAS OPERACIONAIS

Um sistema operacional fornece certos serviços aos programas e aos usuários desses programas, e apesar de alguns serviços específicos poderem diferir de um sistema operacional para outro, pode-mos identificar os mais comuns:

Um sistema operacional deve ser capaz de carregar um programa na memória, executá-lo e en-cerrar sua execução, seja de forma normal ou por indicação de erro;

Um programa em execução pode precisar da utilização de dispositivos de entradas e saídas, ta-refa que não pode ser controlada diretamente pelo usuário. O sistema operacional deve então fornecer os meios para realizar o controle de todas as operações de entrada e saída;

Existem situações em que um processo pode precisar trocar informações com outro processo. Nessas situações, a comunicação entre processos executados em diferentes sistemas de computação, ligados por uma rede, pode ser feita através de pa-cote de informações movido entre processos pelo sistema operacional;

Erros podem ocorrer no processador e na me-mória, nos dispositivos de entrada e saída e no pro-grama de usuário. Para cada tipo de erro, o sistema operacional deve tomar uma decisão adequada para garantir uma computação consistente e correta.

CHAMADAS DE SISTEMA

A interface entre o sistema operacional e seus programas aplicativos pode ser definida pelo conjunto das chamadas de sistema (system calls) que o sistema operacional proporciona.

(37)

Quando uma chamada de sistema é feita, o usuário solicita ao sistema operacional que realize uma operação em seu nome.

Chamada de sistema para o gerenciamento de processos

Do ponto de vista do sistema operacional, um processo constitui-se de certo tipo de atividade. Ele possui um programa, uma entrada, uma saída e um estado. Durante o tempo de vida de um processo, ele pode passar basicamente pelos estados: rodan-do (running), estarodan-do em que o processo está usan-do o processausan-dor neste instante; bloqueausan-do (wait), significa que o processo está impedido de rodar até que ocorra um evento externo ao processo e; pron-to (ready), em que o processo está em condições de rodar, mas bloqueado temporariamente para dar vez a outro processo.

Figura 10 – Estados de um processo

A criação e a finalização de um processo geralmente ocorrem com uma chamada de sistema.

Chamadas de sistema para Sinalização

Em determinados casos pode ser necessário interromper a execução de um processo, seja por instruções ilegais ou por motivos planejados. Por exemplo, imagine que você peça para o sistema

(38)

fazer uma verificação completa em busca de erros no disco e decide interrompê-la durante sua execução. É preciso haver alguma forma de interromper o programa e eliminar o processo sem prejuízos ao sistema. É o que faz a chamada de sistema para a sinalização.

O sistema de sinalização também é utilizado para o controle de limite de tempo de execução, além do tratamento de falhas. Imagine um proces-so que dependa de uma sinalização para dar pros-seguimento à sua tarefa. Um bom exemplo seria você pedir para listar o conteúdo de um diretório e pressionar a tecla pause para interromper a rola-gem de tela. Neste caso, a chamada de sistema a ser aplicada seria o pause que permitiria interromper o processo até que uma sinalização indicasse sua continuidade.

Chamadas de sistema para o gerenciamento de Arquivos

Muitas chamadas de sistema estão associa-das com o sistema de arquivos e seus métodos de acesso. Uma solicitação para a criação de um arquivo utiliza uma chamada de sistema, para ler um arquivo, outra chamada, e assim por diante. Normalmente as chamadas de sistema para o ge-renciamento de arquivos são: criar (create), abrir (open), gravar (write).

Chamadas de sistema para o gerenciamento de diretórios e sistemas de arquivo

Essas chamadas de sistema atuam com diretó-rios ou com o sistema de arquivo, ao invés de se rela-cionarem com um arquivo específico. As chamadas de sistema envolvidas nesse tipo de gerenciamento são

(39)

a criação (mkdir) e exclusão (rmdir) de diretórios e a montagem (mount) e a desmontagem (umount) de um dispositivo para o acesso aos seus arquivos e diretórios.

Chamadas de sistema para o gerenciamento de tempo

As chamadas de sistema para o gerenciamento de tempo dizem respeito ao relógio e são respon-sáveis por retornar a hora do sistema, permitir que o relógio seja configurado, retornar as informações de tempo de utilização do processador, entre outros.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Funções dos sistemas

Ope-racionais leia o Capítulo 3 (p. 33-40) do livro de:

SILBERSCHATZ, Abraham; GAGNE, Greg; GALVIN, Peter.

Sistemas operacionais com java - conceitos e

apli-cações.Tradução da 6. ed. Rio de Janeiro: Campus, 2005.

Na introdução de seu livro, Silberschatz, Gagne e Galvin apresentam resumidamente, mas de forma bastante clara, o conceito de sistemas operacionais e suas principais funções

Para saber mais sobre Funções dos sistemas

Operacionais leia o item 1.3 (p. 25-39) do livro de:

TANENBAUM, Andrew S.; WOODHULL, Albert S.

Sistemas operacionais: projeto e implementação.

(40)

Tanenbaum e Woodhull não só apresentam o assunto das chamadas de sistemas mais comuns do sistema operacional como analisam algumas linhas de código de sua execução.

PARA REFLETIR

Após ler sobre as funções de um sistema operacional, podemos pensar por que algumas tarefas são realizadas por ele e não diretamente pelo hardware ou pelo usuário. Reflita sobre isso.

1.4 Estruturas do Sistema Operacional

O sistema operacional é composto por um conjunto de rotinas conhecido como núcleo do sis-tema (kernel). Além disso, a maioria dos sissis-temas operacionais possui ferramentas de apoio ao usu-ário que são utilitusu-ários e linguagem de comandos, mas que não fazem parte do núcleo do sistema.

Linguagem de comando

Das formas existentes de o usuário se comu-nicar com o kernel do sistema operacional, a mais amigável é através dos utilitários e linguagem de comandos supracitados. Normalmente cada siste-ma operacional possui seus utilitários específicos e comandos com estrutura e sintaxe próprias.

(41)

Figura 11 – Exemplos de comandos do Linux

Como podemos observar na figura acima, através da linguagem de comando o usuário pode executar diversas tarefas específicas do sistema como criar diretórios, ler ou excluir arquivos. Assim, o usuário possui uma forma direta de diálogo com o sistema operacional.

Depois de digitado pelo usuário, cada co-mando é interpretado pelo interpretador de

coman-dos (shell), que verifica a sintaxe, executa

chama-das às rotinas do sistema e apresenta o resultado. Normalmente, o interpretador de comando não faz parte do kernel, o que possibilita a existência de diferentes linguagens de comando para o mesmo sistema. No Linux, por exemplo, existem diversos interpretadores, o Bash, SH, CSH e outros.

Em muitos sistemas operacionais, as lingua-gens de comando se tornaram mais amigáveis em sua interação com o usuário, adotando interfaces gráficas com a utilização de ícones e janelas, a exemplo do Mac OS e MS Windows. Em muitos casos, essa interface gráfica é somente mais um nível de abstração entre o usuário e os serviços do sistema operacional.

(42)

Figura 12 – Interface do usuário com o sistema operacional

Fonte: MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap. 4, p. 56.

Estruturas do Núcleo

O projeto de um sistema operacional é muito complexo e precisa atender a diversos requisitos, além de depender da estrutura do hardware a ser utilizado e do tipo de sistema que se pretende criar.

Quando os primeiros sistemas operacionais foram criados, seus códigos possuíam aproxi-madamente um milhão de linhas de código (IBM

OS/360) e foi escrito completamente em assembly.

Com a evolução dos sistemas, houve o aumento do número de linhas de códigos para algo perto de 20 milhões (MULTICS). Com o tempo, técnicas de programação modular e linguagens de alto nível foram incorporadas ao projeto.

(43)

Atualmente, tem-se sistemas operacionais com mais de 100 milhões de instruções

(MS-Win-dows Vista), sendo que grande parte é escrita em C/C++, o que acarreta uma perda de desempenho.

Por isso, as partes mais críticas do sistema conti-nuam sendo desenvolvidas em assembly (como o algoritmo de escalonamento do processador e o tratamento de interrupções, por exemplo), já que é uma linguagem de mais baixo nível, portanto mais próxima do hardware.

É importante ressaltar aqui que as linguagens de alto nível permitem que o sistema operacional seja facilmente alterado para outra arquitetura de hardware, além de facilitar o desenvolvimento e a manutenção do sistema.

A estrutura do núcleo pode variar conforme a concepção do projeto. As quatro principais estrutu-ras dos sistemas operacionais são:

• Sistemas Monolíticos; • Sistemas em Camadas;

• VM - Máquina Virtual (Virtual Machine); • Sistemas Cliente-Servidor – MicroKernel.

Vejamos alguns detalhes de cada uma delas Sistemas Monolíticos

Sua arquitetura é como um grande e único

programa executável formado por módulos (que

contém todos os procedimentos) compilados indi-vidualmente e agrupados em um único objeto.

Quem já utilizou o MS-DOS (sistema operacio-nal da Microsoft, antecessor do Windows) conheceu

(44)

Veja na figura abaixo um exemplo de estrutura de núcleo monolítico:

Figura 13 - Modelo de estruturação de sistema monolítico

Fonte: O autor, baseado na ilustração do livro: TANENBAUM, Andrew S.;

WOODHULL, Albert S. Sistemas operacionais: projeto e implementação. 2. ed. Porto Alegre: Bookman, 2000, cap. 1, p. 41.

Apesar de o sistema operacional neste modelo ser escrito com uma coleção de procedimentos, na qual cada um pode chamar qualquer um dos outros sempre que precisar, o que sugere uma ausência de organização, é possível obter um mínimo de estrutura.

Nesta organização do núcleo, um programa

principal chama o procedimento de serviço e este procedimento de serviço (ou um conjunto deles)

executa cada uma das chamadas do sistema. Ressaltamos que um conjunto de procedimentos

utilitários auxilia na execução dos procedimentos

de serviços.

Sistemas em Camadas

Com o aumento da complexidade e conse-quentemente do tamanho do código dos sistemas operacionais, a organização dos projetos passou a ser estruturada e modular. Neste tipo de arquitetura,

o sistema é dividido em níveis sobrepostos, em que

cada camada oferece um conjunto de instruções a serem utilizadas pela camada superior a ela.

(45)

O fato de seu núcleo ser construído em uma hierarquia de níveis torna seu kernel mais indepen-dente em relação aos outros módulos, pois se uma aplicação travar, não irá afetar seu núcleo.

A maioria das versões do Unix e do MS-Windows está baseada no modelo de duas camadas, onde existem os modos de acesso usuário (sem privilégio) e kernel (privilégio de núcleo do sistema).

Figura 14 - Modelo de estruturação em camadas

Fonte: O autor, baseado na ilustração do livro: MACHADO, Francis B.;

MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap. 1, p. 59.

Um fato curioso, apesar de o computador “THE” (do holandês - Technische Hogeschool Ein-dhoven) ter sido o primeiro sistema a utilizar esta abordagem, podemos considerá-lo um sistema mo-nolítico disfarçado, pois todas as partes precisavam estar ligadas entre si gerando um único programa objeto.

Posteriormente, o MULTICS (visto no conte-údo 1.1) foi desenvolvido com uma série de anéis concêntricos, com os internos sendo mais

(46)

privile-giados que os externos.

VM - Máquina Virtual (Virtual Machine)

Este modelo cria um nível intermediário entre

o hardware e o sistema operacional, criando cópias

virtuais do hardware (máquinas virtuais). Como cada máquina virtual é independente da outra, é possível coexistir sistemas operacionais diferentes no mesmo computador.

Esta estrutura oferece uma grande segurança entre cada máquina virtual já que existe um isola-mento total entre elas. Uma desvantagem é a gran-de complexidagran-de do gerenciamento dos recursos da máquina entre as VMs.

Figura 15 - Máquina virtual

Fonte: O autor, baseado na ilustração do livro: MACHADO, Francis B.;

MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap1, p. 60.

Essa ideia de uma máquina virtual foi mui-to utilizada em um contexmui-to um pouco diferente. Para que fosse possível rodar programas no antigo MS-DOS em processadores Pentium, a Intel disponibili-zou um modo virtual 8086 em seu processador, incluindo um endereçamento de 16 bits com um limite de 1Mb.

(47)

Sistemas Cliente-Servidor – MicroKernel

Uma tendência nos sistemas operacionais modernos é mover o código para camadas mais altas e remover tanto quanto possível do sistema operacional deixando um mínimo de kernel. Neste

modelo, para requisitar um serviço, um processo de usuário (chamado de processo cliente) envia a requisição para um processo servidor que então faz o trabalho e remete de volta a resposta. Tudo que o kernel faz é gerenciar a comunicação entre clientes e servidores.

É um tipo de sistema em que as funções do sistema operacional ficam isoladas através de di-versos processos servidores pequenos, possuindo uma grande adaptabilidade para uso em sistemas distribuídos.

Figura 16 - O modelo cliente-servidor

Fonte: O autor, baseado na ilustração do livro: TANENBAUM, Andrew S.; WOODHULL, Albert S. Sistemas operacionais: projeto e implementação. 2, ed. Porto Alegre: Bookman, 2000, cap. 1, p. 44.

Este modelo permite que os servidores não tenham acesso direto a alguns componentes do sistema, pois trabalham em modo usuário, apenas o núcleo do sistema, responsável pela conversa en-tre clientes e servidores, executa no modo kernel.

Isso aumenta a disponibilidade do sistema, já que se o servidor parar, o sistema não ficará inteiramente comprometido.

Uma outra característica do modelo cliente-servidor é que os cliente-servidores se comunicam através

(48)

da troca de mensagens, logo, não faz diferença se os clientes e servidores são executados em um sis-tema com um único processador ou com múltiplos processadores.

A implementação do modelo cliente-servidor em sistemas distribuídos permite que ao ser solici-tado um serviço, a resposta seja processada remo-tamente. Isso permite acrescentar novos servidores à medida que o número de clientes aumenta (escalabilidade).

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Estruturas de sistemas

operacionais leia o Capítulo 4 (p. 50-62) do livro de:

MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de

sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007.

A apresentação em tópicos da arquitetura dos siste-mas operacionais torna sua abordagem clara e ilus-trativa, com destaques relevantes das características de vantagens e desvantagens de cada modelo. Para saber mais sobre Estruturas de sistemas

operacionais leia o item 1.5 (p. 39-43) do livro de:

TANENBAUM, Andrew S.; WOODHULL, Albert S.

Sistemas operacionais: projeto e implementação.

2. ed. Porto Alegre: Bookman, 2000.

A análise dos computadores que utilizavam cada uma das arquiteturas dos sistemas operacionais apresentados, com seus detalhes de capacidade

(49)

e componentes de hardware, nos dá uma ideia da evolução dos diferentes desenvolvimentos de projetos de sistemas operacionais.

PARA REFLETIR

Uma vez visto as principais estruturas do núcleo de um sistema operacional, você conseguiria indicar um deles como sendo o mais eficaz para os mi-cros de hoje? Discuta com seus colegas e procure justificar sua escolha. Além disso, publique suas conclusões no AVA.

RESUMO

No conteúdo 1.1 vimos juntos a evolução dos sis-temas operacionais por meio de um pequeno re-sumo dos principais fatos históricos que marca-ram o desenvolvimento dos computadores.

Na sequência, no conteúdo 1.2, conhecemos as classificações dos tipos de sistemas operacionais, suas principais características e aplicações.

Seguindo com nossos estudos, no conteúdo 1.3, aprendemos sobre os diferentes objetos geren-ciados pelo sistema operacional e as principais chamadas de sistema responsáveis pela interface entre o usuário e o sistema operacional, o que

(50)

contribuirá para uma melhor compreensão do próximo tema que tratará sobre os processos Por fim, no conteúdo 1.4 vimos as suas principais estruturas de composição do núcleo, as vantagens e desvantagens de cada uma dessas estruturas.

(51)
(52)

Gerenciamento de Processos

2

Neste texto trabalharemos sobre uma das funções mais essenciais do sistema operacional que é o gerenciamento dos processos, já que tudo mais gira em torno de seu conceito.

Ao final deste tema você será capaz de compreender melhor como os processos conversam entre si, seus tipos, estados e os critérios existentes para seu escalonamento.

(53)

2.1 Conceitos Fundamentais de Processos

Antes de entrarmos a fundo no assunto de processos, é importante distinguirmos bem dois conceitos fáceis de confundir: o de programa e o de processo. Você saberia diferenciá-los?

Conforme visto no tema passado, no item chamada de sistema para o gerenciamento de processo, o processo constitui-se de certo tipo de

atividade, e possui uma entrada, uma saída e um

estado, enquanto um programa é um conjunto de

códigos com uma finalidade específica.

Não é errado entendermos um processo como um programa em execução, mas seu significado vai

além disso. Podemos ter diversos programas concorrendo na utilização do processador onde seus processos são alternados de acordo com o controle do sistema operacional.

Assim, podemos dizer também que um

processo é uma espécie de ambiente onde um programa é executado. Um programa sempre está

associado a um processo.

Vamos deixar de lado todos os nomes téc-nicos usados e fazer uma analogia para esclarecer melhor os conceitos e funções de cada um.

Imagine um maestro diante de sua partitura para reger uma orquestra de 30 músicos. Para quem não tem intimidade com uma partitura, basta saber que uma partitura possui todas as instruções necessá-rias (nome da nota, valor, duração, interpretação, pausas, etc.) para que o músico a execute em seu instrumento.

Na analogia acima, o maestro é o processador (CPU), a partitura é o programa (um algoritmo escrito

em uma linguagem conveniente), os músicos da orquestra são os dados de entrada. O processo é a atividade do maestro de ler a partitura e reger os músicos que irão tocar a música.

(54)

Ilusão de paralelismo

Desnecessário dizer que qualquer computador desktop hoje consegue fazer várias coisas ao mesmo tempo. Enquanto executa um programa de usuário, pode também estar enviando um texto para a impressora, uma música para a saída de áudio e lendo um arquivo em disco. Bem, na verdade, não é correto dizer ao mesmo tempo. Você concorda

com isso?

Em um instante de tempo qualquer um pro-cessador executa somente um programa. No inter-valo de 1 segundo, o processador pode ter exe-cutado diversos programas, dando a ilusão de paralelismo. Essa rápida alternância é chamada de

multiprogramação, como foi visto no tema anterior.

O paralelismo verdadeiro ocorre quando te-mos um sistema com multiprocessadores (com dois ou mais processadores compartilhando a mesma memória física).

Extrapolando nossa analogia anterior, é como se tivéssemos um maestro para reger duas orquestras cada uma tocando uma música distinta. Ou rege uma por vez, ou precisaríamos de mais de um maestro para que ambas fossem regidas simulta-neamente.

Processos e os tipos de sistemas operacionais

No item passado conhecemos os tipos de sistemas operacionais existentes, e em todos eles a gerência de processos é uma das principais funções do sistema operacional, possibilitando aos programas alocar recursos, compartilhar dados sincronizar suas execuções e trocar informações.

Nos sistemas multiprogramáveis, os processos concorrem entre si compartilhando o processador, memória e dispositivos de entrada/saída

(55)

Nos sistemas com múltiplos processadores existe não só a concorrência de processos pelo uso do processador, como a possibilidade de execução simultânea de processos nos diferentes processadores.

Já em um sistema multiusuário, cada usuá-rio tem um programa associado a seu processo e possui a impressão de possuir todos os recursos do computador exclusivos para seu uso, o que não acontece, já que todos os recursos estão sendo compartilhados.

Estrutura de um processo

Um processo é formado por três partes, conhecidas como contexto de hardware, contexto

de software e espaço de endereçamento (MACHADO;

MAIA, 2007). Estas partes juntas contêm todas as informações necessárias à execução de um programa.

Figura 17 - Estrutura do Processo

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap. 5, p. 67.

(56)

O contexto de hardware armazena o conteúdo dos registradores que é fundamental para sua im-plementação nos sistemas multiprogramáveis, onde os processos se alternam na utilização da CPU.

Quando o processo está em execução, seu

contexto de hardware está armazenado nos

regis-tradores do processador e no momento em que deixa de utilizar a CPU, o sistema operacional salva as informações no contexto do hardware do processo.

O contexto de software possui a maior parte das suas informações localizadas em um arquivo do sistema operacional conhecido como arquivo de usuários. Ali estão especificados os limites dos recursos que cada processo pode alocar. Muitas dessas características são geradas dinamicamente ao longo da execução do processo.

Além disso, cada processo possui seu próprio espaço de endereçamento, uma área da memória onde instruções e dados do programa são armazenados para execução.

Implementação de um processo

A implementação de um processo é feita pelo sistema operacional através de uma estrutura de dados chamada bloco de controle do processo ( Pro-cess Control Block – PCB) e a partir desta estrutura,

o sistema operacional mantém todas as informações necessárias sobre o processo.

(57)

Figura 18 - Bloco de Controle do Processo

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap.5, p. 71.

Além disso, o sistema operacional mantém uma tabela chamada tabela de processos, com uma entrada por processo. Nessa tabela de processos, o sistema operacional mantém ponteiros para cada

bloco de controle de processos no contexto total

do sistema ou por usuários.

Figura 19 - Tabela de Processos

Fonte - DEITEL, Paul; DEITEL, Harvey; CHOFFNES David. Sistemas operacionais. 3. ed. Prentice

(58)

Todas as informações do processo devem ser salvas quando o processo alterna do estado rodando para o estado pronto, para que ele possa ser reini-ciado mais tarde do ponto onde parou (veja sobre estados de um processo no tópico abaixo).

Toda a gerência dos processos é realizada através de chamadas de sistema que realizam operações como criação, visualização, eliminação, dentre outras.

Estados de um processo

Como mencionado no tema anterior, um pro-cesso pode ter até três estados, gerando quatro tipos de transições na mudança de um estado para outro. No estado rodando (running), o

pro-cesso está efetivamente utilizando o processador e pode ser colocado nos estados bloqueado (wait)

ou pronto (ready).

Figura 20 - Estados de um processo

Fonte - TANENBAUM, Andrew S.; WOODHULL, Albert S. Sistemas opera-cionais: projeto e implementação. 2. ed. Porto Alegre: Bookman, 2000,

cap.2, p. 58.

Sua transição para bloqueado2 pode ocorrer

quando um processo logicamente não pode conti-nuar, normalmente porque está aguardando uma entrada que não está disponível ainda.

2 Alguns preferem chamar de estado de espera.

(59)

Sua transição para pronto ocorre quando o sistema operacional decide dedicar a utilização da

CPU a outro processo temporariamente, colocando

o atual processo em estado de espera.

A transição do estado pronto para rodando ocorre quando todos os outros processos do estado

pronto tiveram sua justa parte de utilização da CPU

e é hora do primeiro deles utilizar a CPU para executar novamente.

Finalmente a transição do estado bloqueado para o estado pronto acontece quando a entrada que o processo estava aguardando passou a estar disponível. O processo passa então do estado

blo-queado para o estado pronto aguardando a CPU

estar disponível.

Vale destacar aqui que em algumas bibliogra-fias, a exemplo de Silberschatz, Gagne e Galvin, (p. 64, 2005), consideram a criação e o encerramento de um processo pelo sistema operacional como es-tados de um processo. O que acha?

Criação e encerramento de processos

No gerenciamento de processos, o sistema operacional é responsável pela criação e exclusão de processos de usuário e de sistema, o escalona-mento de processos e o forneciescalona-mento de mecanis-mos para a sincronização, comunicação e tratamen-to de deadlocks para processos.

O Deadlock é uma situação em que dois ou

mais processos ficam bloqueados, pois um proces-so está aguardando a liberação de um recurproces-so por outro processo que também aguarda a liberação de um recurso alocado pelo primeiro processo.

A criação de um processo ocorre quando o sistema operacional adiciona um novo bloco de

controle de processo à sua estrutura e aloca um

(60)

Quando um processo é encerrado, a tabela

de processos retira o processo de sua tabela e

disponibiliza todos os seus recursos. Um processo pode ser encerrado por razões como a eliminação por outro processo, forçado por ausência de recursos disponíveis ou pelo término normal de sua execução.

A Hierarquia de Processos

Na maioria dos sistemas operacionais é preciso que exista alguma forma de criar e destruir pro-cessos conforme necessário durante a operação.

Já utilizou o atalho CTRL+ALT+DEL para fechar um programa?

Normalmente quando um processo é criado, a chamada de sistema que o criou, gera uma cópia do processo que fez a chamada. O processo-filho resultante também pode chamar a mesma chamada de sistema, sendo possível assim obter uma inteira árvore de processos.

Figura 21 - Estrutura de processos e subprocessos

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007, cap.5, p. 80.

(61)

Qualquer que seja a natureza exata da chamada de sistema, um processo precisa dispor de uma maneira de criar outros processos. Cada processo tem um pai e pode ter zero, um, dois ou mais filhos.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Conceitos Fundamentais de

Processos, leia o Capítulo 5 (p. 65-83) do livro de:

MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura

de sistemas operacionais. 4. ed. Rio de Janeiro:

LTC, 2007.

Com um texto bem completo sobre a criação, estrutura, tipos e estados de processos, os autores Francis e Luiz Paulo conseguem criar um excelente conceito de processo antes de tratar de seu geren-ciamento pelo sistema operacional.

Para saber mais sobre Conceitos Fundamentais de

Processos, leia o Capítulo 4 (p. 62-65) do livro de:

DEITEL, Paul; DEITEL, Harvey; CHOFFNES, David.

Sistemas operacionais. 3. ed. São Paulo: Prentice

Hall Brasil, 2005.

Em seu livro sobre sistemas operacionais, os con-sagrados autores Paul e Harvey apresentam uma excelente explicação sobre o conceito, estrutura e estados de processos.

(62)

PARA REFLETIR

Se dois processos podem necessitar utilizar ao mesmo tempo um dispositivo de entrada e saída, acredita que é possível uma solução definitiva para evitar que um processo impeça que o outro conclua sua execução? Pense a respeito.

2.2 Tipos de Processos

Um processo pode ser classificado de duas formas, de acordo com a utilização do processa-dor e dispositivos de entrada/saída. Assim, um pro-cesso pode ser conhecido como CPU-bound (ligado à CPU) quando passa grande parte do tempo utilizando o processador (running), ou no estado pronto (ready). É um tipo de processo que utiliza

poucas operações de leitura e gravação. Um bom exemplo é em aplicações que realizam muitos cálculos.

Ou um processo pode ainda ser definido como

I/O-bound (ligado à dispositivos de entrada/saída)

quando passa grande parte do tempo no estado

bloqueado (wait), pois efetua um grande número

de operações de entrada/saída. Bons exemplos são aplicativos comerciais e que possuem interativida-de com o usuário.

Além disso, é importante sabermos que um processo pode possuir ao menos dois canais de co-municação pelos quais são realizadas as entradas e saídas de dados. Desta forma um processo é fo-reground quando permite a comunicação direta do

processo com o usuário durante seu processamento. O processamento interativo, por exemplo, tem como base processos foreground.

Referências

Documentos relacionados

Assim como nas outras edições do curso, a avaliação em relação à clareza dos objetivos do curso e ao conteúdo do programa, foi bastante positiva, uma vez que mais de

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

- Remover as pastilhas usadas e retornar todo o parafuso de regulagem em seguida montar uma pastilha nova do lado da roda, empurrando com a mão a pinça no sentido do cilindro de

Preliminarmente, alega inépcia da inicial, vez que o requerente deixou de apresentar os requisitos essenciais da ação popular (ilegalidade e dano ao patrimônio público). No

Controlador de alto nível (por ex.: PLC) Cabo da válvula Tubo de alimentação do ar de 4 mm Pr essão do fluido Regulador de pressão de precisão Regulador de pressão de

Feitiço do Segredo: deposita um segredo numa pessoa de confiança, essa pessoa fica deposita um segredo numa pessoa de confiança, essa pessoa fica sendo o "Fiel do sendo o