[editar] Arquitetura de Sistema Operacional

Propaganda
A primeira tentativa de junção de hardware e sistema operacional, segundo Tanembaun
(1999), ocorreu quando Ada Lovelace fora contratada como programadora (o nome
linguagem de programação Ada foi criado em sua homenagem) com intuito de fazer um
software para um motor analítico – conhecido como o primeiro computador digital
verdadeiro – projetado pelo matemático Babbage (1792-1871). Mais tarde, conhecida
como a primeira geração (aproximadamente 1945-1955), os computadores eram tão
grandes que ocupavam salas imensas e eram instalados em grandes centros de pesquisa.
Foram basicamente construídos com válvulas – que eram grandes, caras, lentas e que
queimavam com facilidade – e painéis, sendo utilizados para fim científico, onde os
sistemas operacionais "não existiam". Os programadores, que também eram os
operadores, controlavam o computador por meio de chaves , fios e luzes de aviso. Nomes
como Howard Aiken (Harvard), John von Neumann (Instituto de Estudos Avançados de
Princeton), John Adam Presper Eckert Jr e William Mauchley (Universidade da
Pennsylvania) e Konrad Zuse (Alemanha) formaram, com suas contribuições, a base
humana para o sucesso na construção dos computadores primitivos. Na geração seguinte
(aproximadamente 1955-1965), foram criados os sistemas em lote (batch systems), que
permitiram melhor uso dos recursos computacionais. A base do sistema operacional era
um programa monitor, usado para enfileirar tarefas (jobs). O usuário foi afastado do
computador; cada programa era escrito em cartões perfurados, que por sua vez eram
carregados, juntamente com o respectivo compilador (normalmente Fortran ou Cobol),
por um operador, que por sua vez usava uma linguagem de controle chamada JCL (job
control language).
No início da computação os primeiros sistemas operacionais eram únicos, pois cada
mainframe vendido necessitava de um sistema operacional específico. Esse problema era
resultado de arquiteturas diferentes e da linguagem de máquina utilizada. Após essa fase,
iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas
(jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada
(eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os
cartões perfurados).
Um dos primeiros sistemas operacionais de propósito geral foi o CTSS, desenvolvido no
MIT. Após o CTSS, o MIT, os laboratórios Bell da AT&T e a General Eletric
desenvolveram o Multics, cujo objetivo era suportar centenas de usuários. Apesar do
fracasso comercial, o Multics serviu como base para o estudo e desenvolvimento de
sistemas operacionais. Um dos desenvolvedores do Multics, que trabalhava para a Bell,
Ken Thompson, começou a reescrever o Multics num conceito menos ambicioso, criando
o Unics (em 1969), que mais tarde passou a chamar-se Unix. Os sistemas operacionais
eram geralmente programados em assembly, até mesmo o Unix em seu início. Então,
Dennis Ritchie (também da Bell) criou a linguagem C a partir da linguagem B, que havia
sido criada por Thompson. Finalmente, Thompson e Ritchie reescreveram o Unix em C.
O Unix criou um ecossistema de versões, onde destacam-se: System V e derivados (HPUX, AIX); família BSD (FreeBSD, NetBSD, OpenBSD, etc.), Linux e até o Mac OS X
(que deriva do Mach e FreeBSD).
Na década de 1970, quando começaram a aparecer os computadores pessoais, houve a
necessidade de um sistema operacional de utilização mais fácil. Em 1980, William (Bill)
Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o
sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000,
batizam-no de DOS (Disk Operating System) e vendem licenças à IBM. O DOS vendeu
muitas cópias, como o sistema operacional padrão para os computadores pessoais
desenvolvidos pela IBM. IBM e Microsoft fariam, ainda, uma parceria para o
desenvolvimento de um sistema operacional multitarefa chamado OS/2. Após o fim da
breve parceria, a IBM seguiu sozinha no desenvolvimento do OS/2.
No começo da década de 1990, um estudante de computação finlandês postou um
comentário numa lista de discussão da Usenet dizendo que estava desenvolvendo um
núcleo de sistema operacional e perguntou se alguém gostaria de auxiliá-lo na tarefa. Este
estudante chamava-se Linus Torvalds e o primeiro passo em direção ao tão conhecido
Linux foi dado naquele momento.
Visão geral
Um sistema operativo pode ser visto como um programa de grande complexidade que é
responsável por todo o funcionamento de uma máquina desde o software a todo hardware
instalado na máquina. Todos os processos de um computador estão por de trás de uma
programação complexa que comanda todas a funções que um utilizador impõe à
máquina. Existem vários sistemas operativos; entre eles, os mais utilizados no dia a dia,
normalmente utilizados em computadores domésticos, são o Windows, Linux e Mac OS
X.
Um computador com o sistema operativo instalado poderá não dar acesso a todo o seu
conteúdo dependendo do utilizador. Com um sistema operativo, podemos estabelecer
permissões a vários utilizadores que trabalham com este. Existem dois tipos de contas
que podem ser criadas num sistema operativo, as contas de Administrador e as contas
limitadas. A conta Administrador é uma conta que oferece todo o acesso à máquina,
desde a gestão de pastas, ficheiros e software de trabalho ou entretenimento ao controlo
de todo o seu Hardware instalado. A conta Limitada é uma conta que não tem permissões
para aceder a algumas pastas ou instalar software que seja instalado na raiz do sistema ou
então que tenha ligação com algum Hardware que altere o seu funcionamento normal ou
personalizado pelo Administrador. Para que este tipo de conta possa ter acesso a outros
conteúdos do disco ou de software, o administrador poderá personalizar a conta
oferecendo permissões a algumas funções do sistema como também poderá retirar
acessos a certas áreas do sistema.
O sistema operativo funciona com a iniciação de processos que este irá precisar para
funcionar correctamente. Esses processos poderão ser ficheiros que necessitam de ser
frequentemente actualizados, ou ficheiros que processam dados úteis para o sistema.
Poderemos ter acesso a vários processos do sistema operativo a partir do gestor de
tarefas, onde se encontram todos os processos que estão em funcionamento desde o
arranque do sistema operativo até a sua utilização actual. Pode-se também visualizar a
utilização da memória por cada processo, no caso de o sistema operativo começar a
mostrar erros ou falhas de acesso a programas tornando-se lento, pode-se verificar no
gestor de tarefas qual dos processos estará bloqueado ou com elevado número de
processamento que está a afectar o funcionamento normal da memória.
[editar] Sistemas operacionais modernos
Um sistema computacional moderno consiste em um ou mais processadores, memória
principal, discos, impressoras, teclado, mouse, monitor, interfaces de rede e outros
dispositivos de entrada e saída.Enfim, é um sistema complexo.[1]
Um dos Conceitos mais fundamentais dos Sistemas Operacionais Modernos é a distinção
entre o programa e a atividade de executá - lo. O programa é apenas um conjunto estático
de diretrizes e sua execução é uma atividade dinâmica [2]
[editar] Arquitetura de Sistema Operacional
O Sistema operacional precisa basicamente de três elementos:
Hardware – um computador digital é constituído por um conjunto de componentes
interligados, composto por processadores, memória principal, registradores, terminais,
impressoras, discos magnéticos, alem de outros dispositivos físicos(hardware). Esses
dispositivos manipulam dados na forma digital, o que proporciona uma maneira confiável
de representação. Todos os componentes de um computador são agrupados em três
subsistemas básicos: unidade central de processamento, memória principal e dispositivos
de entrada e saída. Estes subsistemas, também chamados de unidade funcional, estão
presentes em todo computador digital, apesar de suas implementações variarem nas
diferentes arquiteturas existentes e comercializadas pelo diversos fabricantes de
computadores.
Software – o hardware por si só, não tem a menor utilidade. Para torná-lo útil, existe um
conjunto de programas, utilizado como interface entre as necessidades do usuário e as
capacidades do hardware. A estilização de software adequados as diversas tarefas e
aplicações (conceito de chamadas) torna o trabalho dos usuários muito mais simples e
eficiente.
Dado - Assim como o software, os dados são armazenados no hardware na forma de bits.
O sistema deve estar apto a armazenar, localizar e recuperar um dado específico
requisitado por um programa.[3]
[editar] Funcionamento
Um sistema operacional possui as seguintes funções:
1.
2.
3.
4.
gerenciamento de processos;
gerenciamento de memória;
sistema de arquivos;
entrada e saída de dados.
[editar] Gerenciamento de processos
O sistema operacional multitarefa é preparado para dar ao usuário a ilusão que o número
de processos em execução simultânea no computador é maior que o número de
processadores instalados. Cada processo recebe uma fatia do tempo e a alternância entre
vários processos é tão rápida que o usuário pensa que sua execução é simultânea.
São utilizados algoritmos para determinar qual processo será executado em determinado
momento e por quanto tempo.
Os processos podem comunicar-se, isto é conhecido como IPC (Inter-Process
Communication). Os mecanismos geralmente utilizados são:






sinais;
pipes;
named pipes;
memória compartilhada;
soquetes (sockets);
trocas de mensagens.
O sistema operacional, normalmente, deve possibilitar o multiprocessamento (SMP ou
NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes
processadores. Para essa tarefa, ele deve ser reentrante e interrompível, o que significa
que pode ser interrompido no meio da execução de uma tarefa.
Gerenciamento de memória
O sistema operacional tem acesso completo à memória do sistema e deve permitir que os
processos dos usuários tenham acesso seguro à memória quando o requisitam
Vários sistemas operacionais usam memória virtual, que possui 3 funções básicas:
1. assegurar que cada processo tenha seu próprio espaço de endereçamento,
começando em zero, para evitar ou resolver o problema de relocação
(Tanenbaum, 1999);
2. prover proteção da memória para impedir que um processo utilize um endereço de
memória que não lhe pertença;
3. possibilitar que uma aplicação utilize mais memória do que a fisicamente
existente.
[editar] Swapping
Dentro de gerenciamento de memoria muitas vezes não é possível manter todos os
processos em memoria, muitas vezes por não existir memoria suficiente para alocar
aquele processo, para solucionar esse problema existe um mecanismo chamado
swapping. A gerencia de memoria reserva uma área do disco para o seu uso em
determinadas situações, um processo é completamente copiado da memoria para o disco,
este processo é retirado da fila do processador e mais tarde será novamente copiado para
a memoria e o processo então ficara ativo na fila novamente. O resultado desse
revezamento no disco é que o sistema operacional consegue executar mais processos do
que caberia em um mesmo instante na memoria. Swapping impõe aos programas um
grande custo em termos de tempo de execução, pois é necessário copiar todo o processo
para o disco e mais tarde copiar novamente todo o processo para a memoria. Em sistemas
onde o usuário interage com o programa durante sua execução, o mecanismo de
swapping é utilizado em ultimo caso, quando não é possível manter todos os processos na
memoria. Visto que a queda no desempenho do sistema é imediatamente sentida pelo
usuário.[4]
[editar] Sistema de arquivos
A memória principal do computador é volátil, e seu tamanho é limitado pelo custo do
hardware. Assim, os usuários necessitam de algum método para armazenar e recuperar
informações de modo permanente.
Um arquivo é um conjunto de bytes, normalmente armazenado em um dispositivo
periférico não volátil (p.ex., disco), que pode ser lido e gravado por um ou mais
processos. ===Rafaelscheffer (discussão) 22h14min de 7 de abril de 2011 (UTC)
[editar] A Memória Virtual
A memória virtual assemelha-se à memória real, mas não é igual. Nos sistemas
tradicionais, os programas são carregados inteiramente, a partir de uma biblioteca,
diretamente na memória principal, ao passo que em sistemas de memória virtual, é
somente partes selecionadas desses programas são paginadas na memória real, para serem
executadas. Na verdade, ao examinar programas reais verificou que, em muitos casos,
nem todo o código do programa é executado. Por exemplo: • Programas freqüentemente
incluem código de tratamento de erro. Como na pratica esses erros ocorrem raramente, ou
não ocorrem, essa parte do código quase nunca é executada. • Algumas opções e recursos
de programas são usados raramente. Por exemplo, certas rotinas de controle da balança
de pagamento de programa instalado nos computadores do governo do Estado Unidos
não têm sido usadas ha anos.
Endereçamento da Memória Virtual Para ler uma página da memória virtual para a real, o
sistema operacional examina a tabela de páginas da memorial real em busca de uma
página livre. Ao encontrar uma, o status dessa página é alterado para “ocupada”, e a
operação de page-in se inicia. Por fim, o endereço físico da página selecionada é gravado
nas tabelas de páginas e de segmentos. Em sistemas convencionais, o registrador-base
guarda o ponto de carga do programa na memória real, enquanto em sistemas de memória
virtual, o registrador-base contém o ponto de carga do programa na memória virtual. Para
converter o endereço virtual em real, o hardware: 1. Obtém acesso à tabela de segmentos,
mediante o uso dos bits de mais alta ordem do endereço como chave. 2. Localiza a tabela
de páginas adequada, por meio do ponteiro da tabela de segmentos. 3. Utilizando os bits
intermediários como chave, acessa a tabela de páginas para encontrar o endereço base da
página. 4. Soma o deslocamento encontrado nos bits de mais baixa ordem do endereço
virtual ao endereço-base.
Implementação da Memória Virtual ===
Nos sistemas tradicionais de multiprogramação, o sistema operacional e vários programas
aplicativos são carregados na memória principal. Nos sistemas de memória virtual, os
programas são carregados na memória secundária e, depois, são paginados para a
memória real, quando necessário. A memória virtual divide-se em dois componentes. O
primeiro tem exatamente o mesmo tamanho da memória real do sistema, e é nela
armazenado fisicamente. O segundo componente consiste em muito mais espaço que a
capacidade da memória real e é armazenado fisicamente no dispositivo externo de
paginação. Esse componente contém os programas aplicativos.
Download