• Nenhum resultado encontrado

SISTEMAS OPERACIONAIS

N/A
N/A
Protected

Academic year: 2022

Share "SISTEMAS OPERACIONAIS"

Copied!
104
0
0

Texto

(1)
(2)

CURSOS DE GRADUAÇÃO – EAD Disciplina:

Sistemas Operacionais - Profª. Ms. Gislaine Cristina Michelotti e Prof. Ms. Henri Alves de Godoy

Olá! Meu nome é Gislaine Cristina Micheloti Rosales. Sou tecnóloga em Processamento de Dados pela Faculdade de Tecnologia de Taquaritinga (FATEC) e mestre em Ciência da Computação pela Universidade Federal de São Carlos (UFSCar).

Atuo como docente no Centro Universitário Claretiano de Batatais, desde fevereiro de 2005, onde também assumi a coordenação do Curso de Tecnologia em Gestão da Tecnologia da Informação em fevereiro de 2006. Sou autora e revisora técnica de materiais didáticos para os cursos na modalidade a distância. Atuo como designer instrucional na Universidade Aberta do Brasil, pela Universidade Federal de São Carlos desde abril de 2007. Atuei como docente em outras faculdades públicas e privadas no Estado de São Paulo e Minas Gerais desde 2004. Atualmente, curso o doutorado em Ciência da Computação pela Universidade Federal de São Carlos.

e-mail: gicristina@claretiano.edu.br.

Olá, pessoal! Meu nome é Henri Alves de Godoy. Sou mestre em computação pelo Instituto de Computação da UNICAMP, especialista na área de Redes de Computadores e graduado em Ciências da Computação pela Escola de Engenharia de Piracicaba-SP. Atuo como docente no curso de Sistemas de Informação das Faculdades Integradas Claretianas de Rio Claro. Também ministro aulas no curso de graduação de Tecnologia de Sistemas de Informação das Faculdades Integradas Einstein de Limeira e no curso de graduação de gestão de Sistemas de Informação do Centro Brasileiro de Tecnologia Aplicada - CBTA.

Além da vida acadêmica, atuo profissionalmente como Administrador de Redes das Faculdades Integradas Claretianas, Seguranças da Rede Internet e supervisor do Provedor de Internet Claretianas em Rio Claro, como Webmaster.

Será um prazer trabalhar com vocês.

(3)

SISTEMAS OPERACIONAIS

Guia de Disciplina

Caderno de Referência de Conteúdo Prof a . Ms. Gislaine Cristina Micheloti Rosales

Prof. Ms. Henri Alves de Godoy

(4)

© Ação Educacional Claretiana, 2009 – Batatais (SP)

Trabalho realizado pelo Centro Universitário Claretiano de Batatais (SP) Cursos: Graduação

Disciplina: Sistemas Operacionais Versão: abr./2010.

Reitor: Prof. Dr. Pe. Sérgio Ibanor Piva Vice-Reitor: Prof. Ms. Pe. Ronaldo Mazula

Pró-Reitor Administrativo: Pe. Luiz Claudemir Botteon

Pró-Reitor de Extensão e Ação Comunitária: Prof. Ms. Pe. Ronaldo Mazula Pró-Reitor Acadêmico: Prof. Ms. Luís Cláudio de Almeida

Coordenador Geral de EAD: Prof. Artieres Estevão Romeiro

Coordenadora do Curso: Profª. Ms. Gislaine Cristina Micheloti Rosales Coordenador de Material Didático Mediacional: J. Alves

Preparação Aletéia Patrícia de Figueiredo Aline de Fátima Guedes Camila Maria Nardi Matos Carolina Nascimento Raymundini Dandara Louise Vieira Matavelli Elaine Aparecida de Lima Moraes Elaine Cristina de Sousa Goulart Lidiane Maria Magalini Luciana A. Mani Adami Luis Henrique de Souza Luiz Fernando Trentin Patrícia Alves Veronez Montera Rosemeire Cristina Astolphi Buzelli Simone Rodrigues de Oliveira

Revisão Felipe Aleixo

Isadora de Castro Penholato Maiara Andréa Alves Rodrigo Ferreira Daverni Vanessa Vergani Machado

Projeto gráfico, diagramação e capa Eduardo de Oliveira Azevedo

Joice Cristina Micai

Lúcia Maria de Sousa Ferrão Luis Antônio Guimarães Toloi Raphael Fantacini de Oliveira Renato de Oliveira Violin Tamires Botta Murakami Wagner Segato dos Santos

Todos os direitos reservados. É proibida a reprodução, a transmissão total ou parcial por qualquer forma e/ou qualquer meio (eletrônico ou mecânico, incluindo fotocópia, gravação e distribuição na web), ou o arquivamento em qualquer sistema de banco de dados sem a permissão por escrito do autor e da Ação Educacional Claretiana.

Centro Universitário Claretiano Rua Dom Bosco, 466 - Bairro: Castelo Batatais SP – CEP 14.300-000

cead@claretiano.edu.br

Fone: (16) 3660-1777 – Fax: (16) 3660-1780 – 0800 941 0006 www.claretiano.edu.br

(5)

APRESENTAçãO

1 ... VII DADOS GERAIS DA DISCIPLINA

2 ... VII CONSIDERAçõES GERAIS

3 ... VIII BIBLIOGRAFIA BáSICA

4 ... VIII BIBLIOGRAFIA COMPLEMENTAR

5 ... VIII

CADERNO DE REFERÊNCiA DE CONTEÚDO

APRESENTAçãO ... 1

iNTRODUÇÃO À DiSCiPLiNA

AULA PRESENCIAL ... 2

INTRODUçãO AOS SISTEMAS OPERACIONAI

UNIDADE 1 – S

INT

1 RODUçãO ... 4 DEFINIçãO DE SISTEMAS OPERACIONAIS

2 ... 4 SISTEMA OPERACIONAL COMO UMA MáqUINA VIRTUAL

3 ... 4

EVOLUçãO HISTóRICA DOS COMPUTADORES

4 ... 6 CONCEITOS BáSICOS DE SISTEMAS OPERACIONAIS

5 ... 9

CONSIDERAçõES

6 ... 13

GERENCIAMENTO

UNIDADE 2 – DE PROCESSOS INTRODUçãO

1 ... 16 DEFINIçãO DE PROCESSOS

2 ... 16 MODELO DE PROCRESSO

3 ... 16 ESTADOS DOS PROCESSOS

4 ... 18 SUBPROCESSOS E THREAD

5 ... 19 ESCALONAMENTO DOS PROCESSOS

6 ... 20 CONCORRêNCIA ENTRE PROCESSOS

7 ... 21 TROCAS DE MENSAGENS

8 ... 30

GERENCIAMENTO

UNIDADE 3 – DE MEMóRIA INTRODUçãO

1 ... 34 GERENCIAMENTO DE MEMóRIA SEM SWAPPING OU PAGINAçãO

2 ... 34

GERENCIAMENTO DE MEMóRIA COM PARTIçõES FIxAS

3 ... 35

TROCA DE PROCESSOS

4 ... 36 ALGORITIMOS DE SUBSTITUIçãO DE PáGINAS

5 ... 39

(6)

SISTEMAS DE ENTRADA

UNIDADE 4 – E SAíDA (I/O)

INTRODUçã

1 O ... 44 CONTROLADORES DE DISPOSITIVO

2 ... 45 DISPOSITIVOS DE E/S

3 ... 49

SISTEMAS DE ARqUIVO

UNIDADE 5 – S

INTRODUçãO

1 ... 62 INTRODUçãO AO TEMA

2 ... 62 ARqUIVOS

3 ... 62 ExEMPLOS DE SISTEMAS DE ARqUIVOS

4 ... 71

SEGURANç UNIDADE 6 – A

INTRODUçãO

1 ... 80 AVANçOS TECNOLóGICOS E SEGURANçA COMPUTACIONAL

2 ... 80

CRIPTOGRAFIA

3 ... 82 ATAqUES À SEGURANçA

4 ... 88 PREVENçãO DE ATAqUES

5 ... 90 SOFTWARE LIVRE, CóDIGO-FONTE ABERTO E SEGURANçA

6 ... 91

SISTEMAS DISTRIBUíDOS

7 ... 92 COMPUTAçãO NAS NUVENS

8 ... 93 CONSIDERAçõES FINAIS

9 ... 94

(7)

GUIA DE DISCI PL

Seja bem-vindo! Você iniciará o estudo de Sistemas Operacionais, que é uma das disciplinas que compõem os cursos de graduação, na modalidade EAD.

Esta disciplina oferecerá conhecimentos fundamentais que farão você entender o Sistema Operacional como parte essencial de qualquer sistema de computação. Serão apresentados conceitos sobre a forma como o sistema operacional realiza o gerenciamento das atividades básicas para controle de processos, da memória, entrada e saída, sistemas de arquivos e serão abordados assuntos inerentes à segurança em sistemas operacionais.

DaDos gerais Da Disciplina

2

Ementa

Conceito de sistemas operacionais como parte essencial de um sistema de computação. Estrutura básica de sistemas computacionais e de sistemas operacionais. O gerenciamento de processos e suas operações, o gerenciamento de memória, sistemas de arquivos e sistemas de entrada e saída. Conceitos relacionados à segurança em sistemas operacionais e estudos de casos.

Objetivo Geral

Os alunos de Sistemas Operacionais dos cursos de graduação, na modalidade EAD do Claretiano, dado o Sistema Gerenciador de Aprendizagem e suas ferramentas, irão entender o Sistema Operacional como parte essencial de qualquer sistema de computação e, também, o modo como o sistema operacional gerencia as atividades básicas e controla os processos da memória, da entrada e da saída etc.

Com esse intuito, os alunos contarão com recursos técnico-pedagógicos facilitadores de aprendizagem, como material didático mediacional, bibliotecas físicas e virtuais, ambiente virtual, e acompanhamento do tutor, complementado por debates no Fórum e na Lista.

Ao final desta disciplina , de acordo com a proposta orientada pelo tutor, os alunos estarão aptos a elaborar uma síntese das idéias norteadoras do estudo, ou outra atividade sobre o tema estudado nesta disciplina, que deverá ser disponibilizada no Portfólio. Para esse fim, levarão e consideração as ideias debatidas na Sala de Aula Virtual, por meio de suas ferramentas, bem como o que produziram durante o estudo.

Competências, habilidades e atitudes

Ao final deste estudo, os alunos dos cursos de graduação contarão com uma sólida base teórica para fundamentar criticamente a sua prática profissional. Além disso, adquirirão as habilidades não somente para cumprir seu papel de profissional, nesta área do saber, mas também para agir com ética e com responsabilidade social, contribuíndo, assim, para a formação integral do ser humano.

Modalidade

( ) Presencial ( x ) A distância

(8)

GUIA DE DISCIPLINA

Cursos de Graduação

Duração e carga horária

A carga horária da disciplina Sistemas Operacionais é de 60 horas. O conteúdo programático para o estudo das seis unidades que a compõe está desenvolvido no Caderno de referência de conteúdo, anexo a este Guia de disciplina, e os exercícios propostos constam do Caderno de atividades e interatividades (CAI).

ATENÇÃO!

É importante que você releia no Guia acadêmico do seu curso as informações referentes à Metodologia e à Forma de Avaliação da disciplina Sistemas Operacionais. A síntese dessas informações consta do “cronograma” na Sala de Aula Virtual – SAV.

consiDerações gerais

3

Durante o desenvolvimento da disciplina Sistemas Operacionais você compreenderá conceitos importantes sobre o gerenciamento de memória realizado pelo sistema operacional para melhorar o desempenho do computador.

Além de conhecer, você também diferenciará o papel do sistema operacional em relação aos dispositivos de entrada/saída de dados.

Esta disciplina fornecerá ainda uma visão lógica do armazenamento de informações, como por exemplo, sistemas de arquivos.

É importante que você tenha uma visão clara dos objetivos que desejamos atingir com o estudo da presente disciplina. Se for necessário, recorra ao Guia Acadêmico para esclarecer suas dúvidas a respeito da metodologia de estudo de um curso EAD, que privilegia a autonomia como fator importante na modalidade a distância. Chamamos sua atenção para a leitura e pesquisa das obras indicadas, para o aprofundamento dos conteúdos, para a interação na Sala de Aula Virtual.

É fundamental que você organize seu tempo e se dedique ao seu estudo.

Participe, interaja com seus colegas de curso e seu professor. Use seu login e sua senha e entre no Sistema Gerenciador de Aprendizagem – Sala de Aula Virtual. Utilize as várias ferramentas colocadas a sua disposição.

BiBliografia Básica

4

MACHADO, F. B.; MAIA, L.P. Arquitetura de Sistemas Operacionais. LTC, 1997.

SILBERSCHATz, A.; GALVIN, P. B.; GAGNE, G. Sistemas Operacionais: Conceitos e Aplicações. Editora Campus, 2001.

TANENBAUM, A. S. Sistemas operacionais modernos. 2. ed. São Paulo: Prentice Hall, 2003.

BiBliografia complementar

5

CARMONA, T. Universidade Linux. São Paulo: Digerati books, 2005.

DAHAB, Ricardo. Apostila de Criptografia. Campinas: Unicamp, 2001.

(9)

DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas Operacionais. 3. ed., São Paulo:

Prentice Hall Brasil, 2005.

GEUS, Paulo Licio de. Apostila de Segurança Pública. Campinas: Unicamp, 2003.

MARCELO, A. Segurança em Linux-Um guia prático do Administrador de sistemas seguros.

Brasport livros e multimídia LTDA, 2003.

MOTA FILHO, J. E. Descobrindo o Linux: entenda o sistema operacional GNU/LINUx.

Novatec, 2006.

MORIMOTO, C. E. Guia Prático de Linux: Entendendo o Sistema. Sulina, 2006.

SILBERSCHATz, A.; GALVIN, P. B. Conceitos de Sistemas Operacionais. 5. ed. John Wiley

& Sons, 1999.

SILBERSCHATz, A.; VIEIRA, D. (Trad.). Sistemas operacionais: conceitos e aplicações. 6.

ed. Rio de Janeiro: Campos, 2004.

SHAY, W. A. Sistemas Operacionais. São Paulo: Makron Books, 1996 STALLINGS, W. Operating Systems. Prentice Hall, 1995.

TANENBAUM, A.S. Operating Systems: Design and Implementation. 2. ed. Prentice-Hall, 1997.

TANENBAUM, A. S.; WOODHULL, A. S. Sistemas Operacionais: Projeto e Implementação.

2. ed. Bookman, 2000.

(10)

Anotações

(11)

CADERNO DE REFERÊ NCIA DE CONTE ÚDO

Seja bem-vindo! Como você pôde observar no Guia de disciplina, Sistemas Operacionais é uma das disciplinas que compõem os cursos de graduação na modalidade EAD.

Nesta parte, chamada de Caderno de referência de conteúdo, você encontrará o conteúdo das seis unidades em que se divide a presente disciplina. No Caderno de atividades e interatividades (CAI) você encontrará as atividades e as interatividades que serão desenvolvidas durante o tempo em que a disciplina estiver disponibilizada.

Você aprenderá, nesta disciplina, os Sistemas Operacionais sob três dimensões:

conceitual, tecnológica e prática.

A dimensão conceitual envolve conceitos fundamentais básicos, tais como:

concorrência, multiprocessamento e tempo compartilhado.

A dimensão tecnológica abrange principalmente aspectos sobre a implementação e o funcionamento de sistemas operacionais, tais como: gerenciamento de processos e memória, sistemas de arquivos e sistemas de entrada e saída.

A terceira e última dimensão envolve a prática realizada em aulas presenciais, em laboratório, com a resolução de exercícios.

Ao final de estudo desta disciplina, é fundamental que você além de compreender como o sistema operacional gerencia os programas em execução, compreenda também a importância do gerenciamento de memória realizado pelo sistema operacional para melhorar a utilização da CPU.

É necessário ainda que você assuma a responsabilidade do seu aprendizado, na adaptação, no aprimoramento e na capacitação profissional e pessoal.

Esta apostila não deverá ser a sua única fonte de informação a ser consultada.

Nem esta nem outras apostilas. Sugerimos que você consulte revistas, livros e outras fontes especializadas para entender melhor os conceitos estudados. É necessário que você adquira o hábito da pesquisa.

Como você pode perceber, o desafio é grande. Você está convidado a fazer parte conosco deste novo caminho de construção do saber. Mas não se preocupe, pois nossos professores estarão sempre a seu lado. Você poderá fazer perguntas e resolver suas dúvidas na Sala de Aula Virtual ou pelo 0800.

Esteja consciente de que seu bom desempenho intelectual dependerá de você mesmo. Na educação a distância, é fundamental que você participe ativamente dos debates no Fórum e na Lista, discutindo e debatendo os conteúdos com seus colegas e professores.

Bom estudo!

APRESENTAÇÃO

Que você tenha um bom e proveitoso estudo! Não tenha receio! aceite o desafio! Venha fazer parte desse novo processo de construção coletiva do saber.

(12)

INTRODUÇÃO À DI SCIPL IN A

AULA PRESENCIAL

Objetivos

• Entender como a disciplina Sistemas Operacionais está organizada e como será trabalhada para absorção dos conteúdos.

• Distinguir os conceitos básicos e necessários ao desenvolvimento da disciplina.

• Interagir com os participantes do curso: alunos e professores.

• Ambientar-se com as ferramentas utilizadas no decorrer da disciplina.

Conteúdo

• Programa e plano de desenvolvimento da disciplina.

(13)

UNI DADE 1

Objetivo

• Conhecer a evolução dos Sistemas Operacionais e sua estrutura básica.

Conteúdos

• Introdução e definição de Sistemas Operacionais.

• Histórico e evolução dos Sistemas Operacionais.

• Estruturas básicas de Sistemas Computacionais e de

Sistemas Operacionais.

(14)

Cursos de Graduação

UNIDADE 1

introDução

1

Nesta primeira unidade, você aprenderá sobre a funcionalidade básica de um computador e acompanhará um breve histórico dos marcos mais importantes da evolução dos computadores e, conseqüentemente, do surgimento e da evolução dos sistemas operacionais.

Conhecerá, ainda, a importância e as funcionalidades gerais de um sistema operacional.

Para que um computador moderno tenha um bom desempenho é necessário que ele tenha um sistema operacional, ou seja, um tipo básico de software que age como um supervisor para todos os aplicativos.

Os softwares podem ser divididos, basicamente, em dois tipos: programas do sistema – aqueles que manipulam as operações do computador e programas aplicativos – aqueles usados pelo usuário para realizar algum cálculo, edição de texto, processamento de imagens, entre outras funções.

O programa do sistema mais importante é o sistema operacional, que controla todos os recursos do computador e, também, gerencia a execução de programas aplicativos.

Definição De sistemas operacionais

2

Um computador moderno pode ser constituído de vários processadores, da memória principal, relógios, terminais, discos, redes de comunicação, dispositivos de entrada e saída, entre outros componentes. O sistema operacional tem a tarefa de gerenciar todos esses componentes e, conseqüentemente, poupar o programador da complexidade de manipular diretamente a máquina.

Imagine uma operação “simples” de gravação de arquivo no disco 3 ½.

Imaginou? É simples, não é? É só “arrastar-soltar”? Você poderia se impressionar com a quantidade de operações envolvidas na gravação de um arquivo em disquete. Todas essas operações são realizadas pelo sistema operacional e graças a ele, temos a falsa sensação da simplicidade ao acessarmos a unidade de disco flexível!

Se não existisse o sistema operacional, cada programador teria que inventar a maneira de um programa apresentar os textos ou gráficos na tela, enviar dados para a impressora, ler e gravar arquivos em discos e executar algumas funções que conciliem de forma eficiente o hardware e o software.

sistema operacional como uma máquina virtual

3

O sistema computacional pode ser visto por uma divisão em níveis e cada nível representa uma camada com funcionalidades específicas. Essa divisão é conhecida como máquina de níveis.

atenção!

No início e durante o desenvolvimento das unidades, é importante que você sempre fique atento às informações contidas no Guia acadêmico.

Programe, organize seus estudos e participe, ativamente, na Sala de Aula Virtual. Ter disciplina para estudar pode ajudar você a tirar o máximo de proveito em seu curso de Educação a Distância.

atenção!

Se pensar em um computador moderno, só com a experiência que já adquiriu em outras disciplinas e com a prática em computação, você concordaria que um computador é um sistema complexo. Agora, aprenderemos um pouco mais sobre a maneira como os componentes e os recursos de um computador podem ser gerenciados.

informação:

Disco 3 ½, ou apenas disquete flexível, é um dispositivo magnético de armazenamento permanente de dados.

informação:

Originalmente, os sistemas operacionais foram criados para suportar uma das mais complexas operações de entrada/saída: a comunicação com as diversas unidades de disco. Por este motivo, os nomes atribuídos aos primeiros sistemas operacionais continham o acronômo DOS (Disk Operation System) para o sistema operacional em disco.

(15)

A divisão de funcionalidades em camadas favorece a implementação de sistemas operacionais e possibilita, ao programador de aplicações, trabalhar com abstrações de alto nível sem se preocupar com os detalhes durante a implementação.

Lembra do exemplo utilizado anteriormente, sobre a gravação em disco? Se o programador tivesse que se preocupar com o processo de gravação, diretamente no hardware, teria que conhecer todo o funcionamento de leitura/gravação especificamente no disco utilizado, além dos demais processos envolvidos. Isto seria difícil, visto que o programador deveria conhecer todo o funcionamento de cada componente de hardware.

Ao criar programas com a utilização de arquivos, será muito mais complexo quando for implementar o processo de gravação também. A gravação em disco foi somente um exemplo, imagine a quantidade de ações que o usuário poderia requerer e que o programador deveria implementar!

O sistema operacional facilita o desenvolvimento de aplicativos, pois esconde a complexidade do hardware. Isto é possível graças à existência de uma camada de software, sobre a camada de hardware, que gerencia todas as partes do sistema. O usuário, então, é presenteado com uma interface que é mais fácil de entender e de programar. Esta interface é chamada de máquina virtual ou de máquina multiníveis por alguns autores.

A maioria dos computadores modernos possui uma estrutura de níveis, conforme nos mostra a Figura 1. Um computador pode conter mais ou menos níveis, de acordo com a necessidade e cada nível, por sua vez, possui funcionalidades específicas variando da mais elementar (baixo nível) a mais sofisticada (alto nível).

Aplicativos Utilitários Sistema Operacional Linguagem de Máquina

Microprogramação Dispositivos Físicos

Hardware

Figura 1 Máquina de Níveis.

Confira, a seguir, a definição de cada nível.

Dispositivos físicos – refere-se ao equipamento, como por exemplo: circuitos integrados, unidades de discos e tubo de raios catódicos.

Microprogramação – é a camada superior aos dispositivos físicos e é, basicamente, constituída por softwares capazes de interpretar e executar instruções em linguagem de máquina (ADD, SUB).

Linguagem de máquina – é constituída por instruções que movem os dados pela máquina, efetuando operações lógicas e aritméticas.

Sistema operacional – possui duas funções principais: esconder a complexidade do hardware, oferecendo ao programador uma interface mais fácil de trabalhar e gerenciar os recursos compartilhados de forma sincronizada.

Utilitários – representa os programas independentes da aplicação, dos quais alguns são fornecidos pelo fabricante, como por exemplo: editores de texto e compiladores.

Aplicativos – representa a camada de programas escritos pelos usuários.

atenção!

Na disciplina Arquitetura e Organização de Computadores, conhecemos alguns

conceitos, porém é importante relembrarmos nesta disciplina sobre conceitos fundamentais e sobre a evolução dos computadores. Só que desta vez, vistas com foco voltado para a evolução dos sistemas operacionais.

atenção!

Os sistemas operacionais não foram concebidos da maneira como vemos hoje. Eles foram adaptados com o passar do tempo devido à evolução dos dispositivos e da tecnologia computacional.

(16)

Cursos de Graduação

UNIDADE 1

evolução histórica Dos computaDores

4

Você já ouviu falar, ou pelo menos leu que os primeiros computadores eram imensos e que ocupavam salas enormes, eram movidos por uma infinidade de válvulas e tinham um funcionamento duvidoso. Agora, você acompanhará um pouquinho da evolução desses “monstros” até os computadores “inteligentes” e, algumas vezes, “imperceptíveis”

que existem hoje.

O primeiro computador digital foi criado no século xIx (1833) por Charles Babbage (1792 - 1871). Esse computador era conhecido como Máquina Analítica, possuía o conceito de CPU (Central Processing Unit, em português Unidade Central de Processamento), memória, UC (Unidade de Controle) e dispositivos de entrada/saída, além de um software que possibilitava seu uso. Confira na Figura 2 como era este computador.

Figura 2 Máquina Analítica de Babbage.

Houve vários avanços tecnológicos e inventos importantes depois do computador de Babbage, que não teve muito sucesso devido à pouca tecnologia da época. Os avanços mais significantes podem ser divididos em gerações (1ª, 2ª, 3ª, 4ª e 5ª), como você poderá acompanhar a seguir.

1ª geração (1940–1955)

A primeira geração de computadores foi marcada pelo invento das válvulas.

Computadores eletromecânicos, como calculadoras, que ocupavam salas imensas eram formados por milhares dessas válvulas. O desenvolvimento de tais máquinas foi desencadeado pela Segunda Guerra Mundial com a finalidade de acelerar os procedimentos manuais realizados para fins militares.

Na época ainda não existia o conceito de sistema operacional e nem de linguagem de programação. O acesso às máquinas era feito por meio de reserva de tempo, na qual cada usuário fazia sua programação diretamente nos painéis das máquinas, que realizavam cálculos numéricos.

Observe a Figura 3 e imagine a complexidade de operação de tais computadores!

atenção!

Você conhecerá os principais marcos da história da evolução dos computadores e, conseqüentemente, dos sistemas operacionais.

atenção!

Você poderá encontrar divisão das gerações em períodos de forma um pouco diferente em outras bibliografias, devido ao foco dado na exposição do conteúdo.

(17)

Válvulas

Figura 3 Computadores baseados em válvulas.

No final dos anos 40 (1949) surgia o primeiro computador eletrônico capaz de implementar o conceito de “programa armazenado”. Esse computador foi chamado de ENIAC (Electronic Numerical Intergrator Computer).

Figura 4 ENIAC1.

Ainda na década de 40 surgiu a possibilidade da utilização de transistores e memória magnética que aumentavam a velocidade e a confiabilidade no processamento com maior capacidade de armazenamento, porém o primeiro computador transistorado surgiu apenas no final dos anos 50.

Na década de 50 aparecem os cartões perfurados. O nome deve-se ao fato de que os programas eram perfurados (codificados) nos cartões.

2ª geração (1955–1965)

A segunda geração foi marcada por três avanços igualmente importantes para a computação:

• utilização, em massa, de transistores;

• sistemas com processamento em batch;

• surgimento de linguagens de programação de alto nível (FORTRAN, ALGOL e COBOL).

O processamento em batch (lote) era constituído por três fases:

• Programas já gravados em cartões perfurados eram submetidos a uma leitora.

Após realizada a leitura, eles eram salvos em uma fita magnética de entrada utilizando um computador de pequeno porte (IBM 1401).

• A fita de entrada era colocada no computador de grande porte (IBM 7094) que realizava a leitura e o processamento de cada programa e, ao final, gravava o resultado em uma segunda fita (de saída).

• A segunda fita (de saída) era colocada em um computador (IBM 1401) que lia a fita de saída e imprimia seu conteúdo.

(1) eniac realizava

programação por meio de fios e pinos (como painel telefônico).

(18)

Cursos de Graduação

UNIDADE 1

Observe a Figura a seguir.

1401 7094 1401

Leitor de cartão

Drive

de fita Entrada

da fita

Entrada da fita Sistema de

processamento

da fita Impressora

Figura 5 Sistemas em Batch.

Os transistores possibilitaram a comercialização de computadores de grande porte – mainframes; e o processamento em batch foi um grande avanço na época, pois viabilizava a utilização do processador e diminuía o tempo de espera entre a execução dos programas. Com a utilização de linguagens de alto nível, os programas deixaram de ter relação direta com o hardware.

3ª geração (1965–1980)

A terceira geração de computadores foi marcada pelo surgimento de circuitos integrados, do sistema operacional OS/360 e pela utilização de técnicas como:

multiprogramação e time sharing.

A multiprogramação é caracterizada pela execução de vários programas “ao mesmo tempo” por meio da divisão da memória em diversas partes em que cada uma delas há um processo2.alocado. Além disso, há o gerenciamento pelo sistema operacional de todos os recursos do sistema, tais como CPU, memória, sistemas de arquivos, que são disputados pelos vários programas, ou processos.

A idéia era manter na memória, simultaneamente, uma quantidade de processos suficientes para ocupar 100% do tempo do processador diminuindo a ociosidade. Desta forma, quando o programa em execução precisasse realizar uma operação de entrada/

saída, o processador poderia alocar o espaço de memória para outro programa, ou seja, o processador não precisaria ficar ocioso, aguardando o término da operação.

A técnica de time sharing ou tempo compartilhado consiste em dividir o tempo de utilização do processador entre todos os programas, ou seja, a cada intervalo de tempo um programa diferente ocupa o processador. O intervalo de tempo que cabe ao programa para ocupar o processador é conhecido por time slice ou fatia de tempo.

O surgimento do Sistema Operacional OS/360 suportava a utilização das técnicas de multiprogramação e tempo compartilhado, porém o processo de desenvolvimento e depuração das aplicações ainda era muito lento.

4ª geração (1980–1990)

Os avanços tecnológicos até então culminaram em uma quarta geração que foi marcada pelo surgimento dos PC’s (Personal Computers, em português Computadores Pessoais) que utilizavam a tecnologia de circuitos integrados de larga escala (LSI – Large Scale Intregated) que permitia chips com milhares de transistores encapsulados em um centímetro quadrado de silício (Exemplo: Intel 8080, IBM PC, Apple Macintosh).

atenção!

Processamento em batch se caracteriza em processar grandes quantidades de informações em “lotes”. Os sistemas em batch tinham funções específicas de processamento.

(2) Para cada programa em execução existe, pelo menos, um processo que o representa e que está ocupando o processador durante sua execução. A Unidade 2 desta apostila retoma o conceito de processos em uma definição mais abrangente.

atenção!

Para que um processo esteja em execução, é preciso que ele ocupe o processador naquele momento. Quando falamos de tempo compartilhado, podemos pensar no processador como um componente que, a cada intervalo de tempo, é ocupado por um processo diferente.

(19)

Outro marco importante da quarta geração de computadores é o surgimento de sistemas operacionais mais modernos, alguns exemplos são: a evolução do DOS (Disk Operation System) para MS-DOS (MicroSoft DOS) baseados em comando; sistemas operacionais de rede, tendo destaque o Novell Network; os sistemas da Macintosh baseados em janelas (GUI – Graphical User Interface, em português Interface Gráfica de Usuário).

5ª geração (1990–dias atuais)

Atualmente, estamos na quinta geração de computadores, caracterizada inicialmente pela computação distribuída, na qual um processo, que representa um programa em execução, pode ser dividido em vários outros subprocessos que executam em sistemas multiprocessados, ou seja, em vários processadores que podem estar espalhados pela rede.

Imagine como seria ouvir uma música cuja execução fosse realizada de forma distribuída. Acompanhe o raciocínio:

Suponha que você esteja em um computador conectado à Internet ouvindo uma música ao vivo pela estação virtual de rádio, e que o som esteja saindo no sistema de áudio do computador ao lado, já que seu computador não possui um.

Observe: a música está sendo “carregada” do servidor (estação virtual de rádio) para seu computador que possui uma aplicação de áudio (por exemplo, real player), mas você não tem a caixinha de som e para isso utiliza o sistema de som compartilhado na rede que está em uma terceira máquina. É possível?

Isso é perfeitamente possível nos sistemas computacionais existentes hoje, pois os sistemas operacionais atuais são capazes de controlar todos os recursos necessários para permitir maior facilidade, flexibilidade e conforto ao usuário.

Outros avanços que destacam esta quinta geração são: desenvolvimento e utilização do protocolo TCP/iP (Transfer Control Protocol / Internet Protocol, em português Protocolo de Controle de Tranferência /Protocolo de Internet), surgimento do padrão Ethernet para redes locais desenvolvido pela xerox, o desenvolvimento e popularização do modelo cliente/servidor e internet.

Nos dias atuais, discute-se o conceito de computação presente em todos os lugares, chamado de Computação Ubíqua3, que foi impulsionado pela disseminação e maior abrangência das tecnologias de comunicação sem fio, da evolução da tecnologia de sensores, da microeletrônica, da miniaturização de dispositivos móveis e do surgimento de arquiteturas de software flexíveis que suportam estes avanços.

Antes de iniciarmos os estudos sobre sistemas operacionais em sua dimensão tecnológica e prática, há alguns conceitos básicos importantes que você precisa conhecer.

conceitos Básicos De sistemas operacionais

5

Agora, você conhecerá alguns conceitos básicos que serão abordados com mais profundidade nas próximas unidades.

atenção!

Para maiores informações sobre a origem de cada geração, consulte as bibliografias sugeridas.

atenção!

No multiprocessamento distribuído suas funções podem ser divididas entre vários processadores por meio de redes locais e redes distribuídas.

Está distribuição só é possível devido à redução dos custos de comunicação e do aumento na taxa de transmissão de dados.

informação:

Um sistema operacional distribuído é um sistema operacional centralizado, mas que, na realidade, tem suas funções executadas por um conjunto de máquinas independentes.

(3) ubíqua – que está ao mesmo tempo em toda a parte;

onipresente (Dicionário Aurélio).

(20)

Cursos de Graduação

UNIDADE 1

Monotarefa

Os primeiros sistemas operacionais executavam um único programa (job) de cada vez. Os outros programas deveriam aguardar seu término para poderem executar.

Estes sistemas operacionais são chamados de monotarefa, pois permitem que todos os recursos do sistema fiquem dedicados a uma única tarefa.

Multitarefa

Um sistema operacional pode ser chamado de multitarefa se suportar a execução concorrente de vários programas, dividindo os recursos do computador (CPU, memória e periféricos) de forma ordenada e protegida entre os programas.

Um sistema multitarefa pode ser classificado como monousuário ou multiusuário, dependendo do número de usuários que podem interagir com ele a cada vez. Os sistemas multitarefa suportam quando possuem um único terminal de entrada conectado recebe o nome de monousuário e se tiver mais de um terminal de entrada conectado recebe o nome de multiusuário.

Um sistema operacional multitarefa pode ser cooperativo ou preemptivo.

Cooperativo quando não há interrupções do sistema, um processo com posse da CPU a libera voluntariamente e preemptivo quando uma interrupção gerada pelo sistema o interrompe para outro processo ocupar a CPU.

Processos

Processo é a abstração de um programa em execução.

Usaremos como exemplo um tocador de rádio.

Para que um programa entre em execução, obrigatoriamente ele ocupará a CPU para executar a música. Cada programa terá, pelo menos, um processo que o represente como entidade ativa durante a competição de recursos do sistema, tais como acesso a discos, periféricos e principalmente à CPU.

O tocador de áudio terá pelo menos um processo que é a entidade ativa que compete pelos recursos do computador, assim como todos os outros processos em um sistema competem por recursos entre si.

Em sistemas multitarefa existem vários processos utilizando a CPU

“simultaneamente”. Cada processo pode assumir, basicamente, três estados: execução - utiliza a CPU; bloqueado – espera algum recurso, a leitura de um disco, por exemplo;

pronto – ocupará a CPU que, no momento, está ocupada por outro processo.

Multiprocessamento

Os sistemas com múltiplos processadores caracterizam-se por possuir dois ou mais processadores compartilhando a mesma memória e dispositivos de entrada e saída. Os múltiplos processadores possibilitam aumentar a capacidade computacional do sistema com menor custo, além de permitir a reconfiguração e o balanceamento do sistema.

interpretador de Comandos (Shell)

O shell é a interface de interação entre o usuário e o sistema operacional. Por meio dele o usuário solicita a execução de programas e envia comandos interpretados para o sistema operacional.

(21)

Chamadas de Sistema (System Calls)

System Calls consistem na interface entre programas aplicativos e o sistema operacional. As chamadas do sistema criam, excluem e utilizam objetos de softwares gerenciados pelo S.O., tais como processos e arquivos.

A Tabela 1 apresenta características dos principais sistemas operacionais utilizados e que contribuíram para a evolução histórica destes sistemas.

Tabela 1 Características dos sistemas operacionais.

SiSTEMA OPERACiONAL CARACTERÍSTiCAS

DOS (Disk Operation System)

• Adquirido por Bill Gates na década de 80.

• Baseado em linha de comando.

• Memória de até 640K e Arquitetura de 16-bit.

• Possuiu interface gráfica na versão Windows 3.11.

Mac OS

• Sistema Operacional para computadores Macintosh (Apple®).

• Multitarefa e Multiusuário.

• Controla recursos da Rede.

• Interface Gráfica.

OS/2

• Lançado pela IBM®.

• Arquitetura 32-bit.

• Multitarefa.

• Controla recursos da Rede.

• Interface Gráfica orientada a objetos.

Windows NT/2000

• Sistemas Operacionais da Microsoft® .

• Arquitetura de 32-bit.

• Multiprogramação.

• Próprios para servidores.

Versões (Win2000): Professional, Server, Advanced Server e Data Center Server.

Windows 95/98/ME

• Microsoft®.

• Win95 foi o primeiro SO criado pela Microsoft e com interface gráfica.

• Win98 suporta rede e Multiprogramação.

• Windows ME trazia poucas vantagens e foi considerada uma versão ruim e defeituosa.

• Todos com arquitetura de 32-bit.

Windows XP (eXPerience)

• Microsoft®.

• Arquitetura de 32-bit e 64-bit.

• Multiprogramação.

• Suporte a Rede.

• Servidor de alta performance.

Versões: Professional, Home, TabletPC, Embedded e Starter Edition.

(22)

Cursos de Graduação

UNIDADE 1

SiSTEMA OPERACiONAL CARACTERÍSTiCAS

Windows 2003

• Microsoft®.

• Arquitetura de 32-bit e 64-bit.

• Multiprogramação.

• Suporte a Rede e Servidor.

Versões: Stantard Edition, Enterprise Edition, Data Center Edition e Web Edition.

Windows Vista

• Microsoft®.

• Pastas virtuais.

• Comandos de voz.

• Arquitetura de 32-bit e 64-bit.

• Suporte a Rede e Servidor.

Windows CE

• SO da Microsoft® para sistemas embarcados (embedded) como rádios automotivos, celulares, PDA’s, robôs, TV e outros computadores de mão com rede sem fio.

UNIX

• Software de código aberto (open-source).

• Multiusuário, multitarefa.

• Suporte a rede e servidor de alta performance.

• Baseado em linha de comando, mas possui suporte a Interfaces Gráficas (X-win, Motif).

Algumas distribuições: BSD (FreeBSD, OpenBSD e NetBSD), Solaris, IRIX, AIX, HP-UX, Tru64, Maços X.

Linux

• Software de código aberto (open-source).

• Seu núcleo (kernel) é escrito no mesmo padrão do Unix (padrão POSIx – Portable Operation System Interface) e por isso possui características semelhantes ao Unix e, portanto, considerado como tal.

Algumas Distribuições: Caldera, Conectiva, Debian, Fedora, Red Hat, SUSE, Ubuntu, Mandrake

Classificação de um sistema operacional

Sistemas Proprietários: não oferece acesso ao código fonte e são pagos Exemplo: Windows.

Sistemas Gratuitos: não têm custos para utilizá-los, mas você não pode ter acessar o código fonte. Exemplo: BeOS.

Sistemas de Código Aberto (Open-Source): são sistemas nos quais o código fonte é público. Exemplo: Unix.

Sistemas Livres: são comercializados como Open-Source e possibilitam alterações no código-fonte. Exemplo: Linux, BSD.

Imagine um sistema operacional em um carro que identifica, com a ajuda de sensores, a presença de pessoas estranhas no interior do veículo, ou então que a fechadura foi violada e as digitais não conferem com as do dono. O sistema pode efetuar ações de enviar mensagens ou realizar ligações para a seguradora, para o dono do veículo e para a polícia antes mesmo de o ladrão conseguir tomar posse do carro. Provavelmente isso funciona melhor do que aquele alarme que muitas vezes dispara só por esquecermos o vidro traseiro aberto ½ centímetro.

informação:

Ao consultar a internet, você poderá encontrar informações sobre a história de cada sistema operacional, fatos sobre a criação do sistema, criadores, utilização e características, e em alguns casos sobre a saída do sistema do mercado como, por exemplo, o caso do OS/2 em julho de 2005.

para vocÊ refletir:

Você pode fazer uma previsão da evolução tecnológica para alguns anos futuros?

Carros inteligentes capazes de reconhecer o verdadeiro dono e evitar roubos?

(23)

Sistemas deste tipo, provavelmente, existirão em menos tempo do que imaginamos, talvez com algumas características diferentes, é claro, mas muito mais evoluídos que os sistemas atuais.

que tal um sistema operacional totalmente gratuito, independente de hardware, código livre e que nunca trava?

Ideologia?

As comunidades de desenvolvimento de softwares livres na Internet prometem um sistema operacional com tais características.

consiDerações

6

Os conhecimentos apresentados nesta unidade demonstram a evolução dos computadores e dos sistemas operacionais.

Você pode visualizar uma macrodivisão em:

Era do mainframe (até 1970) traz a idéia de um único recurso computacional compartilhado por muitas pessoas.

Era do computador pessoal (a partir de 1980) é caracterizada pela relação de um computador para cada pessoa.

Era da computação ubíqua (a partir da década de 90) caracterizada pela disponibilidade de vários recursos computacionais para uma única pessoa em um ambiente, devido a uma proliferação de dispositivos, variando em tamanho e formato, unida aos avanços da computação distribuída e da computação móvel.

atenção!

No Caderno de atividades e interatividades (CAI) você encontrará todas as interatividades e atividades propostas. Participe! Interaja com seus colegas de curso e com seu professor. Lembre-se de que é fundamental que você entregue as atividades nas datas previstas.

(24)

Anotações

(25)

dE PROCESSOS

Objetivo

• Compreender a maneira como o sistema operacional controla o gerenciamento dos programas em execução por meio do gerenciamento de processos – no qual cada processo representa a abstração do programa em execução.

Conteúdos

• Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo.

• Escalonadores e escalonamento de processos.

• Cooperação, comunicação e sincronização entre os processos. Threads e Deadlocks.

UNI DADE 2

(26)

Cursos de Graduação

UNIDADE 2

introDuçã

1 o

Na unidade anterior você conheceu o histórico e a evolução dos sistemas operacionais, aprendeu alguns conceitos importantes para o seu estudo, como por exemplo a multiprogramação.

Você pôde compreender que um sistema multiprogramável permite a execução de diversas tarefas ao mesmo tempo, simulando um ambiente de monoprogramação para cada usuário, sendo que cada um tem a sensação de estar utilizando um processador exclusivamente para si. Mas vimos que o que realmente acontece é a divisão do tempo do processador para todos os programas (time-sharing).

Nesta unidade você aprenderá mais sobre o chaveamento de programas, ou seja, a troca de programas no processador e, principalmente, sobre a entidade que torna essa troca possível, chamada de processo. Além de técnicas e algoritmos utilizados para realizar o escalonamento e a sincronização entre processos, respectivamente.

Definição De processos

2

Um processo é tudo aquilo que o processador executa efetivamente, ou seja, é a entidade pela qual a utilização da memória de um programa, tempo de processador e recursos de E/S podem ser gerenciados e monitorados pelo sistema operacional. O processo pode ser visto como a abstração de um programa em execução.

A divisão do processador em vários processos significa que em um instante o sistema operacional decide interromper um processo em execução, e dar o processador a outro processo, pois o primeiro já utilizou sua porção do processador.

Se um processo é interrompido, em um dado momento, para que outro ocupe o processador, quando esse voltar a ser executado em que ponto deverá continuar?

quando um processo é suspenso, todas as informações sobre ele são armazenadas em uma estrutura chamada tabela de processo, mantida pelo SO.

As informações de um processo são: um programa executável, os dados e a pilha do programa, o contador de programa, o ponteiro de pilha, registradores e as informações necessárias para executar o programa. Esta estrutura pode ser implementada como uma lista encadeada de processos.

moDelo De procresso

3

O processo possui uma natureza seqüencial, ou seja, se um processo for executado várias vezes com os mesmos dados, a mesma seqüência de instruções será executada e fornecerá o mesmo resultado em todas as execuções.

Todo software executável em um computador moderno, até mesmo o sistema operacional, é organizado em processos. Sistemas de multiprogramação permitem ao usuário a execução paralela de vários processos. Porém, o que acontece é um chaveamento rápido dos processos na CPU que dá aos usuários a sensação de paralelismo na execução dos programas. Esse pseudoparalelismo, definido como multiprogramação é caracterizado pelo chaveamento de processos pela CPU. O verdadeiro paralelismo acontece apenas em sistemas com múltiplos processadores.

atenção!

No início de cada unidade você encontrará as informações práticas para o seu

desenvolvimento, os objetivos que pretendemos atingir e o conteúdo que será estudado.

Portanto, lembre-se de que sua participação é fundamental para o seu aprendizado.

informação:

Em um instante determinado um programa está sendo executado e, no instante seguinte, este é interrompido para que outro programa ocupe o processador, mesmo que o primeiro ainda não tenha terminado totalmente sua execução.

atenção!

O chaveamento rápido dos processos na CPU dá aos usuários a sensação de paralelismo na execução dos programas. O que não é verdade, pois o que acontece realmente é um pseudo-paralelismo. O verdadeiro paralelismo acontece apenas em sistemas com múltiplos processadores.

(27)

A cada instante, um processador diferente ocupa o processador e pode rodar independentemente dos outros existentes, pois cada um possui sua própria memória virtual e fluxo de controle (contador de programa). Desta forma, a velocidade de execução dos processos depende da quantidade, e também dos recursos oferecidos pelo computador.

Por exemplo: Se você tiver três aplicativos rodando em sua máquina, terá uma velocidade de cada processo reduzida conforme carrega outros aplicativos ao mesmo tempo, porque outros processos estão na competição pelo processador. Dependendo da velocidade do processador e da quantidade de processos, o trabalho poderá ser prejudicado, ou até mesmo inviabilizado.

A troca de processos consiste, basicamente, em salvar o conteúdo atual dos registradores da CPU, referentes a um processo que esteja deixando o processador, e carregá-los com o conteúdo do processo que esteja ganhando a CPU. Observe o esquema da Figura 1 a seguir que representa a mudança de contexto entre dois processos.

Processo x S.O. Processo Y

1) Salva conteúdo dos Registradores de A

2) Carrega Registradores de B

execução execução

início fim

Figura 1 Troca de processos na CPU.

Nos computadores modernos o gerenciamento de processos é feito pelo sistema operacional.

Para o gerenciamento de processos o Sistema Operacional atribui, basicamente, três conjuntos de informações:

• identificação do processo;

• quotas de recursos;

• privilégios.

A identificação de um processo é feita pelos seguintes campos:

• PID (process identification) – identificação única de cada processo.

• Owner – campo que armazena a identificação de quem o criou: pode ser um PID, no caso de ser criado por outro processo, ou um UID (user identification), no caso de ter sido criado por um usuário.

atenção!

Assim como os processos possuem uma identificação única no sistema (PID – process identification), os usuários também são identificados unicamente por um UID (user identification). O ID (identificação) do usuário é muito útil quando desejamos controlar o acesso aos arquivos, aos processos e memória por questões de segurança.

(28)

Cursos de Graduação

UNIDADE 2

As quotas de recursos identificam a quantidade de recursos que um processo pode utilizar. Alguns exemplos destes recursos são: tamanho máximo de memória, tamanho do buffer para E/S e número máximo de arquivos abertos simultaneamente. Se a quota alocada não for suficiente para a execução do processo, este será prejudicado.

Se a cada instante um processo diferente ganha a CPU, pode-se constatar que existem alguns privilégios. Estes privilégios definem qual a permissão que cada processo tem para utilizar o sistema, alguns exemplos são: ele pode acessar, criar e eliminar outros processos; ele pode acessar arquivos de outros usuários.

estaDos Dos processos

4

Você já sabe que o processador não pode ser ocupado por todos os processos existentes no sistema em um mesmo instante, então todos competem para ganhar o processador. O sistema operacional é responsável por controlar essa competição entre os processos, ou seja, ele diz em que momento e quais processos devem entrar ou deixar a CPU (estado de execução). Esta transição de processos entre os três estados possíveis, permite que os processos mudem de estado várias vezes durante sua existência.

Como você viu na primeira unidade existem, basicamente, três estados principais que um processo pode estar: Pronto, Execução ou Bloqueado. Conforme as situações descritas a seguir.

Pronto

• – quando todos os recursos necessários para sua execução já estão disponíveis, mas ainda não pode entrar em execução porque não chegou sua vez e a CPU está ocupada por outro processo. Neste estado pode haver uma fila de processos esperando a liberação da CPU.

Execução

• – quando o próprio processo está ocupando a CPU e sendo executado.

Bloqueado

• – quando o processo estava em execução, mas precisou de um recurso que não estava disponível no momento, então ele é bloqueado até que o recurso desejado esteja disponível.

A Figura 2 apresenta as transições possíveis entre os estados de um processo.

Observe que um processo bloqueado não pode voltar diretamente para a CPU, deve antes passar pelo estado de pronto, se não houver nenhum processo prioritário na frente e se seu tempo de CPU ainda não se esgotou, então aí sim ele poderá voltar para o estado de execução.

Um processo que sai da CPU porque seu time-slace (fatia de tempo) já terminou, volta para o estado de pronto e aguarda, juntamente com outros processos, até ser eleito novamente pelo sistema operacional para entrar em execução.

(29)

Fila de processos esperando escalonamento

0 1 ... n-2 n-1 n

Escalonador

Pronto

Bloqueado

Execução Processo

Processo Processo

Processo Processo

Figura 2 Estados possíveis de um processo.

Um processo pode denominar outros subprocessos que executam de maneira hierárquica. Veja no tópico a seguir.

suBprocessos e

5 thread

Uma aplicação pode ser dividida em partes que trabalham concorrentemente.

Essa divisão da aplicação consiste em particionar o processo gerado para controlar a aplicação (processo pai) em outros subprocessos subordinados a este que são chamados de processos filhos, ou apenas subprocessos. Os subprocessos, por sua vez, podem criar outros processos filhos em uma estrutura hierárquica de subprocessos. Esta hierarquia faz com que todos os processos filhos de um processo pai sejam destruídos caso o processo pai deixe de existir.

Pa

Pb Pc

Pd Pe

Pf Pg

Figura 3 Representação hierárquica de processos.

Conforme aumenta a utilização de subprocessos há um desperdício de tempo gasto para criação e eliminação desses subprocessos. Para minimizar este problema, introduziu-se o conceito de threads de controle (ou linhas de controle).

atenção!

Escalonador é um componente que faz parte do Sistema Operacional. Ele tem a função de selecionar qual dos processos concorrentes ganhará a CPU.

Este escalonador se baseia em algoritmos de escalonamento para definir os critérios para seleção de um processo.

(30)

Cursos de Graduação

UNIDADE 2

As threads são consideradas processos mais leves e representam uma entidade básica de utilização da CPU. Enquanto os processos são usados para agrupar recursos, as threads são as entidades escalonadas para a execução na CPU.

Para você compreender melhor a utilidade de threads, considere um navegador web. Você sabe que muitas páginas na Internet são carregadas de imagens e outros recursos “pesados”. Se para cada imagem o navegador tiver que estabelecer uma conexão separada com o servidor para solicitar uma imagem, o procedimento seria muito difícil.

Mas se o navegador implementar múltiplas threads, é possível fazer a requisição de muitas imagens ao mesmo tempo melhorando o desempenho e a capacidade de resposta.

A Intel lançou no mercado um modelo de processador com a tecnologia Hyperthreading, que permite que se processe, dentro de um mesmo ciclo de clock, instruções referentes a várias threads e não apenas várias instruções dentro de uma mesma thread.

Os sistemas multiprogramáveis possibilitam o compartilhamento da CPU entre diversos processos concorrentes. Para isso, cada sistema possui critérios para determinar qual será a forma de seleção de um dos processos que ocupará a CPU. Este procedimento de seleção é realizado pelo sistema operacional e conhecido como escalonamento de processos.

escalonamento Dos processos

6

Você compreendeu que o estado de pronto possui uma fila de processos aguardando a liberação da CPU para entrarem em execução e cabe ao sistema operacional decidir qual processo terá a posse do processador?

Na tentativa de manter o processador ocupado 100% de seu tempo, o sistema operacional possui um componente de seleção que escolhe um dos processos que ocupará a CPU, este componente é chamado de escalonador e utiliza um algoritmo de escalonamento para definir os critérios de seleção de um processo.

Os algoritmos de escalonamento podem ser divididos em três categorias:

Não-preemptivos

• – utilizados em processamento batch. quando um processo (job) ganha a CPU, nenhum outro poderá tirar-lhe este recurso.

Exemplos de implementação: FIFO (First In First Out) – o primeiro da fila de pronto será o primeiro a executar e SJF (Shortest Job First) – escolhe sempre o processo que precisa de menos tempo de CPU.

Cooperativos

• – um processo libera, voluntariamente, a CPU para outro. O grande problema é a monopolização do processador.

Preemptivos

• – o sistema interrompe um processo em execução para que outro ocupe o processador. A seguir você conhecerá os detalhes deste tipo de algoritmo.

Exemplos de algoritmos de escalonamento PREEMPTiVOS:

Round Robin

Este algoritmo aloca um intervalo de tempo, conhecido como quantum, para cada processo.

informação:

A diferença mais marcante entre subprocessos e threads é que enquanto os subprocessos utilizam espaços de memória independentes e protegidos, as threads compartilham o mesmo espaço de endereçamento do processo.

(31)

Ao final de seu quantum, se o processo ainda estiver em execução voltará para o estado de pronto e o próximo processo da fila será alocado para ocupar a CPU. Se o processo terminar antes de finalizar o seu quantum a CPU será liberada imediatamente para o próximo processo. Se o processo for bloqueado para esperar algum recurso externo antes de terminar o quantum, a CPU é liberada para outro processo, e esse voltará para a fila de pronto assim que o recurso for liberado. Neste momento, se a CPU estiver livre, ele a ocupará imediatamente, senão deverá entrar na fila de espera.

Você deve estar se perguntando: qual é o tamanho de um quantum?

Se o quantum for muito grande poderá degradar o tempo de resposta. Se for muito pequeno, diminui a eficiência da CPU que terá uma sobrecarga de processamento para realizar o chaveamento de recursos entre processos. O ideal seria um balanceamento de acordo com a carga dos processos, mas tal não é fácil de ser gerenciado. Essa é maior dificuldade deste algoritmo

Prioridade

Este algoritmo considera níveis de prioridade entre os processos, permitindo um tratamento especial em casos de emergência, pois processos de maior prioridade podem ser executados.

O problema seria se processos de alta prioridade executassem indefinidamente, mas neste caso o escalonador pode diminuir a prioridade do processo corrente e trocá-lo pelo próximo com maior prioridade (chaveamento).

Múltiplas filas

Este algoritmo adota várias classes de prioridades. Cada classe possui um quantum diferente. Desta forma, processos menores entram na fila de menor quantum, processos maiores entram na fila de maior quantum, e assim por diante.

Shortes process next (Tarefas Pequenas Primeiro)

Lembra da idéia do algoritmo não-preemptivo SJF (Shortest Job First)?

A idéia é a mesma, ou seja, na tentativa de minimizar o tempo médio de espera pelo processador tarefas menores são executadas primeiro.

Apesar das soluções apresentadas para escalonamento de processos, há ocorrências em que os recursos do sistema são compartilhados. Compartilhar, principalmente os espaços de memória, pode ocasionar diversas situações indesejadas de discriminação de processos caso não seja bem controlada. Nestes casos dizemos que há concorrência entre processos.

No próximo tópico será apresentada uma descrição dos problemas típicos em computação gerados pela concorrência entre processos.

concorrÊncia entre processos

7

Os processos concorrem pelos recursos do sistema que normalmente podem atender a uma única requisição por vez.

atenção!

Se encontrar dificuldades não desanime!

Entre em contato com seus colegas de curso e seu professor que estará sempre pronto para esclarescer suas dúvidas.

(32)

Cursos de Graduação

UNIDADE 2

quando processos compartilham a mesma área de memória, ou o mesmo arquivo ou qualquer outro recurso compartilhado, existem situações de concorrência entre os processos por aquele recurso, esta situação de competição é conhecida por Race Conditions.

Suponha a fila de impressão1(spool directory) com uma variável que indica onde a fila começa, ou seja, o próximo documento a ser impresso; e outra variável que indica o final da fila, ou seja, o último documento que chegou, portanto o último que será impresso. Todos os processos que desejam imprimir deverão consultar a próxima posição livre para colocar seu documento (fim+1).

Imagine a seguinte situação (considere que os documentos das posições de 1 a 4 já foram impressos).

so.pdf ed.doc index.htm mail.txt

5 6 7 8 9 10 11

SAÍDA

começo fim

Figura 4 Fila de impressão (spool directory).

Imagine um processo X em execução que consulta a próxima posição vazia (fim+1) para inserir seu documento. No exemplo da Figura 4 o processo obterá o valor 9. Só que antes de armazenar, de fato, o seu arquivo na posição 9 da fila, o Sistema Operacional, subitamente, envia uma interrupção para que o processo X deixe a CPU, pois seu tempo já se esgotou. O SO salva as informações dos registradores, inclusive a posição 9 da fila de impressão, e libera a CPU para o processo Y. Este entra em execução e também deseja enviar um documento para ser impresso e, da mesma forma, obtém a próxima posição (fim+1) para inserir seu documento, esta posição continua sendo 9, pois o processo X não teve tempo de ocupá-la. O processo Y insere seu arquivo na fila e atualiza a variável fim com o valor 9, isso indica que a próxima posição livre (fim+1) será a 10 e não mais a 9.

so.pdf ed.doc index.htm mail.txt foto

5 6 7 8 9 10 11

SAÍDA

começo fim

Figura 5 Inserção do arquivo foto.jpg na fila de impressão.

Neste instante, o processo Y volta para o estado de pronto e libera a CPU para o processo X que continuará a executar do local que parou utilizando as informações armazenadas dos registradores, ou seja, colocará seu documento na posição 9 da fila de impressão. Este novo documento, contas.xls, irá sobregravar o documento e o arquivo foto.jpg nunca será impresso.

(1) fila de impressão – A regra é simples, o primeiro arquivo que chega será o primeiro a ser impresso, e assim sucessivamente.

Referências

Documentos relacionados

Dois questionários foram preparados e experimentados largamente, pelo autor, nos últimos quatro anos, no antigo INSTITUTO DE PSIQUIA- TRIA SOCIAL, de Recüe, com a

Para isso, mediante o acompanhamento das atividades diárias, levantamento do volume e composição dos resíduos gerados na execução do edifício buscou-se implantar ações

Destes diálogos elencamos ações consonantes com o Projeto Institucional da UFU para o PIBID e estabelecemos como objetivo geral a melhoria da formação do futuro

Quando o Segurado estiver impedido de se deslocar por seus próprios meios em caso de doença ou Lesão em decorrência de Acidente Pessoal no Estabelecimento de Ensino ou em

Gerenciar os recursos do sistema do computador é uma boa parte da função de um sistema operacional e, no caso de sistemas operacionais de tempo real, este pode ser todo

Para que essa análise seja feita da maneira mais eficiente possível, é necessário criar um ambiente de estabilidade na empresa, ou seja, um ambiente que favoreça o

O Governo da República do Senegal tem o prazer de os receber em Dakar, República do Senegal, país da Teranga, para a sexagésima oitava sessão do Comité Regional para a África da

Os sistemas de cultivo considerados tratamentos foram: PC1 (Preparo convencional em área de pastagem degrada), PC2 (Preparo convencional em área de rebrota de eucalipto), PD1