Buscar

RESUMO - FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIDADE I: AULAS 
 
 Objetivos da Disciplina 
 
- Entender, analisar e recomendar a evolução 
dos sistemas operacionais; 
 
- Gerenciamento de: 
 
● Processos 
● Memória (hierarquia de memória, 
modos de endereçamento, estruturas 
de controle, memória virtual) 
● Arquivos 
● Entrada e saída 
 
 Precursores dos computadores 
 
- O ábaco é um projeto datado em 300 a.C.; a sua 
ideia é considerar as contas (bolinhas) contidas 
na parte inferior, com valor unitário, e cada 
conta contida na parte superior, com valor de 
cinco unidades 
 
- Um segundo projeto é a Pascaline ou “as 
rodas dentadas de Pascal”; é como uma 
evolução do ábaco 
 
- A máquina de somar de Blaise Pascal adiciona 
ou subtrai quando as rodas dentadas se 
engrenam ao serem giradas 
 
 Hardware x Software 
 
- Durante o processo de transformação do 
produto bruto até a saída e entrega do produto 
final, existem componentes físicos e lógicos 
trabalhando 
 
- Os componentes físicos são conhecidos como 
hardware e a parte lógica como software 
 
Hardware 
 
- Computador em si; discos; mouse; teclado; 
impressora; monitor; caixas de som… 
 
Software 
 
- Aplicativos que usamos para realizar tarefas 
 
- Ele instrui o hardware sobre a maneira como 
deve executar uma tarefa, inclusive SOs, 
processadores de textos e aplicações 
 
Sistemas Operacionais 
 
- O SO é a parte lógica que controla todo o 
hardware: ou seja, ele gerencia o hardaware e o 
software 
 
- Todo e qualquer programa se comunica com o 
sistema operacional 
 
- Cabe ao SO executar as tarefas necessárias 
para uso dos componentes físicos do 
computador (como memória, disco, 
controladores de vídeo, rede…) 
 
- Os programas usam o hardware para atingir 
seus objetivos por meio do SO: gravar, 
imprimir, armazenar dados… 
 
- Quando dois apps tentam acessar o mesmo 
hardware ao mesmo tempo, pode haver 
conflitos (como quando o meet e o zoom tentam 
acessar a câmera) 
 
- Nesses casos, é o SO que irá priorizar os 
recursos para determinado app 
 
História dos Computadores: Primeira 
Geração 
 
- Em ????, Charles Babbage projetou o primeiro 
computador de uso geral… Mas o projeto nunca 
saiu do papel 
 
- A primeira geração de computadores (1945-
1955) foi caracterizada pela introdução de 
válvulas 
 
- John Atanasoff e seu aluno Clifford Edward 
Berry criaram em Iowa, no período de 1937 a 
42, o primeiro computador digital eletrônico da 
história 
 
- Os dois são conhecidos como pais dos 
computadores modernos 
 
- Deste projeto surge o ENIAC, o - de fato - 
primeiro computador eletrônico (construído 
por John Mauchly e seu aluno John Eckert) 
 
ENIAC 
 
- ENIAC: Eletronic Numerical Integrator and 
Computer; ocupava o espaço de uma sala 
inteira 
 
- Nesta primeira geração, não existia nenhum 
tipo de linguagem de programação nem sistema 
operacional 
 
- A operação era realizada de acordo com os 
seguintes passos: 
• O programador(a) reservava 
antecipadamente o tempo de máquina 
• O programador encaminhava-se até a 
sala de máquina 
• Aguardava horas monitorando (e 
torcendo para nenhuma das milhares 
de válvulas queimar durante a 
execução) 
 
Segunda Geração de Computadores 
 
- Datada de 1955 a 1965 
 
- As principais características são: 
• as introduções dos transistores e 
sistemas em lote (batch) 
• 1/200 do tamanho das válvulas (redução 
do tamanho) 
• Consumo de manos de 1/100 de energia 
de uma válvula 
• Redução do tamanho das máquinas 
• Processamento em milissegundos 
 
- Foi elevada a confiabilidade 
 
- Criação da organização estruturada por 
funções específicas: projetistas, fabricantes, 
programadores e técnicos de manutenção 
 
IBM 1401; 
 
- IMB 7094 (versão de maior sucesso da segunda 
geração) pesava apenas 890kg, com mais de 10k 
unidades vendidas: 
 
 
Terceira Geração de Computadores 
 
- 1965 a 1980 
 
- Sistemas integrados (Cis) e multiprogramação 
 
- Em 1964 a IBM lançou a linha de equipamentos 
da série IBM 360 que foi a primeira linha de 
computadores a usar circuitos integrados (Cis) 
em pequena escala 
 
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
- Isso promoveu melhor custo-benefício em 
comparação às máquinas da segunda geração 
construídas com transistores 
 
- Para atender à linha de equipamentos, o SO 
OS/360 foi lançado 
 
- A multiprogramação foi muito significativa, 
facilitando a distribuição das tarefas 
simultaneamente 
 
- Nos equipos da linha 360, esta deficiência foi 
resolvida repartindo a memória em partes e 
alocando-as para as tarefas 
• Basicamente, enquanto uma tarefa 
estivesse esperando por uma operação 
de entrada e saída terminar, 
• A outra tarefa poderia usa o CPU 
 
- Principais características: 
• Introdução dos Circuitos Integrados 
• Grande contribuição no processo de 
miniaturização 
• Início da produção de 
minicomputadores 
• Sistema Operacional (orientado à 
arquitetura) 
• Tempo compartilhado 
• Programação em assembly 
• Criação dos primeiros softwares 
 
- Escala de integração: 
• SSI – Short Scale Integration 
• MSI – Medium Scale Integration 
• LSI – Large Scale Integration 
 
- Arquitetura plugável da série 360: 
 
- No final da terceira geração, a IBM (que até 
então liderava esse mercado) passou a perder 
espaço quando concorrentes passaram a 
vender periféricos mais baratos e compatíveis 
com sua arquitetura 
 
- Ou seja: os primeiros computadores pessoais 
começaram a surgir! 
 
Quarta Geração de Computadores 
 
- 1980 até atualmente: computadores pessoais 
 
- Teve como marco inicial o desenvolvimento de 
circuitos integrados contendo MILHARES de 
transistores em alguns cm² de silício 
 
- Computadores mais confiáveis, rápidos, 
menores e com maior capacidade de 
armazenamento 
 
- Geração marcada pela venda de PCs 
 
- Principais características: 
• Introdução dos microprocessadores 
• Desenvolvimento dos computadores 
pessoais 
• Sistemas operacionais (Macintosh, MS-
DOS, UNIX) 
• Linguagens de programação 
orientadas a objeto, como C++ 
• Criação da impressora, mouse e teclado 
(nos modelos que conhecemos 
atualmente) 
 
- Escala de integração: 
• VLSI – Very Large Scale Integration 
 
 
 
 
- Disseminação de equipamentos que derivaram 
desta linha: smartphones, tablets, etc. 
 
UNIDADE I: LIVRO-TEXTO 
 
1. Fundamentos de Sistemas Operacionais 
 
1.1 Nivelamento 
 
- Hardware vs Software 
 
- “A maioria dos usuários de computador 
quando interagem com o aplicativo, baseado no 
ambiente shell (interpretador de comandos) em 
modo texto ou ambiente GUI (Graphical User 
Interface), usando ícones no ambiente gráfico, 
de fato NÃO estão atuando diretamente no SO.” 
 
- Objetivos básicos de um SO: abstração e 
gerência 
 
1.2 Abstração 
 
- “Para o mundo lógico, o mundo físico é uma 
abstração, e, para o mundo físico, o mundo dos 
programas que fazem interface com os 
usuários é uma entidade completamente 
desconhecida.” 
 
- Os sistemas operacionais típicos, no caso, 
interagem servindo de conexão entre o 
hardware e os softwares 
 
SO -> define -> interfaces abstratas para os 
recursos do hardware 
 
- Objetivos: 
• Prover interfaces de acesso ao usuário 
mais intuitivas que as interfaces de 
baixo nível -> simplificar a construção de 
apps 
• Tornar apps independentes do 
hardware -> ao definir interfaces de 
acesso abstratas aos dispositivos 
físicos, o SO permite que hardware e 
software evoluam de forma autônoma 
• Definir interfaces de acesso 
homogêneas para dispositivos com 
tecnologias distintas 
 
1.2.1 Gerência 
 
- O SO deve gerenciar o uso de recursos de 
hardware e administrar disputa e conflitos entre 
apps 
 
- Para o uso de uma impressora, por exemplo, o 
SO cria uma fila de trabalhos a imprimir (FIFO) 
 
2. História dos SistemasOperacionais 
 
- Charles Babbage (1791-1871) -> primeiro 
computador -> máquina mecânica analítica 
 
2.1 Primeira geração de computadores (1945-
1955) – Válvulas 
 
- Universidade do Estado de Iowa (1937-1942) -> 
criação do primeiro computador digital 
eletrônico -> Prof. John Atanaso e aluno Clifford 
Edward Berry 
 
- 1941, Berlim -> Zonrad Zuse -> contruiu o Z3 -> 
computador eletromecânico -> construído de 
eless 
 
- Colossus era um comp eletrônico usado pelos 
ingleses p/ decifrar mensagens alemãs (2ª GM) -> 
primeiro comp programável do mundo -> 
válvulas térmicas 
 
- Howard Aiken -> ASCC (Automatic Sequence 
Controlled Calculator) -> IBM -> 1944 
 
- ENIAC -> Primeiro computador eletrônico -> 
John Mauchly e John Eckert 
 
 
 
2.2 Segunda geração (1955-1965) – 
Transistores e sistemas em lote (batch) 
 
- Meados de 1950 
 
- Criação da organização estruturada por 
funções 
 
- Computadores de grande porte (mainframes) 
 
- Valor elevadíssimo 
 
- Sistema em lote (batch): consiste em usar um 
comp de menor porte (como IBM 1401) para ler 
cartões, copiar fitas e imprimir saídas -> daí os 
cálculos numéricos eram executados pelos 
mainframe (como o IBM 7094) 
 
 
 
2.3 Terceira geração (1965 -1980) – Cis e 
Multiprogramação 
 
- IBM lança em 1964 a linha 360 -> primeira a usar 
circuitos integrados (Cis) em pequena escala 
 
- Consequências: melhor custo-benefício em 
comp com a 2ª geração 
 
- Lançamento do SO/360 -> técnica de suporta 
à multiprogramação foi a mais significativa 
 
- Aqui, rodando o OS/360, há a repartição de 
memória em partes, alocando-as para tarefas 
 
- Crescimento de minicomputadores -> início 
com o DEC PDP-1 em 1961 que custava 5% de 
uma máquina 7079 
 
2.4 Quarta geração (1980- atualmente) 
 
- Marco: desenvolvimento do circuito integrado 
com milhares de transistores em cm² de silício 
 
- “Era dos PCs” 
 
- O IBM PC foi lançado no início dos anos 80 -> 
IBM procurou Bill Gates para desenvolver um SO 
compatível com sua plataforma 
 
- Bill Gates comprou o SO DOS e vendeu para a 
IBM ajustado como MS-DOS (Microsoft Disk 
Operating System) 
 
- Em 83 foi lançado do PC/AT usando o 
processador Intel 80286 
 
- Nos anos 60 foi criado o GUI por Doug 
Engelbart, adotada pela Xerox Parc 
 
- Após o lançamento e sucesso do Macintosh, a 
Microsoft desenvolveu o Windows (sucessor do 
MS-DOS) 
 
- As versões iniciais do Windows eram 
completamente montadas sobre o MS-Dos 
 
- Só no Windows 95 o sistema passou a usar o 
MS-DOS apenas para ser carregado e executar 
programas 
 
- Em 2001 foi lançado o Windows XP (atualização 
do Windows 2000 – Millenium Edition) 
 
2001 – Windows XP 
2007 – Windows Vista 
2009 – Windows 7 
2011 – Windows 8 
2015 – Windows 10 
2021 – Windows 11 
 
- O SO UNIX é o seu grande competidor, com 
seus derivados (conhecidos como Linux) 
 
 
UNIDADE II: AULAS 
 
Tipos de Sistemas Operacionais 
 
- É possível classificar os SOs com base 
referencial em diversos parâmetros e 
perspectivas: 
• Velocidade 
• Suporte a recursos específicos 
• acesso à rede 
 
Batch (de lote) 
 
- Os SOs mais antigos trabalhavam por lote com 
programas a serem executados organizados em 
fila (FIFO) 
 
- O processador recebia um programa após o 
outro para ser processado em sequência: alto 
grau de utilização do sistema 
 
- Atualmente, “em lote” é usado para designar 
um conjunto de comandos que deve ser 
executado em sequência 
 
Sistemas de Rede 
 
- Devem suportar operações em rede: 
• Capacidade de oferecer às aplicações 
locais recursos que estejam localizados 
em outros computadores da rede 
o LAN (Local Area Network) 
o WAN (Wide Area Network) 
• Isso entre recursos distintos como 
o Serviços de autenticação 
remota 
o Acesso à arquivos 
o Acesso a banco de dados 
o Impressoras, etc... 
 
- Deve também disponibilizar seus recursos 
locais aos demais pcs de forma controlada 
 
- A maioria dos SOs atuais está dentro dessa 
perspectiva 
 
Sistemas Distribuídos 
 
- Aqui, os recursos utilizados por cada usuário 
em cada máquina estão disponíveis de forma 
transparente aos usuários 
 
- No caso, o usuário n tem muita noção de como 
o arquivo está sendo salvo, mas ele tem acesso 
e direcionamento para o diretório do mesmo 
 
SOs multiusuário e multitarefas 
 
- Nesse caso, cabe ao SO gerenciar os recursos 
disponíveis a todos os processos 
 
- Grande parte dos SOs atuais são multiusuários 
e multitarefas 
 
SOs Desktop (Personal Computer) 
 
- Projetado para atender ao usuário 
doméstico/corporativo que necessite realizar 
atividades triviais 
 
- Suas principais características são: 
• interface gráfica 
• suporte à interatividade 
• operação em rede 
 
- Mac OS x, Windows xp, Ubuntu 
 
Servidor 
 
- O SO classificado como servidor possibilita 
uma gestão eficiente de grandes qnt. de 
recursos físicos; exemplos: 
• disco 
• memória 
• processadores 
 
- Sempre gerindo as prioridades e limites sobre 
o uso dos recursos 
 
- Deve tb ter suporte à rede e multiusuários 
 
- Exemplos: Solaris, AIX, Linux, Windows Server 
2008 
 
SO Embarcado ou Embutido 
 
- É construído para operar sobre um hardware 
com poucos recursos de processamento e 
armazenamento 
 
- Exemplos: aparelhos de TV (smart TV), 
reprodutores de música (MP3, Alexa), consoles, 
eletrodomésticos em geral (microondas, etc)... 
 
- Ponto positivo: dificilmente será possível 
instalar um software que não seja 
extremamente compatível -> n é permitido o 
uso de software não confiável 
 
- Exemplos de SOs embarcados: QNX e VxWorks 
 
SO Tempo Real 
 
- Caracterizado por ter o tempo de execução 
como parâmetro principal 
 
- Subdividido em: 
• Sistemas de tempo real críticos 
o Voltados ao controle de 
processos industriais e militares 
• Sistemas de tempo real não-críticos 
o Aplicados em sistemas de áudio 
digital ou multimídia 
 
- No caso de sistemas críticos não podem ter 
degradação de desempenho (como em linhas 
de produção de veículos) 
 
SOs de Computadores de Grande Porte 
 
- Tipicamente utilizado por grandes 
corporações 
 
- Como características predominantes desses 
sistemas, pode-se considerar: 
• Elevada capacidade de E/S 
• Sistema em lote (batch) 
• Processamento de transações 
• Tempo compartilhado 
 
- Exemplos: OS/390 e S/400 
 
SOs Multiprocessadores 
 
- Pode tratar múltiplas CPUs simultaneamente 
 
- Têm como objetivo principal: melhorar a 
capacidade computacional dos 
equipamentos, trazendo melhor desempenho 
para o ambiente 
 
- Com o advento dos processadores 
multinúcleo, PCs também estão começando a 
lidar com multiprocessadores 
 
- Alguns exemplos de sistemas operacionais 
multiprocessados são: Windows, Linux, Solaris e 
AIX 
 
SOs Portáteis 
 
- Voltados para computadores como os PDA 
(Personal Digital Assistant) e telefones celulares 
 
- Os PDA e celulares não possuem disco rígido 
multigigabyte -> menor espaço de 
armazenamento 
 
- Os sistemas operacionais para portáteis são: 
Android, iOS, Symbian OS, Windows Mobile e 
Palm OS 
 
Hardware de Computadores 
 
- O hardware e o SO devem ser extremamente 
compatíveis para que seja possível obter o 
melhor resultado 
 
- Faz-se necessária uma homogeneidade entre 
os desenvolvedores de hardware e software 
 
 
 
Processadores 
 
- A CPU traz das memórias instruções, 
decodifica, interpreta as instruções a serem 
executadas e as executa 
 
- Cada arquitetura de CPU tem um conjunto 
específico de instruções que pode executar 
 
- Todas as CPUs possuem registradores 
internos para armazenamento de variáveis 
importantes e de resultados temporários 
 
- Além dos registradores de propósito geral, 
a maioria dos computadores possuem 
vários registradores especiais disponíveis de 
forma aparente para os programadores- Alguns registradores especiais: 
 
• Contador de programa: contém o 
endereço de memória da próxima 
instrução a ser buscada 
• Ponteiro de pilha: contém os 
parâmetros de entrada, as variáveis 
locais e as variáveis temporárias 
• PSW (Program Status Word) 
 
- CPUs possuem recursos para executar mais de 
uma instrução em tempo concorrente 
 
- A isso damos o nome de Pipeline: elas podem 
executar uma busca, decodificação e, 
simultaneamente, a execução da instrução 
 
- Além do Pipeline, 
temos o Superescalar: 
 
• esse tipo de 
processador possui 
múltiplas unidades de 
execução 
• duas ou mais 
instruções são buscadas, decodificadas 
e armazenadas temporariamente em 
um buffer (até que possam ser 
executadas) 
 
Processadores multithread e multinúcleo 
 
- O Intel Pentium 4 e outros chips de 
processadores têm a propriedade chamada 
multithreading 
 
- A execução de um thread é a menor unidade 
de processamento que pode ser atendida por 
um SO 
 
- Múltiplos threads podem existir num mesmo 
processo e compartilhar recursos como a 
memória 
 
- O thread de um processo compartilha as 
instruções e contextos 
 
- Analogicamente, múltiplo thread de um 
processo é o mesmo que múltiplos alunos 
lendo instruções de um mesmo livro -> porém 
não necessariamente todos lendo a mesma 
página 
 
- Algo como uma divisão de tarefas simultâneas 
 
- Sistemas com CPU multinúcleo requerem SO 
para multiprocessadores 
 
Memória 
 
- Na teoria, a memória deveria ser mais 
performática do que a execução de uma 
instrução processada por uma CPU 
 
- Isso porque dessa forma a CPU jamais teria que 
esperar pela resposta da memória 
 
Opa! Mas na prática não é o que acontece... 
 
- Para resolver esse problema, a abordagem 
contemporânea é construir o sistema de 
memória seguindo uma hierarquia de camadas 
 
55219
Realce
55219
Realce
 
 
- Memória principal ou RAM (Random Acess 
Memory): todas as solicitações vindas da CPU e 
que não estão na memória cache são 
encaminhadas para a memória principal 
 
- A memória ROM (Ready Only Memory) é 
normamlmente usada pelos fabricantes para 
gravar códigos controladores de hardware 
 
- A memória CMOS é usada para manter data e 
hora atualizadas e parâmetros de configuração 
do hardware 
• Como sequência de boot e outros, 
mesmo que o computador esteja 
desligado 
• Necessita de uma bateria para manter 
seu conteúdo 
• Esta bateria pode ser trocada 
 
Discos magnéticos 
 
- Conhecidos como HD 
 
- O grande atrativo dos discos magnéticos em 
relação à memória é o preço bem menor se 
comparado R$/GB 
 
- O contraponto é a velocidade limitada para 
processar as informações por ser um dispositivo 
mecânico 
 
- As informações são escritas no disco em uma 
série de círculos que tem o mesmo centro 
(rotação de 2400 a 10000 rpm) 
 
- Cada cabeça pode ler e gravar uma região 
circular chamada trilha 
 
 
 
Fitas magnéticas 
 
- Muito utilizado como mídia de cópia de 
segurança (backup) 
 
- Transporta uma cópia daquilo que está nos 
discos magnéticos para fitas magnéticas 
 
- Com base nas normas de segurança ISSO 
27001 é obrigatório o uso de sistemas de backup 
 
- Isso para garantir que a informação esteja 
disponível em caso de falha no sistema principal 
 
Dispositivos de E/S 
 
- São geralmente os controladores e os 
dispositivos 
 
- O controlador é formado por um ou mais chips 
numa placa 
 
- Funções: 
• Receber os comandos do SO 
• Gerar as instruções mais adequadas 
para os dispositivos 
• Exemplo: fornecendo orientação de 
como o HD armazena e acessa os dados 
 
- Os dispositivos possuem interfaces 
padronizadas 
 
- Entre o SO e o controlador, há um software 
chamado driver de dispositivo 
 
- O driver realiza a comunicação com o 
controlador, emitindo comandos e recebendo 
respostas 
 
55219
Realce
Barramento 
 
- Termo definido como elos de comunicação 
que consistem em um conjunto de vias 
 
- Ao longo da arquitetura computacional, os 
barramentos foram tomando forma mais 
heterogênea e estruturada para as 
necessidades modernas 
 
- Estrutura de barramentos de um computador 
típico: 
 
 
 
- A CPU se comunica com o barramento PCI 
por meio de um barramento local 
 
- Este barramento local se comunica com a 
memória por intermédio de um barramento 
dedicado 
 
- Esse sistema contém três barramentos 
específicos: IDE, USB e SCSI 
 
 
 
- O barramento IDE pode ser usado para 
conectar discos físicos e unidade de CD-ROM 
 
UNIDADE III: LIVRO-TEXTO 
 
INTRODUÇÃO A PROCESSOS 
 
- Dentro de um servidor de arquivos: 
• Dezenas/centenas de usuários estão 
fazendo milhares de requisições ao 
mesmo tempo 
• O antivírus está varrendo tudo que entra 
e sai 
• O software de gerenciamento de redes 
está monitorando e solicitando dados 
de desempenho do servidor 
• Diversos discos trabalhando em RAID 
necessitam processar as 
funcionalidades da tecnologia 
 
- Ou seja, é necessário que os processos estejam 
em plena ação para orquestrar tudo isso 
 
- Somente nos casos com sistemas com 
múltiplos processadores temos, de fato, 
múltiplos programas sendo atendidos no 
mesmo instante 
 
PROCESSO 
 
- Softwares de computador são organizados em 
processos sequenciais 
 
- Um processo é um programa em execução, 
acompanhado dos valores correntes: 
• Do contador de programa 
• Dos registradores 
• Das variáveis 
 
- Uma CPU pode executar um processo por vez; 
existem sistemas com dois cores ou + (que 
equivale a duas ou + CPUs) 
 
 
- Ainda assim, todas as CPUs podem executar 
apenas um processo por vez 
 
- Um processo constitui uma atividade: possui 
programa, entrada, saída e um estado 
 
- Os processos podem conter mais de uma 
tarefa, ou seja: 
 
Processo ≠ Programa ≠ Tarefa 
 
- No núcleo dos SOs, temos os PCBs (Process 
Control Blocks) -> armazenam as informações 
referentes aos processos ativos no ambiente 
 
- Cada processo tem um identificador único no 
sistema, o PID (Process Identifier) 
 
CRIAÇÃO DE PROCESSOS 
 
- Para sistemas de propósitos gerais é 
necessário algum mecanismo para criar e 
terminar processos (até mesmo durante a 
operação, se necessário) 
 
- Nos sistemas tem quatro eventos que fazem 
que processos sejam criados: 
1) no início do sistema 
2) um processo em execução procedendo a uma 
chamada de sistema de criação de um processo 
3) requisição do usuário para criar novo 
processo 
4) batch job (tarefa em lote) sendo iniciada 
 
- Ao iniciar um SO, vários processos são criados: 
alguns em primeiro plano e interagindo com o 
usuário; outros em segundo plano; 
 
- Ex. em segundo plano: servidor de FTP (file 
transfer protocol) -> fica inativo durante boa 
parte do tempo -> é ativado apenas quando um 
cliente FTP solicita abertura de nova conexão 
 
- Daemons: termo usado para descrever um 
processo que fica em segundo plano com 
finalidade de lidar com alguma atividade 
solicitada 
 
- Processos em execução podem fazer system 
calls para criar um ou mais processos novos 
 
- Os usuários podem iniciar um novo processo 
começando um programa no ambiente GUI ou 
no ambiente Shell 
 
- Em sistemas em lote, após o usuário submeter 
tarefa em lote para o sistema, o SO criará um 
novo processo e o executará quando: 
1) tiver recurso disponível, ou 
2) as prioridades no sistema forem redefinidas 
 
- No ambiente Unix, temos a chamada de 
sistema fork para criar um processo: cria uma 
réplica (processo filho) do processo solicitante 
(processo pai) 
 
 
- Depois o processo filho executará 
subsequentemente execve ou uma chamada de 
sistema similar para: 
• Mudar sua imagem de memória 
• Executar um novo programa 
 
Windows 
 
- Uma única chamada denominada 
CreateProcess de função do Win32 trata: 
• O processo de criação 
• Carga do programa correto no novo 
processo- O processo Win32 possui dezenas de funções 
para gerenciar e sincronizar processos e 
tópicos relacionados 
 
- Tanto no Unix quanto no Windows: quando um 
novo processo filho é criado, o processo pai e 
filho possuirão seus próprios espaços de 
endereçamento de memória 
 
- Isso permite que -> se o processo pai ou filho 
alterar uma palavra em seu espaço de 
endereçamento -> a mudança não vai impactar 
o outro processo 
TÉRMINO DE PROCESSOS 
 
- Após o término, o processo é finalizado com 
base nas quatro condições típicas: 
1. Normal 
2. Por erro 
3. Erro fatal 
4. Cancelado por terceiros 
 
- Processos terminados de forma involuntária 
não são comuns 
 
Condição normal 
 
- É verificado pela chamada exit no Unix e pelo 
ExitProcess no Windows 
 
- O processo termina após finalizar as tarefas 
que estavam previstas, ex.: 
• Usuário finalizando um programa 
• Fechando a janela no ambiente GUI... 
• ... Ou pela opção relativa no ambiente 
Shell 
 
- No Unix, a chamada exit serve para informar 
ao núcleo do SO que o processo não é mais 
necessário -> liberando os recursos a ele 
empregados 
 
- Processos podem solicitar ao núcleo o 
encerramento de outros processos -> aplicado 
apenas a processos do mesmo usuário -> ou se 
o usuário solicitante pertencer ao 
administrador do sistema 
 
Saída por erro 
 
- Os processos que interagem com outros não 
podem ser concluídos quando um parâmetro 
errado é fornecido 
 
- Ex.: se um usuário quer salvar um arquivo com 
nome duplicado -> abre uma caixa de diálogo e 
pergunta se ele quer tentar novamente 
 
Erro fatal 
 
- Causado pelo processo e normalmente por um 
erro de programa 
 
- Ex.: execução de uma instrução ilegal; 
referência à memória inexistente; divisão por 
zero 
 
Cancelamento por outro processo 
 
- Quando um processo x executa uma chamada 
de sistema determinando que o SO cancele 
outros processos 
 
- No Unix/Linux é a chamada kill 
 
- No Windows, a função Win31 correspondente é 
a TerminateProcess 
 
COMUNICAÇÃO ENTRE PROCESSOS 
 
- Frequente nos sistemas atuais -> comunicação 
estruturada e sem interrupções 
 
- Como um processo passa info para o outro? 
Como garantir que múltiplos processos não 
conflitem? Como haverá uma sequência 
adequada quando existirem dependências? 
 
Condição de corrida 
 
- Race conditions 
 
- O armazenamento compartilhado entre 
processos pode estar na memória principal ou 
em um arquivo compartilhado 
 
- Ocorre quando temos um cenário em que dois 
ou mais processos que estão lendo ou 
escrevendo algum dado compartilhado e cujo 
resultado final depende de quem executa – e 
quando executa 
 
- É extremamente exaustiva a atividade de 
análise, depuração e resolução de códigos de 
programa que apresentam condições de corrida 
 
EXCLUSÃO MÚTUA E REGIÃO CRÍTICA 
 
 
- É o modo de assegurar que processos sejam 
impedidos de usar uma variável ou um arquivo 
compartilhado que já estiver em uso por outro 
processo 
 
- Como evitar condições de corrida? Aplicando a 
exclusão mútua ou por modo abstração -> 
evitando que os programas usem a região crítica 
simultaneamente 
 
- Região ou seção crítica: parte dos programas 
em que há acesso à memória ou arquivo 
compartilhado 
 
- Porém, isso não é suficiente para que 
processos paralelos colaborem de forma 
correta e eficiente usando dados 
compartilhados 
 
 
 
 
 
Exclusão mútua com espera ociosa 
 
- Em sistemas antigos, para evitar que dois 
processos entrem, ao mesmo tempo, na região 
crítica (RC): 
• desativação das interrupções assim que 
o primeiro processo entrar na RC 
• consecutivamente reabilitá-las assim 
que sair da RC 
 
- Assim, quando se desativa a interrupção, a CPU 
não pode dar start em outro processo 
 
- Problema: se tivermos um problema num 
processo que desative as interrupções e nunca 
mais as atives, teremos o sistema todo 
literalmente parado 
 
- Conclusão: a desativação das interrupções é 
uma técnica coerente para o próprio SO, mas 
com alto nível de risco para os processos dos 
usuários 
 
- Esse processo não dá para ser aplicado nas 
novas arquiteturas de chips com múltiplos 
processadores! 
 
Outras opções 
 
- Existem outras opções para impedir que mais 
de um processo entre, simultaneamente, em 
sua RC 
 
- Por software: baseada em uma variável 
compartilhada chamada lock (trava); duas 
chaves de valores 0 e 1: 
• 0: indica que não há nenhum processo 
em sua RC 
• 1: indica que tem algum processo prévio 
em RC 
 
- O problema disso é se depender manualmente 
do usuário??? 
 
- Por chaveamento obrigatório: por meio de 
uma variável turn controla a vez de quem entra 
na RC, verificando a memória compartilhada 
 
- Nesse caso, um processo x precisa checar se já 
existe um processo y na RC, se tiver, precisa ficar 
checando toda hora até que o y não esteja mais 
na RC 
 
- Esse processo se chama busy waiting (espera 
ociosa) e despende muito tempo de CPU -> a 
trava que usa o busy waiting é chamada de spin 
lock 
 
- Instrução Test and Set Lock (TSL): a nível de 
hardware; lê no registrador RX a palavra lock do 
conteúdo de memória e armazena um valor 
diferente de 0 no endereço de memória lock 
 
- O TSL é a solução para o caso de múltiplos 
cores -> impede que outras CPUs acessem a 
memória enquanto ela não terminar a execução 
do seu processo em RC 
 
Semáforos 
 
- Conceito proposto para um tipo de variável 
inteira, objetivando contar o número de sinais 
de “acordar” salvos para o uso futuro 
 
- Ou seja, variável utilizada para controlar o 
acesso a recursos compartilhados (tipo de 
exclusão mútua) 
 
Insight! Pensa no uso de uma impressora: os 
processos que não conseguirem utilizar, vão ser 
postos para dormir; os processos que liberarem 
a impressora vão acordar os que estão 
dormindo e estes irão conseguir utilizar 
 
- Poderia conter valor 0 -> indicando que 
nenhum sinal de acordar foi salvo -> não há 
recurso livre -> nenhum wake-up armazenado 
 
- Conter algum valor positivo (>0) -> indicando 
que um ou mais sinais de acordar estão 
pendentes -> recurso tá livre -> se existe 
processo dormindo em função desse recurso, 
então ele precisa ser acordado 
 
- O idealizador Dijkstra propôs duas operações 
para os semáforos: P (down) e V (up), ou sleep e 
wake up 
 
- Operação Down (P): 
• o uso do recurso tá sendo requisitado 
(system call)! -> 
• então ele verifica se o valor contido é 
maior que 0 -> 
• se for maior que 0, subtrairá um sinal 
de Up (V) que estiver na variável e 
prosseguirá com as tarefas -> semáforo 
= semáforo – 1 
• se o valor contido apresentar o valor 0, 
então o recurso não tá livre e o processo 
é instruído para dormir -> 
• sem terminar o ciclo Down ainda 
• fica em estado dormente, sem terminar 
o ciclo, esperando o recurso estar 
disponível 
 
- Para evitar condição de corrida deve ser 
garantido que, ao iniciar uma operação de 
semáforo, nenhum outro processo tenha acesso 
a este até que a operação: 
1. Tenha terminado 
2. Tenha sido bloqueada 
 
- Operação Up (V): 
• rola quando um recurso é liberado para 
um processo -> 
• é incrementado um valor no semáforo 
(semáforo = semáforo + 1) -> 
• se um ou mais processos estiverem 
dormentes ao ser iniciada a operação 
Up, então -> 
• o sistema escolhe um desses processos 
e dá permissão para que ele termine o 
ciclo Down 
 
- Ou seja, teremos um processo a menos 
dormindo 
 
- Se houver múltiplas CPUs, cada semáforo é 
protegido por uma variável lock, como na 
instrução TSL 
 
Monitores 
 
- Primitiva de alto nível para sincronizar 
processos 
 
- De fácil uso 
 
- Conjunto de procedimentos, variáveis e 
estruturas de dados agrupados em um único 
módulo ou pacote 
 
- Somente um processo pode estar ativo dentro 
do monitor em um mesmo instante 
 
- Outrosprocessos ficam bloqueados até que 
possam estar ativos no monitor 
 
- Coloca a cláusula 
monitor e o nome e 
tudo que tá dentro 
ali é sincronizado 
 
- Depende da 
linguagem de 
programação: 
existe em JAVA, mas 
não existe em C 
 
- Um processo que executar uma chamada ao 
monitor poderá entrar somente se não houver 
outro processo previamente ativo 
 
- Para o programador, basta saber que 
convertendo todas as RC em rotinas do monitor, 
2 ou mais processos nunca poderão entrar em 
suas RCs ao mesmo tempo 
 
- Apresenta várias condicionais que possibilitam 
bloquear processos quando esses não 
puderem continuar 
 
- As condicionais apresentam duas condições: 
1. wait: usado para definir que uma rotina 
não pode prosseguir 
2. signal: abordado de duas formas 
distintas: 
a. deixa o processo recém-
acordado executar e suspender 
o outro 
b. se é emitido sobre uma variável 
condicional pela qual vários 
processos estejam esperando, 
somente um deles será 
despertado 
 
- O signal não poderá acontecer até que o wait 
tenha terminado 
 
Limitações de monitores e semáforos 
 
- Não são boas soluções para sistemas 
distribuídos 
 
- Não proveem sincronização entre processos de 
máquinas diferentes, são para processos locais 
apenas 
 
- Monitores dependem de uma linguagem de 
programação: não são muitas que suportam 
monitores 
 
- Exigem mensagens de comunicação 
(passagem de mensagem) 
 
Troca de mensagens 
 
- Para a troca de informações entre máquinas 
temos o message passing que usa dois 
instrumentos: send e receive 
 
- São colocados em rotinas de biblioteca 
 
- Usa o mecanismo similar ao usado no 
protocolo TCP/IP camada 4 Transportes TCP: 
a mensagem enviada requer um sinal de 
aknowledge 
 
- Ou seja, se quem enviou não receber a 
confirmação, então uma nova mensagem será 
enviada 
 
Escalonamento 
 
- Algoritmo de escalonamento: ocorre quando 
temos uma única CPU disponível e mais de um 
processo estiver competindo para ser 
executado -> cabe ao SO escolher qual dos 
processos será privilegiado 
 
- Dois tipos de processos: 
1. Computer bound: passam a maior 
parte do tempo computando (limitados 
pela CPU) 
2. I/O bound: passam a maior parte do 
tempo esperando por entrada e saída 
(limitados à entrada e saída) 
 
55219
Realce
- Os processos devem ser escalonados nas 
seguintes situações: 
1. Quando temos os processos pai e filho 
para serem executados 
2. Quando temos um processo que 
terminou e não está mais no sistema 
3. Quando um processo é bloqueado 
4. Ao ocorrer uma interrupção de 
entrada/saída 
 
- Os algoritmos de escalonamento podem 
trabalhar de duas formas: 
1. Não antecipado: o processo pode ficar 
executando pelo tempo que for 
necessário até que seja bloqueado ou 
que libere a CPU 
2. Antecipado: o algoritmo escolhe um 
processo e o deixa em execução por 
tempo máximo fixado 
 
GERENCIAMENTO DE MEMÓRIA: 
INTRODUÇÃO 
 
- No SO, a parte parcialmente responsável por 
gerenciar a hierarquia de memória é o 
gerenciador de memória 
 
- Suas tarefas são: 
• Conhecer todo espaço de memória, 
• Alocar para os processos que estão 
necessitando 
• Liberar as partes que não estão mais em 
uso pelos processos 
 
RAM: random acess memory 
ROM: read only memory 
 
- Existem algumas variações na hierarquia: 
a. Variação por uso total de memória RAM 
b. Mix dos dois tipos (RAM e ROM) -> não há 
risco do usuário ou um problema na 
aplicação comprometer o SO -> comuns 
em dispositivos móveis 
c. Drivers de dispositivos em ROM 
 
 
- Nos sistemas precursores, não era possível 
mais de um programa ocupando a memória ao 
mesmo tempo 
 
- Solução: swapping -> troca de processos -> o 
SO pega o conteúdo da memória e move para 
um arquivo na memória em HD -> então libera a 
memória para o próximo processo 
 
- Avanço de hardware: dividir a memória 
principal em blocos de 2kb com chave de 
proteção e 4 bits para cada bloco -> mantidas 
em registradores especiais na CPU 
 
ABSTRAÇÃO: ESPAÇOS DE ENDEREÇAMENTO 
DA MEMÓRIA 
 
- Com a abstração da memória e implantação do 
espaço de endereçamento, cria-se uma 
memória abstrata para abrigar os programas 
 
- Esta possui um conjunto de endereços usado 
para que o processo realize endereçamento à 
memória 
 
- Individualmente, os processos possuem seu 
próprio espaço de endereçamento 
 
Permuta de memória 
 
- Além do swapping, outro método para gerir a 
sobrecarga da memória é: 
• o uso de memória virtual -> 
• permitindo que programas possam ser 
carregados na memória principal -> 
• e executados na íntegra ou 
parcialmente 
 
55219
Realce
- Ciclo de troca de processos entre memória 
principal e secundária: 
 
 
MEMÓRIA VIRTUAL 
 
- Overlays: módulos de sobreposição nos quais 
os programas eram criados diante da demanda 
elevada por memória 
 
- O método de memória virtual foi desenvolvido 
por John Fotheringham 
 
- Permite que programas usem mais RAM do que 
realmente está disponível fisicamente 
 
- É possível porque o SO mantém rodando na 
RAM somente as partes necessárias do 
programa -> as que não estão em uso ficam no 
HD 
 
- Quando precisa de outra parte que está no HD, 
então haverá o processo de swapping 
 
- Dois aspectos importantes: 
1. Memória real: quantidade de memória 
fisicamente instalada 
2. Memória virtual: muito mais 
capacidade que a memória real 
 
- No hardware temo a Unidade de 
Gerenciamento de Memória (MMU) 
 
- O MMU dá suporte ao SO na execução do 
mapeamento dos endereços da memória física 
e da memória virtual -> maestria no swapping 
 
Paginação 
 
- Técnica usada na maioria dos sistemas de 
memória virtual 
 
- Cada programa tem seu próprio espaçamento 
de endereços adjacentes -> páginas 
 
- A MV é dividida em unidades de espaçamento 
de endereços adjacentes -> ou seja, a MV é 
dividida em páginas 
 
- Frames: unidades da memória física que 
correspondem às páginas da MV 
 
- Tanto as páginas, quanto as suas “molduras” 
possuem o mesmo tamanho 
 
- Sistemas reais possuem páginas de 512 a 
65.536 bytes; imagine um sistema com páginas 
de 8KB: 
 
 
- Isso porque usamos como exemplo um sistema 
que permite gerar endereços virtuais de 0 a 64 
KB 
 
 
 
- Nos sistemas em que não é utilizado 
mecanismo de memória virtual, o endereço 
virtual é idêntico ao endereço físico 
 
- Nesse caso, o endereço virtual é colocado no 
barramento diretamente -> não é necessária 
uma adequação do mundo virtual para o físico 
 
- Em sistemas que usam memória virtual, o 
endereço virtual vai para o MMU -> este mapeia 
endereços virtuais em endereços físicos -> antes 
de colocá-lo no barramento 
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
55219
Realce
 
 
SEGMENTAÇÃO 
 
- É uma das formas mais simples para se obter a 
proteção da memória, além da paginação 
 
- São atendidos os requisitos: 
1. Pode haver vários segmentos distintos 
2. Cada segmento pode ter tamanho 
próprio 
3. Cada seg. é constituído de uma 
sequência linear de endereços 
4. O tamanho dos segmentos pode variar 
5. O tamanho de cada segmento de pilha 
pode ser expandido sempre que algo é 
colocado sobre ela e diminuído sempre 
que algo é retirado da pilha 
6. Seg. diferentes podem crescer ou 
diminuir independentemente -> quando 
for necessário 
 
- Para seu uso, programas tem que ter endereço 
composto de duas partes: (1) um número 
referindo-se ao segmento desejado e (2) 
endereço dentro do segmento 
 
UNIDADE IV: AULAS 
 
INTRODUÇÃO AO SISTEMA DE ARQUIVOS 
 
- Dá subsídio para acesso de arquivos 
 
- É o módulo do SO que vai armazenar dados de 
forma persistente no disco 
 
- Armazenar e recuperar big data (3 Vs) 
 
- Informação gerada por um processo: continuarapós finalização do processo (persistência) 
 
- Deve dar acesso à informação a múltiplos 
processos: concorrentemente 
 
- Definição: arquivo é um conjunto de dados 
armazenados em um dispositivo físico não 
volátil, com um nome e/ou referência que 
permita sua localização futura 
 
- Informações devem ser independentes de 
processos (técnicas de exclusão mútua) 
 
- Existem diversos sistemas de arquivo, ex.: 
FAT, FAT32, NTFS, Ext3, Ext4, JFS, JFFS, JFFS2, 
LogFS, Reiser4, ReiserFS e XFS, ISO9660 
 
 
Info! Quando formatamos o PC, basicamente 
estamos resetando o Sistema de Arquivos dele. 
 
ARMAZENAMENTO PERSISTENTE: ARQUIVOS 
 
- Criados pelos processos -> estes podem ler ou 
escrever em arquivos ou ainda criar arquivos 
novos 
 
- Informações armazenadas devem ser 
persistentes!!!! Não podem ser afetadas pela 
criação ou finalização de um processo 
 
- Arquivos são gerenciados pelos SO: 
• São estruturados, nomeados, 
acessados, usados, protegidos, 
implementados e gerenciados 
• Por meio de chamadas (system calls) 
 
- Lembrando que é pelos systems calls que um 
sistema chama a atenção do kernel 
 
- Sistema de arquivos: 
• Parte do SO responsável por tratar de 
arquivos 
• Uma das partes mais visíveis ao usuário 
 
PONTOS DE VISTA DO SIST. DE ARQUIVOS 
 
Ponto de vista do usuário 
 
- Alto nível 
 
- Interface -> como os arquivos aparecem 
 
- Como são nomeados e protegidos 
 
- Operações que podem ser realizadas 
 
Ponto de vista do SO 
 
- Baixo nível 
 
- Indicam como arquivos são armazenados 
fisicamente (cilindros, setores, trilhas...) 
 
- Como arquivos são referenciados (links por 
onde um arquivo pode ser visto/acessado por 
um outro diretório) 
 
NOMES DE ARQUIVOS 
 
- Quando criados, nomes são dados aos 
arquivos (obrigatoriamente) 
 
- Referenciados pelos seus nomes 
 
- Tamanho máximo: 255 caracteres 
 
- Restrição do MS-DOS: aceita de 1-8 caracteres 
 
- Letras, números e caracteres especiais 
podem compor nomes de arquivos 
 
- Alguns SOs são case sensitives para nomes de 
arquivos, ex.: Unix 
 
- MS-DOS não é sensível e os Windows herdaram 
características do sistema de arquivos do MS-
DOS 
 
- Em particular, WinNT/Win2000 usam um SA 
próprio: New Technology File System (NTFS) 
 
OUTROS ATRIBUTOS 
 
- Data: ajuda o usuário a saber quando o arquivo 
foi criado, mas também controlar a data e hora 
do último acesso, da última modificação e da 
última alteração de outro atributo 
 
- Tipo (extensão): indica se o arquivo é áudio, 
vídeo, imagem... O SA do Windows usam a 
extensão, que é parte do nome, para indicar o 
tipo do arquivo 
 
- Tamanho: determina quanto de espaço em 
bytes ou registros 
 
- Proprietário: atualmente, com sistemas em 
rede e multiusuários, cada arquivo tem um 
proprietário, que deve estar corretamente 
identificado 
 
- Permissões de acesso: determinam quais 
usuários têm acesso ao arquivo e quais 
permissões são atribuídas a cada usuário 
 
- Localização: indica o dispositivo físico onde o 
arquivo se encontra e a posição do arquivo 
dentro dele 
 
- Para o usuário do sistema, a localização parte 
da raiz, que é o pai de todos os demais 
repositórios filhos (estrutura hierárquica) 
 
ESTRUTURA DE ARQUIVO 
 
- Podem ser estruturados de várias formas 
 
- Para Windows e Unix, a estrutura de um 
arquivo nada mais é que uma sequência 
desestruturada de bytes 
 
- Isso oferece a máxima flexibilidade, tendo em 
vista que os programas dos usuários podem pôr 
qualquer coisa em seus arquivos e terem os 
nomes que forem convenientes 
 
- Sequência de estrutura em 
bytes: 
 
- Existe também uma forma estruturada: o 
arquivo é uma sequência de registros de 
tamanho fixo, cada um com alguma estrutura 
interna -> a operação de leitura retorna um 
registro e a operação de escrita sobrepõe ou 
anexa um registro -> não aplicado nos 
sistemas atuais 
 
- Árvore de registros: cada árvore contém 
um campo-chave em uma posição fixa no 
registro -> usado em alguns processamentos 
de dados comerciais 
 
- A árvore é ordenada pelo campo-chave 
 
 
OPERAÇÕES 
 
- Criar: demanda a alocação de espaço no 
dispositivo de armazenamento e a definição 
de seus atributos 
 
- Ler: permite transferir dados presentes no 
arquivo para uma área de memória da 
aplicação e, se necessário, enviar para um 
dispositivo de saída como monitor, 
impressora e outros 
 
- Abrir: antes que um aplicativo possa ler ou 
escrever dados em um arquivo, este deve 
solicitar ao sistema operacional que o arquivo 
seja aberto 
1. O sistema verifica se o arquivo existe 
2. Verifica se as permissões associadas 
permitem o acesso 
3. Localiza seu conteúdo no dispositivo 
de armazenamento 
4. Cria uma referência para ele na 
memória 
 
- Fechar: ao concluir o uso do arquivo, a 
aplicação deve informar ao SO que esse 
arquivo não é mais necessário -> liberar 
estruturas de gerência do arquivo na 
memória do núcleo 
 
- Mudar atributos: usado para modifica 
características do arquivo 
 
- Remover: elemina o arquivo do dispositivo, 
descarta seus dados e libera o espaço 
ocupado por ele 
 
- Entre outras operações, como copiar, 
mover, colar, renomear, etc. 
 
COMPARTILHAMENTOS 
 
- Em um sistema multitarefas e em redes, é 
frequente que se tenha arquivos sendo 
acessados por mais de um processo ou 
por mais de um usuário 
 
- O acesso simultâneo a recursos 
compartilhados pode gerar condições de 
disputa (race conditions) 
 
- Isso leva à inconsistência de dados e outros 
problemas 
 
TRAVAS EM ARQUIVOS 
 
- Os SOs oferecem um tipo de mecanismo 
de sincronização para acesso a arquivos -
> por meio de travas (locks) 
 
- Pode ser aplicada no arquivo inteiro ou em 
trechos específicos 
 
- Assim, dois ou mais processos podem 
trabalhar partes distintas de um arquivo 
 
Travas obrigatórias 
 
- Impostas pelo núcleo do SO de forma 
compulsória 
 
- Assim, se um processo obtiver a trava do 
arquivo, então outros processos que 
solicitarem acesso ao arquivo serão 
suspensos até que a respectiva trava seja 
liberada 
 
Travas recomendadas 
 
- Não são impostas pelo núcleo do SO 
 
- Um processo pode acessar um arquivo, 
mesmo sem ter sua trava 
 
- Fica a cargo do programador implantar em 
suas aplicações os controles de trava 
necessários para impedir acessos 
conflitantes aos arquivos 
 
Trava exclusiva ou restritiva 
 
- Garante acesso exclusivo ao arquivo 
 
- Ou seja, enquanto estiver ativa, nenhum 
outro processo poderá obter uma trava sobre 
aquele arquivo 
 
Trava compartilhada ou de leitura 
 
- Impede outros processos de criar travas 
exclusivas sobre o arquivo 
 
- Permite apenas a existência de outras 
travas compartilhadas 
 
- As travas exclusivas e compartilhadas 
implementam um modelo de sincronização 
de leitores/escritores 
 
Voltando... 
 
- As travas de arquivos geralmente são 
atribuídas a processos 
 
- Um processo só pode possuir um tipo de 
trava sobre um mesmo arquivo 
 
- Todas as travas são liberadas quando o 
processo fecha o arquivo ou finaliza sua 
execução 
 
- Por default, os Windows oferecem travas 
obrigatórias sobre os arquivos – que podem 
ser exclusivas ou compartilhas –, e travas 
recomendadas sobre trechos 
 
SEMÂNTICA DE TRAVA DE ACESSO 
 
- Quando um dado é escrito no arquivo, ele 
está prontamente disponível para leitura 
 
Buffers de dados: locais da memória física 
em que os dados ficam armazenados 
temporariamente enquanto são movidos de 
um local para o outro 
 
- Arquivos podem ser abertos por vários 
processos ao mesmo tempo -> os dados 
escritos por um processo podem não estar 
imediatamente disponível aos demais 
 
- Isso ocorre pq a memória secundária em 
HD são lentas em comparação à memória 
principal 
 
- Nesse caso, os SOs usam buffers de dados 
intermediários para acumularos dados que 
deverão ser escritos/manipulados 
 
- Semântica de compartilhamento: forma 
como os dados escritos por um processo é 
notada pelos demais procesoss que abriram 
aquele determinado arquivo 
 
- Semântica imutável: um arquivo é 
chamado de imutável quando pode ser 
compartilhado por vários processos -> assim 
seu conteúdo não pode ser modificado 
 
- Isso garante a consistência do conteúdo do 
arquivo -> usada em alguns sistemas de 
arquivos distribuídos 
 
Outras semânticas possíveis 
 
- Semântica Unix: 
• Toda modificação em um arquivo é 
imediamente visível a todos os 
processos que mantem o arquivo 
aberto 
• Existe a possibilidade de vários 
processos compartilharem o mesmo 
ponteiro de posicionamento do 
arquivo 
• Comumente aplicada em sistemas de 
arquivos locais 
 
- Semântica de sessão: 
• Considera que todo processo usa o 
arquivo em uma sessão (abertura e 
fechamento) 
• Modificações em uma sessão só são 
visíveis na própria sessão ou nas que 
forem abertas depois que esta for 
fechada 
 
DIRETÓRIOS (FOLDER) 
 
- Definição: é uma estrutura de dados que 
contém entradas associadas aos arquivos -> 
cada entrada armazena informações como 
localização física, nome e demais atributos 
 
- São usados para permitir a organização dos 
arquivos dentro de uma partição 
 
- Um diretório/pasta/folder pode conter 
arquivos ou outros diretórios 
 
- Têm nomes e atributos assim como os 
arquivos 
 
- Cada espaço de armazenamento possui ao 
menos um diretório principal -> diretório raiz 
 
- Exemplo de árvore de diretórios de um 
sistema Linux -> estrutura definida nas 
normas Filesystem Hierarchy 
 
 
SISTEMA DE DIRETÓRIOS EM NÍVEL ÚNICO 
 
- Nível único: nível mais simples de uma 
estrutura de diretórios 
 
- Existe um único diretório contendo todos os 
arquivos do disco 
 
- É bastante limitado -> não permite criar 
arquivos com mesmo nome 
 
- O primeiro supercomputador da história foi 
um CDC 6600 que usava este sistema 
 
 
- Evolução: foi implantada uma estrutura na 
qual para cada usuário existiria um diretório 
particular, o Diretório de Arquivo do 
Usuário (sistema de diretório de dois 
níveis) 
 
 
- Mas, ainda assim, 
para o usuário a 
organização em um 
único diretório não 
permite uma 
organização 
adequada 
 
- Evolução para múltiplos níveis: estrutura 
de diretórios em árvore, adotada hoje na 
maioria dos sistemas 
 
TIPOS DE SISTEMAS DE ARQUIVOS 
 
Sistema de arquivos ISO 9660 
 
- Padrão internacional e mais usado em 
tecnologia de CD-ROMs 
 
- Objetivo: tornar possível que todo CD-ROM 
fosse legível por todos os computadores -> 
independentemente do SO e da ordem em 
que os bytes estão armazenados 
 
- Diferença HD e CD-Roms: os CD-ROMs 
não possuem cilindros concêntricos, mas 
uma única espiral contínua que contém bits 
em uma sequência linear 
 
- Mesmo estruturado em espiral contínua, é 
possível buscar o CD-ROM transversalmente 
às espirais 
 
- Os bits são agrupados em blocos lógicos de 
2.352 bytes 
 
Sistema de arquivo do FAT 
 
- Foi o mais usado mundialmente 
 
- Também chamado “Sistema de arquivos 
MS-DOS” 
 
- Os primeiros PCs da IBM já usavam o SA 
MS-DOS 
 
- Até o Windows 2000 e ME, a Microsoft 
usava esse SA; 
 
- A partir do Windows 2000, Vista e XP ele 
passa a ser suportado, mas não é mais 
padrão nos equipamentos atuais 
 
- Possui extensão FAT-32 -> vem sendo 
usada em máquinas fotográficas, MP3 e 
outros 
 
- O SA usado atualmente pela Microsoft é o 
NTFS 
 
Sistema de arquivos do ambiente Linux 
 
- Primeira versão de SA no Linux: Minix 
 
- Seguia os padrões Unix: 
• Arquivos com limites de nomes de 14 
caracteres 
• Tamanho máximo de 64MB 
 
- O SA ext apesenta melhorias com relação 
ao tamanho do nome (até 255 caracteres) e 
tamanho do arquivo (até 2GB) 
 
- A desvantagem do sistema de arquivos ext, 
comparado com o Minix, era seu 
desempenho lento 
 
 INTRODUÇÃO AO GERENCIAMENTO DE E/S 
 
- Tem como princípio básico a abstração 
• Torna a interação do programador 
com a máquina mais fácil 
• Permite que os programas de 
hardware evoluam de forma 
independente, porém estruturada 
 
12 CONCEITOS 
 
Fonte do vídeo: 
https://www.youtube.com/watch?v=T7lCM3l
7vAQ 
 
O QUE É UM SO 
 
- Conjunto de softwares que permite a 
operação de um computador ou equipamento 
similar 
 
Funções 
 
• Permite acessar e controlar o 
hardware da máquina 
• Alocar recursos 
• Interagir com aplicações diversas 
• Gerencia processos e comunicação 
via rede -> permitindo a troca de 
dados entre programas e dispositivos, 
• Efetua tratamentos de erros 
 
KERNEL 
 
- Parte mais importante do SO; seu 
componente central 
 
- Primeira parte do SO a ser carregada e 
permanece na memória principal durante 
todo tempo de execução 
 
 
 
Funções 
 
• Gerenciamento de memória 
• Gerenciamento de processos 
• Gerenciamento de armazenamento 
• Gerenciamento de dispositivos 
 
Tipos de kernel 
 
• Monolítico 
• Microkernel 
• Híbrido 
• Exokernel 
https://www.youtube.com/watch?v=T7lCM3l7vAQ
https://www.youtube.com/watch?v=T7lCM3l7vAQ
• Nano Kernel 
 
PROCESSOS E THEREADS 
 
Processos 
 
- Processo é um programa em execução 
 
- São gerenciados pelo SO, o qual também 
controla o agendamento de processos 
(scheduling) 
 
Threads 
 
- Um thread é um fluxo de execução (como 
um trecho de um código, por exemplo) 
separado dentro de um processo 
 
- Um processo pode ter uma thread ou ser 
multithreading 
 
 
- Também chamada de lightweight process 
 
- Permite melhorar a performance de uma 
aplicação por meio de paralelismo 
 
TIPOS DE SO 
 
Classificação por forma de operação 
 
- SOs em lote (batch job): usados em 
mainframes 
 
- Tempo compartilhado: compartilha o 
tempo execução entre os processos 
 
- Distribuído: fazem uso de várias máquinas 
simultaneamente 
 
- De rede: permite controlar várias estações 
por rede, ex.: Linux e Windows server 
 
- De tempo real: precisam de resposta 
instantânea (militares e de airbags, por ex.) 
 
MULTITAREFAS E MULTIPROGRAMAÇÃO 
 
- Multitarefa: diversas tarefas podem ser 
executadas pela CPU simultaneamente -> 
pela comutação entre elas -> de forma muito 
rápida 
 
- Multiprogramação: a CPU será 
compartilhada por dois ou mais programas na 
memória ao mesmo tempo, aumentando sua 
utilização 
 
 
 
- Há, basicamente, duas grandes famílias de 
SOs: baseados em Unix e sistemas Windows 
 
 
 
- O MS-DOS não é Windows, mas é 
precursor de alguns Windows, como o 3.11 e 
o 98 
 
- Só a partir do Windows NT (anterior ao XP) 
que surgiu um Windows completamente 
separado do DOS 
 
TIPOS DE INTERFACES: CLI, GUI E TERMINAIS 
 
Command-Line Interface (CLI): o Sistema é 
controlado por meio de comandos emitidos 
em um prompt 
 
Graphical User Interface (GUI): o sistema é 
controlado por meio de elementos gráficos 
acessados com um dispositivo apontador, 
como um mouse ou via touch 
 
Terminal: software que emula um terminal 
de hardware, geralmente com uma interface 
de linha de comandos que pode ser 
executada dentro de uma interface gráfica 
 
SEGURANÇA 
 
- Não fazem parte do SO propriamente dito, 
mas são parte essencial do sistema 
computacional em si 
 
- Ajudam a proteger o SO, programas e 
arquivos dos usuários 
 
Firewall: bloqueia pacotes suspeitos ou 
indesejados pela rede (E/S) 
 
Antivírus: protege contra ataques de 
malwares 
 
Backup: ferramenta para cópia de 
segurança dos dados 
 
- A maioria dos SOs possuem ferramentas 
básicas integradas que realizam essas 
funções

Continue navegando