Você está na página 1de 6

Aula 1

Sistema Operacional é uma camada de software que opera entre o hardware e os programas
aplicativos voltados ao usuário final.

Seus objetivos podem ser sintetizados e, duas palavra-chave:

 Abstração; e
 Gerência (de baixo e alto nível).

Abstração:

Define uma interface abstrata de acesso a um dispositivo de hardware.

 Prover interfaces de acesso aos dispositivos, mais simples de usar que as interfaces de
baixo nível
 Tornar os aplicativos independentes do hardware - o sistema operacional desacopla o
hardware dos aplicativos e permite que ambos evoluam de forma mais autônoma.
 Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas

Gerência:

Gerenciar o uso dos recursos do hardware pelos aplicativos e resolver eventuais disputas e
conflitos.

 De processador/processos/tarefas/atividades: distribui a capacidade de


processamento de forma justa entre as aplicações. O sistema operacional provê a
ilusão de que existe um processador independente para cada tarefa. Fornece
abstrações para sincronizar atividades interdependentes e prover formas de
comunicação entre elas.
 De memória: Tem como objetivo fornecer a cada aplicação uma área de memória
própria, independente e isolada das demais aplicações e inclusive do sistema
operacional. Para as c erro n interferir nas outras
 De dispositivos/ entrada/saída: implementar a interação com cada dispositivo por
meio de drivers e criar modelos abstratos que permitam agrupar vários dispositivos
similares sob a mesma interface de acesso.
 De arquivos: é construída sobre a gerência de dispositivos e visa criar arquivos e
diretórios, definindo sua interface de acesso e as regras para seu uso.
 De proteção: e definir claramente os recursos que cada usuário pode acessar, as
formas de acesso permitidas (leitura, escrita, etc.) e garantir que essas definições
sejam cumpridas.

Aula 2

Gerenciamento de processos no Linux:


 O kernel Linux gerencia os processos por meio de uma estrutura de dados chamada
"tabela de processos", que contém informações sobre todos os processos em
execução no sistema.
 Cada processo é identificado por um PID (identificador de processo) e possui
informações como o usuário que o iniciou, o estado atual, o uso de recursos, entre
outra.
 O kernel Linux oferece várias funcionalidades de gerenciamento de processos, como
escalonamento, gerenciamento de threads, controle de prioridade, gerenciamento de
sinais, entre outras.
 Também fornece várias ferramentas de linha de comando e interfaces gráficas de
usuário para monitorar e gerenciar processos em tempo real, como os comandos “ps”
e “top” e a ferramenta “System Monitor” no ambiente gráfico GNOME.
 Os usuários também podem controlar os processos por meio de comandos, como “kill”
(para encerrar um processo), “nice” (para alterar a prioridade de um processo) e
“renice” (para alterar a prioridade de um processo já em execução).
 O gerenciamento de processos no Linux é essencial para garantir que o sistema esteja
funcionando de forma eficiente e estável

Gerenciamento de memória no Linux:

 No Linux, a memória física do sistema é dividida em páginas, geralmente com tamanho


de 4KB, que são mapeadas para processos individuais.
 O kernel do Linux gerencia a alocação e desalocação dessas páginas de memória e as
compartilha entre os processos que as necessitam.
 O Linux utiliza vários algoritmos de gerenciamento de memória para determinar quais
páginas de memória devem ser mantidas na memória física e quais podem ser
movidas para o disco rígido (swap).
 O kernel também possui um recurso de "preempção" que permite que processos de
baixa prioridade sejam interrompidos para liberar recursos de memória para processos
de maior prioridade.
 O Linux também oferece recursos de monitoramento de memória, como o comando
"free" e ferramentas gráficas, que permitem aos usuários visualizar o uso atual de
memória pelo sistema e pelos processos individuais.

Sistemas de arquivos no Linux:

 Em resumo, a alocação de arquivos no sistema operacional Linux é gerenciada pelo


sistema de arquivos Ext4, que usa uma combinação de estruturas de blocos e inodes
para gerenciar a alocação de espaço em disco para arquivos.

Aula 4

Gestão de processos

 Processos podem solicitar ao núcleo o encerramento de outros processos, mas essa


operação só é aplicável a processos do mesmo usuário, ou se o processo solicitante
pertencer ao administrador do sistema.
 Outro aspecto importante a ser considerado em relação a processos diz respeito à
comunicação: tarefas associadas ao mesmo processo podem trocar informações
facilmente, pois compartilham as mesmas áreas de memória;
 Todavia, isso não é possível entre tarefas associadas a processos distintos;
 Para resolver esse problema, o núcleo deve prover às aplicações chamadas de sistema
que permitam a comunicação interprocessos (IPC – Inter-Process Communication).

Threads

 Uma thread é definida como sendo um fluxo de execução independente;


 Um processo pode conter uma ou mais threads, cada uma executando seu próprio
código e compartilhando recursos com as demais threads localizadas no mesmo
processo;
 Cada thread é caracterizada por um código em execução e um pequeno contexto local,
o chamado Thread Local Storage (TLS), composto pelos registradores do processador e
uma área de pilha em memória, para que a thread possa armazenar variáveis locais e
efetuar chamadas de funções

Processos x threads

 A implementação de sistemas usando um processo para cada tarefa é uma


possibilidade. Essa abordagem tem como grande vantagem a robustez, pois um erro
ocorrido em um processo ficará restrito ao seu espaço de memória pelos mecanismos
de isolamento do hardware. Além disso, os processos podem ser configurados para
executar com usuários (e permissões) distintas, aumentando a segurança do sistema.
o Por outro lado, nessa abordagem o compartilhamento de dados entre os
diversos processos que compõem a aplicação irá necessitar de mecanismos
especiais, como áreas de memória compartilhada, pois um processo não pode
acessar as áreas de memória dos demais processos. Como exemplos de
sistemas que usam a abordagem baseada em processos, podem ser citados o
servidor web Apache (nas versões 1.*) e o servidor de bancos de dados
PostgreSQL.
 Também é possível implementar todas as tarefas em um único processo, usando uma
thread para cada tarefa. Neste caso, todas as threads compartilham o mesmo espaço
de endereçamento e os mesmos recursos (arquivos abertos, conexões de rede, etc),
tornando mais simples implementar a interação entre as tarefas;
o Além disso, a execução é mais ágil, pois é mais rápido criar uma thread que um
processo. Todavia, um erro em uma thread pode se alastrar às demais, pondo
em risco a robustez da aplicação inteira. Muitos sistemas usam uma
abordagem multi-thread, como o servidorWeb IIS (Microsoft Internet
Information Server) e o editor de textos LibreOffice.
 Sistemas mais recentes e sofisticados usam uma abordagem híbrida, com o uso
conjunto de processos e threads. A aplicação é composta por vários processos, cada
um contendo diversas threads. Busca-se com isso aliar a robustez proporcionada pelo
isolamento entre processos e o desempenho, menor consumo de recursos e facilidade
de programação proporcionados pelas threads;
o Esse modelo híbrido é usado, por exemplo, nos navegadores Chrome e Firefox:
cada aba de navegação é atribuída a um novo processo, que cria as threads
necessárias para buscar e renderizar aquele conteúdo e interagir com o
usuário. O servidor Web Apache 2.* e o servidor de bases de dados Oracle
também usam essa abordagem

3 estados básicos do processo:

 Em execução (running) – está usando alguma coisa da máquina, ex: processador.


 Em espera (wainting) – pronto para rodar, esperando algo do so para rodar.
 Pronto (ready)

Processo prontop vai para uma pilha de prioridade

Prioridade vai por pilha

Dentro da prioridade forma uma fila

Se o processo entra na prioridade errada = deadlock – travamento mortal; SO não tem solução
para isso.

Ordem errada dos processos = queda de memória e tratamento.

Fragmentação:

Externa: blocos de memórias intervalados;

Interna: Blocos grande e tarefas pequenas que ñ usa tudo; desperdício de memória.

Aula 6

Hierarquia de memória:

Formada por memórias voláteis (precisam de energia para manter seu conteúdo) e ñ voláteis.
Quanto maior a velocidade da memória, o custo e o consumo de energia, menor é a
capacidade.

Memória Física

Espaço de memória RAM do computador, grande sequência de bytes com endereços


individuais

Conteúdo: Sistema operacional; Aplicações em execução; Buffers de entrada/saída; Áreas de


transferência (DMA).

 CPU 32 bits, bus 32 bits, 232 endereços


 CPU 64 bits, bus 48 bits, 248 endereços

Memória virtual:

 Forma como a CPU e o software vêem a memória


 Corresponde aos endereços lógicos

Separação entre memória RAM e espaço de endereçamento:

 Endereços físicos: endereços acessados na RAM.


 Endereços lógicos: endereços usados pela CPU.

A memória RAM é acessada por endereços físicos.

Ao executar, a CPU e os processos só veem endereços lógicos.

Simplifica o uso da memória pelo SO e processos

Conversão de endereços:

A conversão Lógico → Físico é feita pela MMU:

 Hardware entre a CPU e a memória RAM


 Pode ser gerenciada pelo núcleo do SO
 Converte endereços lógicos em físicos a cada instrução
 Se ñ for possível converter ela gera uma interrupção

Memória virtual, implementação:

Por partições:

 Uma partição de tamanho T:


 Área de RAM contígua (sem buracos) com T bytes Endereços lógicos no intervalo [0 . . .
T − 1]
 As partições podem ser tamanhos iguais ou distintos
 As partições podem ser tamanhos fixos ou variáveis
 Cada partição é ocupada por um processo
 Implementada por 2 registradores
 Vantagens: simplicidade e rapidez
 Desvantagens:
o Processos podem ter tamanhos distintos das partições
o Processos pequenos desperdiçam RAM Processos muito grandes não podem
executar
o Número de processos ≤ número de partições
o Dificuldade para compartilhar memória

Por segmento:

Cada processo tem um conjunto de áreas internas: Armazenam as diferentes partes do


processo; Bibliotecas compartilhadas.

Ideia: estender o modelo de partições: O espaço de endereçamento é dividido em segmentos;


Cada área do processo fica em um segmento; Cada processo tem uma tabela de segmento.

 Endereços bidimensionais
 Conversão é dividida em mais partes
Por páginas:
Ideia: dividir RAM e espaço de endereçamento em blocos:

 Blocos de mesmo tamanho (em geral 4.096 bytes = 4k)


 Blocos de endereços lógicos: páginas
 Blocos de endereços físicos: quadros

A tradução L--> consiste em mapear páginas -> quadros

São lineares (unidimensionais)

Para controlar as páginas existem tabelas: quais páginas serão usadas por quais processos;

 4 Kbytes são 212 bytes: o deslocamento usa 12 bits

CPU 32 bits:

 Page Number: 20 bits mais significativos – qtde páginas


 Offset: 12 bits menos significativos – onde o dado está dentro da página

Coloca na RAM, se não tiver espaço coloca no disco.

Alocação de memória para processos em programas:

 Alocação estática: valor já definido no comando


 Alocação dinâmica: ñ tem valor definido, cada vez que o programa inicia pode ter
valores diferentes.
 Alocação direta: ou automática, recursividade, estrutura de if else,

Variáveis globais não inicializadas-> BSS

Variáveis com valor definido são armazenadas no-> Data

N tem valor definido/alocados dinamicamente ->HEAP

Código binário (executável) ->TEXT

Pilha de execução; tem tamanho variável e cresce “para baixo”->STACK

Malloc – obter um bloco de N bytes

Free – liberar bloco alocado

Aula 7

Page Fault:

Dados não estão na memória estão no disco rígido;

Um algorito troca páginas/blocos sem uso que estão na memória, pelo dado que será usado e
está no disco rígido.

Você também pode gostar