Sei sulla pagina 1di 7
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de

Conceitos de Sistemas Operacionais

Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de
Conceitos de Sistemas Operacionais Romildo Martins Bezerra IFBA/DTEE Computação e Processamento de Dados Conceitos de

Romildo Martins Bezerra IFBA/DTEE

Computação e Processamento de Dados

Conceitos de Sistemas Operacionais

1

Arquitetura Conceitual de um Computador

2

Processadores

2

Memória Principal

4

Memória

Cache

4

Memória Secundária

5

Dispositivos de Entrada e Saída

6

Apresentando os componentes dentro de um computador

6

Conceitos de Sistemas Operacionais

6

Sistemas Operacionais Atuais

7

Linux

7

Windows

7

Bibliografia

7

As notas de aulas são referências para estudo. Portanto não devem ser adotadas como material didático absoluto! Versão 0.3 – 10/03/2010

Romildo Martins Bezerra

Antes de iniciarmos os estudos de Sistemas operacionais é necessário apresentar uma introdução do funcionamento básico de um computador e seus respectivos componentes.

Arquitetura Conceitual de um Computador

Os primeiros passos para que a arquitetura dos computadores fosse similar à que conhecemos hoje foram dados pelo pesquisador Von Neumann. Especialista em ciências exatas e o matemático mais eminente do mundo na época, Neumann projetou o IAS, computador onde os dados eram representados de forma digital, com programação mais rápida e flexível, visto que no seu projeto, programas e dados eram inseridos de forma binária na memória. Esse projeto pioneiro com o conceito de “programa armazenado” transformou o IAS na famosa máquina de Von Neummann. A concepção é utilizada até hoje nos computadores e é composta basicamente de 3 componentes (figura 01):

CPU (unidade central de processamento) composto de uma unidade de controle (UC), unidade lógico-aritmética (ULA) e registradores;

Memória Principal, onde os programas estão armazenados (veremos detalhes a seguir);

Dispositivos de E/S, responsáveis em transferir dados de dentro fora do computador

Pontos Importantes:

No projeto, o computador só trabalhava com números inteiros. Neumann acreditava que qualquer matemático poderia tratar ponto flutuante

Utilização do conceito de programas armazenados

Execução seqüencial de instruções

Funcionamento busca/decodificação/execução

Atualmente os computadores (a maior parte deles) utilizam uma arquitetura composta dos seguintes componentes vistos na figura 01.

Memória Principal

componentes vistos na figura 01. Memória Principal endereço dados/instruções CPU Registradores ULA PC

endereço

vistos na figura 01. Memória Principal endereço dados/instruções CPU Registradores ULA PC Unidade

dados/instruções

CPU Registradores ULA PC
CPU
Registradores
ULA
PC

Unidade de Controle

CPU Registradores ULA PC Unidade de Controle Dispositivos E/S Figura 01 – Modelo Conceitual dos

Dispositivos E/S

Figura 01 – Modelo Conceitual dos computadores atuais, baseados no IAS de Von Neumann

Processadores Correspondem ao cérebro do computador, pois é o responsável em executar todas as tarefas referentes à busca/execução dos programas e dados. Para modularizar seu funcionamento, será apresentado o modelo didático com as seguintes componentes:

ULA (Unidade Lógico-Aritmética) – realiza um conjunto de operações aritméticas e lógicas necessárias à execução das instruções

2

Romildo Martins Bezerra

UC (Unidade de Controle) – busca de instruções da memória, de acordo com a necessidade da instrução a ser processada.

Registradores – Pequenos espaços de memória que o processador trabalha executando as instruções. Geralmente possuem o mesmo tamanho e tem velocidade muito alta. Destacam-se:

o

PC – Contador de Programa, cujo nome não reflete sua função, que é indicar a próxima instrução a ser executada na memória.

o

IR – Registrador de instruções, que indica a próxima instrução a ser executada.

Memória Cache – Atualmente para melhorar o desempenho, os processadores atuais possuem uma memória de altíssima velocidade (quando comparada a memória RAM ou disco rígido) para arquivar os dados de maior utilização, evitando acessos constantes à memória. Veremos mais detalhes no decorrer desta apostila.

Conforme vimos anteriormente, a seqüência de funcionamento segue a proposta do modelo de Von Neumann, busca-decodificação-execução. O processo de busca da instrução (fetch) transfere a instrução da posição da memória (indicada pelo registrador PC) para a CPU. A decodificação é responsabilidade da unidade de controle, que após decodificação gerencia os passos para execução a ser feita pela ALU.

Unidade de busca

Unidade de

decodificação

Unidade de execução

de busca Unidade de decodificação Unidade de execução Figura 02 – Estágios do funcionamento dos computadores
de busca Unidade de decodificação Unidade de execução Figura 02 – Estágios do funcionamento dos computadores

Figura 02 – Estágios do funcionamento dos computadores

De forma detalhada, a execução de programas num processador buca-decodica-executa, da seguinte forma:

utiliza a seqüência de passos

1. Busca a próxima instrução da memória para o registrador de instrução

2. Atualiza o contador de programa para que ele aponte para a instrução seguinte

3. Determina o tipo de instrução

4. Se a instrução utiliza dados na memória, determina localização

5. Busca os dados, se houver algum, para os registradores internos da CPU

6. Executa a instrução

7. Armazena os dados em locais apropriados

8. Volta para o passo 1

Vamos analisar novamente a figura 02 e imaginemos que um computador vai executar diferentes operações simples (soma, por exemplo). Seria interessante se ele pudesse fazer parte das instruções em paralelo de forma a otimizar sua utilização, sendo pelos menos duas tarefas executadas no mesmo tempo. Isso pode ser feito de duas formas:

∑ Paralelismo a nível de instruções – A divisão das instruções em partes menores sendo
∑ Paralelismo a nível de instruções – A divisão das instruções em partes menores sendo essas
executadas em um hardware específico. (lembrem-se do exemplo da soma dado em sala!)
[ E1 ]
Unidade de
busca de
instrução
[ E2 ]
Unidade de
decodificação
de instrução
[ E3 ]
Unidade de
busca de
operando
[ E4 ]
Unidade de
execução de
instrução
[ E5 ]
Unidade
de escrita

Figura 03 – Computador clássico de cinco estágios

3

Romildo Martins Bezerra

E1

P1
P1
P2
P2
P3
P3
P4
P4
P5
P5
P6
P6
P7
P7
P8
P8

E2

P1
P1
P2
P2
P3
P3
P4
P4
P5
P5
P6
P6
P7
P7

E3

P1
P1
P2
P2
P3
P3
P4
P4
P5
P5
P6
P6

E4

P1
P1
P2
P2
P3
P3
P4
P4
P5
P5

E5

P1
P1
P2
P2
P3
P3
P4
P4

tempo

P4 P5 E5 P1 P2 P3 P4 tempo 1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

Figura 04 – Exemplo de paralelismo a nível de instruções em cinco estágios

Paralelismo a nível de processador – A idéia é projetar computadores com mais de um processador que podem estar organizados de forma matricial, vetorial, compartilhando barramento com memória compartilhada ou não. Este estudo não corresponde ao objetivo desta disciplina.

Memória Principal

A memória principal é uma das partes essenciais para o funcionamento do computador, uma vez

que é nela que os programas e dados são executados. O que se esperar da memória? Tamanho infinito,

ultra-rápida (não atrase o processador) e barata (afinal ninguém quer gastar dinheiro!). É possível conciliar isso? Isso será discutido mais tarde.

A memória é organizada através de células, unidades elementares de memória, que compõem

segmentos (pedaços alocados por um programa que podem conter mais de uma célula). Vamos imaginar uma memória de 1Megabyte (2 20 bytes = 1024*1024) com células de 32 bits (2 2 bytes), retemos então:

Total de Células= Total de memória /Tamanho da célula

= 2 20 bytes/2 2 bytes

= 2 18 células

Ou seja teríamos 2 18 células a serem endereçadas. Vamos supor agora que o sistema operacional precisa de 26 bytes para executar uma determinada instrução (IX) de um programa em Pascal (compilador de alto nível). O sistema operacional ficará responsável em alocar segmentos de memória (contínuos ou não) para que esta informação possa ser trabalhada pelo processador.

Vazio

IY

IX

IX

IX

IX

IX

IX

IX

Vazio

199

200

201

202

203

204

205

206

207

208

Figura 05 – Dados da instrução X (IX) alocados continuamente na memória

Que problemas vocês enxergam que o SO terá com este particionamento da memória?

Controle da fragmentação

Falta de espaços

Movimentação constante

Memória Cache Devido a uma diferença história entre processadores e memórias, o processador acaba esperando (apenas por definição!) ciclos de clock até que a memória entregue (aloque) sua requisição. Algumas técnicas para melhorar esta solução podem ser utilizadas, destacamos aqui a utilização de memórias cache.

Os projetistas de HW construíram uma memória mais rápida capaz de operar na velocidade dos processadores, mas devido ao seu custo elevado (fruto de aumento do tamanho do processador) é necessário restringir o tamanho da memória cache. Esta apresentação segue o conceito de hierarquia de memória, onde quanto mais rápido a memória, menor será seu tamanho (devido ao custo de fabricação).

4

Romildo Martins Bezerra

preço velocidade
preço
velocidade

cache

principal

discos rígidos

unidades de fita

Figura 06 – Conceito de Hierarquia de memória

O problema agora é que ficamos com dois mundos:

Memória ultra-rápida e pequena (muitas trocas ocorreriam)

Memória mais lenta e bem maior

Para se ter uma idéia, diversos processadores atuais trabalham com velocidades superiores a 3.0GHz (3 bilhões de ciclos por segundo) e possui cache interna (L1) de 512Kbytes, enquanto a memória RAM trabalha a 333Mhz e tem tamanho de 256MB, sendo assim 512 vezes maior e 9 vezes mais lenta. Como não é possível trabalhar com apenas uma delas, a proposta é a seguinte:

Processador Memória RAM Cache 256MB
Processador
Memória RAM
Cache
256MB

Figura 07 – Memória Cache alocada no processador

Outra proposta seria colocá-la na placa-mãe (Chamado de cache L2).

Esta memória ultra-rápida, cache, deve ser sempre as informações mais requisitadas pelo processador, e este terá que sempre consultar a cache antes de perguntar memória principal. Mas como “adivinhar” que parte da memória será utilizada? Como calcular se o tempo médio de acesso com a cache tornará o sistema mais eficiente? Cálculos matemáticos e algoritmos complexos são desenvolvidos no projeto de cada arquitetura. Para os mais interessados pesquisem o principio da localidade, base teórica para o funcionamento de sistemas com utilização intensiva de cache.

Memória Secundária “Por maior que seja a memória principal, ela será sempre pequena.” Tanenbaum em Organização Estruturada de Computadores, página 40. Apesar de a afirmação parecer (e é!) forte demais, não é possível enxergar uma estrutura computacional moderna sem a utilização de memória secundária. Do mesmo modo que a cahe é muito mais rápida que a memória principal, essa é muito mais rápida que a memória secundária. Aqui serão explicados apenas os discos magnéticos, vistos que o foco é apresentar uma introdução para sistemas operacionais. A composição básica de um disco magnético é vista abaixo.

composição básica de um disco magnético é vista abaixo. Figura 08 – Esquema Básico do disco
composição básica de um disco magnético é vista abaixo. Figura 08 – Esquema Básico do disco

Figura 08 – Esquema Básico do disco

Nota-se que esta composição mecânica dos discos não pode superar, em velocidade, o método digital dos semicondutores utilizados na memória RAM e memória cache.

5

Romildo Martins Bezerra

Dispositivos de Entrada e Saída Antes de serem tratados os dispositivos de E/S é importante salientar que a transferência de dados entre processador, memória principal, memória secundária (discos rígidos, flexíveis e óticos) é feita através dos barramentos. Cada dispositivo de entrada e saída é composto de uma controladora e do dispositivo propriamente dito. Esta controladora dá acesso ao barramento do computador sem que haja uma intervenção o processador executando um acesso direto à memória (DMA). E quando esta transferência de dados é transmitida, a controladora força uma interrupção, fazendo com qu o processador suspenda o processo em execução a fim de rodar um procedimento para verificar possíveis erros de transferência de dados, este procedimento é denominado rotina do tratamento de interrupção. Já que o barramento é acessado por todos os dispositivos, o que aconteceria se dois ou mais dispositivos brigarem pelo acesso ao barramento? Nos projetos dos computadores atuais está presente um dispositivo que executa esta seleção chamada de arbitro do barramento. A prioridade geralmente é dos discos magnéticos, uma vez que as paradas sucessivas podem ocasionar perda de dados.

Atualmente estas controladoras estão presentes dentro da placa-mãe

HD Monitor Teclado Controladora Controladora Controladora Processador Memória HD Vídeo
HD
Monitor
Teclado
Controladora
Controladora
Controladora
Processador
Memória
HD
Vídeo

Figura 09 – Modelo conceitual detalhado

Apresentando os componentes dentro de um computador

Esta aula não terá apostila. Corresponderá a uma aula prática com apresentação de hardware.

Conceitos de Sistemas Operacionais

O sistema computacional moderno é algo complexo devido a quantidade de dispositivos envolvidos. Desenvolver programas que mantenham o controle destes componentes de forma otimizada impactaria na lentidão para novos softwares. Daí surge o sistema operacional, cujo trabalho é gerenciar esses componentes e fornecer aos programas de usuários uma interface simples de acesso ao hardware. Sistema Operacional é um conjunto de ferramentas necessárias para que um computador possa ser utilizado de forma adequada, pois consiste de intermediário entre o aplicativo e a camada física do hardware. Este conjunto é constituído por um Kernel, ou núcleo, e um conjunto de software básicos, que executam operações simples, mas que juntos fazem uma grande diferença.

O sistema operacional é uma camada de software colocada entre o hardware e software do computador, com o objetivo de facilitar as atividades dos desenvolvedores e usuários de software, uma vez que não precisam fazer acesso direto ao dispositivo, fornecendo uma interface mais amigável e intuitiva.

Software Sistema operacional Hardware
Software
Sistema
operacional
Hardware

Tipos de serviços:

Acesso aos periféricos

Utilização simples de recursos pelo usuário

Manipulação de dados (arquivos e diretórios)

Controle de recursos compartilhados

Figura 10 – Localização lógica do SO

Para isso, ele deve ser responsável pela:

Gerência do processador, também conhecida como gerência de processos, seu objetivo visa distribuir de forma justa o processamento evitando o monopólio do processador e respeitando a prioridade dos usuários e aplicações.

6

Romildo Martins Bezerra

Gerência de memória, objetiva fornecer um espaço isolado de memória para cada processo de forma que ele “se sinta” único na memória. São necessários recursos (memória virtual paginação e segmentação) para que este objetivo seja cumprido de forma eficiente e atenda todos os processos ativos.

Gerência de dispositivos, objetiva garantir o acesso aos dispositivos de forma mais fácil possível (drivers) aos usuários, criando modelos que generalizem a utilização dos dispositivos (lembrar do conceito de bloco no HD).

Gerência de arquivos, uma implementação específica da gerencia de dispositivos, trabalhando apenas com o processo de armazenamento e acesso aos dados, atualmente através de arquivos e diretórios.

Gerencia de proteção, definir o acesso harmônico em sistemas de vários usuários com compartilhamento de recursos, como por exemplo, pastas compartilhadas em rede.

Sistemas Operacionais Atuais

Linux

GNU/Linux ou simplesmente Linux, é um popular sistema operacional livre, composto pelo núcleo (kernel) Linux e pelas bibliotecas e ferramentas do projeto GNU. É um sistema do tipo Unix que implementa o padrão POSIX. O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso, passando por várias arquiteturas: Intel, StrongARM, PowerPC, Alpha etc., com grande penetração também em dispositivos embarcados, como handheld, PVR, vídeo-jogos e centrais de entretenimento etc. O Linux tem um kernel híbrido monolítico. Drivers de dispositivo e extensões do kernel tipicamente rodam com acesso total ao hardware, embora alguns rodem em espaço de usuário. Ao contrário dos kernels monolíticos padrão, os drivers de dispositivo são facilmente configurados como módulos, e carregados e descarregados enquanto o sistema está rodando. Também ao contrário de kernels monolíticos padrão, drivers de dispositivo podem ser pré-inseridos sob certas condições. Essa última característica foi adicionada para corrigir o acesso a interrupções de hardware, e para melhorar o suporte a multiprocessamento simétrico.

Windows Microsoft Windows é um sistema operacional extremamente popular, criado pela Microsoft, empresa fundada por Bill Gates e Paul Allen. O Windows é um produto comercial, com preços diferenciados para cada versão, embora haja uma enorme quantidade de cópias ilegais instaladas, porque ele é o sistema operacional mais copiado do mundo. Apesar do sistema ser conhecido pelas suas falhas críticas na segurança e como plataforma de vírus de computador e programas-espiões (spywares), o impacto deste sistema no mundo atual é simplesmente incalculável devido ao enorme número de cópias instaladas. Conhecimentos mínimos desse sistema, do seu funcionamento, da sua história e do seu contexto são, na visão de muitos, indispensáveis, mesmo para os leigos em informática. Os primeiros Windows, como o 1.0, 2.0 e 3.x, só são compatíveis em partições formatadas com o sistema de ficheiros FAT, ou como é chamado, FAT16. No salto do 3.1 para o 95B (Windows 95 OSR 2/OSR 2.1), os HD's poderiam ser formatados em FAT32. Inicialmente lançado com o Windows NT, a tecnologia NTFS é agora o padrão de facto para esta classe. Com a convergência de ambos sistemas, o Windows XP passou também a preferir este formato. A principal linguagem de programação usada para se escrever o código-fonte das várias versões do Windows é a linguagem C++. Até à versão 3.11, o sistema rodava em 16 bits, daí em diante, em 32 bits. As últimas versões (como o XP, o 2003 e o futuro Windows Vista (nome de código Longhorn) está preparado para a tecnologia 64 bits. Esse sistema deverá incluir o sistema de arquivos WinFS, que acabou retirado do Windows Vista.

de arquivos WinFS, que acabou retirado do Windows Vista. Bibliografia [1] TANENBAUM, A., Organização Estruturada de

Bibliografia

[1] TANENBAUM, A., Organização Estruturada de Computadores, 5ª Edição, 2006. [2] TANENBAUM, A. Sistemas Operacionais Modernos. 2ª Edição 2006. [3] TOSCANI, S.; OLIVEIRA, R.; CARISSIMI, A. Sistemas operacionais. 3ª Edição Sagra Luzzatto, 2004.

7