Você está na página 1de 5

Resumo de SO

Introdução

Complexidade do Hardware e Necessidade de Abstração:

- Um computador moderno é complexo, composto por processadores, memória, discos, dispositivos


de entrada/saída, etc.

- Programadores não precisam entender cada detalhe para escrever código eficaz.

Papel do Sistema Operacional:

- O sistema operacional simplifica e melhora a interação entre programas de usuário e hardware.

- Fornece um modelo abstrato do computador para os programas.

Funções do Sistema Operacional:

- Gerencia recursos como processadores, memória, dispositivos de armazenamento e dispositivos de


E/S.

- Oferece um ambiente de execução seguro e isolado para programas de usuário.

Modos de Operação:

- Modo núcleo (modo supervisor) é onde o sistema operacional opera, com acesso completo ao
hardware.

- Modo usuário é onde a maioria dos programas de usuário opera, com restrições de acesso a
instruções críticas.

Interação do Usuário:

- Shell (interpretador de comandos) ou GUI (interface gráfica do usuário) é a camada mais baixa do
software de usuário.

- Os programas do usuário interagem com o sistema operacional para executar tarefas.

Localização e Função do Sistema Operacional:

- O sistema operacional está entre o hardware e o software de usuário.

- Ele opera diretamente sobre o hardware e oferece suporte a todos os outros softwares.

Diferenças Entre Sistema Operacional e Software de Usuário:

- Sistemas operacionais são grandes, complexos e têm vida longa.

- Código-fonte de sistemas operacionais é vasto e evolui ao longo do tempo.

Exemplos de Sistemas Operacionais:

- Windows, Linux, FreeBSD e OS X são exemplos de sistemas operacionais comuns.

- Sistemas operacionais como Windows e UNIX evoluem para novas versões, mantendo
compatibilidade.

Importância da Evolução de Sistemas Operacionais:


- Sistemas operacionais são difíceis de escrever e possuem longa vida útil.

- Mudar de sistema operacional é desafiador, levando a uma evolução gradual em vez de reescrita
completa.

SO como máquina estendida

- Os sistemas operacionais realizam duas funções principais: fornecer abstrações de recursos limpas
aos programadores de aplicativos e gerenciar esses recursos de hardware.

- A arquitetura dos computadores em nível de linguagem de máquina é primitiva e difícil de


programar, especialmente para E/S.

- Os sistemas operacionais fornecem drivers de dispositivo para lidar com a complexidade do


hardware.

- Abstrações como arquivos permitem que os programas lidem com recursos complexos de forma
mais simples.

- Boas abstrações transformam tarefas complicadas em gerenciáveis.

- Os sistemas operacionais são responsáveis por criar, implementar e gerenciar essas abstrações.

- O papel das abstrações é esconder a complexidade do hardware e fornecer interfaces mais


amigáveis para programas de usuário.

- Sistemas operacionais atuam como intermediários que transformam o "feio" e complicado


hardware em interfaces limpas e consistentes para programas.

- Os sistemas operacionais proporcionam abstrações de qualidade para os programas aplicativos


trabalharem.

- Clientes reais dos sistemas operacionais são os programas aplicativos, que interagem com as
abstrações fornecidas pelas interfaces de usuário.

- Interfaces de usuário podem variar, mas as abstrações subjacentes do sistema operacional


permanecem consistentes.

- Este livro se concentrará em estudar as abstrações fornecidas aos programas aplicativos, com
menos ênfase nas interfaces de usuário.

SO como gerenciador de recursos

- Visão bottom-up: O sistema operacional é visto como um gerenciador de recursos que aloca e
controla o uso de processadores, memória e dispositivos de E/S entre programas.

- A alocação de recursos é crítica para evitar conflitos e caos quando vários programas ou usuários
competem por recursos compartilhados.

- Necessidade de gerenciamento: Em sistemas com múltiplos programas ou usuários, o


gerenciamento e proteção de recursos se tornam essenciais para garantir a ordem e evitar
interferências indesejadas.

- O sistema operacional também deve permitir o compartilhamento de informações (arquivos,


bancos de dados) entre usuários.
- Multiplexação no tempo: Envolve compartilhar recursos em termos de tempo. Por exemplo,
compartilhar a CPU entre programas, alternando a execução de cada programa por períodos de
tempo.

- A tarefa de determinar quem usa o recurso a seguir e por quanto tempo é responsabilidade do
sistema operacional.

- Impressora é outro exemplo de multiplexação no tempo, decidindo qual saída de impressão será
impressa em seguida.

- Multiplexação no espaço: Envolve compartilhar recursos dividindo-os entre os clientes. Por


exemplo, compartilhar a memória principal entre programas residentes ao mesmo tempo.

- Múltiplos programas na memória simultaneamente são mais eficientes do que dar toda a memória
a um único programa.

- O disco também é um recurso multiplexado no espaço, onde vários usuários podem armazenar
seus arquivos em um único disco.

- Alocação de espaço em disco: O sistema operacional é responsável por alocar espaço de disco e
controlar o acesso aos blocos do disco por diferentes usuários.

Revisão sobre hardware

- Um sistema operacional está diretamente relacionado ao hardware do computador onde é


executado, pois estende as instruções do computador e gerencia seus recursos.

Revisão do hardware de computadores:

- Os computadores pessoais modernos têm uma estrutura mais complexa, mas podem ser
abstraídos em um modelo básico com CPU, memória e dispositivos de E/S conectados por um
sistema de barramento.

- A comunicação entre esses componentes ocorre por meio do barramento.

Complexidade do hardware:

- Computadores modernos têm uma estrutura mais complexa do que o modelo básico, com
múltiplos barramentos e detalhes de organização.

- O conhecimento profundo do hardware, especialmente do ponto de vista do programador, é


crucial para o funcionamento adequado do sistema operacional.

Processador

- A CPU é o "cérebro" do computador e executa instruções buscadas da memória. O ciclo básico da


CPU envolve buscar, decodificar e executar instruções em sequência.

- Cada CPU tem um conjunto específico de instruções que pode executar, e elas podem ser para
carregar, armazenar, combinar operações e muito mais.

- As CPUs têm registradores internos para armazenar variáveis e resultados temporários.

- Além dos registradores gerais, existem registradores especiais como o contador de programa (PC),
o ponteiro de pilha e o Program Status Word (PSW).

- O PC mantém o endereço da próxima instrução a ser buscada.


- O ponteiro de pilha aponta para o topo da pilha, usada para armazenar informações durante as
chamadas de rotina.

- O PSW contém informações sobre o estado do programa, como códigos de condição, prioridade da
CPU, modo de execução etc.

- Durante a multiplexação de tempo da CPU, o sistema operacional salva e restaura os registradores


ao interromper e retomar programas em execução.

- As CPUs modernas têm técnicas avançadas para melhorar o desempenho, como pipelines e CPUs
superescalares, que podem executar múltiplas instruções em paralelo.

- As CPUs têm modos de operação, núcleo e usuário, controlados por um bit no PSW. O modo núcleo
permite acesso total aos recursos do hardware, enquanto o modo usuário restringe o acesso a um
subconjunto de instruções e recursos.

- As chamadas de sistema permitem que programas de usuário solicitem serviços do sistema


operacional, passando do modo usuário para o modo núcleo.

- O sistema operacional também lida com exceções, como erros de divisão por zero ou underflow,
que podem ser ignoradas, tratadas ou causar o encerramento do programa.

Chips multithread e multinúcleo

- A lei de Moore observa que o número de transistores em um chip dobra a cada 18 meses devido ao
avanço na redução do tamanho dos transistores.

- Com o aumento no número de transistores, surge a questão de como aproveitar todos eles
eficientemente.

- Uma abordagem é colocar memórias cache maiores no chip da CPU.

- A replicação de unidades funcionais e parte da lógica de controle também é uma abordagem,


conhecida como multithreading.

- O multithreading permite que a CPU mantenha o estado de dois threads diferentes e alternar entre
eles em nanossegundos.

- O multithreading não fornece paralelismo real, apenas permite que um processo de cada vez seja
executado, alternando rapidamente entre os threads.

- Chips multinúcleo possuem múltiplos núcleos independentes, permitindo que várias instruções
sejam executadas simultaneamente.

- GPUs (Graphics Processing Units) modernas possuem milhares de núcleos e são eficientes em
tarefas paralelas, mas são difíceis de programar e não são ideais para tarefas sequenciais.

Memoria

- A memória em um computador é organizada em uma hierarquia de camadas, devido a limitações


de velocidade, capacidade e custo.

- Registradores internos à CPU são a camada de memória mais rápida, mas têm capacidade limitada.

- A memória cache é controlada pelo hardware e armazena linhas de memória recentemente


usadas, com o objetivo de reduzir a latência de acesso à memória principal.
- Caches L1 estão dentro da CPU e têm acesso mais rápido, enquanto caches L2 são maiores, mas
com um pouco mais de latência.

- Caches L1 e L2 são usadas para armazenar dados e instruções frequentemente usados.

- Memória principal, conhecida como RAM, é a próxima camada na hierarquia e é onde os dados não
presentes na cache são buscados.

- Memória não volátil, como ROM, EEPROM e memória flash, retém seu conteúdo mesmo após a
alimentação ser desligada e é usada para armazenar programas e dados persistentes.

- A memória flash é comum em dispositivos portáteis e serve como armazenamento intermediário


entre RAM e disco.

- A memória CMOS, volátil, é frequentemente usada para armazenar informações como a hora, data
e configurações do sistema e é alimentada por uma pequena bateria.

Você também pode gostar