Escolar Documentos
Profissional Documentos
Cultura Documentos
AULA 1
2
sistema operacional, numa visão geral, com um breve histórico e evolução,
apresentando seus objetivos e funções. Também apresentaremos sua
classificação pela arquitetura e pelos tipos e exemplos de sistemas operacionais.
Seguindo a definição de gestão apresentada, nesta disciplina veremos a
gerência:
• De processador e de processos;
• De memória;
• De dispositivos de entrada e saída;
• De arquivos;
• De proteção de usuários.
3
Sistema operacional é o software que controla a execução de programas
num processador e gerencia os recursos do computador. Diversas funções
desempenhadas pelo sistema operacional, incluindo as duas mais relevantes
para estudar a arquitetura e organização de computadores – escalonamento de
processos e gerenciamento de memória –, só podem ser executadas de modo
rápido e eficiente se ele dispuser de um suporte adequado do hardware do
processador.
Quase todos os processadores dispõem desse suporte, em maior ou
menor extensão, incluindo hardware de gerenciamento de memória virtual e
de gerenciamento de processos. Isso inclui registradores de propósito especial
e áreas de armazenamento temporário, além de um conjunto de circuitos para
tarefas básicas de gerenciamento de recursos.
Assim, um sistema de computação é constituído basicamente de dois
elementos interdependentes: o hardware e o software. O primeiro é
basicamente composto de circuitos eletrônicos internos: CPU (processador),
memórias (primárias e secundárias), portas de comunicação (entrada/saída),
entre outros, como os periféricos externos (teclado, mouse, monitor, câmera,
microfone, dispositivos USB etc.). O segundo, por sua vez, é composto
basicamente de duas categorias:
4
Figura 1 – Sistema operacional
Fonte: I000S_Pixels; Hani Suwaryo; Crystal Eye Studio; Marisha; Den Rozhnovsky; Weera.OTP;
DND_Project; Nerthuz/Shutterstock.
5
TEMA 2 – HISTÓRIA E EVOLUÇÃO
0. Mecânicos (1642-1945);
1. Válvulas (1945-1955);
2. Transistores (1955-1965).
3. Integração (1965-1980);
4. Muita integração (1980-?);
5. Computadores invisíveis (atualmente).
6
Figura 2 – Calculadora de Pascal (1642)
7
Figura 4 – Máquina Hollerith (1886)
Figura 5 – Eniac
Ele tinha 18 mil válvulas e 1,5 mil relés, pesava 30 toneladas e tinha 20
registradores. Consumia 140 quilowatts, e sua programação era feita em 6 mil
chaves (Figura 6).
9
– o Institute for Advanced Studies, da universidade de Princeton. Credita-se a
von Newmann a definição de uma arquitetura de computadores com programa
armazenado, utilizado até hoje. A Figura 7 ilustra essa definição:
Memória
Unidade Unidade
de controle aritmética e lógica
(acumulador)
Entrada Saída
1. Memória;
2. Unidade aritmética e lógica;
3. Unidade de controle;
4. Parte de E/S.
10
2.3 Geração 2 – Transistores (1955-1965): os primeiros projetos de
sistema operacional
12
que, no futuro (que é hoje), os computadores estariam por toda parte, embutidos
nos mais diversos locais, executando inusitadas funções, como abertura de
portas, acendimento de luzes, enfim, escondidos nos componentes (invisíveis).
Em 1991, um estudante de graduação em ciência da computação, Linus
Torvalds (aluno de Tanenbaum), utilizou o Minix como base para iniciar o
desenvolvimento do Linux.
13
• 2006: Windows Vista;
• 2007: iPhone OS 1 – lançamento do sistema operacional iOS, derivado
do sistema operacional Darwin;
• 2008: Android 1.0 – SO baseado em Linux para dispositivos móveis;
• 2009: Windows 7;
• 2011: Solaris 11 11/11;
• 2012: Windows 8; Windows Phone 8;
• 2013: Windows CE 8.0; BlackBerry 10;
• 2015: Windows 10;
• 2017: Windows 10 Mobile Fall Creators Update;
• 2018: Windows Server 2019; iOS 13.1 – iPadOS 13.1;
• 2019: macOS Catalina (v10.15);
• 2020: Linux 5.6; NetBSD 9.0; Android 11.
14
É aqui que entra em cena o sistema operacional. Trata-se de uma camada
de software que opera entre o hardware e os aplicativos, como vimos no Tema 1
e conforme a Figura 10. É um software de estrutura ampla e complexa que
incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de
memória física) e de alto nível (como softwares utilitários e interface gráfica).
15
Os objetivos básicos de um sistema operacional, descritos por Maziero
(2019), podem ser sintetizados em duas palavras-chave: abstração e gerência.
Vejamos em detalhes seus principais aspectos.
Abstração de recursos: acessar os recursos de hardware de um sistema
de computação pode ser uma tarefa complexa, devido às características
específicas de cada dispositivo físico e à complexidade de suas interfaces.
Assim, o sistema operacional deve definir interfaces abstratas para os recursos
do hardware, visando atender os seguintes objetivos:
16
Figura 11 – Camadas e visões de um sistema de computação
17
• Criação de programas: o sistema operacional apresenta uma variedade
de recursos e serviços para auxiliar o programador a desenvolver
programas, como editores e depuradores. Esses serviços tipicamente são
oferecidos na forma de programas utilitários, que na verdade não são
parte do sistema operacional, mas podem ser acessados por ele;
• Execução de programas: várias tarefas precisam ser cumpridas para um
programa ser executado. Instruções e dados devem ser carregados na
memória principal. Dispositivos de E/S e arquivos precisam ser
inicializados, e outros recursos devem ser preparados. O sistema
operacional cumpre todas essas tarefas para o usuário;
• Acesso a dispositivos de E/S: cada dispositivo de E/S tem seu próprio
conjunto peculiar de instruções ou sinais de controle para operação. O
sistema operacional cuida dos detalhes do uso de cada dispositivo, de
modo que o programador possa pensar apenas em termos de operações
simples de leitura e de escrita;
• Acesso controlado aos arquivos: no caso de arquivos, o controle deve
incluir não apenas um entendimento sobre a natureza do dispositivo de
E/S (unidade de disco ou de fita), mas também sobre o formato dos
arquivos no meio de armazenamento. Mais uma vez, o sistema
operacional cuida dos detalhes. Além disso, no caso de sistemas usados
simultaneamente por vários usuários, ele fornece mecanismos de
proteção para controlar o acesso aos arquivos;
• Acesso ao sistema: no caso de sistemas compartilhados ou públicos, o
sistema operacional controla o acesso ao sistema como um todo e a
recursos específicos também. A função de acesso deve proteger o
sistema contra o uso não autorizado, tanto para recursos quanto para
dados de usuários, e resolver conflitos em caso de contenção de um
recurso;
• Detecção e reação aos erros: diversos erros podem ocorrer durante a
operação de um sistema de computação, incluindo erros de hardware
internos e externos, como erro de memória e falha, ou mau funcionamento
de dispositivo, além de vários erros de software, como overflow em
operação aritmética, tentativa de endereçar uma área de memória não
permitida e a impossibilidade de o sistema operacional atender à
requisição de uma aplicação. Em cada caso, o sistema operacional deve
18
reagir no sentido de eliminar a condição de erro, com o menor impacto
possível sobre as aplicações em execução. Essa reação pode variar,
desde terminar a execução do programa que causou o erro até tentar
executar novamente a operação ou, simplesmente, relatar a ocorrência
do erro à aplicação;
• Monitoração: um bom sistema operacional mantém estatísticas de uso
de vários recursos e monitora parâmetros de desempenho, como o tempo
de resposta. Em qualquer sistema, essa informação é útil para antecipar
a necessidade de futuros melhoramentos e para a sintonia do sistema,
aumentando seu desempenho. Num sistema multiusuário, essa
informação também pode ser usada para tarifação, pela utilização de
recursos.
19
O sistema operacional é um software como outro qualquer, sendo
executado pelo processador, e o sistema operacional frequentemente renuncia
ao controle do processador para, em seguida, obter o controle novamente; nada
mais é do que um programa de computador. Semelhante a outros softwares, ele
contém instruções para o processador; a diferença-chave está na intenção do
programa.
O sistema operacional direciona o processador no uso dos recursos do
sistema, assim como na execução de outros programas. Mas, para que o
processador execute outros programas, ele deve interromper a execução do
sistema operacional. Dessa maneira, ele libera o controle ao processador, para
que ele possa executar algum trabalho “útil”, e então retoma o controle por tempo
suficiente para preparar o processador e executar uma próxima tarefa.
A Figura 12 apresenta os principais recursos gerenciados pelo sistema
operacional:
21
seu programador se preocupe com os endereços de memória em que ela irá
executar.
A gerência de dispositivos, por sua vez, recebe destaque, pois cada
periférico do computador tem suas particularidades; assim, o procedimento de
interação com uma placa de rede é completamente diferente da interação com
um disco rígido Sata. Todavia, existem muitos problemas e abordagens em
comum para o acesso aos periféricos. Por exemplo, é possível criar uma
abstração única para a maioria dos dispositivos de armazenamento, como cartão
de memória, SSD, CD-ROMs etc., na forma de um vetor de blocos de dados.
A função da gerência de dispositivos (também conhecida como gerência
de entrada/saída) é implementar a interação com cada dispositivo por meio de
drivers e criar modelos abstratos que permitam agrupar vários dispositivos
similares sob a mesma interface de acesso. Outro recurso em que o acesso deve
ser mutuamente exclusivo (apenas um aplicativo por vez) é a impressão. O
sistema operacional resolve essa questão utilizando o recurso de spooling (que
estudaremos futuramente), além de definir uma fila de trabalhos a imprimir (print
jobs), normalmente executados de forma sequencial (first in, first out).
A gerência de arquivos é construída sobre a gerência de dispositivos e
visa criar arquivos e diretórios, definindo sua interface de acesso e as regras
para seu uso. É importante observar que os conceitos abstratos de arquivo e
diretório são tão importantes e difundidos que muitos sistemas operacionais
costumam usá-los para permitir o acesso a recursos que nada têm a ver com
armazenamento. Exemplos disso são as conexões de rede (nos sistemas Unix
e Windows, cada socket TCP é visto como um descritor de arquivo, com o qual
pode-se ler ou escrever dados) e as informações internas do sistema operacional
(como o diretório Proc do Unix).
A gerência de proteção de dados e usuários é outra importante tarefa de
gestão de recursos. Com computadores conectados em rede e compartilhados
por vários usuários, é importante definir claramente os recursos que cada usuário
pode acessar, as formas de acesso permitidas (leitura, escrita etc.), além de
garantir que essas definições sejam cumpridas. Por exemplo, a proteção contra
os ataques de negação de serviço (denial of service – DoS 1), comuns na internet.
1
Formas de ataque virtual que utilizam diversas técnicas para forçar um servidor de rede a
dedicar seus recursos para atender um determinado usuário em detrimento dos demais. Por
exemplo, ao abrir milhares de conexões simultâneas num servidor de e-mail, um atacante pode
22
É responsabilidade do sistema operacional do servidor detectar e impedir
ataques como esses, em que todos os recursos do sistema são monopolizados
por um único usuário.
Para proteger os recursos do sistema contra acessos indevidos, é
necessário:
24
A multiprogramação é uma tentativa de deixar o processador ocupado o
maior tempo possível, mantendo-o trabalhando em mais de um programa de
cada vez. Diversos programas são simultaneamente carregados na memória, e
o tempo do processador é dividido entre eles. A alternativa para esse tipo é um
sistema de monoprogramação (uniprogramação), que executa apenas um
programa de cada vez.
Os sistemas monotarefa executam uma única aplicação de cada vez; já
nos sistemas multitarefa várias tarefas concorrem pelos recursos de
processamento. Os sistemas multiprocessados têm duas ou mais CPUs
interligadas, trabalhando em conjunto e fortemente ou fracamente acopladas.
Os sistemas com multiprocessadores fortemente acoplados têm duas
ou mais CPUs, que compartilham uma única memória e são controladas por um
único sistema operacional. Os fracamente acoplados têm duas ou mais CPUs,
cada uma com sua memória, sendo controladas por sistemas operacionais
independentes.
Quanto à estrutura, os sistemas operacionais são classificados
basicamente como monolíticos, em camadas, máquinas virtuais e cliente
servidor.
Os sistemas operacionais ainda são classificados como sistemas
operacionais de computadores de grande porte, servidores, computadores
pessoais e sistemas operacionais embarcados. Os embarcados são sistemas
que controlam dispositivos móveis ou que não são computadores, como micro-
ondas, geladeiras, PDAs etc.
Os sistemas operacionais modernos se dividem em várias camadas, e
cada uma prova serviços à camada superior mais próxima, protegendo a camada
mais inferior, o núcleo do sistema (ou kernel) do sistema operacional.
Os recursos do kernel são acessados por chamadas de sistema (system
calls) de forma protegida para não danificar o sistema. As instruções que têm o
poder de comprometer o sistema são conhecidas como instruções privilegiadas
(modo kernel), enquanto as instruções não privilegiadas não oferecem perigo.
Chamadas de sistema são os comandos de acesso às funções do sistema
operacional e podem ser divididos em chamadas: para gerenciar processos,
para sinalização, para gerenciar arquivos, manipular diretórios, proteger e
gerenciar o tempo.
25
TEMA 5 – TIPOS E EXEMPLOS
26
visão clara das máquinas em que seus dados estão sendo processados
e armazenados. Exemplo: AWS (Amazon Web Services) e Docker;
• Multiusuário: um sistema operacional multiusuário deve suportar a
identificação do “dono” de cada recurso dentro do sistema (arquivos,
processos, áreas de memória, conexões de rede) e impor regras de
controle de acesso para impedir o uso desses recursos por usuários não
autorizados. Essa funcionalidade é fundamental para a segurança dos
sistemas operacionais de rede e distribuídos. Grande parte dos sistemas
atuais são multiusuários;
• Servidor: um sistema operacional servidor deve permitir a gestão
eficiente de muitos recursos (disco, memória, processadores), impondo
prioridades e limites sobre o uso dos recursos pelos usuários e seus
aplicativos. Normalmente um sistema operacional servidor também tem
suporte à rede e aos multiusuários. Exemplos: Windows Server 2019 e
Oracle Linux Server;
• Desktop: um sistema operacional “de mesa” é voltado ao atendimento do
usuário doméstico ou corporativo para atividades corriqueiras, como
editar textos e gráficos, e reproduzir mídia. Suas principais características
são a interface gráfica, o suporte à interatividade e a operação em rede.
Exemplos de desktops: Windows 10, Linux e macOS X;
• Móvel: um sistema operacional móvel é usado em equipamentos de uso
pessoal compactos, como smartphones e tablets. Nesse contexto, as
principais prioridades são a gestão eficiente da energia (bateria), a
conectividade nos diversos tipos de rede (wi-fi, GSM, bluetooth, NFC etc.)
e a interação com uma grande variedade de sensores (GPS, giroscópio,
luminosidade, tela de toque, leitor de digitais etc.). Android e iOS são
exemplos dessa categoria;
• Embarcado: um sistema operacional é dito embarcado (embutido ou
embedded) quando é construído para operar sobre um hardware com
poucos recursos de processamento, armazenamento e energia.
Aplicações típicas desse tipo de sistema aparecem em sistemas de
automação e controladores automotivos, equipamentos eletrônicos de
uso doméstico (leitores de DVD, TVs, micro-ondas, centrais de alarme
etc.). Muitas vezes um sistema operacional embarcado se apresenta na
forma de uma biblioteca a ser ligada ao programa da aplicação durante
27
sua compilação. LynxOS, TinyOS, Contiki e VxWorks são exemplos de
sistemas operacionais embarcados;
• Tempo real: são sistemas em que o tempo é essencial. Ao contrário da
ideia usual, um sistema operacional de tempo real não precisa ser
necessariamente ultrarrápido; sua característica essencial é ter um
comportamento temporal previsível, ou seja, seu tempo de resposta deve
ser previsível no melhor e no pior caso de operação. A estrutura interna
de um sistema operacional de tempo real deve ser construída de forma a
minimizar esperas e latências imprevisíveis, como tempos de acesso a
disco e sincronizações excessivas. Exemplos de sistemas operacionais
de tempo real incluem o QNX, RT-Linux e VxWorks.
FINALIZANDO
28
gerenciar o uso dos recursos computacionais. As principais atividades de gestão
foram descritas nesse tema e servirão como base para entendermos os temas
das aulas seguintes, quando estudarmos os processos (tarefas) de gestão.
Na sequência, definimos e apresentamos a classificação e a arquitetura
dos sistemas operacionais para, em seguida, finalizar o conteúdo introdutório
com a apresentação de tipos e exemplos atuais, permitindo o conhecimento
suficiente para a escolha correta de sistemas operacionais adequados às
necessidades de cada situação do cotidiano, nos mais diversos ambientes.
Enfim, compreender esses conceitos é o princípio para entender as
atividades desenvolvidas pelos sistemas computacionais. Assim, futuramente
ampliaremos nosso conhecimento com os conceitos das principais atividades de
gerência feitas pelos sistemas operacionais, individualmente apresentadas e
descritas.
29
REFERÊNCIAS
30