Você está na página 1de 13

Sistemas Operacionais I

Apostila 1 – Conceitos Básicos em Sistemas Operacionais


1- Introdução

• O que é Sistema Operacional (SO)?

Conjunto de rotinas executado pelo processador, de forma semelhante aos


programas do usuário. Controla e gerencia recursos do computador, como processadores,
memórias e dispositivos de entrada/saída (E/S).

 Características

- É interface entre usuário e computador.

Obs.: Sem o SO, o usuário para interagir com o computador deve conhecer o
hardware em detalhes a fim de manipulá-lo, tornando seu trabalho lento e passível de erros.

- Diferenças entre SO e Aplicações convencionais: execução é função do fator


“tempo”:
 SO – rotinas executadas concorrentemente, de forma assíncrona.
 Aplicações Convencionais – executadas linearmente, com início, meio e
fim.

2- Funções Básicas

• São inúmeras, porém podem ser resumidas em duas (veja explicação na figura a
seguir):
- Facilidade de acesso aos recursos do sistema.
- Compartilhamento de recursos de forma organizada e protegida.
3- Máquina de Camadas (ou Níveis)

• Considerando a figura acima, em (a) as aplicações do usuário devem interagir


diretamente com o hardware (nível 0), pois não há SO.
• Já em (b), tem-se dois níveis: o SO(1) e o hardware(0). A divisão possibilita visão
modular e abstrata, chamada máquina virtual. O usuário interage com o SO e este
manipula o hardware. É como se o hardware não existisse para o usuário.
• Quando usuário trabalha numa camada, não precisa saber da existência das outras
acima ou abaixo.
Aplicações

Utilitários

Sistema Operacional

Linguagem de Máquina

Microprogramação

Circuitos Eletrônicos
Tabela 1: Máquina de Camadas

• Na realidade, um computador possui tantos níveis quantos necessários a fim de


adequar o usuário às diversas aplicações suas (conforme tabela 1).

4- Histórico – Evolução dos SOs

• Divididas em décadas após a 2ª Guerra Mundial (1940) – evento que levou ao


desenvolvimento de máquinas que pudessem acelerar procedimentos manuais
realizados para fins militares.
• Logo, temos eventos pontuais antes de 1940, e após referenciados em décadas.

4.1- Antes de 1940...

• 1642 – Matemático francês Blaise Pascal inventa máquina de somar.


• 1673 – Matemático e filósofo alemão Gottfried Leibniz criou máquina capaz de
somar e multiplicar, utilizando acumulador.
• 1820 – Francês Charles Colmar inventa máquina capaz de executar as quatro
operações.
• 1822 – Matemático inglês Charles Babbage cria máquina para cálculos de equações
polinomiais. Em 1833 evoluiu a idéia para construção de máquina analítica, capaz
de executar qualquer operação. Considerado “pai do computador”, pois seu invento
abordava os conceitos UCP, memória, unidade de controle, dispositivos E/S –
Preocupação com o hardware. Ada Byron, aluna de Charles Babbage, era
responsável pela sequência de instruções executadas pela máquina (software) –
considerada a primeira programadora da história.
• 1854 – Matemático inglês George Boole cria a lógica booleana, base para o modelo
de computação digital utilizada até hoje; ou seja, baseada no conceito de lógica
binária.
• No final do séc. XIX, Herman Hollerith cria mecanismo utilizando cartões
perfurados para acelerar o processamento do censo de 1890 nos EUA. Ele funda em
1826 a Tubulanting Machine Company, que se tornaria em 1924 a IBM
(International Business Machine). A utilização de cartões perfurados perduraria
grande parte do séc. XX.
• Na dec. 1930 surgem as primeiras tentativas reais de criar uma calculadora
eletrônica. Em 1937 o matemático inglês Alan Turing desenvolve a idéia de
Máquina Universal ou Máquina de Turing, capaz de executar qualquer seqüência de
instruções (algoritmo). Apesar de teórico, a Máquina de Turing criou a idéia de
“processamento de símbolos”, base da Ciência da Computação moderna.

4.2- Déc. 1940

 Período em que acontece a 2ª Guerra Mundial. Desenvolvimento de máquinas para


fins bélicos.
 1946 – 1955 – Construção do ENIAC, considerado o primeiro computador
eletrônico e digital. Usado para cálculos balísticos e posteriormente utilizado no
projeto bomba de hidrogênio. Possuía 17 mil válvulas, 10 mil capacitores, 70 mil
resistores e pesava 30 toneladas. Demandava alto conhecimento em hardware, pois
sua programação era feita em painéis por 6 mil conectores, utilizando linguagem de
máquina (Demandava dias para programação; porém, o cálculo realizado em 24h
manualmente era resolvido em cerca de 30s).
 Nesta fase, os computadores não possuíam dispositivos de interface com o usuário
(teclado e mouse) e o conceito SO só surgiria na década seguinte.

4.3- Déc. 1950

 Uso de transistores em substituição às válvulas e da memória magnética. O advento


dos transistores permitiu aumento da velocidade e confiabilidade no processamento.
Já a memória magnética permitiu o acesso mais rápido aos dados, maior capacidade
de armazenamento e computadores menores. Até então era utilizado sistema de fitas
magnéticas.
 Advento do processamento batch – evitava ociosidade do processador. Conjunto de
programas era submetido ao computador.
 Surge o primeiro SO chamado Monitor por sua simplicidade, desenvolvido em 1953
para computador IBM 701 e reescrito posteriormente para IBM 704.
 Surgimento das primeiras linguagens de programação de alto nível, como
FORTRAN, ALGOL e COBOL.
o Programas deixaram de ter relação direta com o hardware dos
computadores, facilitando e agilizando o desenvolvimento e manutenção de
programas.
 Incorporação de rotinas para controle de E/S.
 No final desta década, o desenvolvimento do SO Atlas pela Universidade de
Manchester, na Inglaterra, introduziu o conceito de memória virtual, usado até os
dias de hoje, que implementava o esquema de paginação por demanda para
transferir informações da memória secundária para a principal.
4.4- Déc. 1960

 Surgimento dos circuitos integrados permitiu a redução de custos, difusão de


sistemas computacionais e uso pelas empresas. Também ocorreu grande aumento no
poder de processamento e diminuição no tamanho dos equipamentos.
 Inovações em SO alcançados:
o Multiprogramação – permitiu que vários programas compartilhassem a memória
ao mesmo tempo e, quando um programa realizava uma operação de leitura ou
gravação, o processador executava um outro programa.
o Aumento de poder do “processamento batch” (graças ao advento de discos
rígidos em substituição às fitas) em conjunto com a multiprogramação tornou os
Sos mais rápidos e eficientes, pois permitiu carga dos programas na memória
mais rápida e alteração na ordem de execução das tarefas (até então era
sequencial).
Obs.: Daí então, surge o conceito time-sharing (tempo compartilhado) – cada
programa pode utilizar o processador por pequenos intervalos de tempo.
Benefícios: Possibilitou respostas mais rápidas por parte dos programas e
facilitou o desenvolvimento e depuração dos programas por parte dos
programadores. Isso também devido ao advento de teclado e terminal de vídeo
(dispositivos E/S).
o Multiprocessamento – o SO suporta múltiplos processadores.Possibilitou a
execução de mais de um programa simultaneamente ou o mesmo programa por
mais de um processador.
 1969 – Ken Thompson utilizou um PDP-7 (computador de pequeno porte da DEC –
Digital Equipment Corp.) para fazer sua própria versão de SO, a ser conhecido
como Unix, que possuiria os conceitos abordados.

4.5- Déc. 1970

 Projetos de miniaturização e barateamento de equipamentos: LSI (Large Scale


Integration) e VLSI (Very Large Scale Integration).
 1971 – A Intel produz seu primeiro microprocessador, o Intel 4004, e três anos
depois o Intel 8080.
 Desenvolvimento de equipamentos com múltiplos processadores, com a introdução
de processadores vetoriais e técnicas de paralelismo.
 Difusão de redes distribuídas (Wide Área Network - WANs) – permitiu o acesso a
outros sistemas de computação, independente de distância geográfica. Então:
o Foram desenvolvidos inúmeros protocolos de redes, como DECnet e
SNA, proprietários da Digital e IBM respectivamente, e outros de
domínio público, como NCP (predecessor do TCP/IP) e o X.25.
o Surgem as primeiras redes locais (Local Area Network - LANs)
interligando computadores restritos a pequenas áreas.
 Conclusão: Os SOs evoluíram no controle do multiprocessamento, paralelismo e
integração aos softwares de rede.
 Surge em 1971 a linguagem de programação Pascal, pelo professor Niklaus Winth,
voltada para ensino de técnicas de programação.
 1975 – Dennis Ritchie desenvolve a linguagem C e, juntamente com Ken
Thompson, porta o SO Unix para um computador PDP-11, antes concebido em
Assembly.

4.6- Déc. 1980

 1981 – IBM entra no mercado de microcomputadores com o IBM PC (Personal


Computer), criando a filosofia dos computadores pessoais. O primeiro PC usava o
processador Intel 8088 de 16 bits e SO DOS (Disk Operation System) da Microsoft.
 Na área dos mini e superminicomputadores ganham destaque os sistemas
multiusuário, principalmente os compatíveis com Unix, como por exemplo, o BSD-
Berkeley Software Distribution, desenvolvido na Universidade de Berkeley na
Califórnia, que introduziu inúmeros melhoramentos, merecendo destaque a criação
do protocolo de rede TCP/IP (Transmission Control Protocol/Internet Protocol).
 Surgem as Workstations (Estações de Trabalho) – apesar de serem sistemas
monousuário, são multitarefas (permitem a execução de diversas tarefas
concorrentemente). Destaque para Sun Microsystems (fundada em 1982), que lança
as primeiras estações RISC com o SO Sun OS e posteriormente Sun Solaris.
 Surgem os primeiros SOs comerciais que oferecem interface gráfica, como o
Microsoft Windows e o OS/2. O software de rede passa a estar fortemente
relacionado ao SO, e surgem os SOs de rede, com destaque para a Novell Netware e
o Microsoft LAN Manager.
 Entre 1982 – 1986, foi desenvolvido pelo NCE/UFRJ o SO PLURIX para
computador PEGASUS, também construído no NCE. Na década seguinte, o
PLURIX é transportado para linha de processadores Intel, originando o TROPIX,
SO multiusuário e multitarefa, de filosofia Unix, de distribuição gratuita.

4.7- Déc. 1990

 Década de grandes avanços em hardware, software e telecomunicações,


conseqüência da evolução das aplicações baseadas em sistemas especialistas,
sistemas multimídia, Banco de Dados distribuídos, Inteligência Artificial e Redes
Neurais, além da grande necessidade de processamento e armazenamento de dados.
 Evolução da microeletrônica: ULSI (Ultra Large Scale Integration) – proporciona
barateamento, redução e aumento de velocidade e desempenho.
 Surgimento e evolução da Internet: O protocolo TCP/IP passou a ser um padrão no
mercado. Logo, os fabricantes de SOs deveriam oferecer suporte.
Obs.: Surgem também problemas de gerência, segurança e desempenho.
 Incorporação de arquiteturas Cliente/Servidor em ambiente de redes locais e
Internet – sistemas dedicados: servidores Web, de correio, de arquivos e de banco
de dados.
 Consolidação da interface gráficaem SOs.
 1991 – Finlandês Linus Torvalds começou o desenvolvimento do Linux, com a
colaboração de vários programadores no desenvolvimento do Kernel, utilitários e
aplicativos.
 1993 – Lançado o Windows NT para servidores corporativos e computadores
pessoais.
Obs.: Durante esta década, o MS-Windows NT e o Unix (HP-UX, IBM-AIX e Sun
Solaris) consolidam-se como sistemas para ambientes corporativos.
 Amadurecimento e popularização do software aberto. Com a evolução da Internet,
inúmeros produtos foram disponibilizados/desenvolvidos para uso gratuito, como
SOs (Linux), Banco de Dados (MySQL), servidores web (Apache), servidores de
correio (Sendmail), etc.

4.8- Déc. 2000

 Mudança radical na filosofia de projeto de computadores, a fim de aumentar a


eficiência no atendimento da demanda cada vez maior de processamento:
o SOs cada vez mais intuitivos e simples de serem utilizados. Novas interfaces
usuário-máquina, como linguagens naturais, sons e imagens.
o Melhor uso de arquiteturas paralelas, uso de sistemas em cluster (sistemas onde
os computadores são agrupados de forma a oferecer serviços como se fosse um
único sistema centralizado), permitem aumentar o desempenho e a
escalabilidade das aplicações.
 SOs proativos, ou seja, incorporam mecanismos automáticos, como detecção e
recuperação de erros.
 Processamento distribuído – explorado nos SOs de forma que suas funções estejam
espalhadas por vários processadores através de redes locais e distribuídas. Isso só é
possível graças à redução de custos e aumento na taxa de transmissão de dados em
redes de computadores.
 SOs passam a integrar diversos dispositivos como telefones celulares, handhelds e
palmtops graças à evolução e consolidação de redes sem fio (wireless).
 Arquiteturas de processadores 64 bits: proporcionou aumento do espaço de
endereçamento que permite melhor desempenho das aplicações que manipulam
grandes volumes de dados. SOs como MS Windows, Linux e outras versões Unix
passam a oferecer suporte.
 Evolução MS Windows a fim de unificar e incluir recursos, tanto para servidores
quanto computadores pessoais: Win 2000, Win XP, Win 2003 e Win Vista.
 Linux torna-se SO padrão de baixo custo, com inúmeras distribuições no mercado.
Comunidade software livre passa a utilizar o Linux e a desenvolver, como base,
novas aplicações gratuitas.

5- Tipos de SOs

Como já visto, os tipos de SOs e sua evolução estão relacionados diretamente coma
a evolução do hardware e das aplicações por ele suportadas. A seguir serão abordados os
diversos tipos de SOs e suas características, conforme o organograma a seguir.
5.1- Sistemas Monoprogramáveis/Monotarefa

Caracterizava os primeiros SOs por permitir que o processador, a memória e os


periféricos permaneçam exclusivamente dedicados à execução de um único programa.
Todos os recursos do sistema ficam dedicados a uma única tarefa.
Neste tipo de sistema, enquanto um programa aguarda por um evento, como a
digitação de um dado, o processador permanece ocioso, sem realizar qualquer tipo de
processamento. A memória é subutilizada caso o programa não preencha totalmente, e os
periféricos, como discos e impressoras, estão dedicados a um único usuário, nem sempre
utilizados de forma integral (veja a figura a seguir).

Comparado a outros sistemas, os sistemas monoprogramáveis ou monotarefa são de


simples implementação, não existindo muita preocupação com o problema decorrente do
compartilhamento de recursos, como memória, processador e dispositivos de E/S. Os
sistemas monoprogramáveis apenas permitem uso de um usuário, ou seja, monousuário.
5.2- Sistemas Multiprogramáveis/Multitarefa

Os sistemas multiprogramáveis ou multitarefa são uma evolução dos sistemas


monoprogramáveis. Os recursos computacionais são compartilhados entre os diversos
usuários e aplicações. Já os monoprogramáveis, como já abordado, existe apenas um
programa utilizando os recursos disponíveis, nos multiprogramáveis várias aplicações
compartilham tais recursos disponíveis.
Nesse sistema, quando um programa espera por uma operação de leitura ou
gravação em disco, outros programas podem estar sendo processados neste mesmo instante
de tempo. Assim, observa-se o compartilhamento do processador e da memória. O SO se
preocupa em gerenciar o acesso concorrente aos seus diversos recursos, como memória,
processador e periféricos, de forma ordenada e protegida, entre os diversos programas (veja
a figura a seguir).

Os sistemas multiprogramáveis são mais complexos de serem implementados e


mais eficientes que os monoprogramáveis, pois permitem redução de custos em função da
possibilidade do compartilhamento dos diversos recursos entre as diferentes aplicações e
possibilitam na média a redução de tempo na execução das aplicações.
Em relação ao número de usuários que interagem com o SO simultaneamente, os
sistemas multiprogramáveis podem ser multiusuário ou monousuário. Geralmente, sistemas
multiprogramáveis monousuário são encontrados em computadores pessoais e estações de
trabalho, onde há apenas um único usuário interagindo com o sistema. Neste caso, existe a
possibilidade de execução de diversas tarefas ao mesmo tempo, como edição de um texto,
uma impressão e o acesso à Internet. Sistemas multiprogramáveis multiusuário são
ambientes interativos que possibilitam diversos usuários conectarem-se ao sistema
simultaneamente (Tabela 2).

Um usuário Dois ou mais usuários

Monoprogramação/Monotarefa Monousuário N/A

Multiprogramação/Multitarefa Monousuário Multiusuário


Tabela 2: Sistemas x Usuários

Os sistemas multiprogramáveis ou multitarefa podem ser classificados pela forma


com que suas aplicações são gerenciadas, podendo ser divididas de acordo com o
organograma a seguir. Além disso, um SO pode suportar um ou mais desses tipos de
processamento, dependendo de sua implementação.

5.2.1- Sistemas batch

O processamento batch caracteriza-se por não exigir a interação do usuário com a


aplicação. Todas as entradas e saídas de dados da aplicação são implementadas por algum
tipo de memória secundária, geralmente arquivos em disco.

5.2.2- Sistemas de tempo compartilhado (time-sharing)

Permitem que diversos programas sejam executados a partir da divisão do tempo do


processador em pequenos intervalos, denominados fatia de tempo (time-slice). Caso a fatia
de tempo não seja suficiente para a conclusão do programa, ele é interrompido pelo sistema
operacional e substituído por um outro, enquanto fica aguardando por uma nova fatia de
tempo, até o seu término.

5.2.3- Sistemas de tempo real (real-time)

São implementados de forma semelhante aos sistemas de tempo compartilhado,


porém a diferença entre eles é o tempo exigido no processamento das aplicações. Nos
sistemas de tempo real não existe a idéia de fatia de tempo, implementada nos sistemas de
tempo compartilhado. Um programa utiliza o processador o tempo que for necessário ou até
que apareça outro mais prioritário. A importância ou prioridade de execução de um
programa é definida pela própria aplicação e não pelo SO.

5.3- Sistemas com Múltiplos Processadores

Caracterizam-se por possuir duas ou mais UCPs interligadas e trabalhando em


conjunto, com a vantagem de permitir que vários programas sejam executados ao mesmo
tempo ou que um mesmo programa seja subdividido em partes e executadas
simultaneamente por mais de um processador.
Os sistemas com múltiplos processadores incorporam os mesmos princípios básicos
da multiprogramação, além de outras vantagens e características específicas como:

 Escalabilidade – capacidade de ampliar poder computacional do sistema apenas


adicionando novos processadores. Em ambientes com um único processador, caso
haja problemas de desempenho, seria necessário substituir todo o sistema por uma
outra configuração com maior poder de processamento. Com a possibilidade de
múltiplos processadores, basta acrescentar novos processadores à configuração.

 Disponibilidade – capacidade de manter o sistema em operação mesmo em casos de


falhas. Se um dos processadores falhar, os outros podem assumir suas funções de
maneira transparente aos usuários e suas aplicações, embora com menor capacidade
de computação.

 Balanceamento de carga – possibilidade em distribuir o processamento entre os


diversos processadores a partir da carga de trabalho de cada processador,
melhorando o desempenho do sistema como um todo.

Para o desenvolvimento de Sos com múltiplos processadores é a forma de


comunicação entre UCPs e o grau de compartilhamento da memória e dispositivos E/S.
Logo, podem ser classificados como fortemente acoplados ou fracamente acoplados
(conforme organograma a seguir).
A maior diferença entre os dois tipos de sistemas é que nos sistemas fortemente
acoplados, existe apenas uma memória principal sendo compartilhado por todos os outros
processadores, e nos fracamente acoplados cada sistema tem sua própria memória
individual. Além disso, a taxa de transferência entre os processadores e memória em
sistemas fortemente acoplados é muito maior que nos fracamente acoplados.

5.3.1- Sistemas fortemente acoplados (tightly coupled).

Existem vários processadores compartilhando uma única memória física e


dispositivos E/S, sendo gerenciados por parte do SO. Em função disso, também são
conhecidos como multiprocessadores.

5.3.2- Sistemas fracamente acoplados (loosely coupled)

Caracterizam-se por possuir dois ou mais sistemas computacionais conectados


através de linhas de comunicação. Cada sistema funciona de forma independente,
possuindo seu próprio SO e gerenciando seus próprios recursos, como UCP, memória e
dispositivos E/S. Em função disso, também são conhecidos como multicomputadores.
Com base no grau de integração dos hosts da rede, pode-se dividir os SOs
fracamente acoplados em SOs de rede (SOR) e sistemas distribuídos. Os SORs permitem
que o host compartilhe seus recursos, como impressora ou diretório, com os demais hosts
da rede. Exemplo disso são as redes locais. Enquanto os SORs os usuários têm
conhecimento dos hosts e seus serviços na forma individual, nos sistemas distribuídos o
SO esconde detalhes dos hosts individuais e passa a tratá-los como um conjunto único,
como se fosse um sistema fortemente acoplado; permitem, por exemplo, que uma aplicação
seja dividida em partes e distribuída pelos hosts na rede, mas para o usuário é como se fosse
um sistema centralizado e não existisse a rede. Tem-se como exemplo para sistemas
distribuídos os clusters.

Exercícios:
1- Como seria utilizar um computador sem SO? Quais são suas principais funções?
2- Explique o conceito de máquina virtual. Qual a grande vantagem em se utilizar este
conceito?
3- Defina o conceito de máquina de camadas.
4- Quais os tipos de Sos existentes? Diferencie e explique cada um deles.
5- Quais as diferenças entre sistemas monoprogramáveis e sistemas
multiprogramáveis? Qual é mais vantajoso e por quê?
6- Um sistema monousuário pode ser um sistema multiprogramável? Dê um exemplo.
7- Cite e explique os sistemas multiprogramáveis.
8- O que são sistemas com múltiplos processadores e quais as vantagens em utilizá-
los?
9- Considerando os sistemas com múltiplos processadores, explique e diferencie
sistemas fortemente acoplados e sistemas fracamente acoplados.
10- Considerando os sistemas fracamente acoplados, explique e diferencie SOs de rede
e SOs distribuídos.

Referência bibliográfica
Machado, F.B., Maia, L.P.: Arquitetura de Sistemas Operacionais. Editora
LTC, 4ª Edição, 2007 (ou 5ª Edição, 2011).

Você também pode gostar