Sistemas Operacionais
Sistema Operacional (SO): Programa ou conjunto de programas do sistema que gerencia recursos de hardware e atua como intermediƔrio (interface) entre usuƔrio e hardware
Buffer: Utilização de uma Ôrea da RAM para auxiliar a transferência de dados entre I/O e a memória; armazenamento temporÔrio para mitigar diferenças de velocidade em I/O
Reentrância: Capacidade de um código executÔvel ser compartilhado por vÔrias tarefas exigindo apenas uma cópia em memória (guias em um mesmo programa ao invés de uma nova janela)
Program Counter: Ponteiro que aponta para a próxima instrução a ser processada
Hyper-Threading: tecnologia onde o processador se apresenta para o SO como possuindo o dobro de núcleos que possui fisicamente; divisão do processamento entre dois ou mais processadores lógicos
Boot
BIOS/UEFI: Software de baixo nĆvel que inicializa o hardware do computador]
UEFI (Unified Extensible Firmware Interface): VersĆ£o moderna de inicialização, mais compatĆvel
POST (Power On Self Test): Testes diagnósticos para verificar o funcionamento do computador
Boot Device
Respeita a ordem de boot
Bootloader - Programa pequeno que carrega o sistema operacional

Tipos

Sistemas MonoprogramƔveis (Monotarefa)
Primeiros sistemas operacionais
Recursos computacionais são dedicados para apenas um programa
Para execução de novo programa, aguarda término de programa concorrente
Implementação simples
jobs - programas
MS-DOS
Sistemas MultiprogramƔveis (Multitarefa)
Escalonamento / concorrĆŖncia de programas
Recursos computacionais são compartilhados entre aplicações
Reduz tempo de resposta e custo
Implementação complexa
Podem ser classificados pela forma como gerencia suas aplicaƧƵes:
Sistemas BATCH: Primeiros sistemas multiprogramÔveis (década de 60); execução por cartões perfurados, armazenados em disco ou fita; processamento sem interação humana
Real-Time: Tempo de execução dentro de limites rĆgidos; programa ocupa o processador o tempo que for necessĆ”rio ou atĆ© surgir um programa de maior prioridade (definida pela aplicação); utilizados em controle de processos (refinarias de petróleo, trĆ”fego aĆ©reo, usinas etc)
Time Sharing: Compartilhamento de diversos recursos do sistema; permite execução de diversos programas a partir da divisão do tempo do processador em pequenos intervalos (time-slice); a maioria das aplicações comerciais atuais utiliza, pois oferece menos tempo de resposta ao usuÔrio e menos custo
Sistemas com MĆŗltiplos Processadores
Cluster de processamento
Possuem duas ou mais CPU's interligadas trabalhando em conjunto
Permite a execução simultânea de programas ou a subdivisão do programa para execução em mais de um processador
Permitiu criação de sistemas para processamento cientĆfico, simulaƧƵes, processamento de imagem etc
Fortemente Acoplado: Uma memória é compartilhada pelo cluster de processadores e dispositivos I/O são gerenciados por um único SO; maior taxa de transferência e memória
Multiprocessamento Simétrico (SMP): cada CPU executa uma cópia idêntica do SO
Assimético: quando processadores são diferentes; resposta não é em tempo real
Fracamente Acoplado: Processadores estão em arquiteturas diferentes, somente unidos por cabos de interconexão; cada CPU é uma mÔquina independente, com SO próprio e possui sua própria memória individual
Redes: Dois ou mais sistemas independentes (hosts) interligados por linhas telefÓnicas, permitindo que um host compartilhe seus recursos (impressora, diretórios)
DistribuĆdos: TambĆ©m compartilha recursos, porĆ©m neste modelo o SO omite detalhes dos hosts individuais e trata como se fossem um conjunto Ćŗnico (fortemente acoplado)
Kernel
NĆŗcleo do SO
Conjunto de rotinas que oferecem serviços essenciais aos usuÔrios, aplicações e ao próprio sistema
Gerencia os recursos do sistema
O usuƔrio entra em contato com o sistema operacional por meio do shell que envia para o kernel o que foi solicitado
Shell: Interpretador de comandos; "casca", parte externa responsÔvel pela comunicação (interface CLI ou GUI) com o usuÔrio
CLI - Command-Line Interface
GUI - Graphic User Interface
Estruturas
Camadas: Sistema Ć© dividido em nĆveis sobrepostos onde cada camada fornece funƧƵes que podem ser utilizadas apenas pelas camadas superiores; isolamento das funƧƵes do sistema; compromete desempenho dadas as mudanƧas de camadas
Microkernel - Client/Server: Cada função/serviço do SO é disponibilizada através de processos; cliente (aplicação/usuÔrio) solicita ao servidor (processo) responsÔvel; permite que servidores operem como modo usuÔrio acessando componentes limitados, pois apenas o núcleo opera em modo kernel

Processos
Ambiente onde um programa é executado / "programa em execução"
ContƩm quantidade de recursos que o processo pode utilizar
Bloco de Controle de Processo (BCP)
Estrutura de dados que compƵe o processo


Contexto de Software: Especificação de limites e recursos
Identificação - infos sobre o usuÔrio, Ôreas de atuação no sistema
Quotas - limites de recursos; Ć”rea utilizada em disco/memória; limite de linhas impressas; nĀŗ mĆ”x de arquivos abertos; nĀŗ mĆ”x de I/O pendentes e tempo limĆte de CPU
Privilégios - prioridades assumidas pelo processo durante sua execução
Contexto de Hardware: ConteĆŗdo dos registradores da CPU, uso geral e especĆfico; troca de contexto
EspaƧo de EndereƧamento: Ćrea da memória p/ armazenar instruƧƵes e dados de um programa; cada processo possui seu próprio espaƧo de endereƧamento isolado de outros processos
Estados do Processo
New Processo estÔ sendo alocado na memória; recursos necessÔrios são reservados; mais de um processo ao mesmo tempo
READY: Aguarda liberação da CPU (depois de criado ou após retorno da execução); "fila" gerenciada pelo SO
RUN: Utilização da CPU; permanece no processador até sua interrupção ou término da execução; um processo por vez
WAIT: Todos os processos que sofreram interrupção I/O; mais de um processo ao mesmo tempo (estÔ em execução, aguarda periférico)
Terminated: Final; tƩrmino de processamento; mais de um processo ao mesmo tempo

Tipos de Processo
CPU executa processos do sistema com certa prioridade concorrendo com processos do usuƔrio
CPU-bound: Processo que utiliza muito a CPU; utiliza a time-slice por inteiro; pouca entrada e muito processamento (programas cientĆficos, cĆ”lculo estatĆstico)
I/O-bound: Utiliza mais I/O que CPU; permanece mais tempo em espera do que em execução (aplicações em BD, consultas e atualizações em arquivos em disco)
Thread
Linha de execução; sequência de instruções que faz parte de um processo principal
Possui contexto de hardware próprio, porém compartilha contexto de software e espaço de endereçamento com as demais threads
Processo Ć© dividido em threads, que formam tarefas independentes, mas relacionadas entre si
FunƧƵes do SO
Gerenciamento de Processador
Gerenciamento de Memória
Sistema de Arquivos
Gerenciamento de I/O
Suporte a redes
Contabilização de uso do sistema
SeguranƧa
InterrupƧƵes e ExceƧƵes
Eventos inesperados que causam um desvio forçado no fluxo normal de execução; é armazenado o contexto da execução de um programa, para então posteriormente retornar do ponto onde parou
Interrupção: Gerada por um evento externo; permitiu a implementação da concorrência nos computadores; fundamento bÔsico de sistemas multitarefa
Exceção: Execução de instrução dentro do programa (divisão por 0, overflow)

System Call
Troca de mensagens entre cliente (aplicação/usuÔrio) e servidor (processo)
Porta de entrada p/ acesso ao kernel e aos serviƧos
NecessÔria para execução de serviços através da chamada de rotinas
Cada serviƧo disponĆvel possui sua system call
Cada SO possui conjunto especĆfico de system call


GerĆŖncia do Processador
Gerenciamento de Processos:
Criação / Eliminação ┠Alocação em memória dos recursos necessÔrios junto do contexto
Escalonamento / Controle ┠Organiza fila de acesso ao processador baseado nos parâmetros do sistema e do perfil o usuÔrio
FunƧƵes:
Manter CPU ocupada
Balancear uso da CPU entre processos
Privilegiar aplicaƧƵes crĆticas
Maximizar throughput
Oferecer tempo de resposta razoƔvel
Escalonamento
PolĆtica de Escalonamento: CritĆ©rios para fila de processamento; cada SO possui uma própria
CritƩrios de Escalonamento
Utilização do Processador
Throughput: número de tarefas executadas em função do tempo
Tempo de processador: tempo que um processo leva em RUN
Tempo de espera (pela CPU): tempo que um processo fica em READY
Tempo de turnaround: tempo total do processo no sistema, de CREATE atƩ EXIT
Tempo de Resposta: do momento da requisição atĆ© o inĆcio da resposta
NĆ£o-Preeptivo
SO não pode interromper os processos, a não ser que haja instrução para tal ou seja desviado para WAIT (operações I/O)
FIFO / FCFS (First-Come-First-Served): First in, first out; primeiro processo que chega na fila permanece utilizando o processador até o fim de sua execução; obedece a ordem de chegada Ô fila de READY; inicialmente implementado em sistemas monoprogramÔveis
SJF: Escalonamento seleciona o processo que tiver menor tempo de CPU; parĆ¢metro passado via contexto de software; se baseia em estatĆsticas de execuƧƵes anteriores
Cooperativo: Um processo em execução voluntariamente retorna à fila de pronto e libera a CPU para um novo processo; aumenta concorrência no processador; melhor distribuição do tempo do processador
Preeptivo
Possibilidade de interrupção pelo SO (retorna para READY), permite priorização de processos
Circular: Preepção por tempo; projetado para sistemas time-sharing; semelhante ao FIFO, obedece ordem de chegada, porĆ©m respeita limite de time-slice Prioridade: Funcionamento com base na prioridade de execução (valor atribuĆdo a cada processo), no caso processos com prioridades iguais Ć© processado o primeiro a chegar (critĆ©rio FIFO)
Circular com Prioridade: Conceito de time-slice e prioridade de execução; processo permanece em execução até que termine seu processamento, ou voluntariamente passe para o estado de espera (interrupção por E/S), ou sofra uma preempção por tempo ou prioridade; possibilidade de diferenciar grau de importância através da prioridade
MĆŗltiplas Filas: VĆ”rias filas com processos em estado de pronto, cada uma com prioridade especĆfica; a fila detĆ©m a prioridade, nĆ£o o processo; processos sempre voltam para a mesma fila de onde saĆram
Múltiplas Filas com Realimentação: Semelhante ao anterior, mas permite ao processo voltar para uma outra fila de maior ou menor prioridade; SO identifica dinamicamente o comportamento de cada processo e o redireciona para a fila mais conveniente
Gerência de Memória
Memória principal sempre foi vista como um recurso escasso e caro
Gerência de sistemas multiprogramÔveis é bem mais complexa do que em monoprogramÔveis; alto número de usuÔrios e aplicações enquanto deve utilizar espaço da MP eficientemente
Programas são armazenados em memórias secundÔrias não volÔteis Como o processador somente executa o que estÔ na MP, o SO deve sempre transferir programas da memória secundÔria para a principal antes de serem executados
Alocação de Memória
Alocação ContĆgua Simples: Primeiros SO sistemas monoprogramĆ”veis; MP dividia em parte do SO e parte do usuĆ”rio; limitado a apenas 1 usuĆ”rio; gerenciamento nĆ£o eficiente
Segmentação de Programas - Overlay: DivisĆ£o do programa em módulos independentes que utilizam a mesma Ć”rea de memória; módulo principal ocupa a memória durante todo tempo de execução; permite execução de programas maiores que a memória fĆsica disponĆvel

Alocação Particionada EstĆ”tica: Código realocĆ”vel, referĆŖncias a endereƧos no programa sĆ£o relativas ao inĆcio do código e nĆ£o a endereƧos fixos; programas podem ser realocados em qualquer partição livre; tanto em sistemas de alocação absoluta como nas realocĆ”veis, programas deixam espaƧo livre na partição (fragmentação interna)
Alocação particionada estĆ”tica absoluta: Antigamente quando programas só podiam ser carregados/executados em uma partição especĆfica, mesmo com outras disponĆveis; referĆŖncias a endereƧos sĆ£o posiƧƵes fixas na memória (código absoluto)

Alocação Particionada Dinâmica: Eliminado o conceito de partições de tamanho fixo; tamanho da partição é definido de acordo com o espaço necessÔrio à execução de tal programa; eliminação da fragmentação interna, porém, dada a variação de tamanho utilizado pelos programas, restam blocos de memórias cada vez menores impedindo o ingresso de novos programas (fragmentação externa) Soluções para problema de fragmentação externa:
União dos blocos livres adjacentes em uma grande Ôrea livre (nova partição)
Realocação das partições ocupadas para a parte inicial da memória, eliminando blocos livres entre elas, grande Ôrea livre no final da memória (alocação particionada dinâmica com realocação)
Estratégias de Alocação de Partição: Estratégias para determinar em qual Ôrea livre um programa serÔ alocado para execução
Best-fit: Partição que deixa o menor espaço sem utilização; deixa pequenos blocos, fragmentação aparece mais rÔpido
Worst-fit: A que deixa maior espaço livre; aproveita primeiro partições maiores e deixa grandes espaços livres, retarda fragmentação
First-fit: Primeira partição que couber, independente do espaço livre que vai deixar; estratégia mais rÔpida, menos consumo de recursos
Swapping: Técnica que visa dar maior taxa de utilização à memória principal e melhorar compartilhamento; quando não hÔ espaço na MP, o SO escolhe os processos com menor previsão de utilizar a CPU e "descarrega" em uma Ôrea reservada no disco, chamada arquivo de swap
Memória Virtual
Combina memória principal e secundÔria, permitindo que os programas acessem mais memória do que a capacidade real da memória principal
Elimina a limitação do tamanho dos programas e suas estruturas de dados; permite um número maior de processos compartilhando a memória principal, minimizando o problema da fragmentação
Paginação
TĆ©cnica utilizada para gerenciar memória fĆsica de forma eficiente
Divide o programa em blocos de tamanho fixo chamados pÔginas, facilitando o controle do acesso à memória e melhorando o desempenho geral do sistema
Cada pĆ”gina tem um nĆŗmero Ćŗnico de pĆ”gina (PAN) que identifica sua localização na memória fĆsica
PÔginas do espaço virtual são chamadas pÔginas virtuais, enquanto as pÔginas do espaço real são chamadas pÔginas reais ou frames
EspaƧo de EndereƧamento
EspaƧo de endereƧamento real: EspaƧo de endereƧamento que um programa ocupa na memória fĆsica; limitado pela quantidade total de memória disponĆvel
EspaƧo de endereƧamento virtual: Conceito abstrato que permite aos programas acreditar que tĆŖm acesso contĆnuo e ilimitado Ć memória, mesmo quando essa nĆ£o estĆ” disponĆvel fisicamente; SO mapeia automaticamente as referĆŖncias virtuais para endereƧos reais na memória fĆsica
Mapeamento: Processo pelo qual o SO traduz os endereƧos virtuais em endereƧos fĆsicos Tabela de EndereƧamento de PĆ”ginas: Estrutura de dados usada para armazenar informaƧƵes sobre cada pĆ”gina na memória, inclui o endereƧo fĆsico correspondente, status da pĆ”gina (se estĆ” em uso ou livre), e outras informaƧƵes relevantes
Page Fault: Ocorre quando o SO tenta acessar uma pĆ”gina que nĆ£o estĆ” atualmente na memória fĆsica; para resolver isso, o sistema deve buscar a pĆ”gina na unidade de armazenamento secundĆ”rio (como disco rĆgido), o que pode causar um atraso significativo conhecido como latĆŖncia de pĆ”gina
Working Set: Conjunto de pĆ”ginas que um programa precisa ter na memória para executar corretamente durante um perĆodo de tempo; gerenciar eficientemente o working set Ć© crucial para evitar o thrashing
Thrashing: Acontece quando o SO passa muito tempo buscando pĆ”ginas na unidade de armazenamento secundĆ”rio, em vez de executar programas; isso ocorre quando hĆ” muitas trocas de pĆ”gina, indicando que a memória fĆsica estĆ” sobrecarregada
Tamanho da PƔgina: Deve estar entre 512 bytes e 128 KB, aproximadamente
PolĆtica de Busca de PĆ”ginas: Definem como as pĆ”ginas serĆ£o carregadas da memória virtual para a memória real
PolĆtica por Demanda: Estabelece que uma pĆ”gina somente serĆ” carregada quando for referenciada
Paginação Antecipada: Funciona carregando antecipadamente vÔrias pÔginas da memória virtual para a principal, na tentativa de economizar tempo de E/S
PolĆtica de Alocação de PĆ”ginas: Determinam quantos frames cada processo pode manter na memória real; algumas polĆticas comuns incluem best fit, first fit e worst fit
PolĆtica de Alocação Fixa: Determina um limite de working-set igual para todos os processos, e pode ser vista como uma polĆtica "injusta", na medida em que processos maiores normalmente necessitam de um working-set maior
PolĆtica VariĆ”vel: Define um limite de working-set diferente e variĆ”vel para cada processo, em função de seu tamanho, taxa de paginação ou atĆ© mesmo da taxa de ocupação da memória principal
PolĆtica de Substituição de PĆ”ginas: Decide qual pĆ”gina serĆ” removida da memória quando ela estĆ” cheia e uma nova pĆ”gina precisa ser carregada. MĆ©todos populares incluem LRU e FIFO.
PolĆtica Local: Somente as pĆ”ginas do processo que gerou o page fault sĆ£o candidatas a serem substituĆdas
PolĆtica Global: Todas as pĆ”ginas alocadas na memória principal sĆ£o candidatas Ć substituição independente do processo que gerou o page fault
Algoritmos de substituição de pÔginas
Têm o objetivo de selecionar os frames que tenham as menores chances de serem referenciados num futuro próximo. Caso contrÔrio, o frame poderia retornar diversas vezes para a memória real, provocando excesso de page faults
Algoritmo Aleatório: Escolhe qualquer pÔgina, entre as alocadas na memória, para fazer a substituição; em função de sua baixa eficiência, este algoritmo não muito utilizado, embora consuma poucos recursos do sistema
FIFO (First In, First Out): Escolhe a pÔgina que estÔ hÔ mais tempo na memória principal para fazer a troca; algoritmo de simples implementação, mas corre o risco de retirar uma pÔgina que, embora tenha sido carregada hÔ mais tempo, esteja sendo muito utilizada
LFU (Least Frequently Used): Escolhe a pÔgina menos frequentemente usada para efetuar a troca; através de um contador, armazenado na tabela de endereçamento de pÔginas, o sistema identifica quantas referências cada pÔgina teve e utiliza esta informação para escolher a pÔgina
LRU (Least Recently Used): Escolhe a pÔgina menos recentemente usada para fazer a troca; o sistema mantém na tabela de endereçamento de pÔginas um campo onde são armazenadas a data e a hora da última referência de cada pÔgina, e com base nestas informações faz a seleção
NRU (Not Recently Used): NĆO elege a pĆ”gina mais recentemente usada para efetuar a troca; o sistema exclui da decisĆ£o a pĆ”gina mais recente e escolhe entre as outras, pelo mĆ©todo FIFO, qual pĆ”gina deve sair
Sistemas de Arquivos
FAT32
4 GB
Sim
Sim
exFAT
16 EB
Sim
Sim (Kernel 5.4+)
NTFS
16 TB
Sim
Leitura (Drivers p/ gravação)
ext3
2 TB
NĆ£o (Requer drivers)
Sim
ext4
16 TB
NĆ£o (Requer drivers)
Sim
UDF
Depende da implementação
Sim
Sim
Atualizado