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

Processo de Boot

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

Kernel e EspaƧo do UsuƔrio

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

  1. Identificação - infos sobre o usuÔrio, Ôreas de atuação no sistema

  2. 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

  3. 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

  1. Gerenciamento de Processador

  2. Gerenciamento de Memória

  3. Sistema de Arquivos

  4. Gerenciamento de I/O

  5. Suporte a redes

  6. Contabilização de uso do sistema

  7. 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)

Fluxo de Interrupção

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

Fluxo 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

Overlay

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 EstÔtica

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

FL
Capacidade MƔx de Arquivo
CompatĆ­vel c/ Windows
CompatĆ­vel c/ Linux

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