Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

INSTITUTO SUPERIOR POLITÉCNICA DO SOYO 
ISP-SOYO 
 
 
 
CURSO: ENGENHARIA INFORMÁTICA 
CADEIRA: SISTEMA OPERATIVO I 
DOCENTE: ENG. MENDES CASTANHEIRO 
 
 
Sistema Operativo I 
 
Eng. Mendes Castanheiro António 
 
 
Índice 
INTRODUÇÃO ............................................................................................................................ 3 
1- COMPONENTES DE HARDWARE ................................................................................... 6 
1.1- Processador ................................................................................................................... 6 
1.2.1- CISC .......................................................................................................................... 7 
1.2.2- RISC .......................................................................................................................... 7 
1.3-Memória ........................................................................................................................... 8 
1.3.1-Memória principal .................................................................................................. 8 
1.3.2- Memória cache ....................................................................................................... 9 
1.4 Periféricos ..................................................................................................................... 11 
1.4.1- Dispositivos de entrada .................................................................................... 11 
1.4.2- Dispositivos de saída ......................................................................................... 12 
1- SISTEMAS OPERACIONAIS ............................................................................................ 13 
2- ESTRUTURAS DE SISTEMAS DE COMPUTAÇÃO .................................................... 22 
2.1-Operação do Sistema de Computação .................................................................. 22 
2.2- Estrutura de I/O ........................................................................................................... 25 
2.3-Estrutura de Armazenamento .................................................................................. 27 
2.4-Buffering ........................................................................................................................ 31 
2.5-Spooling ......................................................................................................................... 31 
2.6-Reentrância ................................................................................................................... 32 
4- ESTRUTURAS DE SISTEMA OPERACIONAL ............................................................. 33 
4.1- Serviços do Sistema Operacional .......................................................................... 34 
4.1.1-Funções de serviços do sistema operacional .............................................. 34 
4.2- Chamadas de Sistema .............................................................................................. 38 
4.2.1-Tipos de Chamadas de Sistema ....................................................................... 44 
4.3- Programas de sistema ou utilitários ..................................................................... 46 
4.4- Linguagem de máquina ............................................................................................ 48 
5.PROCESSO ........................................................................................................................... 48 
5.1 Conceito de Processo ................................................................................................ 49 
5.2 - Estado do Processo ................................................................................................. 52 
5.2.1-Bloco de Controle de Processo ....................................................................... 52 
5.3-Escalonamento de Processos ................................................................................. 54 
5.3.1 Objetivos do escalonamento............................................................................. 55 
5.3.2 Níveis de escalonamento ................................................................................... 57 
5.3 - Escalonamento preemptivo e não preemptivo ................................................. 58 
Referências .............................................................................................................................. 62 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 3 
 
SISTEMA OPERATIVO I 
 
INTRODUÇÃO 
Desde sua criacão, os computadores sempre foram sistemas de elevada 
sofisticaçãao em relação ao estágio tecnológico de suas épocas de 
desenvolvimento. Ao longo dos últimos 50 anos evoluíram incrivelmente e, 
embora tenham se tornado mais comuns e acessíveis, sua popularização ainda 
esconde sua tremenda complexidade interna. 
 
Neste sentido, os sistemas operacionais, em termos de suas origens e 
desenvolvimento, acompanharam a própria evolução dos computadores. Deitel 
nos traz a seguinte definição de sistema operacional: 
 
Vemos um sistema operacional como os programas, implementados como 
software ou firmware, que tornam o hardware utilizável. O hardware oferece 
capacidade computacional bruta. Os sistemas operacionais disponibilizam 
convenientemente tais capacidades aos usuários, gerenciando cuidadosamente 
o hardware para que se obtenha uma performance adequada (DEITEL., 1992). 
Nesta definição surgem alguns novos termos explicados a seguir. O hardware é 
o conjunto de dispositivos elétricos, eletrônicos, ópticos e eletromecânicos que 
compõe o computador, sendo a máquina física propriamente dita. O hardware, 
aparentemente identificável pelos dispositivos ou módulos que compõe um 
sistema computacional, determina as capacidades deste sistema. O software é 
o conjunto de todos os programas de computador em operação num dado 
computador. Já o firmware é representado por programas especiais 
armazenados de forma permanente no hardware do computador que permitem 
o funcionamento elementar e a realização de operações básicas em certos 
dispositivos do computador, geralmente associadas a alguns periféricos e a 
execução de outros programas também especiais. 
 
Na Figura 1.1 podemos identificar o hardware como sendo os dispositivos físicos, 
sua microprogramação e o firmware existente neste computador. Como 
exemplos de dispositivos existentes num sistema podemos citar os circuitos 
integrados de memória, as unidades de disco flexível ou rígido e o processador 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 4 
 
SISTEMA OPERATIVO I 
do sistema, sendo este último um dispositivo microprogramado. O firmware 
geralmente vem acondicionado em circuitos de memória não volátil (ROM, 
PROM ou EPROM) sendo os programas ali gravados escritos geralmente em 
linguagem de máquina e destinados a execução de operações especiais tal 
como a Auto verificação inicial do sistema (POST ou power on self test) e a carga 
do sistema operacional a partir de algum dispositivo adequado (bootstrap). 
O software deste sistema ou os programas do sistema são representados pelo 
sistema operacional e todos os seus componentes (bibliotecas de funções e 
programas utilitários) além de todos os outros programas acessórios do sistema, 
tais como editores de texto, programas gráficos, compiladores, interpretadores 
de comando (shells), aplicativos de comunicação e ferramentas de 
administração e manutenção do sistema. 
Os programas de aplicação são todos os demais softwares, desenvolvidos com 
finalidades particulares, que são utilizados num dado sistema computacional sob 
suporte e supervisão do sistema operacional, tais como planilhas eletrônicas, 
programas de correio eletrônico, navegadores (browsers), jogos, aplicações 
multimídia etc. 
 
 
 
 
 
 
 
Figura 1.1: Hardware,software, firmware e o SO 
 
Por só, o hardware do computador dificilmente poderia ser utilizado diretamente 
e mesmos assim, exigindo grande conhecimento e esforço para execução de 
tarefas muito simples. Neste nível, o computador somente é capaz de entender 
programas diretamente escritos em linguagem de máquina. Além disso, cada 
diferente tipo de computador possui uma arquitetura interna distinta que pode se 
utilizar de diferentes processadores que por sua vez requisitar˜ao diferentes 
linguagens de máquina, tornando penosa e cansativa a tarefa dos 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 5 
 
SISTEMA OPERATIVO I 
programadores. 
 
Desta forma, é adequada a existência de uma camada intermediária entre o 
hardware e os programas de aplicação que pudesse não apenas oferecer um 
ambiente de programação mais adequado mas também um ambiente de 
trabalho mais simples, seguro e eficiente. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 6 
 
SISTEMA OPERATIVO I 
 
1- COMPONENTES DE HARDWARE 
 
Podemos dizer que hardware e software são elementos vitais em um sistema 
de computação e que um não vive sem o outro. Em um sistema computacional 
temos um conjunto de hardware formado por processadores, memória, 
barramentos, registradores, monitores de vídeo, mouse, teclado, impressoras, 
discos magnéticos, entre outros dispositivos. Estes por sua vez manipulam 
dados de forma digital o que torna um sistema computacional confiável na 
representação e transmissão de dados. 
 
Um sistema computacional geralmente é formado pela composição de três 
subsistemas básicos (também conhecidos como unidades funcionais): 
processadores (UCP), memória principal (RAM) e dispositivos de entrada e saída 
(E/S). Estes itens compõem qualquer tipo de computador digital existente 
independente de fabricante, marca ou modelo (Pereira, Vissotto, & Franciscatto, 
2015). 
 
1.1- Processador 
 
O processador ou Unidade Central de Processamento (UCP) tem como função 
controlar e executar instruções presentes na memória principal (RAM) através 
de operações aritméticas (como somar, subtrair, multiplicar e dividir) e operações 
lógicas (comparações, movimentação de dados, etc.). 
 
Um processador é composto por alguns elementos básicos como a Unidade 
de Controle (UC), a Unidade Lógica e Aritmética (ULA) e os registradores. 
A UC gerencia as atividades de todos os dispositivos do computador, como por 
exemplo, a gravação de dados em discos, a busca de instrução em memória, 
entre outros. Já a ULA realiza as operações lógicas e aritméticas, conforme 
citado nos parágrafos anteriores. Os registradores por sua vez têm a função 
de guardar dados temporariamente, servindo como uma memória de alta 
velocidade interna do processador, porém com uma capacidade de 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 7 
 
SISTEMA OPERATIVO I 
armazenamento reduzida e um custo maior que a memória principal (Pereira, 
Vissotto, & Franciscatto, 2015). 
 
processador se dá através de um sinal de clock. Este sinal por sua vez, é gerado 
através de um pulso cíclico que altera variáveis de estado do processador. 
 
1.2- Arquiteturas RISC e CISC 
 
Uma CPU em relação ao número de instruções de processamento que pode 
reconhecer classifica-se em: CISC e RISC. 
 
 
1.2.1- CISC 
 
Um processador CISC reconhece mais de uma centena de instruções. Devido 
a esta característica, pode executar de modo direto a maioria das operações 
programadas pelos modernos softwares. 
 
 
Os processadores com arquitetura CISC possuem instruções complexas que 
são interpretadas por microprogramas. O núcleo de registradores é pequeno 
e qualquer instrução pode referenciar a memória principal. 
Os processadores são em sua grande maioria chips CISC. Quanto maior a 
quantidade de instruções que um microprocessador é capaz de identificar, 
mais lenta é a execução de cada uma delas. 
 
1.2.2- RISC 
 
Um processador RISC reconhece um número limitado de instruções, sendo que 
em contrapartida, estas instruções são otimizadas para que sejam executadas 
com mais rapidez. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 8 
 
SISTEMA OPERATIVO I 
A arquitetura RISC se caracteriza por possuir poucas instruções de máquina, 
que são executadas diretamente pelo hardware. Estas instruções, em sua 
maioria, não acessam a memória principal, trabalhando com registradores 
que neste tipo de processador se apresentam em grande número. 
 
Portanto, a arquitetura RISC reduz o conjunto de instruções ao mínimo 
indispensável: 
 
 Quadro 1.1: Arquitetura RISC x Arquitetura CISC 
 
 
 
 
 
 
 
Fonte: Adaptado de Maia, 2007 
 
 
1.3-Memória 
 
1.3.1-Memória principal 
 
Um computador em seu interior possui vários tipos de memórias. A memória 
principal do computador é conhecida como memória RAM (Random Access 
Memory), ou memória de acesso aleatório. Ela é chamada de memória principal, 
pois é utilizada para manter os programas em execução, tanto dos usuários 
como do sistema operacional. 
 
A memória é composta por unidades de acesso denominadas de células. 
Cada uma das células possui um determinado número de bits. O acesso ao 
conteúdo de uma célula se dá pela especificação de um número denominado 
de endereço. O endereço nada mais é do que uma referência única que fazemos 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 9 
 
SISTEMA OPERATIVO I 
a uma célula de memória. Quando um programa deseja fazer operações de 
gravação e leitura em uma célula, este deverá antes especificar o endereço 
de memória desejado, para então realizar a operação. 
 
 
A quantidade de memória RAM disponível em um computador, exerce um 
grande efeito sobre o desempenho do mesmo, uma vez que sem memória 
RAM suficiente o sistema passa a utilizar a memória virtual, que é muito mais 
lenta que a memória RAM. 
 
Uma questão importante a ser lembrada é que a memória RAM é volátil, 
ou seja, todo o conteúdo se apaga quando o computador é desligado ou 
reiniciado. Assim, caso tenhamos programas em memória e tivermos uma 
queda de energia elétrica, se não tivermos um dispositivo como o no-break 
(que garanta a estabilidade de energia), perderemos os dados que estão 
nesta memória. 
 
Os chips de memória RAM são vendidos na forma de pentes de memória, com 
diferentes velocidades de funcionamento (atualmente na casa dos Gigahertz), 
tamanhos (01, 02, 04 GB, etc.) e tipos (DDR, DDR2, DDR3, etc.). 
 
1.3.2- Memória cache 
 
A memória cache pode ser caracterizada como uma memória de alta velocidade, 
volátil e na grande maioria das vezes com pequena capacidade de 
armazenamento. Sua principal função é diminuir a disparidade existente entre 
a velocidade na qual o processador executa instruções, bem como a velocidade 
com que os dados são lidos e gravados em memória principal. 
O tempo de acesso a um dado presente na memória cache é muito menor 
que se o mesmo estivesse em memória principal. 
 
A memória cache guarda os dados mais solicitados. Dessa forma, cada vez que 
o processador necessita de determinado dado ele verifica se esta informação 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 10 
 
SISTEMA OPERATIVO I 
encontra-se na memória cache, caso contrário, ele faz uma busca em memória 
principal (o que aumenta o tempo de acesso à informação). 
 
A maioria dos processadores atuais apresentam um esquema de memória 
cache composto por múltiplos níveis. O funcionamento deste esquema tem 
por princípio que quanto menor a capacidade de armazenamento da memória 
cache, mais rápido é o acesso a um determinado dado. 
 
Para aumentar o desempenho no funcionamento das memórias caches a 
hierarquização em múltiplos níveis torna-se necessária. Nesse esquema, o 
nível mais alto de cache é chamado de L1 (Level 1), com baixa capacidade de 
armazenamento e com alta velocidade de acesso. O nível L2 (Level 2) possuimaior capacidade de armazenamento, porém velocidade de acesso inferior a L1. 
 
1.3.3- Memória secundária 
 
A memória secundária é utilizada para guardar dados de forma permanente 
no computador. Este tipo de armazenamento não necessita de alimentação, 
diferentemente da memória principal que necessita estar energizada para 
manter suas informações. 
 
O acesso à leitura e gravação de dados na memória secundária é mais lento 
se comparado à memória principal, entretanto o custo é baixo e a capacidade 
de armazenamento é bastante superior. 
 
Quanto aos tempos de acesso, a memória secundária funciona na ordem de 
milissegundos (10-3), enquanto a memória principal trabalha na ordem de 
nanossegundos (10-9). Podemos citar como exemplo de memória secundária 
os seguintes dispositivos: 
 
• Discos magnéticos (discos rígidos – HD). 
 
• Discos ópticos (CD, DVD, Blu-Ray). 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 11 
 
SISTEMA OPERATIVO I 
 
• Memória flash (pen drives). 
 
Na Figura 1.1, é possível visualizar um comparativo entre os diferentes tipos 
de dispositivos de armazenamento na relação custo, velocidade e capacidade 
de armazenamento. 
 
 
 
 
 
 
 
 
 
 
 
Figura 1.1: Relação entre dispositivos de armazenamento 
Fonte: CTSM, adaptado de Maia, 2007 
 
1.4 Periféricos 
 
Os periféricos ou dispositivos de entrada e saída, são componentes de um 
computador que permitem expandir as funcionalidades do mesmo. Os mesmos 
podem ser divididos em duas categorias principais: os utilizados como memória 
secundária e os que servem como interface usuário-máquina. Veremos alguns 
exemplos de dispositivos de entrada e saída de dados. 
 
1.4.1- Dispositivos de entrada 
 
Os dispositivos de entrada ou periféricos de entrada têm a função de codificar 
os dados que entram no computador para que os mesmos possam ser 
processados pelo computador. São considerados dispositivos de entrada: 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 12 
 
SISTEMA OPERATIVO I 
 
 Câmera digital. 
 Câmera filmadora. 
 Caneta ótica. 
 Drive de Blu-Ray. 
 Drive de CD/DVD-ROM. 
 Joystick. 
 Leitora de códigos de barra. 
 Mesa gráfica. 
 Microfone. 
 Mouse. 
 Pen drive. 
 Scanner. 
 Teclado. 
 Tela sensível ao toque. 
 
1.4.2- Dispositivos de saída 
 
Os dispositivos de saída têm a função de decodificar os dados gerados pelos 
dispositivos de entrada, para que estes possam ser entendidos pelo usuário. 
Em outras palavras, os dispositivos de saída permitem extrair e visualizar 
informações que estão no computador. 
 
Abaixo alguns exemplos de dispositivos de saída de dados: 
 
 Caixas de som. 
 Drive gravador de Blu-Ray. 
 Drive gravador de CD-ROM/DVD-ROM. 
 Impressora. 
 Monitor de vídeo. 
 Pen drive. 
 Plotter. 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 13 
 
SISTEMA OPERATIVO I 
 Projetores digitais. 
 
 
Cabe salientar que existem dispositivos que funcionam tanto como periféricos 
de entrada como de saída, nestes casos sendo classificados como dispositivos 
de entrada/saída de dados. 
 
Os dispositivos de entrada e saída são responsáveis pela interação da máquina 
com o homem. É por meio deles que os dados entram e saem do computador. 
 
 
1- SISTEMAS OPERACIONAIS 
 
A essa altura, você já deve ter notado que o termo sistema operacional abrange 
muitos papéis e funções. Isso ocorre, pelo menos em parte, em razão dos 
inúmeros designs e usos dos computadores. Os computadores estão presentes 
dentro de torradeiras, carros, navios, espaçonaves, casas e empresas. Eles são 
a base das máquinas de jogos, reprodutores de música, sintonizadores de TV a 
cabo e sistemas de controle industrial. Embora os computadores tenham uma 
história relativamente curta, eles evoluíram rapidamente. 
 
A computação começou como um experimento para determinar o que poderia 
ser feito e migrou rapidamente para sistemas de finalidade específica de uso 
militar, como decifração de códigos e plotagem de trajetórias, e uso 
governamental, como no cálculo do censo. Esses computadores iniciais 
evoluíram para mainframes multifuncionais de uso geral, e foi então que 
nasceram os sistemas operacionais (Silberschatz, 2015). Nos anos 1960, a Lei 
de Moore previu que o número de transistores de um circuito integrado dobraria 
a cada dezoito meses, e essa previsão se confirmou. Os computadores 
aumentaram em funcionalidade e diminuíram em tamanho, levando a um vasto 
número de usos e a um vasto número e variedade de sistemas operacionais. 
 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 14 
 
SISTEMA OPERATIVO I 
1.1-DEFININDO OS SISTEMAS OPERACIONAIS 
 
Um sistema operacional é um programa, ou conjunto de programas, 
especialmente desenvolvido para oferecer, da forma mais simples e 
transparente possível, os recursos de um sistema computacional aos seus 
usuários, controlando e organizando o uso destes recursos de maneira que se 
obtenha um sistema eficiente e seguro. 
 
 
Segundo Stallings (1992), ao tratar dos objetivos e funções dos sistemas 
operacionais, afirma que: 
 
Um sistema operacional ´e um programa que controla a execução dos 
programas de aplicação e atua como uma interface entre o usuário do 
computador o hardware do computador. Um sistema operacional pode ser 
pensado como tendo dois objetivos ou desempenhando duas funções: 
conveniência, pois faz o sistema computacional mais conveniente de usar; e 
eficiência, pois permite que os recursos do sistema computacional sejam usados 
de maneira eficiente. 
 
Silberschatz (2000) utiliza praticamente a mesma definição, indicando que um 
sistema operacional é um ambiente intermediário entre o usuário e o hardware 
do computador no qual programas podem ser executados de forma conveniente 
e eficiente. 
 
 
Objetivos de um sistema operacional 
 
A despeito do tipo, sofisticaçãoo ou capacidades do computador, um sistema 
operacional deve atender aos seguintes princípios: 
 
1. Oferecer os recursos do sistema de forma simples e transparente; 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 15 
 
SISTEMA OPERATIVO I 
2. Gerenciar a utilização dos recursos existentes buscando seu uso eficiente 
em termos do sistema; e 
 
 
3. Garantir a integridade e a segurança dos dados armazenados e 
processados no sistema e também de seus recursos físicos. 
 
Além destes objetivos, um sistema operacional também deve proporcionar uma 
interface adequada para que ele possa ser utilizado pelos seus usuários. 
Historicamente as primeiras interfaces dos sistemas operacionais eram 
baseadas em um conjunto de palavras-chave (comandos) e mensagens de 
diálogo que permitiam a execucão de tarefas e a comunicação entre homem (o 
operador) e máquina. Estes comandos e mensagens definiam a Interface 
Humano-Computador (IHC) daquele sistema. Atualmente as interfaces 
baseadas em modo texto estão em desuso, sendo substituídas por interfaces 
gráficas mais modernas e simples que buscam facilitar a utilização do 
computador através de sua aparência atraente e uso intuitivo. 
 
 
1.3 Tipos de sistemas operacionais 
 
Os sistemas operacionais evoluíram ao longo do tempo, muito pela contribuição 
da evolução do hardware e das aplicações suportadas por ele. Os sistemas 
operacionais são divididos basicamente em três tipos, conforme podemos 
visualizar na Figura 1.2. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 16 
 
SISTEMA OPERATIVO I 
 
 
 
 
 
 
 
 
 
Figura 1.2: Tipos de sistemas operacionais 
Fonte: CTISM, adaptado de Maia, 2007 
 
 
A estrutura apresentada na Figura 1.2, mostra os tipos de sistemas operacionais 
quanto a sua forma de operação. Estes dividem-se em: sistemas 
monoprogramáveis/monotarefa, sistemas multiprogramáveis/multitarefa e 
sistemas com múltiplos processadores. 
 
1.3.1 Sistemas monoprogramáveis/monotarefa 
 
Os sistemas monoprogramáveis ou monotarefa, como o próprio nome já diz 
(mono, noção de um, deunidade) são sistemas voltados tipicamente para a 
execução de um único programa. Qualquer outra aplicação para ser executada, 
deve aguardar o término no programa corrente. Neste tipo de sistema, o 
processador, a memória e os demais periféricos permanecem exclusivamente 
dedicados à execução de um único programa (Pereira, Vissotto, & Franciscatto, 
2015). 
 
Os sistemas monotarefa, estão tipicamente relacionados aos primeiros 
computadores da década de 1960. Os sistemas monoprogramáveis possuíam 
uma desvantagem muito clara, devido à limitação de tarefas (uma de cada vez) 
havia um grande desperdício de recursos de hardware. Como exemplo de 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 17 
 
SISTEMA OPERATIVO I 
sistema operacional monoprogramável/monotarefa temos o MS-DOS da 
Microsoft. 
 
1.3.2 Sistemas multiprogramáveis/multitarefa 
 
Diferentemente dos sistemas monoprogramáveis/monotarefa, os sistemas 
multiprogramáveis/multitarefa permitem que os recursos computacionais 
sejam compartilhados entre os diversos usuários e aplicações. Neste caso, 
enquanto um programa espera pela ocorrência de um evento, outros programas 
podem estar em execução neste mesmo intervalo de tempo, permitindo 
assim o compartilhamento de recursos como processador, memória principal 
e dispositivos de entrada e saída. O sistema operacional fica incumbido de 
gerenciar o acesso concorrente aos seus diversos recursos de forma ordenada 
e protegida (Pereira, Vissotto, & Franciscatto, 2015). 
 
As vantagens na utilização destes tipos de sistemas operacionais são a redu- 
ção do tempo de respostas das aplicações, além dos custos computacionais 
reduzidos, devido ao compartilhamento dos recursos do sistema entre as 
diferentes aplicações. 
 
Os sistemas operacionais multiprogramáveis/multitarefa podem ser classificados 
em três subdivisões segundo características de como suas aplicações são 
gerenciadas. Estas categorias são: sistemas batch, de tempo compartilhado 
e de tempo real. 
 
1.3.2.1 Sistemas batch 
 
Os sistemas batch foram implementados na década de 60. Os programas ou 
jobs, como eram conhecidos na época, eram submetidos para execução através 
da utilização de cartões perfurados, armazenados em discos ou fitas, para 
posteriormente serem executados (dependendo da disponibilidade da memória 
principal). Uma característica marcante dos sistemas batch era não exigir a 
interação do usuário com a aplicação. Exemplos de aplicações processadas 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 18 
 
SISTEMA OPERATIVO I 
em batch eram programas de cálculos numéricos, ordenações, compilações, 
backups, entre outros, onde não se fazia necessária a interação com o usuário. 
 
1.3.2.2 Sistemas de tempo compartilhado 
 
Estes sistemas, também conhecidos como time-sharing (tempo compartilhado), 
permitem que diferentes programas sejam executados a partir da divisão do 
tempo do processador em pequenas fatias de tempo (conhecidas como 
time-slice). Caso a fatia de tempo seja pequena para as funções que o mesmo 
precisa realizar, ele aguarda uma nova fatia de tempo para que possa entrar 
em execução novamente. Nos sistemas de tempo compartilhado é criado, 
para cada usuário, um ambiente de trabalho próprio, simulando a ideia de 
que todo o sistema está dedicado exclusivamente a ele. 
 
Os sistemas de tempo compartilhado permitem aos seus usuários interagir 
com o sistema através dos dispositivos de entrada de dados e comandos 
especiais. A grande maioria das aplicações comerciais existentes atualmente 
utilizam este tipo de sistema, uma vez que oferecem tempo de resposta 
razoáveis e custos baixos, em função do compartilhamento dos recursos do 
sistema, entre os programas. 
 
1.3.2.3 Sistemas de tempo real 
 
Também conhecidos como real-time (tempo real) possuem características 
semelhantes aos sistemas de tempo compartilhado, entretanto diferenciam-se 
pelo tempo exigido no processamento das aplicações. Nos sistemas de tempo 
real, quanto aos tempos de processamento, estes devem enquadrar-se em 
limites rígidos, para o êxito das operações realizadas, podendo comprometer 
a aplicação e seus resultados caso este limite de tempo não seja cumprido. 
Diferentemente dos sistemas de tempo compartilhado, nos sistemas de tempo 
real o processador permanece ocupado durante o tempo que for necessário 
a execução de determinado programa, cedendo lugar a outro programa que 
tenha uma prioridade maior no sistema. Outra característica destes sistemas 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 19 
 
SISTEMA OPERATIVO I 
é que a prioridade de execução de um programa é definida pela própria 
aplicação e não pelo sistema operacional. 
 
Exemplos destes sistemas, encontramos em aplicações de controle de 
processos, como controle de tráfego aéreo, usinas, refinarias, ou qualquer outra 
aplicação onde o tempo de processamento é fator fundamental para o sucesso. 
 
1.3.3 Sistemas com múltiplos processadores 
 
Os sistemas de múltiplos processadores recebem este nome por possuírem dois 
ou mais processadores interligados trabalhando em conjunto. Como vantagem 
desta arquitetura está o fato de permitir que vários programas possam ser 
executados ao mesmo tempo ou que um programa possa ser dividido em 
partes, entre os vários processadores, executando-os de forma simultânea 
(Pereira, Vissotto, & Franciscatto, 2015). 
 
Um dos fatores fundamentais para o desenvolvimento de sistemas operacionais 
com múltiplos processadores está na forma de comunicação entre os 
processadores (CPU), o compartilhamento de memória principal (RAM) e os 
dispositivos de entrada e saída (E/S). 
 
Através dos sistemas com múltiplos processadores foi possível a criação de 
sistemas computacionais voltados para o desenvolvimento científico, aplicado 
em áreas como desenvolvimento aeroespacial, prospecção de petróleo, 
simulações, entre outros. 
 
As práticas e estudos voltados ao desenvolvimento de sistemas com múltiplos 
processadores adicionaram vantagens em tais sistemas como a escalabilidade, 
disponibilidade e balanceamento de carga. 
 
 
 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 20 
 
SISTEMA OPERATIVO I 
1.4 Sistemas operacionais usuais 
 
A ideia desta seção é que possamos conhecer um pouco mais dos sistemas 
operacionais mais usuais e suas classificações, para que você possa testar, 
usar e começar a praticar em seu dia a dia, desde já. 
 
 
1.4.1 Sistemas operacionais de computadores pessoais 
 
Os sistemas operacionais para computadores pessoais são amplamente usados 
no dia a dia em netbooks, notebooks, computadores de mesa, etc. Seu objetivo 
é fornecer uma boa interface, permitindo que o usuário realize as tarefas 
que necessita de forma prática e intuitiva. Estes sistemas operacionais são 
amplamente utilizados para pacotes de escritório (editores de texto, planilhas 
eletrônicas), internet e aplicativos em geral (Pereira, Vissotto, & Franciscatto, 
2015). 
 
Alguns exemplos mais comuns destes sistemas operacionais para 
computadores pessoais são as distribuições Windows e Linux. 
 
Quanto às distribuições Windows para computadores pessoais, temos: Windows 
XP, Windows Vista, Windows Seven e Windows 8.1. 
 
Já as distribuições Linux para computadores pessoais, temos como os mais 
usuais: Ubuntu, Red Hat, Debian, Fedora, Mint, Mageia, OpenSuse, entre outros. 
As distribuições Windows são sistemas operacionais pagos, onde devemos 
escolher e adquirir as licenças para uso, conforme cada necessidade. Já os 
sistemas operacionais Linux, são caracterizados como softwares livres, ou seja, 
podem ser baixados livremente na internet, modificados, adaptados 
e distribuídos livremente independente do número de computadores onde 
iremos realizar a sua instalação e posterior utilização 
 
1.4.2 Sistemas operacionais de servidores 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 21 
 
SISTEMA OPERATIVO I 
 
Diferentemente dos sistemasoperacionais para computadores pessoais, o 
objetivo dos sistemas operacionais para servidores é servir o maior número 
de usuários ao mesmo tempo, permitindo a eles compartilhar recursos de 
hardware e software. 
 
Os sistemas operacionais de servidores podem fornecer diferentes tipos de 
serviços, como por exemplo: servidor de arquivos, servidor web (hospedagem 
de site, e-mail, proxy, entre outros) servidor de autenticação, backup, 
compartilhamento, entre outros. 
 
Assim como acontece nos sistemas operacionais para computadores pessoais, 
os sistemas operacionais para servidores possuem suas distribuições 
específicas, uma vez que sua função é diferenciada e que necessita de um 
hardware específico para seu pleno funcionamento (na grande maioria dos 
casos). 
 
Dessa forma, as distribuições Windows e Linux (mais usuais) dispõem de vários 
sistemas operacionais para servidores, sendo que no Windows, podemos citar 
como exemplo: Windows 2003 Server, Windows 2008 server e Windows 2012 
Server. Nas distribuições Linux, temos como exemplo de sistemas operacionais 
para servidores: Ubuntu Server, Mandriva, Slackware, Suse e Debian. 
 
1.4.3 Sistemas operacionais embarcados 
 
Este tipo de sistema operacional tem crescido bastante nos últimos anos e 
podemos dizer que os mesmos são uma tendência cada vez maior. Quando 
nos referimos aos sistemas operacionais embarcados, estamos falando dos 
sistemas dos computadores de mão (smartphones, tablets, etc.). Os sistemas 
operacionais embarcados são executados diretamente nos dispositivos e já 
vêm instalados de fábrica nos mesmos, não permitindo a troca por outro 
sistema operacional, características de tais sistemas. Como diferença para os 
demais sistemas operacionais, apresentam restrições de tamanho, memória 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 22 
 
SISTEMA OPERATIVO I 
e consumo de energia, o que os fazem especiais (Pereira, Vissotto, & 
Franciscatto, 2015). 
 
Neste mercado, podemos citar como principais sistemas operacionais 
embarcados, os seguintes: Android, iOS, Windows Phone, entre outros. 
 
Para utilização de aplicativos diversos nestes sistemas, faz-se necessário 
realizar o download dos aplicativos que o usuário deseja no repositório oficial de 
cada sistema operacional em particular 
 
 
2- ESTRUTURAS DE SISTEMAS DE COMPUTAÇÃO 
 
Antes que possamos explorar os detalhes de como os sistemas de computação 
funcionam, precisamos de um conhecimento geral da estrutura de um sistema 
de computação. Nesta seção, examinamos várias partes dessa estrutura. A 
seção é principalmente dedicada à organização do sistema de computação, 
portanto, você pode olhá-la superficialmente, ou saltá-la se já conhece os 
conceitos. 
 
2.1-Operação do Sistema de Computação 
 
Um moderno sistema de computação de uso geral é composto por uma ou mais 
CPUs e vários controladores de dispositivos conectados por intermédio de um 
bus comum que dá acesso à memória compartilhada (Figura 1.2). Cada 
controlador de dispositivos é responsável por um tipo específico de 
dispositivo (por exemplo, drives de disco, dispositivos de áudio ou exibidores de 
vídeo). A CPU e os controladores de dispositivos podem operar 
concorrentemente, competindo por ciclos de memória. Um controlador de 
memória sincroniza o acesso à memória compartilhada para assegurar um 
acesso ordenado. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 23 
 
SISTEMA OPERATIVO I 
 
Para que um computador comece a operar, por exemplo, quando é ligado ou 
reiniciado , ele precisa ter um programa inicial para executar. Esse programa 
inicial, ou programa bootstrap, tende a ser simples. Normalmente, ele é 
armazenado dentro do hardware do computador em memória somente de 
leitura (ROM) ou em memória somente de leitura eletricamente apagável e 
programável (EEPROM — electrically erasable programmable read-only 
memory), conhecida pelo termo geral firmware. Ele inicializa todos os aspectos 
do sistema, dos registradores da CPU aos controladores de dispositivos e 
conteúdos da memória. O programa bootstrap precisa saber como carregar o 
sistema operacional e iniciar sua execução. Para alcançar esse objetivo, o 
programa tem que localizar e carregar na memória o kernel do sistema 
operacional. 
 
Assim que o kernel é carregado e está em execução, ele pode começar a 
fornecer serviços para o sistema e seus usuários. Alguns serviços são fornecidos 
fora do kernel por programas do sistema que são carregados na memória em 
tempo de inicialização para se tornarem processos do sistema, ou daemons 
do sistema, que são executados durante todo o tempo em que o kernel é 
executado. No UNIX, o primeiro processo do sistema é “init”, e ele inicia muitos 
outros daemons. Quando essa fase é concluída, o sistema está totalmente 
inicializado e aguarda que algum evento ocorra. 
 
Geralmente, a ocorrência de um evento é indicada por uma interrupção 
proveniente do hardware ou do software. O hardware pode disparar uma 
interrupção a qualquer momento enviando um sinal à CPU, 
normalmente pelo bus do sistema. O software pode disparar uma interrupção 
executando uma operação especial denominada chamada de sistema (também 
conhecida como chamada de monitor). 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 24 
 
SISTEMA OPERATIVO I 
 
Figura 2.1:Um moderno sistema de computação. 
 
Quando a CPU é interrompida, ela para o que está fazendo e transfere 
imediatamente a execução para uma localização fixa. Normalmente, essa 
localização fixa contém o endereço inicial no qual se encontra a 
rotina de serviço da interrupção. A rotina de serviço da interrupção entra em 
operação; ao completar a execução, a CPU retoma a computação interrompida. 
Uma linha de tempo dessa operação é mostrada na Figura 2.2. 
 
 
Figura 2.2: Linha de tempo de interrupções para um processo individual gerando 
saídas. 
 
As interrupções são uma parte importante da arquitetura do computador. Cada 
projeto de computador tem seu próprio mecanismo de interrupção, mas diversas 
funções são comuns a todos. A interrupção deve transferir o controle para a 
rotina de serviço de interrupção apropriada. O método mais simples para a 
manipulação dessa transferência seria invocar uma rotina genérica que 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 25 
 
SISTEMA OPERATIVO I 
examinasse a informação de interrupção. A rotina, por sua vez, chamaria o 
manipulador de interrupções específico. Entretanto, as interrupções precisam 
ser manipuladas rapidamente. Já que só é permitida uma quantidade 
predeterminada de interrupções, uma tabela de ponteiros para rotinas de 
interrupção pode ser usada como alternativa para fornecer a velocidade 
necessária. A rotina de interrupção é chamada indiretamente 
pela tabela, sem necessidade de rotina intermediária. Geralmente, a tabela de 
ponteiros é armazenada na memória baixa (mais ou menos as 100 primeiras 
localizações). Essas localizações mantêm os endereços das rotinas de serviço 
de interrupção dos diversos dispositivos. Esse array de endereços, ou vetor de 
interrupções, é então indexado por um único número de dispositivo, fornecido 
com a solicitação de interrupção, de modo a que seja obtido o endereço da rotina 
de serviço de interrupção do dispositivo que a está causando. Sistemas 
operacionais tão diferentes como o Windows e o UNIX despacham as 
interrupções dessa maneira. 
 
A arquitetura de interrupções também deve salvar o endereço da instrução 
interrompida. Muitos projetos antigos simplesmente armazenavam o endereço 
interrompido em uma localização fixa ou em uma localização indexada pelo 
número do dispositivo. Arquiteturas mais recentes armazenam o endereço de 
retorno na pilha do sistema. Se a rotina de interrupção precisar modificar o 
estado do processador, por exemplo, modificando os valores dos registradores, 
ela deve salvar explicitamente o estado corrente e, então, restaurar esse estado 
antesde retornar. Após a interrupção ser atendida, o endereço de retorno 
salvo é carregado no contador do programa, e a computação interrompida é 
retomada como se a interrupção não tivesse ocorrido. 
 
2.2- Estrutura de I/O 
 
O armazenamento é apenas um dos muitos tipos de dispositivos de I/O de um 
computador. Grande parte do código do sistema operacional é dedicada ao 
gerenciamento de I/O, tanto por causa de sua importância para a confiabilidade 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 26 
 
SISTEMA OPERATIVO I 
e o desempenho de um sistema quanto em razão da natureza variada 
dos dispositivos. A seguir, fornecemos uma visão geral do I/O. 
 
Um sistema de computação de uso geral é composto por CPUs e vários 
controladores de dispositivos conectados por um bus comum. Cada controlador 
de dispositivos é responsável por um tipo específico de dispositivo. Dependendo 
do controlador, pode haver mais de um dispositivo conectado. Por exemplo, 
sete ou mais dispositivos podem ser conectados ao controlador da interface de 
pequenos sistemas de computação (SCSI-small computer-systems 
interface). Um controlador de dispositivos mantém algum armazenamento em 
buffer local e um conjunto de registradores de uso específico. O controlador de 
dispositivos é responsável por movimentar os dados entre os dispositivos 
periféricos que controla e seu buffer de armazenamento local. Normalmente, os 
sistemas operacionais têm um driver de dispositivo para cada controlador de 
dispositivos. Esse driver entende o controlador de dispositivos e fornece uma 
interface uniforme entre o dispositivo e o resto do sistema operacional. 
 
Para iniciar uma operação de I/O, o driver do dispositivo carrega os registradores 
apropriados dentro do controlador do dispositivo. Este, por sua vez, examina o 
conteúdo dos registradores para determinar que ação tomar (tal como “ler um 
caractere a partir do teclado”). O controlador inicia a transferência de 
dados do dispositivo para o seu buffer local. Quando a transferência de dados é 
concluída, o controlador do dispositivo informa ao driver do dispositivo, por uma 
interrupção, que terminou sua operação. O driver do dispositivo retorna então o 
controle para o sistema operacional, possivelmente retornando os 
dados ou um ponteiro para os dados se a operação foi uma leitura. Para outras 
operações, o driver do dispositivo retorna informações de status. 
 
Esse tipo de I/O dirigido por interrupção é adequado para a movimentação de 
pequenas quantidades de dados, mas pode produzir um overhead alto quando 
usado na movimentação de dados de massa como no I/O de disco. Para resolver 
esse problema, é utilizado o acesso direto à memória (DMA). Após 
estabelecer os buffers, ponteiros e contadores para o dispositivo de I/O, o 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 27 
 
SISTEMA OPERATIVO I 
controlador do dispositivo transfere um bloco inteiro de dados diretamente da 
memória para o seu próprio buffer ou a partir dele para a memória, sem 
intervenção da CPU. Somente é gerada uma interrupção por bloco para informar 
ao driver do dispositivo que a operação foi concluída, em vez de uma interrupção 
por byte gerada para dispositivos de baixa velocidade. Enquanto o controlador 
do dispositivo está executando essas operações, a CPU está disponível para 
cumprir outras tarefas. 
 
 
Figura 2.3: Como um moderno sistema de computação funciona 
 
Alguns sistemas de topo de linha usam arquitetura baseada em switch e não em 
bus. Nesses sistemas, vários componentes podem conversar com outros 
componentes concorrentemente, em vez de competirem por ciclos em um bus 
compartilhado. Nesse caso, o DMA é ainda mais eficaz. A Figura 2.3 mostra a 
interação de todos os componentes de um sistema de computação. 
 
2.3-Estrutura de Armazenamento 
 
A CPU só pode carregar instruções a partir da memória; portanto, para serem 
executados, os programas devem estar armazenados na memória. 
Computadores de uso geral executam a maioria de seus programas 
a partir de memória regravável, ou seja, a memória principal (também chamada 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 28 
 
SISTEMA OPERATIVO I 
de memória de acesso randômico ou RAM). Normalmente, a memória 
principal é implementada em uma tecnologia de semicondutor denominada 
memória de acesso randômico dinâmica (DRAM - dynamic random access 
memory). 
 
Os computadores também usam outros tipos de memória. Já mencionamos a 
memória somente de leitura (ROM) e a memória somente de leitura 
eletricamente apagável e programável (EEPROM). Como a ROM não pode ser 
alterada, somente programas estáticos, como o programa bootstrap descrito 
anteriormente, são nela armazenados. A imutabilidade da ROM é útil em 
cartuchos de jogos. A EEPROM pode ser alterada, mas não com frequência e, 
portanto, contém programas estáticos em sua maior parte.Por exemplo, os 
smartphones têm EEPROM para armazenar seus programas instalados de 
fábrica. 
 
Todos os tipos de memória fornecem um array de bytes. Cada byte tem seu 
próprio endereço. A interação é alcançada por intermédio de uma sequência de 
instruções load ou store para endereços de memória específicos. A instrução 
load move um byte ou palavra da memória principal para um 
registrador interno da CPU enquanto a instrução store move o conteúdo de um 
registrador para a memória principal. Além das cargas e armazenamentos 
explícitos, a CPU carrega automaticamente para execução instruções a partir da 
memória principal. 
 
Um típico ciclo instrução-execução, conforme realizado em um sistema com 
arquitetura von Neumann, traz primeiro uma instrução da memória e a 
armazena no registrador de instruções. A instrução é, então, decodificada e 
pode provocar a busca de operandos na memória e o seu 
armazenamento em algum registrador interno. Após a execução da instrução 
sobre os operandos, o resultado pode ser armazenado novamente na memória. 
Observe que a unidade de memória enxerga apenas um fluxo de endereços de 
memória. Ela não sabe como eles são gerados (pelo contador de 
instruções, por indexação, indiretamente, como endereços literais ou por algum 
outro meio) ou para que servem (instruções ou dados). Da mesma forma, 
podemos ignorar como um endereço de memória é gerado por um programa. Só 
estamos interessados na sequência de endereços de memória gerados pelo 
programa em execução. 
 
Idealmente, gostaríamos que os programas e dados residissem na memória 
principal de modo permanente. Esse esquema, geralmente, não é possível pelas 
duas razões a seguir: 
 
1. A memória principal costuma ser muito pequena para armazenar 
permanentemente todos os programas e dados necessários. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 29 
 
SISTEMA OPERATIVO I 
2. A memória principal é um dispositivo de armazenamento volátil que perde 
seus conteúdos quando a energia é desligada ou quando ela falta por 
outro motivo. 
 
Portanto, a maioria dos sistemas de computação fornece memória secundária 
como uma extensão da memória principal. O principal requisito da memória 
secundária é que ela seja capaz de armazenar grandes quantidades de dados 
permanentemente. 
 
O dispositivo de memória secundária mais comum é o disco magnético, que 
fornece armazenamento tanto para programas quanto para dados. A maioria dos 
programas (de sistema e de aplicação) é armazenada em um disco até que seja 
carregada na memória. Por isso, muitos programas utilizam o disco 
tanto como fonte quanto como destino de seu processamento. Logo, o 
gerenciamento apropriado do armazenamento em disco é de importância capital 
para um sistema de computação. 
 
De modo geral, no entanto, a estrutura de armazenamento que descrevemos, 
constituída de registradores, memória principal e discos magnéticos , é apenas 
um dos muitos sistemas de armazenamento possíveis. Há ainda a memória 
cache, o CD-ROM, as fitas magnéticas etc. Cada sistema de armazenamentofornece as funções básicas de armazenamento e de manutenção de dados até 
que sejam recuperados mais tarde. As principais diferenças entre os vários 
sistemas de armazenamento residem na velocidade, no custo, no tamanho e na 
volatilidade. 
 
A ampla variedade de sistemas de armazenamento pode ser organizada em uma 
hierarquia (Figura 1.4), de acordo com a velocidade e o custo. Os níveis mais 
altos são caros, porém velozes. À medida que descemos na hierarquia, o custo 
por bit geralmente decresce, enquanto o tempo de acesso em geral 
aumenta. Essa desvantagem é razoável; se determinado sistema de 
armazenamento fosse ao mesmo tempo mais rápido e menos caro que outro 
,sendo as demais propriedades idênticas, então não haveria 
razão para utilizar a memória mais lenta e mais dispendiosa. Na verdade, muitos 
dispositivos de armazenamento antigos, inclusive fita de papel e memórias de 
núcleo, foram relegados aos museus depois 
que a fita magnética e a memória semicondutora tornaram-se mais rápidas e 
mais baratas. Os quatro níveis mais altos de memória na Figura 1.4 podem ser 
construídos com o uso de memória semicondutora. 
 
Além de diferirem na velocidade e no custo, os diversos sistemas de 
armazenamento podem ser voláteis ou não voláteis. Como mencionado 
anteriormente, a memória volátil perde seus conteúdos quando a energia para 
o dispositivo é removida. Na ausência de dispendiosos sistemas de backup por 
bateria ou gerador, os dados devem ser gravados em memória não volátil, por 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 30 
 
SISTEMA OPERATIVO I 
segurança. Na hierarquia mostrada na Figura 1.4, os sistemas de 
armazenamento situados acima do disco de estado sólido são voláteis enquanto 
os que o incluem e estão abaixo dele são não voláteis. 
 
 
 
Figura 2.4 Hierarquia dos dispositivos de armazenamento. 
 
Há muitos tipos de discos de estado sólido, mas em geral eles são mais 
rápidos do que os discos magnéticos e são não voláteis. Um tipo de disco de 
estado sólido armazena dados em um extenso array 
DRAM durante a operação normal, mas também contém um disco rígido 
magnético oculto e uma bateria como energia de backup. Quando há interrupção 
da energia externa, o controlador do disco de estado sólido copia os dados da 
RAM no disco magnético. Quando a energia externa é restaurada, o controlador 
copia os dados novamente na RAM. Outro tipo de disco de estado sólido é a 
memória flash que é popular em câmeras e assistentes digitais pessoais 
(PDAs — personal digital assistants), em robôs e cada vez 
mais para armazenamento em computadores de uso geral. A memória flash é 
mais lenta que a DRAM, mas não precisa de energia para reter seus conteúdos. 
Mais um tipo de armazenamento não volátil é a NVRAM, que é a DRAM com 
energia de backup por bateria. Essa memória pode ser tão rápida quanto a 
DRAM e (enquanto a bateria durar) é não volátil. 
 
O projeto de um sistema de memória completo deve balancear todos os fatores 
que acabamos de discutir: só deve usar memória cara quando necessário e 
fornecer o máximo possível de memória barata e não volátil. Caches podem ser 
instalados para melhorar o desempenho quando existir grande 
disparidade no tempo de acesso ou na taxa de transferência entre dois 
componentes. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 31 
 
SISTEMA OPERATIVO I 
 
2.4-Buffering 
 
A técnica denominada de buffering consiste em utilizar uma área de memória 
principal, chamada buffer, criada e mantida pelo sistema operacional. Possui 
a finalidade de auxiliar a transferência de dados entre dispositivos de E/S e 
a memória. O buffer permite minimizar a disparidade de velocidade entre o 
processador e os dispositivos de E/S e, tem como objetivo principal, manter 
tantoos dispositivos de E/S como o processador, ocupados a maior parte do 
tempo (Pereira, Vissotto, & Franciscatto, 2015). 
 
O registro é a unidade de transferência do mecanismo de buffering. O buffer 
deve comportar o armazenamento de diversos registros, de forma que o 
processador tenha à sua disposição dados suficientes para processar sem 
ter que interromper o programa a cada leitura/gravação no dispositivo de E/S. 
Na Figura 3.3, é possível visualizar como as operações de entrada e saída 
utilizam o buffer. 
 
 
Figura 2.5: Operação de entrada e saída utilizando buffer 
Fonte: CTISM, adaptado de Maia, 2007 
 
 
2.5-Spooling 
 
A técnica de spooling foi criada inicialmente para auxiliar a submissão de 
processos ao sistema, sendo os processos gravados em fita para posterior 
leitura e execução. Com o aparecimento dos terminais para acesso ao 
sistema, esta técnica teve sua função adaptada para armazenar o resultado 
da impressão dos programas em execução (Pereira, Vissotto, & Franciscatto, 
2015). 
 
Isto é possível através da criação e manutenção, pelo sistema operacional 
de uma grande área em disco, com a finalidade de simular uma impressora. 
Assim, os usuários e seus programas imprimem, na verdade, para este 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 32 
 
SISTEMA OPERATIVO I 
arquivo em disco, liberando a associação dos dispositivos de impressão 
diretamente aos programas que estão executando. 
 
A Figura 2.6 demonstra a técnica de spooling de modo simplificado. 
 
 
Figura 2.6: Técnica de spooling 
Fonte: CTISM, adaptado de Maia, 2007 
 
2.6-Reentrância 
 
Em sistemas multiprogramáveis, é normal que vários usuários utilizem os 
mesmos aplicativos simultaneamente, como editores de texto, compiladores, 
entre outros utilitários. 
 
Nestes casos, se cada usuário que fosse utilizar um destes aplicativos 
trouxesse o código executável para a memória haveria então diversas cópias 
de um mesmo programa ocupando espaço na memória, o que causaria um 
grande desperdício de espaço. 
 
A reentrância é a capacidade de um código executável (código reentrante) ser 
compartilhado por vários usuários, exigindo apenas uma cópia do programa 
em memória. Esta técnica permite que cada usuário esteja executando um 
trecho diferente do código reentrante, manipulando dados próprios, exclusivos 
de cada usuário (Pereira, Vissotto, & Franciscatto, 2015). 
 
Assim, a reentrância tem como objetivo geral promover o uso mais eficiente 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 33 
 
SISTEMA OPERATIVO I 
da memória e um desempenho maior do sistema. A Figura 2.7, ilustra o 
cenário da reentrância. 
 
 
Figura 2.7: Reentrância 
Fonte: CTISM, adaptado de Maia, 2007 
 
 
4- ESTRUTURAS DE SISTEMA OPERACIONAL 
 
Um sistema operacional fornece o ambiente dentro do qual os programas são 
executados. Internamente, os sistemas operacionais variam muito em sua 
composição, já que estão organizados em muitas linhas diferentes. O projeto 
de um novo sistema operacional é uma tarefa de peso. É importante que os 
objetivos do sistema sejam bem definidos antes de o projeto começar. Esses 
objetivos formam a base das escolhas feitas entre vários algoritmos e 
estratégias (Silberschatz, 2015). 
 
Podemos considerar um sistema operacional segundo vários critérios. Um 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 34 
 
SISTEMA OPERATIVO I 
ponto de vista enfoca os serviços que o sistema fornece; outro, a interface que 
ele torna disponível para usuários e programadores; e um terceiro enfoca seus 
componentes e suas interconexões. Neste capítulo, exploramos todos os três 
aspetos dos sistemas operacionais, mostrando os pontos de vista de usuários, 
programadores e projetistas de sistemas operacionais. Consideramos os 
serviços que um sistema operacional fornece, como eles são fornecidos, 
como são depurados e que metodologias existem para o 
projeto desses sistemas. Para concluir, descrevemos como os sistemas 
operacionais são criados e como um computador inicia seu sistema 
operacional 
 
4.1- Serviços do Sistema Operacional 
 
Um sistema operacional fornece um ambiente para a execução de programas. 
Elefornece certos serviços para programas e para os usuários desses 
programas. Os serviços específicos fornecidos diferem, obviamente, de um 
sistema operacional para outro, mas podemos identificar classes comuns. 
Esses serviços do sistema operacional são fornecidos visando à conveniência 
do programador, para tornar mais fácil a tarefa de programar. A Figura 4.1 
mostra uma representação dos diversos serviços do sistema operacional e 
como eles estão relacionados (Silberschatz, 2015). 
Figura 4.1: uma visão dos serviços do sistema operacional. 
 
 4.1.1-Funções de serviços do sistema operacional 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 35 
 
SISTEMA OPERATIVO I 
 
Um conjunto de serviços do sistema operacional fornece funções que são 
úteis para o usuário. 
 
 Interface de usuário. Quase todos os sistemas operacionais têm uma 
interface de usuário (UI- user interface). Essa interface pode assumir 
várias formas. Uma delas é a interface de linha de comando (CLI –
command line interface) que usa comandos de texto e um método 
para sua entrada (digamos, um teclado para a digitação de comandos 
em um formato específico com opções específicas) (Silberschatz, 
2015). Outra é a interface batch em que os comandos e suas diretivas 
de controle são inseridos em arquivos, e esses arquivos são 
executados. O mais comum é o uso de uma interface 
gráfica de usuário (GUI — graphical user interface). Nesse caso, a 
interface é um sistema de janelas com um dispositivo apontador para 
direcionar o I/O, selecionar a partir de menus e escolher opções e um 
teclado para entrada de texto. Alguns sistemas fornecem duas dessas 
variações ou as três. 
 Execução de programas. O sistema deve ser capaz de carregar um 
programa na memória e executar esse programa. O programa deve ser 
capaz de encerrar sua execução, normal ou anormalmente (indicando 
o erro). 
 Operações de I/O. Um programa em execução pode requerer I/O, e 
isso pode envolver um arquivo ou um dispositivo de I/O. Para 
dispositivos específicos, funções especiais podem ser desejáveis 
(como a gravação em um drive de CD ou DVD ou a limpeza de uma 
tela). Para eficiência e proteção, os usuários geralmente não podem 
controlar os dispositivos de I/O diretamente. Portanto, o sistema 
operacional deve fornecer um meio para executar I/O. 
 Manipulação do sistema de arquivos. O sistema de arquivos é de 
especial interesse. É claro que os programas precisam ler e gravar 
arquivos e diretórios. Eles também precisam criar e excluí-los pelo 
nome, procurar um arquivo específico e listar informações de arquivos. 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 36 
 
SISTEMA OPERATIVO I 
Para concluir, alguns sistemas operacionais incluem o gerenciamento 
de permissões para permitir ou negar acesso a arquivos ou diretórios 
com base no proprietário dos arquivos. Muitos sistemas operacionais 
fornecem uma variedade de sistemas de arquivos, algumas vezes para 
permitir a escolha pessoal e, outras vezes, para fornecer recursos 
específicos ou características de desempenho. 
 Comunicações. Há muitas situações em que um processo precisa 
trocar informações com outro processo. Essa comunicação pode 
ocorrer entre processos sendo executados no mesmo computador ou 
entre processos sendo executados emsistemas de computação 
diferentes, conectados por uma rede de computadores. As 
comunicações podem ser implementadas por memória 
compartilhada, em que dois ou mais processos leem e gravam em 
uma seção compartilhada da memória, ou por troca de mensagens, 
em que pacotes de informações em formatos predefinidos são 
transmitidos entre processos pelo sistema operacional. 
 Deteção de erros. O sistema operacional precisa detetar e corrigir 
erros constantemente. Os erros podem ocorrer no hardware da CPU e 
da memória (como um erro de memória ou a falta de energia), em 
dispositivos de I/O (como um erro de paridade em disco, uma falha na 
conexão de rede ou a falta de papel na impressora) e no programa do 
usuário (como um overflow aritmético, uma tentativa de acessar uma 
locação ilegal na memória, ou o uso excessivo de tempo da CPU). Para 
cada tipo de erro, o sistema operacional deve tomar a medida 
apropriada para assegurar a computação correta e consistente. Em 
algumas situações, ele não tem escolha, a não ser interromper o 
sistema. Em outras, pode encerrar um processo causador de erro, ou 
retornar um código de erro ao processo para que este detecte o erro e, 
possivelmente, o corrija. 
 
Existe outro conjunto de funções do sistema operacional cujo objetivo não é 
ajudar o usuário, mas, sim, assegurar a operação eficiente do próprio 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 37 
 
SISTEMA OPERATIVO I 
sistema. Sistemas com múltiplos usuários podem ganhar eficiência 
compartilhando os recursos do computador entre os usuários. 
 
Alocação de recursos. Quando existem múltiplos usuários ou jobs ativos ao 
mesmo tempo, é necessário alocar recursos para cada um deles. O sistema 
operacional gerencia muitos tipos diferentes de recursos. Alguns (como os 
ciclos de CPU, a memória principal e o armazenamento em arquivos) podem 
ter um código especial de alocação, enquanto outros (como os dispositivos 
de I/O) podem ter um código muito mais genérico de solicitação e liberação. 
Por exemplo, para determinar a melhor forma de usar a CPU, os sistemas 
operacionais possuem rotinas de scheduling da CPU que 
levam em consideração a velocidade da CPU, os jobs que devem ser 
executados, o número de registradores disponíveis e outros fatores. Também 
podem existir rotinas de alocação de impressoras, drives de armazenamento 
USB e outros dispositivos periféricos. 
 
Contabilização. Queremos controlar que usuários utilizam que quantidade e 
que tipos de recursos docomputador. Essa monitoração pode ser usada a 
título de contabilização (para que os usuários possam ser cobrados) ou, 
simplesmente, para acumulação de estatísticas de uso. As estatísticas de 
uso podem ser uma ferramenta valiosa para pesquisadores que desejem 
reconfigurar o sistema para melhorar os serviços de computação. 
 
Proteção e segurança. Os proprietários de informações armazenadas em 
um sistema de computação multiusuário ou em rede podem querer controlar 
o uso dessas informações. Quando vários processos separados são 
executados concorrentemente, um processo não pode interferir nos outros 
ou no próprio sistema operacional. Proteção significa garantir que qualquer 
acesso a recursos do sistema seja controlado. A segurança do sistema contra 
invasores também é importante. Tal segurança começa com a exigência de 
que cada usuário se autentique junto ao sistema, geralmente por meio de 
uma senha, para obter acesso aos recursos do sistema. Ela se estende à 
defesa de dispositivos externos de I/O, incluindo adaptadores de rede, contra 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 38 
 
SISTEMA OPERATIVO I 
tentativas de acesso ilegal, e à gravação de todas essas conexões para a 
detecção de invasões. Para um sistema estar protegido e seguro, precauções 
devem ser tomadas em toda a sua extensão. A força de uma corrente se 
mede pelo seu elo mais fraco. 
 
 
 
 
 
4.2- Chamadas de Sistema 
 
As chamadas de sistema fornecem uma interface com os serviços 
disponibilizados por um sistema operacional. Geralmente, essas chamadas 
estão disponíveis como rotinas escritas em C e C++, embora certas tarefas 
de baixo nível (por exemplo, tarefas em que o hardware deve ser acessado 
diretamente) possam precisar ser escritas usando instruções em linguagem 
de montagem (Silberschatz, 2015). 
 
Antes de discutirmos como um sistema operacional torna as chamadas de 
sistema disponíveis, vamos usar um exemplo para ilustrar como as 
chamadas de sistema são utilizadas: escrevendo um programa simples para 
ler dados em um arquivo e copiá-los em outro arquivo. A primeira entrada de 
que o programa precisará são os nomesdos dois arquivos: o arquivo de 
entrada e o arquivo de saída. Esses nomes podem ser especificados de 
muitas formas, dependendo do projeto do sistema operacional. Uma 
abordagem é aquela em que o programa solicita os nomes ao usuário. Em 
um sistema interativo, essa abordagem demandará uma sequência de 
chamadas de sistema, primeiro para exibir uma mensagem de alerta na tela 
e, em seguida, para ler a partir do teclado os caracteres que definem os dois 
arquivos. Em sistemas baseados em mouse e em ícones, é exibido, 
geralmente, um menu de nomes de arquivos em uma janela. O usuário pode, 
então, utilizar o mouse para selecionar o nome do arquivo de origem, e uma 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 39 
 
SISTEMA OPERATIVO I 
janela pode ser aberta para que o nome do arquivo de destino seja 
especificado. Essa sequência requer muitas chamadas de sistema de I/O. 
 
Uma vez que os dois nomes de arquivo tenham sido obtidos, o programa 
deve abrir o arquivo de entrada e criar o arquivo de saída. Cada uma dessas 
operações requer outra chamada de sistema. Condições de erro que podem 
ocorrer, para cada operação, podem requerer chamadas de sistema 
adicionais. Quando o programa tentar abrir o arquivo de entrada, por 
exemplo, pode descobrir que não há arquivo com esse nome, ou que o 
arquivo está protegido contra acesso. Nesses casos, o programa 
deve exibir uma mensagem no console (outra sequência de chamadas de 
sistema) e, então, terminar anormalmente (outra chamada de sistema). Se o 
arquivo de entrada existe, devemos criar um novo arquivo de saída. Podemos 
descobrir que já existe um arquivo de saída com o mesmo nome. Essa 
situação pode fazer com que o programa aborte (uma chamada de sistema), 
 ou podemos excluir o arquivo existente (outra chamada de sistema) e criar 
um novo (mais uma chamada de sistema). Outra opção, em 
um sistema interativo, é perguntar ao usuário (por meio de uma sequência de 
chamadas de sistema para exibir a mensagem de alerta e para ler a resposta 
a partir do terminal) se deseja substituir o arquivo existente ou abortar o 
programa. 
 
Quando os dois arquivos estão definidos, entramos em um loop que lê o 
arquivo de entrada (uma chamada de sistema) e grava no arquivo de saída 
(outra chamada de sistema). Cada operação de leitura e gravação deve 
retornar informações de status referentes a várias condições de erro 
possíveis. Na entrada, o programa pode entender que o fim do arquivo foi 
alcançado ou que houve uma falha de hardware na leitura (como um erro de 
paridade). A operação de gravação pode encontrar vários erros, 
dependendo do dispositivo de saída (por exemplo, não há mais espaço em 
disco). 
 
Para concluir, após o arquivo inteiro ser copiado, o programa pode fechar os 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 40 
 
SISTEMA OPERATIVO I 
dois arquivos (outra chamada de sistema), exibir uma mensagem no console 
ou janela (mais chamadas de sistema) e, por fim, terminar normalmente (a 
última chamada de sistema). Essa sequência de chamadas de sistema é 
mostrada na Figura 2.5. 
 
 
Figura 4.2: Exemplo de como as chamadas de sistema são usadas. 
 
Como você pode ver, até mesmo programas simples podem fazer uso intenso 
do sistema operacional. Frequentemente, os sistemas executam milhares de 
chamadas de sistema por segundo. No entanto, a maioria dos 
programadores nunca vê esse nível de detalhe. Normalmente, os 
desenvolvedores de aplicações projetam programas de acordo com uma 
interface de programação de aplicações (API - application programming 
interface). A API especifica um conjunto de funções que estão disponíveis 
para um programador de aplicações, incluindo os parâmetros que são 
passados a cada função e os valores de retorno que o programador pode 
esperar. As três APIs mais comuns, disponíveis para programadores de 
aplicações, são a API Windows para sistemas Windows, a API POSIX para 
sistemas baseados em POSIX (que incluem virtualmente todas as versões 
do UNIX, Linux e Mac OS X) e a API Java para programas que são 
executados na máquina virtual Java. Um programador acessa uma API por 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 41 
 
SISTEMA OPERATIVO I 
meio de uma biblioteca de códigos fornecida pelo sistema operacional. No 
caso do UNIX e do Linux, para programas escritos na linguagem C, a 
biblioteca se chama libc. Observe que — a menos que especificado — os 
nomes das chamadas de sistema usados em todo este texto são exemplos 
genéricos. Cada sistema operacional tem seu próprio nome para cada 
chamada de sistema. 
 
Em segundo plano, as funções que compõem uma API invocam tipicamente 
as chamadas de sistema reais em nome do programador de aplicações. Por 
exemplo, a função Create Process ( ) do Windows (que, obviamente, é usada 
para criar um novo processo) na verdade invoca a chamada de 
sistema NT Create Process ( ) no kernel do Windows. 
 
Por que um programador de aplicações iria preferir programar de acordo com 
uma API em vez de invocar chamadas de sistema reais? Há várias razões 
para fazer isso. Um benefício está relacionado com a portabilidade dos 
programas. Um programador de aplicações, ao projetar um programa usando 
uma API, espera que seu programa seja compilado e executado em qualquer 
sistema que dê suporte à mesma API (embora, na verdade, diferenças de 
arquitetura frequentemente tornem isso mais difícil do que parece). Além do 
mais, as chamadas de sistema reais costumam ser mais detalhadas e difíceis 
de manipular do que a API disponível para um programador de aplicações. 
De qualquer forma, existe, com frequência, uma forte correlação entre uma 
função da API e a chamada de sistema associada a ela dentro 
do kernel. Na verdade, muitas das APIs POSIX e Windows são semelhantes 
às chamadas de sistema nativas fornecidas pelos sistemas operacionais 
UNIX, Linux e Windows (Silberschatz, 2015). 
 
 
EXEMPLO DE API PADRÃO 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 42 
 
SISTEMA OPERATIVO I 
Como exemplo de uma API padrão, considere afunção read ( ) que está 
disponível emsistemas UNIX e Linux. AAPI para essa função é o btida na 
página man invocando ocomando 
 
man read 
 
na linha de comando .Uma descrição dessa API é mostrada a seguir: 
 
 
 
Um programa que use a função read ( ) deve incluir o arquivo de cabeçalho 
unistd.h,já que esse arquivo define os tipos de dados ssize_tesize_t(entre 
outras coisas).Os parâmetros passados para read ( ) são os seguintes: 
 
int fd—o descritor dearquivo a ser lido 
 
void *buf—um buffer para o qual os dados serão lidos 
 
size_t count—o número máximo de bytes a serem lidosp arao buffer 
 
Em uma leitura bem-sucedida, o número de bytes lidos é retornado. Um valor 
de retorno igual a 0 indica fim de arquivo. Se ocorreum erro, read ( ) retorna-
1. 
 
 
Na maioria das linguagens de programação, o sistema de suporte ao tempo 
de execução (um conjunto de funções que faz parte das bibliotecas incluídas 
com o compilador) fornece uma interface de chamadas de sistema que 
serve como uma ponte para as chamadas de sistema disponibilizadas pelo 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 43 
 
SISTEMA OPERATIVO I 
sistema operacional. A interface de chamadas de sistema intercepta as 
chamadas de função da API e invoca as chamadas de sistema necessárias 
dentro do sistema operacional. Normalmente, um número é 
associado a cada chamada de sistema, e a interface de chamadas de sistema 
mantém uma tabela indexada de acordo com esses números. A interface de 
chamadas de sistema invoca, então, a chamada de sistema 
desejada no kernel do sistema operacional e retorna o status da chamada de 
sistema e quaisquer valores de retorno. 
 
O chamador não precisa saber coisa alguma sobre como a chamada de 
sistema é implementada ou o que ela faz durante a execução. Em vez disso, 
ele só precisa seguir a API e saber o que o sistema 
 
operacional fará como resultadoda execução dessa chamada de sistema. 
Portanto, a maioria dos detalhes da interface do sistema operacional é oculta 
do programador pela API e gerenciada pela biblioteca de suporte ao tempo 
de execução. O relacionamento entre uma API, a interface de chamadas de 
sistema e o sistema operacional é mostrado na Figura 2.6, que ilustra como 
o sistema operacional manipula uma aplicação de usuário invocando a 
chamada de sistema open (). 
 
As chamadas de sistema ocorrem de diferentes maneiras, dependendo do 
computador que estiver sendo usado. Geralmente, são necessárias mais 
informações do que simplesmente a identidade da chamada de sistema 
desejada. O tipo e o montante exatos das informações variam de acordo com 
a chamada e o sistema operacional específicos. Por exemplo, para obter 
entradas, podemos ter que especificar o arquivo ou dispositivo a ser usado 
como origem, assim como o endereço e o tamanho do buffer de memória 
para o qual a entrada deve ser lida. É claro que o dispositivo ou arquivo e o 
tamanho podem estar implícitos na chamada. 
 
Três métodos gerais são usados para passar parâmetros ao sistema 
operacional. A abordagem mais simples é passar os parâmetros em 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 44 
 
SISTEMA OPERATIVO I 
registradores. Em alguns casos, no entanto, pode haver mais 
parâmetros do que registradores. Nesses casos, os parâmetros são, em 
geral, armazenados em um bloco, ou tabela, na memória, e o endereço do 
bloco é passado como parâmetro em um registrador (Figura 2.7). 
Essa é a abordagem adotada pelo Linux e o Solaris. Os parâmetros também 
podem ser colocados ou incluídos na pilha pelo programa e extraídos da 
pilha pelo sistema operacional. Alguns sistemas operacionais preferem o 
método do bloco ou da pilha porque essas abordagens não limitam a 
quantidade ou o tamanho dos parâmetros que estão sendo passados. 
 
 
4.2.1-Tipos de Chamadas de Sistema 
 
As chamadas de sistema podem ser agrupadas, grosso modo, em seis 
categorias principais: controle de processos, manipulação de arquivos, 
manipulação de dispositivos, manutenção de informações, 
comunicações e proteção (Silberschatz, 2015). Nas Seções 2.4.1 a 2.4.6, 
discutimos brevemente os tipos de chamadas de sistema que podem ser 
fornecidos por um sistema operacional. A maioria dessas chamadas de 
sistema dá suporte a, ou é suportada por conceitos e funções que são 
discutidos em capítulos posteriores. A Figura 2.8 resume os tipos de 
chamadas de sistema normalmente fornecidos por um sistema operacional. 
Como mencionado neste texto, quase sempre nos referimos às chamadas de 
sistema usando nomes genéricos. No decorrer do texto, no entanto, 
fornecemos exemplos de contrapartidas reais às chamadas de sistemas do 
Windows, UNIX e Linux. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 45 
 
SISTEMA OPERATIVO I 
 
Figura 4.3 A manipulação de uma aplicação de usuário que invoca a 
chamada de sistema open (). 
 
 
Figura 4.4 Passagem de parâmetros como uma tabela. 
 
Tipos de chamadas de sistema. 
 
1. Controle de processos 
 encerrar, abortar 
 carregar, executar 
 criar processo, encerrar processo 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 46 
 
SISTEMA OPERATIVO I 
 obter atributos do processo, definir atributos do processo 
 esperar hora 
 esperar evento, sinalizar evento 
 alocar e liberar memória 
2. Gerenciamento de arquivos 
 
 criar arquivo, excluir arquivo 
 abrir, fechar 
 ler, gravar, reposicionar 
 obter atributos do arquivo, definir atributos do arquivo 
 
3. Gerenciamento de dispositivos 
 
 solicitar dispositivo, liberar dispositivo 
 ler, gravar, reposicionar 
 obter atributos do dispositivo, definir atributos do dispositivo 
 conectar oudesconectar dispositivos logicamente 
 
4. Manutenção de informações 
 
 obter a hora oua data, definir a hora oua data 
 obter dados do sistema, definir dados do sistema 
 obter atributos do processo, arquivo ou dispositivo 
 definir atributos do processo, arquivo oudispositivo 
 
5. Comunicações 
 criar, excluir conexão de comunicações 
 enviar, receber mensagens 
 transferir informações de status 
 conectar oudesconectar dispositivos remotos 
 
4.3- Programas de sistema ou utilitários 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 47 
 
SISTEMA OPERATIVO I 
 
Os utilitários também são chamados comumente programas de sistema. Os 
SO mais modernos vêm aumentando a coleção desses tipos de programas. 
Você deve lembrar que há pouco tempo atrás você precisava de um 
programa específico para gravar arquivos em CDs e DVDs e para assistir um 
filme. Hoje estas funções estão embutidas no SO (Coutinho, 2010). 
 
Os programas de sistema fornecem um ambiente conveniente para a 
execução de uma série de tarefas de uso do computador ou de periféricos 
específicos. Alguns deles são simplesmente interfaces de usuário às 
chamadas ao sistema; outros são consideravelmente mais complexos. 
Podem ser divididos em categorias tais como: 
 
a) Gerência de arquivos - criam, excluem, copiam, renomeiam, imprimem, 
listam e geralmente manipulam arquivos e diretórios. Precisam trabalhar 
com diversos tipos de mídia: CD, DVD, HD, disquete, pendrive, etc; 
 
b) Informações de status - simplesmente pedem ao sistema informações 
relativas ao status da máquina ou de periféricos: data, hora, quantidade 
de memória ou espaço em disco disponível, número de usuários conectados, 
número de documentos aguardando impressão e outras informações 
semelhantes; 
 
c) Modificação de arquivo - vários editores de texto podem estar disponíveis 
para criar e modificar o conteúdo dos arquivos armazenados em 
disco, fita ou outro tipo de mídia; 
 
d) Comunicações - esses programas oferecem o mecanismo para criar 
conexões virtuais entre processos, usuários e diferentes sistemas de 
computação. Permitem aos usuários enviar mensagens às telas uns dos 
outros, navegar pelas páginas da web, efetuar logon remotamente ou 
transferir arquivos de uma máquina para outra; 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 48 
 
SISTEMA OPERATIVO I 
 
e) Spooling - permitem manipular a fila de impressão de documentos em 
uma ou mais impressoras ligadas ao sistema. 
 
4.4- Linguagem de máquina 
 
Todos os programas, para serem processados, precisam estar em linguagem 
de máquina. Essa é a linguagem que o processador realmente consegue 
entender. Um programa em linguagem de máquina é totalmente codificado 
em formato binário, o que torna praticamente impossível o entendimento 
pelo usuário (Coutinho, 2010). 
 
O programa em linguagem de máquina pode ser diretamente processado 
pela unidade central de processamento (CPU) não requerendo qualquer tipo 
de tradução ou relocação. Um programa em linguagem de máquina não pode 
ser executado em outra máquina de modelo diferente, nem em outro SO. 
 
Cada processador possui um conjunto único de instruções de máquina 
previamente definido pelo fabricante. Estas instruções especificam detalhes 
como registradores, modos de endereçamento de memória, tipo de dados 
que caracterizam um processador e suas potencialidades. Por sua vez, cada 
SO tem um grupo de instruções específico, chamada API – Application 
ProgramIinterface – que os compiladores usam para traduzir as instruções 
escritas na linguagem de alto nível para a linguagem entendida pelo linker. 
Isso faz com que um programa compilado em Linux não funcione com 
Windows; ou que um programa compilado em um PC não funcione em um 
Apple (Coutinho, 2010). 
 
5.PROCESSO 
 
Os primeiros computadores permitiam que apenas um programa fosse 
executado de cada vez. Esse programa tinha controle total sobre o sistema e 
acesso a todos os seus recursos. Por outro lado, os sistemas de computação 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 49 
 
SISTEMA OPERATIVO I 
contemporâneos permitem que vários programas sejam carregados na memória 
e executados concorrentemente.Essa evolução demandou controle mais firme 
e maior compartimentalização dos diversos programas; e essas necessidades 
resultaram na noção de processo, que é um programa em execução. Um 
processo é a unidade de trabalho em um sistema moderno de tempo 
compartilhado (Silberschatz, 2015). 
 
Quanto mais complexo é o sistema operacional, mais se espera que ele funcione 
em benefício de seus usuários. Embora sua principal preocupação seja a 
execução de programas de usuário, ele também precisa se encarregar de várias 
tarefas do sistema, que ficam melhor fora do próprio kernel. Portanto, um sistema 
é composto por um conjunto de processos: processos do sistema operacional 
executando código de sistema e processos de usuário executando código de 
usuário. Potencialmente, todos esses processos podem ser executados 
concorrentemente, com a CPU (ou CPUs) multiplexada entre eles. Alternando a 
CPU entre os processos, o sistema operacional pode tornar o computador mais 
produtivo. Neste capítulo, você lerá sobre o que são processos e como eles 
funcionam. 
 
5.1 Conceito de Processo 
 
Uma questão que surge na discussão sobre os sistemas operacionais envolve 
como caracterizar todas as atividades da CPU. Um sistema batch executa jobs, 
enquanto um sistema de tempo compartilhado tem programas de usuário ou 
tarefas. Até mesmo em um sistema mono-usuário, o usuário pode executar 
vários programas ao mesmo tempo: um processador de texto, um navegador 
web e um pacote de e-mail. E mesmo que o usuário possa executar apenas um 
programa de cada vez, como em um dispositivo 
embutido que não suporte multitarefa, o sistema operacional deve dar suporte 
às suas próprias atividades programadas, como o gerenciamento da memória. 
Em muitos aspetos, essas atividades são semelhantes e, assim, todas são 
chamadas de processos (Silberschatz, 2015). 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 50 
 
SISTEMA OPERATIVO I 
Os termos job e processo são usados de maneira quase intercambiável neste 
texto. Embora o termo processo seja de nossa preferência, grande parte da 
teoria e terminologia dos sistemas operacionais foi desenvolvida durante uma 
época em que a principal atividade dos sistemas operacionais era o 
processamento de jobs. Seria enganoso evitar o uso de termos comumente 
aceitos que incluem a palavra job (como scheduling de jobs), simplesmente 
porque processo substituiu job. 
 
Informalmente, como já mencionado, um processo é um programa em execução. 
Um processo é mais do que o código do programa, que também é conhecido 
como seção de texto. Ele também inclui a atividade corrente, conforme 
representada pelo valor do contador do programa e o conteúdo dos 
registradores do processador. Geralmente, um processo também inclui a pilha 
do processo que contém dados temporários (como parâmetros de funções, 
endereços de retorno e variáveis locais), e uma seção de dados, que contém 
variáveis globais. Um processo também pode incluir um heap, que é a memória 
dinamicamente alocada durante o tempo de execução do processo 
(Silberschatz, 2015). A estrutura de um processo na memória é mostrada na 
Figura 5.1. 
 
 
Figura 5.1 Processo na memória. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 51 
 
SISTEMA OPERATIVO I 
Enfatizamos que um programa por si só não é um processo. Um programa é 
uma entidade passiva, como um arquivo contendo uma lista de instruções 
armazenadas em disco (geralmente chamado de arquivo executável). Por 
outro lado, um processo é uma entidade ativa, com um contador de programa 
especificando a próxima instrução a ser executada e um conjunto de recursos 
associados. Um programa torna-se um processo quando um arquivo 
executável é carregado na memória. Duas técnicas comuns para 
a carga de arquivos executáveis são clicar duas vezes em um ícone 
representando o arquivo executável ou dar entrada no nome do arquivo 
executável na linha de comando (como em prog.exe ou a.out). 
 
Embora dois processos possam estar associados ao mesmo programa, ainda 
assim eles são considerados duas sequências de execução separadas. Por 
exemplo, vários usuários podem estar executando diferentes cópias do 
programa de e-mail ou o mesmo usuário pode invocar muitas cópias do 
programa de navegação na web. Cada uma delas é um processo separado 
e, embora as seções de texto sejam equivalentes, os dados, o heap e as 
seções de pilha variam. Também é comum haver um processo que gera 
muitos processos ao ser executado. 
 
Observe que o próprio processo pode ser um ambiente de execução para 
outros códigos. O ambiente de programação Java fornece um bom exemplo. 
Na maioria dos casos, um programa executável Java é operado dentro da 
máquina virtual Java (JVM). A JVM executa como um processo que interpreta 
o código Java carregado e realiza ações (por meio de instruções nativas da 
máquina) em nome desse código. Por exemplo, para executar o programa 
Java compilado Program.class, daríamos entrada em 
 
java Program 
 
O comando java executa a JVM como um processo comum que, por sua vez, 
executa o programa Java Program na máquina virtual. O conceito é o mesmo 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 52 
 
SISTEMA OPERATIVO I 
da simulação, exceto pelo fato de o código ser escrito na linguagem Java em 
vez de ser escrito a partir de um conjunto de instruções diferentes. 
 
5.2 - Estado do Processo 
 
Quando um processo é executado, ele muda de estado. O estado de um 
processo é definido, em parte, pela atividade corrente do processo. Um 
processo pode estar em um dos seguintes estados (Silberschatz, 2015): 
 
 Novo. O processo está sendo criado. 
 Em execução. Instruções estão sendo executadas. 
 Em espera. O processo está esperando que algum evento ocorra 
(como a conclusão de um I/O ou o recebimento de um sinal). 
 Pronto. O processo está esperando que seja atribuído a um 
processador. 
 Concluído. O processo terminou sua execução. 
 
Esses nomes são arbitrários e variam entre os sistemas operacionais. No 
entanto, os estados que eles representam são encontrados em todos os 
sistemas. Certos sistemas operacionais também descrevem, mais 
apuradamente, os estados do processo. É importante saber que apenas um 
processo pode estar em execução em algum processador a cada instante. 
Mas muitos processos podem estar prontos e em espera. 
O diagrama de estado correspondente a esses estados é apresentado na 
Figura 5.2. 
 
 
5.2.1-Bloco de Controle de Processo 
 
Cada processo é representado, no sistema operacional, por um bloco de 
controle de processo (PCB — process control block) — também 
chamado bloco de controle de tarefa (Silberschatz, 2015). Um PCB é 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 53 
 
SISTEMA OPERATIVO I 
mostrado na Figura 5.3. Ele contém muitas informações associadas a um 
processo específico, incluindo estas: 
 
 Estado do processo. O estado pode ser novo, pronto, em execução, 
em espera, parado, e assim por diante. 
 Contador do programa. O contador indica o endereço da próxima 
instrução a ser executada para esse processo. 
 Registradores da CPU. Os registradores variam em número e tipo, 
dependendo da arquitetura do computador. Eles incluem 
acumuladores, registradores índices, ponteiros de pilhas e 
registradores de uso geral, além de qualquer informação do código de 
condição. Junto com o contador do programa, essas informações de 
estado devem ser salvas quando ocorre uma interrupção, para permitir 
que o processo seja retomado corretamente mais tarde (Figura 5.4). 
 Informações de scheduling da CPU. Essas informações incluem a 
prioridade de um processo, ponteiros para filas de scheduling e 
quaisquer outros parâmetros de scheduling. 
 Informações de gerenciamento da memória. Essas informações 
podem incluir itens como o valor dos registradores base e limite e as 
tabelas de páginas, ou as tabelas de segmentos, dependendo do 
sistema de memória usado pelosistema operacional . 
 
 
 
Figura 5.2 Diagrama de estado do processo. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 54 
 
SISTEMA OPERATIVO I 
 
 
 
Figura 5.3 Bloco de controle de processo (PCB). 
 
 Informações de contabilização. Essas informações incluem o 
montante de tempo real e de CPU usados, limites de tempo, números 
de conta, números de jobs ou processos, e assim por diante. 
 
Informações de status de I/O. Essas informações incluem a lista de 
dispositivos de I/O alocados ao processo, uma lista de arquivos 
abertos, e assim por diante. 
 
Resumindo, o PCB serve, simplesmente, como o repositório de quaisquer 
informações que possam variar de um processo para outro. 
 
5.3-Escalonamento de Processos 
 
O escalonamento de processadores é a forma como os processadores 
existentes num sistema computacional são utilizados para efetuar o 
processamento, isto é, é como os processos são distribuídos para execução 
nos processadores. 
 
Tanenbaum propõe a seguinte definição: 
 
Quando mais de um processo é executável, o sistema operacional deve 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 55 
 
SISTEMA OPERATIVO I 
decidir qual será executado primeiro. A parte do sistema operacional 
dedicada a esta decisão é chamada escalonador ( scheduler) e o algoritmo 
utilizado é chamado algoritmo de escalonamento ( scheduling algorithm) 
(TANENBAUM, 1992). 
 
Por sua vez, Deitel coloca que: 
 
A designação de processadores físicos para processos permite aos 
processos a realização de trabalho. Esta designação é uma tarefa 
complexa realizada pelo sistema operacional. Isto é chamado escalonamento 
do processador ( processor scheduling), (DEITEL, 1992).. 
 
Simplificando, podemos afirmar que num sistema onde só exista um único 
processador, o escalonamento representa a ordem em que os processos 
serão executados. 
 
A forma com que se dá o escalonamento é, em grande parte, responsável 
pela produtividade e eficiência atingidas por um sistema computacional. 
Mais do que um simples mecanismo, o escalonamento deve representar uma 
política de tratamento dos processos que permita obter os melhores 
resultados possíveis num sistema. 
 
5.3.1 Objetivos do escalonamento 
 
O projeto de um escalonador adequado deve levar em conta uma série de 
diferentes necessidades, ou seja, o projeto de uma política de escalonamento 
deve contemplar os seguintes objetivos: 
 
 Ser justo: todos os processos devem ser tratados igualmente, tendo 
possibilidades idênticas de uso do processador, devendo ser evitado 
o adiamento indefinido. 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 56 
 
SISTEMA OPERATIVO I 
 Maximizar a produtividade (throughput): procurar maximizar o número 
de tarefas processadas por unidade de tempo. 
 
 Ser previsível: uma tarefa deveria ser sempre executada com 
aproximadamente o mesmo tempo e custo computacional. 
 
 Minimizar o tempo de resposta para usuários interativos. 
 
 
 Maximizar o número possível de usuários interativos. 
 
 Minimizar a sobrecarga (overhead): recursos não devem ser 
desperdiçados embora algum investimento em termos de recursos 
para o sistema pode permitir maior eficiência. 
 
 Favorecer processos bem-comportados: processos que tenham 
comportamento adequado poderiam receber um serviço melhor. 
 
 Balancear o uso de recursos: o escalonador deve manter todos os 
recursos ocupados, ou seja, processos que usam recursos 
subutilizados deveriam ser favorecidos. 
 
 Exibir degradação previsível e progressiva em situações de intensa 
carga de trabalho. 
 
Como pode ser visto facilmente, alguns destes objetivos são contraditórios, 
pois dado que a quantidade de tempo disponível de processamento (tempo 
do processador) é finita, assim como os demais recursos computacionais, 
para que um processo seja favorecido outro deve ser prejudicado. 
 
O maior problema existente no projeto de algoritmos de escalonamento está 
associado a natureza imprevisível dos processos, pois não é possível 
prevermos se um dado processo utilizar à intensamente o processador, ou 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 57 
 
SISTEMA OPERATIVO I 
se precisará grandes quantidades de memória ou se necessitar aos 
numerosos acessos aos dispositivos de E/S. 
 
5.3.2 Níveis de escalonamento 
 
Existem três níveis distintos de escalonamento em um sistema 
computacional quando se considera a frequência e complexidade das 
operações envolvidas. 
 
• Escalonamento de alto nível 
 
Chamado também de escalonamento de tarefas, corresponde a admissão de 
processos, isto é, a determinação de quais tarefas passarão 
a competir pelos recursos do sistema. Uma vez admitidas, as tarefas 
transformam-se em processos. Correspondem a rotinas de alto nível 
oferecidas pelas APIs do sistema operacional. 
 
• Escalonamento de nível intermediário 
 
Corresponde a determinação de quais processos existentes competirão 
pelo uso do processador (processos ativos). Este nível de escalonamento é 
responsável por administrar a carga do sistema, utilizando-se 
de primitivas de suspensão (suspend) e ativação (resume ou activate). 
Correspondem a rotinas internas do sistema operacional. 
 
• Escalonamento de baixo nível 
 
Rotinas que determinam qual processos, dentre os processos ativos, 
será o próximo processo que efetivamente utilizará o processador. Estas 
tarefa são executadas pelo dispatcher, usualmente uma rotina escrita 
diretamente em linguagem de máquina que se encontra permanentemente 
na memória principal. 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 58 
 
SISTEMA OPERATIVO I 
 
Os níveis de escalonamento alto, intermediário e baixo também são 
conhecidos respetivamente como escalonamento de longo prazo, médio 
prazo e curto prazo. O escalonamento de alto nível ou de longo prazo 
ocorre menos frequentemente num sistema enquanto o escalonamento de 
baixo nível ou de curto prazo ocorre constantemente, dado que representa a 
troca de contexto e o chaveamento do processador entre os processos ativos. 
Considerando assim os níveis de escalonamento e as operações de 
suspensão (suspend ou sleep) e ativação (resume, wakeup ou activate), o 
mapa de estados dos processos pode ser representado de maneira mais 
completa como ilustrado na Figura 3.2. 
 
5.3 - Escalonamento preemptivo e não preemptivo 
 
Um algoritmo de escalonamento é dito não preemptivo quando temos que 
o processador designado para um certo processo não pode ser retirado deste 
até que o processo seja finalizado (completion). Analogamente, um algoritmo 
de escalonamento é considerado preemptivo quando o processador 
designado para um processo pode ser retirado deste em favor de um outro 
processo. 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 59 
 
SISTEMA OPERATIVO I 
 
 
Figura 5.1: Níveis de escalonamento 
 
Algoritmos preemptivos são mais adequados para sistemas em que múltiplos 
processos requerem atenção do sistema, ou seja, no caso de sistemas 
multiusuário interativos (sistemas em tempo repartido) ou em sistema de 
tempo real. Nestes casos, a preemptividade representa a troca do processo 
em execução, assim sendo, para que o processador seja retirado de 
um processo, interrompendo seu trabalho, e designado a outro processo, 
anteriormente interrompido, é fundamental que ocorra a troca de contexto 
dos processos. Tal troca exige que todo o estado de execução de um 
processo seja adequadamente armazenado para sua posterior recuperação, 
representando uma sobrecarga computacional para realização desta troca e 
armazenagem de tais dados. Usualmente os algoritmos preemptivos são 
mais complexos dada a natureza imprevisível dos processos. 
 
Por sua vez, os algoritmos não preemptivos são mais simples e adequados 
para o processamento não interativo, semelhante aos esquemas de 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 60 
 
SISTEMA OPERATIVO I 
processamento em lote dos sistemas batch. Emboran˜ao proporcionando 
interatividade, são geralmente mais eficientes e previsíveis quanto ao tempo 
de entrega de suas tarefas. 
 
 
Figura 5.2: Mapa de estados dos processos 
 
Existem também algoritmos de escalonamento cooperativo, onde os 
processos não são interrompidos, mas a preempção ocorre em duas 
situações bem definidas: quando o processo efetua uma operação de I/O e 
quando o processo é finalizado (SILBERSCHATZ, GALVIN, & GAGNE, 
2001). Também é possível que um processo ceda o processador, 
voluntariamente, em favor de outros processos. Neste caso, o processo 
educado poderia executar uma chamada a uma função yeld (dar preferência), 
como no caso do MS-Windows 3.1. A preempção voluntária pode auxiliar 
numa distribuição mais equitativa da capacidade de processamento do 
sistema, mas conta com a generosidade do programador, nem sempre 
disponível. 
 
A preemptividade de certos algoritmos se baseia no fato de que o 
processador é, naturalmente, um recurso preemptivo, ou seja, um recurso 
que pode ser retirado de um processo e posteriormente devolvido sem 
prejuízo. O mesmo acontece com a memória. Por outro lado, outros tipos de 
recursos não podem sofrer preempção, tais como impressoras e até mesmo 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 61 
 
SISTEMA OPERATIVO I 
arquivos, dado que muitas vezes não podem ser retirados de um processo 
sem que ocorra prejuízo para este. 
 
 
 
 
ENG. MENDES CASTANHEIRO ANTÓNIO 62 
 
SISTEMA OPERATIVO I 
 
REFERÊNCIAS 
 
Coutinho, B. C. (2010). Sistemas Operacionais. Santa Catarina. 
CRAY. (2004). Cray X1 Product Overview. Cray Research Inc., Internet. Obtido de 
www.cray.com: http://www.cray.com/, acessado em 5/2020. 
DEITEL, H. M. (1992). An Introduction to Operating Systems, 2nd. Reading: Edition. Addison-
Wesley. 
DEITEL., H. M. (1992). An Introduction to Operating Systems, 2nd. Reading. 
GALVIN, A. S. (2000). Sistemas Operaticionais: Conceito, 5º Edição. Prantice Hall. São Paulo: SP. 
Pereira, A. S., Vissotto, E. M., & Franciscatto, R. (2015). Sistemas Operacionais. Brasil. 
Silberschatz, A. (2015). Fundamentos de Sistemas Operacionais 9ª Edição. Rio de Janeiro. 
SILBERSCHATZ, A., GALVIN, P. B., & GAGNE, G. (2001). Sistemas Operacionais: Conceitos e 
Aplicações, Câmpus. Rio de Janeiro, RJ. 
STALLINGS, W. (1992). Operating Systems. New York: NY. 
STALLINGS, W. (1992). Operating Systems. Macmilla. New York: NY. 
TANENBAUM, A. S. (1992). Modern Operating Systems. Prentice Hall,. Upper Saddle River. 
 
 
 
 
 
 
 
	INTRODUÇÃO
	1- COMPONENTES DE HARDWARE
	1.1- Processador
	1.2.1- CISC
	1.2.2- RISC
	1.3-Memória
	1.3.1-Memória principal
	1.3.2- Memória cache
	1.4 Periféricos
	1.4.1- Dispositivos de entrada
	1.4.2- Dispositivos de saída
	1- SISTEMAS OPERACIONAIS
	2- ESTRUTURAS DE SISTEMAS DE COMPUTAÇÃO
	2.1-Operação do Sistema de Computação
	2.2- Estrutura de I/O
	2.3-Estrutura de Armazenamento
	2.4-Buffering
	2.5-Spooling
	2.6-Reentrância
	4- ESTRUTURAS DE SISTEMA OPERACIONAL
	4.1- Serviços do Sistema Operacional
	4.1.1-Funções de serviços do sistema operacional
	4.2- Chamadas de Sistema
	4.2.1-Tipos de Chamadas de Sistema
	4.3- Programas de sistema ou utilitários
	4.4- Linguagem de máquina
	5.PROCESSO
	5.1 Conceito de Processo
	5.2 - Estado do Processo
	5.2.1-Bloco de Controle de Processo
	5.3-Escalonamento de Processos
	5.3.1 Objetivos do escalonamento
	5.3.2 Níveis de escalonamento
	5.3 - Escalonamento preemptivo e não preemptivo
	REFERÊNCIAS

Mais conteúdos dessa disciplina