Você está na página 1de 35

Fundamentos de sistemas operacionais Zzz - 1° Unidade - 1° Vídeo

aula
Entender, analisar e recomendar a evolução dos sistemas operacionais, gerenciamento de:
1. Processos;
2. Memória (hierarquia de memória, modos de endereçamento, estrutura de controle,
memória virtual);
3. Arquivos;
4. Entrada e saída.

Como um computador pode processar diferentes tarefas simultaneamente?


Como os programas de computador, sendo executados numa mesma máquina, podem obter os
recursos necessários para suas tarefas e não causar conflitos nem mesmo apresentação de resultado
do programa A na tela do programa B por equívoco?
Como usuários podem acessar computadores remotos e compartilhar informações de forma segura?
Como os diferentes tipos de sistemas podem trocar dados via rede de forma segura e sem
conflitos por falta de compatibilidade?

Percursores dos computadores:


São considerados percursores dos computadores todos os instrumentos ou máquinas que
contribuíram para a ideia da criação do mesmo.
Dentre eles, o surgimento de uma máquina programável foi um grande marco na história dos
computadores.
O ábaco foi um dos primeiros instrumentos desenvolvidos para auxiliar os humanos na
realização de cálculos. Muitos atribuem sua criação à China, mas existem evidências deles
na Babilônia no ano 300 a.C.
A ideia básica no ábaco é considerar as contas (bolinhas) contidas na parte inferior, chamada de
chão do ábaco com valor unitário e cada conta contida na parte superior, chamada de céu do ábaco,
com valor de cinco unidades.
Cada valor unitário representação diferente dependendo da coluna em que se encontra, logo uma
unidade na primeira coluna tem valor 1 em nosso sistema numérico, já uma unidade na segunda
coluna tem valor 10.
Pascaline: Em 1642, o francês Blaise Pascal, aos 19 anos de idade, foi o primeiro a inventar um
dispositivo mecânico para a realização de cálculos.
O dispositivo é conhecido como As rodas dentadas de Pascal.
Pascal era filho de um cobrador de impostos e auxiliava o pai na realização de cálculos utilizando
um instrumento similar ao ábaco. Mas segundo ele, o trabalho era muito entediante, o que o levou a
elaborar um dispositivo para realização de somas e subtrações.
A máquina de Pascaline, era uma caixa com rodas e engrenagens da qual ele construiu mais de 50
versões ao longo de uma década.
O operador introduzia os algarismos a serem somados “discando-os” numa série de rodas dentadas,
com algarismos de zero a nove impressos, de modo que os números a serem somados ficassem
expostos em um mostrador.
Cada roda representava uma determinada coluna decimal, unidades, dezenas, centenas e assim por
diante.
Uma roda, ao completar um giro, avançava em um digito a roda à sua esquerda, de ordem decimal
mais alta.
A máquina adiciona ou subtrai quando as rodas dentadas se engrenam, ao serem giradas.
Um giro leva um total superior a 9 para a coluna à esquerda. O resultado aparece no mostrador. Os
números da extrema direita para adição e os da direita para a subtração.

Hardware X Software
Durante o processo da transformação do produto bruto até a saída e entrega do produto final
existem componentes físicos e lógicos trabalhando nesta produção.
Os componentes físicos no nosso mundo computacional são conhecidos como Hardware e a parte
lógica como Software.
Estes e outros diversos termos e nomes utilizados são palavras de origem inglesa.
O hardware de um computador pode incluir:
a) Computador em si;
b) Discos e a unidade de discos;
c) Impressora;
d) Mouse

O software
O software corresponde a qualquer programa ou grupo de programas que instrui o hardware sobre a
maneira como ele deve executar uma tarefa, inclusive sistemas operacionais, processadores de textos
e programas de aplicação.

Fundamentos de sistemas operacionais - 2° Vídeo aula - 1° Unidade


Zzz

Toda a gestão do nosso computador ocorre a partir do sistema operacional


Cada componente físico de um computador possui características intrínsecas para atender ao seu
propósito
Os programas por meio do sistema operacional, usam o hardware para atingir seus objetivos:
Gravar, apagar, acessar e armazenar dados, imprimir documentos, navegar na internet, tocar
música, etc.
Quando dois ou mais aplicativos precisam simultaneamente usar recursos de hardware, então
podem ocorrer conflitos.
O inglês Charles Babbage projetou o primeiro computador de uso geral.
(A máquina nunca foi construída por limitações da época em termos de tecnologia)
A primeira geração de computadores é datada em 1945 – 1955 - Válvulas
Na universidade do estado de Iowa, no período de 1937 a 1942, o professor John Atanasoff (1903 –
1995) criou junto ao seu aluno o primeiro computador digital eletrônico da história.
Receberam o título de pai dos computadores modernos.
John William Mauchly (1907 – 1980) e seu aluno em parceria com o governo dos EUA construíram,
na universidade da Pensilvânia, o primeiro computador eletrônico, conhecido como ENIAC
(Eletronic numerical integrator and computer).
 Possuía 17 mil válvulas;
 10 Mil capacitadores;
 70 Mil resistores;
 Pesava 30 toneladas;
 Consumia 140 quilowatts;
 Era capaz de executar 5 mil adições por segundo;
 Seu painel de programação contia 6 mil conectores;
Realizou cálculos balísticos e foi utilizado no projeto da bomba de hidrogênio.

Todo o procedimento, no período do ENIAC era bem inflexível e grosseiro, demorando horas e
caso qualquer válvula queimasse durante o processo para iniciar a utilização do computador, o
processo deveria ser reiniciado.

Fundamentos de sistema operacional - 1° Unidade - 3° Vídeo Aula


Zzz
A segunda geração de computadores pode ser marcada com os seguintes avanços:
i. Utilização dos transistores;
ii. Redução do tamanho das máquinas;
iii. Processamentos na ordem de milissegundos;

A segunda geração de computadores pode ser datada de 1955 à 1965 – Transistores e


sistemas em lotes (batch)
Em meados dos anos de 1950, foram criados os transistores no mercado computacional, permitindo
assim uma verdadeira revolução, elevando a confiabilidade em nível desejado para que pudessem ser
fabricados e comercializados.
Neste período, também houve a criação da organização estruturada por funções, em que
havia separação entre projetistas, fabricantes, programadores e técnicos de manutenção.
Esses computadores, denominados de computadores de grande porte (mainframes), eram instalados
em salas especialmente planejadas, e operados por equipes de profissionais altamente capacitados
para a época.

Características da segunda geração:


 Transistores;
 1/200 do tamanho das válvulas;
 Consumo de menos de 1/100 da energia de uma válvula;
 Redução do tamanho das máquinas;
 Processamento ainda era lento, mas já na ordem de milissegundos.

Terceira geração de computadores (1965 – 1980) - Cis e multiprogramação


Em 1964 a IBM lançou a linha de equipamentos da série IBM 360 que foi a primeira linha de
computadores, a usar circuitos integrados (Cis) em pequena escala, proporcionando melhor custo
benefício em comparação à geração de máquinas construídas com transistores.
Para atender à linha de equipamentos da terceira geração, o sistema operacional OS/360 foi
lançado, introduzindo várias técnicas fundamentais que até então estavam ausentes.
Possivelmente, a técnica de suporte à multiprogramação foi a mais significativa, ou
seja, enquanto a máquina 7094 com o sistema operacional FMS (Fortnan Monitor
Siystem) ou IBSys estava lendo dispositivos de E/S com as fitas magnéticas, ela não
processava mais nada, deixando a CPU ociosa.
Nos equipamentos da linha 360 rodando o OS/360, esta deficiência foi resolvida repartindo a
memória em partes e alocando-as para tarefas. Enquanto uma tarefa estivesse esperando por uma
operação de E/S (entrada e saída) terminar, a outra tarefa, poderia usar a CPU.
Principais características da terceira geração
 Introdução dos circuitos integrados;
 Grande contribuição no processo de miniaturização;
 Início da produção de microcomputadores;
 Sistemas operacional (Orientado à arquitetura);
 Tempo compartilhado;
 Programação em assembly;
 Criação dos primeiros softwares.
 Escala de integração:
SSI – Short scale integration
MSI – Medium scale integration
LSI – Large scale integration
No fim da terceira geração a IBM que até então era líder do mercado computacional, passou a
perder espaço quando concorrentes passaram a vender periféricos mais baratos e compatíveis com
sua arquitetura. Os primeiros computadores pessoais começaram a surgir.

Fundamentos de sistemas operacionais - 1° Unidade - 4° Vídeo


Aula – Zzz
A quarta geração de computadores tem início em 1980 até os dias de hoje e é marcado
pelos computadores pessoais.
O início da quarta geração teve como marco o desenvolvimento dos circuitos integrados contendo
milhões de transistores em alguns centímetros quadrados de silício, dando origem à era dos
computadores pessoais.

Características da 4° geração:
 Introdução dos microprocessadores;
 Desenvolvimento dos computadores;
 Pessoais (Personal computer, ou PC)
 Escala de integração:
VLSI: Very large scale integration
Além dessas características, esta geração foi marcada pelo surgimento dos processadores, os
sistemas operacionais como o MS-DOS, UNIX e Marcintosh, linguagem de programação
orientadas a objetos como o C++ e o smalltalk.
Impressoras matriciais, e os teclados com os layouts atuais também foram criados nessa época.
Enquanto nas primeiras gerações era necessário o uso de cartões magnéticos que continham as
instruções, em que deveríamos implementar qual seria o processo, gerar o cartão e colocar o cartão
para que ele pudesse ser processado.
Ao longo da história da computação, máquinas totalmente mecânicas foram, aos poucos, sendo
substituídas por equipamentos que mesmo os mais otimistas dos cientistas da época dos primeiros
computadores do mundo jamais poderiam acreditar ou afirmar ser possíveis.
Para a computação atual se tornar realidade, muitas quebras de paradigmas e diversas
transformações no hardware e software foram necessárias. A pluralidade dos equipamentos foi
durante muitos anos um grande benefício para o modelo que temos hoje, que ainda não é o
definitivo e muito menos o mais eficiente.
Fundamentos de sistemas operacionais - 2° Unidade - 1° Vídeo
Aula Zzz
Tipos de sistemas operacionais
Podemos classificar os sistemas operacionais com base referencial em diversos parâmetros e
perspectivas, velocidade, suporte a recursos específicos, acesso à rede, etc.
Nesta unidade são apresentados alguns tipos de sistemas operacionais típicos (muitos dos sistemas
operacionais estão enquadrados em mais de uma das categorias apresentadas).

Tipos de sistemas operacionais: Batch (de lote)


Os sistemas operacionais mais antigos, principalmente os desenvolvidos para a segunda geração de
computadores, trabalham “por lote”, ou seja, todos os programas a serem executados eram
colocados numa fila.
O processador recebia um programa após o outro, para ser processado em sequência, o que permita
um alto grau de utilização de sistema.
Atualmente, o termo “em lote” é usado para designar um conjunto de comandos que deve ser
executado em sequência.

Tipos de sistemas operacionais: De Rede


Os sistemas operacionais de rede devem suportar geração em rede, ou seja, a capacidade de oferecer
às aplicações locais recursos que estejam localizados em outros computadores da rede LAN (Local
área Network), ou WAN ((Wide Area Network), como serviço de autentificarão remota, acesso a
arquivos, acesso a banco de dados, impressora, etc.
Deve também disponibilizar seus recursos locais aos demais computadores, de forma controlada.
A maioria dos sistemas operacionais atuais está alinhado com está classificação.
Tipos de sistemas operacionais: Distribuído
No sistema operacional distribuído, os recursos utilizados por cada usuário em cada máquina estão
de forma transparente aos usuários.
Ao acessar uma aplicação, o usuário interage com sua interface, entretanto, não sabe onde está
executando ou armazenando seus arquivos, sendo está decisão de total responsabilidade do sistema e
totalmente transparente para o usuário do mesmo.

Tipos de sistemas operacionais: Multiusuários e multitarefas


Chamamos de processo um programa que está em execução. Um programa em execução requer
recursos, principalmente da CPU, e concorre com outros processos para ser realizado. Portando,
cabe ao sistema operacional, quando multiusuários e multitarefas, gerenciar os recursos disponíveis
a todos os processos.
Um sistema operacional multiusuários deve suportar a autenticação e a autorização de cada
usuário quando necessário o uso de algum recurso contido no sistema (arquivos, processos, conexões
de rede) e garantir regras para o controle de acesso, objetivando impedir o uso desses recursos por
usuários não autorizados.
Grande parte dos sistemas operacionais atuais é multiusuário.

Tipos de sistemas operacionais: Desktop/Computador pessoal


Um sistema operacional desktop é projetado para atender ao usuário doméstico e/ou corporativo que
necessita realizar atividades triviais, como editar textos, elaborar planilhas, gráficos, navegar na
internet e etc.
Suas principais características são a interface gráfica, o suporte à interatividade e a operação em
rede.
Tipos de sistemas operacionais: Servidores
O sistema operacional classificado como servidor possibilita a gestão eficiente de grandes
quantidades de recursos físicos como: Disco, memória e processadores, gerindo as prioridades e
limites sobre o uso dos recursos.
Tipicamente, um sistema operacional servidor também tem suporte à rede e multiusuários.
Alguns exemplos de sistemas servidores são: Solaris, AIX, Linux e Windows Server 2008.

Fundamentos De Sistemas operacionais - 2° Vídeo Aula - 2°


Unidade Zzz
Tipos de sistemas operacionais: Embarcados
Um sistema operacional embarcado ou embutido é construído para operar sobre um hardware com
poucos recursos de processamento e armazenamento
Exemplos típicos são aparelhos de TV, reprodutores MP3, aparelhos de DVD, etc. Um ponto positivo
desse equipamento que dependem deste tipo de sistema é que dificilmente será possível instalar
algum software que não seja extremamente compatível, não permitindo o uso de softwares não
confiáveis.
Exemplo de sistema embarcado: QNX e VxWorks

Tipos de sistemas operacionais: Tempo real


Este sistema operacional é caracterizado por ter o tempo como parâmetro principal.
Outras duas subdivisões são: Sistemas de tempo real críticos, voltados tipicamente ao controle de
processos industriais, e os sistemas de tempo real não críticos, como os aplicados em sistemas de
áudio digital ou multimidia.
A grande diferença entre essas duas subcategorias é que, no caso de sistemas que dependem
do tempo real crítico, eles não podem ter degradação de desempenho (Como é o caso dos
sistemas que controlam a linha de produção de veículos). Já o não crítico, apesar de não
desejado, se houver um pequeno atraso, não irá gerar tantos danos.
Tipos de sistemas operacionais: De computadores de grande porte
Sistema de grande porte é tipicamente utilizado por grandes corporações e, como características
predominantes desses sistemas, pode-se considerar a elevada capacidade de E/S, sistema em lote
(batch), processamento de transações e tempo compartilhado
Exemplo de sistemas de grande porte são: OS/390 e S/400

Tipos de sistemas operacionais: Multiprocessadores


O sistema operacional desta categoria pode tratar múltiplas CPUs simultaneamente. Equipamentos
com multiprocessadores ou multinúcleos têm como objetivo principal melhorar a capacidade
computacional dos equipamentos trazendo melhor desempenho para o ambiente.
Com o advento dos processadores multinúcleo, até sistemas operacionais voltados para
computadores pessoais estão começando a lidar com multiprocessadores. Alguns exemplos de
sistemas operacionais multiprocessadores são: Windows, Linux, Solaris e AIX.

Tipos de sistemas operacionais: Portáteis


 Voltados para computadores com os PDA (personal digital assistant) e telefones celulares.
 Os PDA e celulares não possuem disco rígido multigigabyte.
 Os sistemas operacionais para portáteis são: Androids, iOS, sybian, OS, Windows mobile e
Palm OS

Visão geral hardware de computadores


O Hardware e o sistema operacional devem ser extremamente congruentes para que seja possível
obter o melhor resultado desta combinação.
Faz-se necessária uma homogeneidade entre os desenvolvedores de hardware e software.
Independente das ideologias, turma do hardware ou software, temos que ter conceitualmente um
modelo pertinente à arquitetura do hardware de um computador pessoal para que possamos entender
melhor os sistemas operacionais.
Processadores
A CPU traz das memórias instruções, decodifica, interpreta as instruções a serem executadas e as
executa, a partir daí, busca as instruções subsequentes e processa o ciclo novamente até ter
instruções a serem executadas.
Cada arquitetura de CPU tem um conjunto específico de instruções que pode executar.
Todas as CPUs possuem registradores internos para armazenamento de variáveis importantes e de
resultados temporários. Em adição aos registradores de propósito geral, usados para conter
variáveis e resultados temporários, a maioria dos computadores possuem vários registradores
especiais disponíveis de forma aparente para os programadores.
O primeiro a se destacar é o contador de programa que contém o endereço de memória da próxima
instrução a ser buscada, ou seja, ele é atualizado para apontar a próxima instrução.
Outro registrador especial é o ponteiro de pilha, que aponta para o topo da pilha da memória, que
contém uma estrutura para cada rotina chamada, mas que ainda não se finalizou. Uma estrutura de
pilha da rotina contém os parâmetros de entrada, as variáveis locais e as as variáveis temporárias
que não são mantidas nos registradores.
Outro registrador especial é o PSW (Program status word). Esse registrador contém os bits
do código de condições, os quais são alterados pelas instruções de comparação, pelo nível de
prioridade da CPU, pelo modo de execução e por vários outros bits de controle.
Fundamentos De Sistemas operacionais - 3° Vídeo Aula - 2°
Unidade Zzz
Processadores multihread e multinúcleo
O Intel Pentium 4 e outros chips de processamento têm a propriedade chamada multihreading.
No ambiente da ciência da computação, a execução de um thread é a menor uniadde de
processamento que pode ser atendida por um sistema operacional. Múltiplos threads podem existir
num mesmo processo e compartilhar recursos como a memória, enquanto diferentes processos não
compartilham esses recursos.
O thread de um processo compartilha as instruções e contextos. Analogicamente,
múltiplo thread de um processo é o mesmo que múltiplos alunos lendo instruções em
um mesmo livro, porém não necessariamente todos os alunos lendo a mesma página.
Se um dos processos precisa ler uma palavra a partir da memória demandando muitos ciclos de
relógio, uma CPU multihreading não oferece paralelismo, então apenas um processo por vez é
executado, mas o tempo de chaveamento é reduzido para a ordem de um nanossegundo.
O grande problema é que multihreading é compreendido pelo sistema operacional como uma CPU,
portanto, se um computador tiver, por exemplo, duas CPUs, cada uma com dois threads, o sistema
operacional entenderá e terá que gerenciar como se existissem 4 CPUs no sistema.
Outra opção é a CPU com multinúcleo. Isso é o mesmo que fisicamente vermos um único chip,
porém, internamente termos múltiplos chips como se fossem várias CPUs. É importante destacar que
sistemas com CPU multinúcleo requerem SO para multiprocessadores.

Memória
Na teoria, a memória deveria ser mais performática do que a execução de uma instrução processada
por uma CPU, pois, com isso, a CPU jamais teria que esperar pela resposta da memória; entretanto,
na prática isso não é verdade.
Para tentar resolver este problema, a abordagem contemporânea é construir o sistema de memória
seguindo uma hierarquia de camadas, conforme se demonstra na próxima figura.
No topo da pirâmide, temos os registradores que estão contidos nas CPUs. Esses são feitos do
mesmo material que as CPUs e são tão rápidos quanto elas. Desta forma, o tempo do registrador
para a memória é desprezível e a capacidade de memória disponível nos registradores é de 32x32
bits para CPU de 32 bits e de 64x64 bits para CPU de 64 bits, sendo menos de 1kb mesmo no caso
das CPUs de 64 bits.
Seguindo, no segundo nível, vem a memória cache, que é controlada principalmente pelo hardware.
Atualmente vários dispositivos, como processadores, discos rígidos, placas mãe,
placas controladoras e outros, possuem cache. A memória cache é mais usada para
armazenar informações frequentemente mais utilizadas, porém memória cache é
muito cara e não é tão abundante nos sistemas.

No próximo nível, é possível identificar a memória principal, também conhecida como memória RAM
(Random acess memory - Memória de acesso aleatório).
Todas as solicitações vindas da CPU e que não estão na memória cache são encaminhadas para a
memória principal.
ROM (Read only memory) e CMOS são outros tipos de memória também presentes nos sistemas
computacionais.
A memória ROM é normalmente usada pelos fabricantes para gravar códigos controladores de
hardware e são previamente programadas em fábricas, não sendo possível sua alteração, a não ser
que se usem equipamentos específicos para essa finalidade.
A memória CMOS é tipicamente usada para manter data e hora atualizada e parâmetros de
configuração do hardware, como sequência de boot e outros, mesmo que o computador esteja
desligado.
A memória CMOS necessita de uma bateria para manter seu conteúdo.

Discos magnéticos
Os discos magnéticos estão na camada logo abaixo da memória principal, sendo conhecidos como
discos rígidos ou, em inglês hard disks, e também, de forma abreviada como HD.
O grande atrativo dos discos magnéticos em relação à memória é o preço bem menor se comparado
R$/GB, entretanto, o contraponto é a velocidade de acesso que é muito mais lenta por ser um
dispositivo mecânico.
Na estrutura de um disco magnético, temos como uma das principais partes o grupo de discos
metálicos em que são gravadas as informações. Tipicamente, esses discos rodam a velocidade de
5400 a 10000 rpm (rotação por minuto) e tem uma média de transferência de 0,5 Gbit/s
Em ambientes projetados com servidores de rede e, principalmente, servidores de
banco de dados transacional, normalmente são instalados discos com velocidade de
15000 rpm, podendo-se atingir a média de transferência acima de 1,6 Gbit/s. Os
discos de 10000 ou 15000 rpm usam discos menores para mitigar grandes demandas
de energia, entretanto, isso acarreta que esses discos com maior capacidade de
rotação por minuto possuem menos capacidade de que os discos magnéticos de
menos rpm.
As informações são escritas no disco em uma série de círculos que têm o mesmo centro. Cada cabeça
pode ler e gravar uma região circular chamada trilha. Juntas, as trilhas de uma posição do braço
formam um cilindro.
Mover o braço entre cilindros próximos leva aproximadamente 1ms e mover o braço de um
determinado cilindro para outro distante leva em torno de 5 a 10ms.

Fitas
A fita magnética é o último tipo de memória na pirâmide ilustrada lá em cima. Esse meio é muito
utilizado como mídia de cópias de segurança (backup), transportando uma cópia daquilo que está
nos discos magnéticos para fitas magnéticas.
Com base nas normas de segurança ISO 27001, e até mesmo do banco central brasileiro, é
obrigatório o uso de sistemas de backup para garantir que a informação esteja disponível em caso de
o sistema principal apresentar problema.
Grandes sistemas utilizam robôs que controlam a troca de fitas, bem como softwares
especiais para backups, como o Veritas Backup Exec, Data Protector, ARCserve,
Tivoli Storage Management e outros.

Fundamentos De Sistemas Operacionais - 4° Vídeo Aula - 2°


Unidade Zzz
Todos os dispositivos de entrada são aqueles que de alguma forma eles vão enviar ao sistema
operacional uma informação específica.
Ex: Teclado, o usuário vai digitar uma informação/entrar com uma informação.

Dispositiviso de E/S
 Os dispositivos de E/S são geralmente os controladores e os dispositivos
 O controlador é formado por um ou mais chips numa placa, esses controladores possuem a
função de receber os comandos do sistema operacional e gerar as instruções mais adequadas
para os dispositivos, fornecendo orientação exatamente de como o disco rígido armazena e
acessa os dados, por exemplo.
 Os dispositivos possuem interfaces bastante padronizadas. Isso ajuda porque a controladora
IDE pode controlar qualquer disco IDE.
 Entre o sistema operacional e o controlador, há outro software chamado driver de
dispositivo.
o É função do driver de dispositivo se comunicar com o controlador, emitindo
comandos e recebendo respostas.
Os fabricantes de controladores devem fornecer drivers específicos para cada sistema operacional a
que dão suporte.
Existem três maneiras diferentes para entrada e saída (E/S): O método mais simples é quando o
programa de um usuário emite uma chamada de sistema, então o núcleo do sistema operacional a
traduz em uma chamada ao driver relacionado, em seguida, o driver inicia a entrada e saída e fica
em constante checagem se o dispositivo terminou a operação, quando a operação é finalizada, o
driver coloca os dados onde são necessários; o sistema operacional, então, remete o controle para
quem originou a chamada.
Nesse processo, a CPU fica ocupada durante a monitoração se a operação de E/S terminou
ou não.
No segundo método, o driver inicia o dispositivo e instrui que ele o informe quando terminar, durante
esse período de intervalo, o sistema operacional retoma o controle da CPU para executar outra
tarefa. Assim que o controlador recebe a sinalização do final da transferência, ele gerará uma
interrupção para sinalizar o término.
O DMA (Direct memory acess) é o terceiro método para a implementação de entrada e saída. Nesse
cenário, é utilizado um chip especial de acesso direto à memória, controlando o fluxo de bits entre a
memória e algum controlador sem intervenção constante da CPU. Nesse processo, a CPU configura
o chip DMA informando a quantidade de bytes que devem ser transferidos, os endereços do
dispositivo e de memória empregados, e a direção. Então, a execução fica a cargo do DMA. Assim
que o DMA finaliza a tarefa haverá uma interrupção.
O termo barramento é definido como elos de comunicação que consistem em um conjunto de vias.
Ao longo da evolução da arquitetura computacional, os barramentos foram tomando forma mais
heterogênea e estruturada para as necessidades modernas.
Os processadores e memória foram ficando cada vez mais velozes, e o computador antigo, que
inicialmente tinha somente um barramento, passou a não mais dar conta.

Barramento
A CPU se comunica com o barramento PCI por meio do barramento local que, por sua vez, se
comunica com a memória por intermédio de um barramento dedicado. Usando, por exemplo, um
sistema Pentium com uma cache de nível 1 dentro do chip e uma cache de nível 2 muito maior que
fica na parte externa do chip e é conectado à CPU pelo barramento cache.
Esse sistema contém também três barramentos específicos: IDE, USB e SCSI. O barramento IDE,
como descrito anteriormente, pode ser usado para conectar discos físicos e unidade de CD-ROM.
O padrão USB foi desenvolvido por um consórcio de empresas, entre as quais podem citar:
Microsoft, apple, NEC, Intel e etc.
Uma das características fundamentais para o sucesso do USB, principalmente pela demanda de
agilidade de interoperabilidade, é que esta tecnologia compartilha o mesmo driver entre seus
dispositivos, tornando dispensável instalar um novo driver para cada novo dispositivo USB.
Isso traz como benefício maior o fato de podermos instalar dispositivos USB no computador sem
precisar reinicia-lo. Ou seja plug and play.
Resumo
No modelo abstrato de sistema operacional, temos que ter alguns entendimentos a respeito de
processadores, memórias e dispositivos de entrada e saída que são conectados por barramentos.
Além da estrutura de hardware em que está montado o sistema operacional, os
conceitos típicos sobre os quais todos os sistemas operacionais são construídos são:
 Processos;
 Gerenciamento de memória;
 Gerenciamento de E/S;
 Sistema de arquivos;
 Segurança.
Os sistemas operacionais podem ser vistos por dois prismas:
 Dispositivo gerenciador de recursos;
 Maquina estendida.
Todos os sistemas operacionais possuem, na sua essência, o conjunto de chamadas de sistema com
que eles podem lidar. Dentre elas, destacamos:
a. Criação e finalização de processos;
b. Leitura e escrita de arquivos;
c. Gerenciamento de diretórios;
d. Chamadas diversas.

Fundamentos de Sistemas Operacionais - 1° Vídeo Aula - 3°


Unidade Zzz
- Nessa unidade discutiremos alguns princípios que são fundamentais para a
manutenção dos sistemas operacionais.
Gerenciamento de projetos
Introdução a processos:
Os sistemas computacionais atuais são capazes de desenvolver uma grande variedade de tarefas
simultaneamente.
Muitas vezes, isso passa despercebido para nós e só nos lembramos dessa extraordinária
capacidade quando ela falha, ou quando o sistema já está sobrecarregado e notamos a degradação
de desempenho em algumas das tarefas que lhe damos e da qual não estamos tendo o nível de serviço
esperado.
Em todos os sistemas com suposto conceito de paralelismo, temos a CPU
trabalhando por algumas dezenas ou centenas de milissegundos numa única
aplicação e subsequente na próxima até o ciclo se completar.
A sequência é constante até termos os processos concluídos, contudo, não podemos deixar de lado o
fato de que é possível vários processos entrarem na fila a todo momento.
Devido à rapidez dos ciclos, esse cenário de suposto paralelismo irá gerar para a percepção humana
a sensação de que o ambiente está processando as requisições, atendendo a diversas aplicações de
forma simultânea.
Somente nos casos de sistemas com múltiplos processadores é que teremos de fato múltiplos
programas sendo atendidos no mesmo instante. Controlar múltiplas atividades em paralelo é algo
que vem sendo desenvolvido e aprimorado com base num modelo conceitual de processos
sequenciais que facilita o paralelismo que estudamos nesta unidade.

- Todos os computadores são capazes de executar diversas atividades “ao mesmo tempo”,
esse mecanismo de trocas rápidas é chamado de Multiprogramação.
Os softwares de computador são organizados em processos sequenciais.
Um processo é um programa em execução, acompanhado dos valores correntes do contador de
programa, dos registradores e das variáveis.
Uma CPU pode executar um processo por vez.
Observe a próxima ilustração de um sistema com dois cores, que equivale a termos de duas CPUs,
porém, ainda temos a mesma afirmativa. - Todas as CPUs podem executar um processo por vez.

Vale destacar que um processo e um programa possuem conceitos distintos, sendo que o processo
constitui uma atividade, possuindo programa, entrada, saída e um estado.
Os processos podem conter mais de uma tarefa, conceituando, então, que processo e tarefa são
distintos.
Processos são criados e destruídos constantemente nos sistemas. Essas operações disponibilizam
aplicações por meio de chamadas de sistemas que diferem entre sistemas operacionais. Para os
sistemas de propósitos gerais, é necessário algum mecanismo para criar e terminar processos
durante a operação quando for necessário.
Teremos nos sistemas quatro eventos que fazem que processos sejam criados: No início do sistema,
um processo em execução procedendo a uma chamada de sistema de criação de um processo,
requisição do usuário para criar um novo processo e gerenciar a tarefa em lote (bacth job), que está
sendo iniciada.
Ao iniciar o sistema operacional, tipicamente vários processos são criados. Entre esses processos
temos aqueles em primeiro plano, e interligados com o usuário e outros que estão em segundo plano.
Para exemplificar um processo em segundo plano podemos pegar o caso de um servidor de FTP
(File transfer protocol) que fica inativo durante boa parte do tempo, sendo ativado somente quando
um cliente FTP solicita a abertura de uma nova conexão. Daemons é o termo que geralmente
utilizamos para nos referirmos a um processo em segundo plano.
Processos que estão em execução podem fazer chamadas de sistema (system calls) para criar um ou
mais processos.
Criar processos é indicado quando a tarefa a ser executada puder ser facilmente dividida em vários
processos relacionados, interagindo, entretanto, de maneira independente. Os usuários podem
iniciar um novo processo começando um programa no ambiente GUI ou no ambiente Shell.
No caso de sistema em lote, tipicamente encontrados em computadores de grande porte, o usuário,
administrador ou até mesmo um alinhamento prévio, pode submeter tarefas em lote para o sistema.
O sistema operacional criará um novo processo e o executará quando tiver recurso
disponível e/ou redefinindo prioridades e executando o processo no momento
determinado.

Fundamentos De Sistemas Operacionais - 2° Vídeo Aula - 3°


Unidade Zzz

O programa: É o algoritmo que expressa uma notação adequada, expressa em um conjunto


organizado de instruções em linguagem natural ou codificada.
O processo: É uma atividade desempenhada pela CPU de ler o algoritmo, buscar os dados e executa-
los segundo o algoritmo ordena.
A comunicação entre processos é algo frequente nos sistemas atuais, havendo a necessidade de
obtermos uma comunicação estrutura e sem interrupções acontecendo entre eles.
Temos 3 tópicos importantes na comunicação entre processos:

A. Como um processo passa a informação para outro


B. Como garantir que múltiplos processos não entrem em conflito
C. Como haverá uma sequência adequada quando existirem dependências

Processos que trabalham juntos podem compartilhar algum armazenamento comum e serem capazes
de ler e escrever
O armazenamento compartilhado pode estar na memória principal ou em um arquivo compartilhado
Para entendermos o processo de condição da corrida, vamos considerar como exemplo um spool de
impressão.
Para imprimir um arquivo, um processo entra com o nome do arquivo numa posição da fila em um
diretório de spool. Em paralelo e de forma constante, o deamon de impressão verifica na fila se há
algum arquivo para imprimir. Se houver algum arquivo para imprimir, ele será impresso e, em
seguida seu, seu nome será removido da lista.
Ambos os processos passam a ocupar a posição 1 como variável, indicando a vaga 1 da fila de
impressão.
O processo Y continua sua execução armazenando o nome ArquivoY na vaga 1, então, atualiza a
variável In para conter o valor 2

- Após isso ele passa a realizar tarefas subsequentes

De forma fortuita, o processo X volta a executar suas tarefas da posição em que havia parado, após
verificar sua variável vaga_impressão_disponível e encontrar o valor 1, então, escreve o ArquivoX
na vaga 1

É extremamente exaustiva a atividade de analise, depuração e resolução de códigos de programa que


apresentam condições de corrida. São necessárias quatro condições elementares para chegarmos a
uma boa solução
a. Dois ou mais processos nunca podem estar simultaneamente em suas regiões críticas;
b. Nada pode ser definitivamente afirmado no que tange à velocidade ou ao número de cores;
c. Nenhum processo executado fora da sua região crítica pode bloquear outro processo;
d. Nenhum processo deve esperar infinitamente para estar na sua região crítica;
Portando, em um modelo abstrato, as características necessárias para satisfazermos a condição
desejada são demonstradas (no próximo print), em que o processo X entra em sua região crítica no
tempo T1.
Subsequentemente, no tempo T2, o processo Y tenta entrar em sua região crítica, entretanto falhará
devido ao fato de outro processo já estar ocupando essa condição exclusiva.
Então, X fica temporariamente aguardando até que o processo Y deixe sua região crítica

Exclusão mútua com espera ociosa


Quando utilizamos sistemas mais antigos que possuem somente uma CPU como um único core, a
forma mais trivial e segura para evitarmos que mais de um processo entre na região crítica é
aplicada com a desativação das interrupções assim que o primeiro processo entrar e
consecutivamente reabilita-las assim que sair dessa região.
Portanto, quando se desativa a interrupção, a CPU não poderá chavear para outro processo, com
isso não tem como ocorrer a condição de corrida apresentada anteriormente.
Podemos concluir que a desativação das interrupções é uma técnica coerente para o
próprio sistema operacional, porém com alto nível de risco para os processos dos
usuários que necessitem de exclusão mutua.

Semáforos
Como vimos anteriormente, quando um processo estivesse ativo e executando tarefas na região
crítica, então, outros deveriam ficar “dormindo” até o término dessa tarefa.
O semáforo é o conceito proposto por E.W. Dijkstra para um tipo de variável inteira, objetivando
contar o número de sinais de “acordar” salvos para o uso futuro.
Um semáforo poderia conter o valor 0, indicando que nenhum sinal de acordar foi salvo, ou algum
valor positivo, sinalizando que um ou mais sinais de acordar estivessem pendentes.
Dijkstra propôs a existência de duas operações para os semáforos: P (Down)
e V (Up), que são mnemônicos e fazem alusão a sleep e wake up (Dormir e
acordar).
Monitores
Hoare e Brinch Hansen propuseram uma unidade básica de sincronização de alto nível chamada de
monitor. Podemos definir monitor como uma coleção de rotinas, variáveis e estruturas de dados,
todos agrupados em um tipo especial de pacote.
O Monitor tem um papel fundamental para realizar a exclusão mútua pelo fato de que somente um
processo pode estar ativo em um monitor num determinado tempo X.
Tipicamente, quando um processo executa uma chamada a uma determinada rotina de monitor,
algumas das principais instruções da rotina deverão verificar se existe outro processo ativo dentro
do monitor.
Caso confirme que outro processo se encontra ativo dentro do monitor,
então, o processo que realizou a chamada ficará suspenso até que o processo
que estava previamente ativo saia do monitor.
Além da maneira simples que o monitor consegue tratar as exclusões mútuas, ele também apresenta
variáveis condicionais que possibilitam bloquear processos quando não puderem continuar.
Linguagens como C, Pascal e outras diversas não possuem monitores. Entretanto, o monitor foi
projetado para resolver o problema de exclusão mútua em CPU, acessando memória comum, porém
quando estamos usando um sistema distribuído formado por múltiplas CPUs e cada uma com sua
própria memória privada e conectada por uma rede, os monitores passam a não ter efeito.

Fundamentos De Sistemas Operacionais - 3° Vídeo Aula - 3°


Unidade Zzz
Troca De Mensagens:
Semáforos e monitores não permitem troca de informações entre maquinas, que é primordial no
mundo dos sistemas distribuídos. Para essa condição, temos a troca de mensagens, que usa dois
instrumentos: Envio e recebimento, que devem ser colocados em rotinas de biblioteca.
Num ambiente de rede, um dos principais problemas é a perda de pacotes causados por algum
motivador. (Não citado neste material)
No caso da troca de mensagens entre máquinas, isso se dá por meio da rede e, como
apresentado, essa mensagem pode ser extraviada ao longo do percurso
Quando temos apenas uma CPU e mais de um processo estiver competindo para ser executado então,
caberá ao sistema operacional escolher qual dos processos será privilegiado e essa escolha chama-
se algoritmo de escalonamento.
Em linhas gerais, o escalonamento é importante porque, dentre vários processos, é saudável que o
sistema priorize aqueles que vão gerar mais impacto ao ambiente e seus usuários, caso não fossem
privilegiados durante a escolha de quem deve ser o próximo a ser processado.
Entre os processos, temos aqueles que passam a maior parte do tempo
computando, computer bound (limitados pela CPU), enquanto outros passam
a maior parte do tempo esperando, por entrada e saída, I/O bound (limitados
a entrada e saída).

Escalonamento
Devemos escalonar os processos em quatro situações:
1) Quando temos os processos pai e filho para serem executados. A definição de qual deve ser
priorizado, em muitos casos, é essencial para o perfeito funcionamento das tarefas e do
resultado correto.
2) Quando temos um processo que terminou e já não está mais no sistema, há a necessidade de
escolha de um novo processo e, portanto, o estacionamento, nessa situação, faz-se
necessário.
3) Quando um processo é bloqueado por alguma razão, então outro processo deve ser
selecionado para ser executado no lugar. Processos predecessores podem ser priorizados,
pois, se forem executados os sucessores, pode haver dependências que irão gerar resultados
inconsistente.
4) Ao ocorrer uma interrupção de E/S, pode ser necessária uma decisão de escalonamento. Os
algoritmos de escalonamento podem trabalhar tipicamente de duas formas: Não antecipado
e antecipado.
No primeiro caso, o processo “não antecipado” pode ficar executando pelo tempo que for
necessário, ou seja, por horas até que seja bloqueado ou até que libere a CPU.
No segundo, o algoritmo de escalonamento antecipado escolhe um processo
e o deixa em execução por tempo máximo fixado.
Observações:
Nos sistemas precursores não era possível mais que um programa ocupando a memória. Se isso
ocorresse, causaria problemas aos dois programas, ao que estava na memória e àquele que tentasse
fazer uso.
Com o avanço e a necessidade de múltiplas aplicações em funcionamento simultaneamente, a opção
encontrada foi o uso do Swapping, ou seja, troca de processos.
Isso consiste no sistema operacional pegar o conteúdo completo da memória e mover
ele para um arquivo na memória em disco rígido e, subsequentemente, liberar a
memória para o próximo processo.
Entretanto no hardware também houve avanço que não demanda somente a troca de processos
executada por software (pelo sistema operacional).
Esse processo consiste em dividir a memória principal em blocos de 2KB com chave de proteção de
4 bits para cada bloco e mantidas em registradores especiais dentro da CPU. Porém, nesse caso da
divisão da memória em blocos, há “um problema quando se usa mais de um programa”.
Os dois programas referenciam a memória física absoluta, enquanto, na realidade, queríamos que
cada programa referenciasse um conjunto de endereços. Portanto, a solução é a realocação estática
ou, em outras palavras, esse mecanismo de rotação visa a rotular blocos da memória com uma chave
de proteção e comparar a chave do processo em execução com a de cada palavra da memória
recuperada.

Fundamentos De Sistemas Operacionais - 4° Vídeo Aula - 3°


Unidade Zzz
Abstração - Espaços de endereçamento da memória
Expor a memória física aos processos pode trazer problemas, chegando até a ocasionar o
travamento do sistema operacional. Entretanto, hoje, depois da história toda ter acontecido, sabemos
que existe um método para tratar essa situação, caso contrário, não seria possível estarmos com o
nosso computador conectado à internet, acessando o editor de texto e/ou diversas combinações que
fazem parte do nosso dia a dia. Para isso, temos de entender o processo de abstração da memória.
Com a abstração da memória e a implantação do espaço de endereçamento, cria-se uma memória
abstrata para abrigar os programas.
Esta, por sua vez, possui um conjunto de endereços usado para que o
processo realize endereçamento à memória (os processos possuem seu
próprio espaço de endereçamento usado para que o processo realize
endereçamento à memória (Os processos possuem seu próprio espaço de
endereçamento, diferente para cada processo).

Observação: Se um processo maior que a área livre, ou um processo, mesmo que pequena, porém,
sem nenhuma área de memória, estiver disponível, então esse processo deverá ser transferido para
disco e ficará por lá até que memória suficiente seja liberada.

Memória Virtual
Diante da elevada demanda por memória, os programas eram criados em módulos. Dessa forma, ao
carregar um programa, o gerenciador de módulo era quem, na realidade, seria carregado e em
seguida, a sobreposição zero. Quando necessário, era carregado à próxima sobreposição desse
programa ou de outros. Todas as as preposições ficam gravadas em disco.
A memória virtual possui dois aspectos importantes: O primeiro é a quantidade de memória
fisicamente instalada no equipamento que chamamos de memória real.
O outro tem muito mais capacidade que o primeiro e chamamos de espaço de
memória virtual. No Hardware, temos um componente de extrema
importância que é a unidade de gerenciamento de memória (MMU)
O MMU suporta o sistema operacional na execução do mapeamento dos endereços da memória
física e endereços de memória virtual, permitindo, assim, a eficaz maestria de mover as partes dos
programas da memória virtual para o disco ou vice-versa.

Observação: Analisando pela perspectiva do programa, temos cada um com seu


próprio espaçamento de endereços adjacentes que chamamos de páginas.

Paginação:
A técnica chamada de paginação é usada na maioria dos sistemas de memória virtual. A memória
virtual é dividida em unidades de espaçamento de endereços adjacentes chamadas de páginas. Estas
correspondem a unidades das memórias chamadas de frames. Enquanto o espaço de endereçamento
virtual é dividido em unidades chamadas páginas (pages), temos as unidades correspondentes na
memória física que são denominadas molduras de páginas (frames). Tanto as páginas quanto as
molduras possuem o mesmo tamanho.

Segmentação:
Além da paginação, a segmentação de memória é uma das formas simples para se obter a proteção
da memória.

Com o uso da segmentação são atendidos os seguintes requisitos:


i. Pode haver vários segmentos distintos;
ii. Cada segmento pode ter um tamanho próprio;
iii. Cada segmento é constituído de uma sequência linear de endereços;
iv. O tamanho dos segmentos pode variar durante a execução;
v. O tamanho de cada segmento de pilha pode ser expandido sempre que algo é colocado sobre
ela e diminuído sempre que algo é retirado dela;
vi. Segmentos diferentes podem crescer ou diminuir independentemente e quando for necessário.

Resumo
Os processos são oferecidos pelos sistemas operacionais, ocupando cada qual o seu próprio espaço
de endereçamento. Eles podem ser criados e terminados de maneira dinâmica, de forma a evitar que
dois processos estejam em suas regiões críticas simultaneamente. Os semáforos, os monitores e as
mensagens são as formas nas quais os processos comunicam-se entre si.
Estados dos processos:
- Executando;
- Passível de ser executado;
- Bloqueado
É possível que o processo troque de estado quando ele, ou um outro processo,
executar uma das unidades básicas (semáforos, monitores ou mensagens).
Algoritmos de escalonamento são importantes para o ambiente e alguns sistemas fazem distinção
entre mecanismo de escalonamento e política de escalonamento, permitindo aos usuários controle
sobre o algoritmo de escalonamento. Algoritmo de escalonamento é a escolha feita pelo sistema
operacional de qual dos processos será privilegiado quando há uma única CPU, ou uma única CPU
disponível entre as diversas existentes no sistema, e mais de um processo estiver competindo para ser
executado.
Nos sistemas mais triviais, quando um programa é carregado em memória, ele ficará ocupando a
memória necessária até que sua finalização aconteça.
Alguns sistemas permitem somente um processo por vez carregado da
memória principal, enquanto outros suportam a multiprogramação.
Quando é necessário que o sistema operacional use mais memória principal (RAM), que realmente
existe fisicamente na máquina, então, é necessária a troca de processos entre as memórias principais
e o disco. Os espaços de endereçamento de cada processo são divididos em bloco e são chamados de
páginas.
Na memória fica a moldura de página que recebe os blocos dos processos. O sistema de paginação
ajuda no tratamento de estrutura de dados que alteram seus tamanhos durante a execução,
simplificando a ligação, o compartilhamento e facilitando a proteção customizada para cada
segmento.
Segmentação e paginação são tipicamente combinadas para fornecer uma
memória virtual bidimensional.

Fundamentos De Sistemas Operacionais - 1° Vídeo Aula - 4°


Unidade Zzz
Sistemas de arquivos
Em linhas gerais, no ambiente computacional, espera-se que dados inseridos na entrada saiam como
produto final, informação processada. Essas informações podem ser compreendidas como textos,
planilhas, figuras, filmes e etc. As informações, que podem ocupar de alguns bytes a milhares de
milhões de bytes, devem ser armazenadas em dispositivos não voláteis, ou seja, não podem ser
perdidas com o deslocamento do computador e podem ser acessadas por múltiplos processos de
forma concorrente. As informações são armazenadas tipicamente em disco e o armazenamento
resume-se em sequência lineares de blocos de tamanho fixo que suportam duas operações: Busca do
bloco K e escrita no bloco K, surgindo, portanto, o conceito de arquivo.

Você também pode gostar