sistemas operacionais ii - deinf.ufma.brgeraldo/soii/6.linux2.pdfse a thread foi criada...

27
Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos Sistemas Operacionais II

Upload: hoanglien

Post on 10-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de

Arquivos

Sistemas Operacionais II

Page 2: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Threads Suporte a threads no núcleo;

Foi definida uma nova chamada ao sistema não presente no Unix: Pid = clone(function, stack_ptr, sharing_flags, arg);

Esta chamada cria uma nova thread no processo atual ou em outro processo de acordo com o parâmetro sharing_flags;

2

Page 3: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Threads Se a thread foi criada compartilhando o

processo, qualquer escrita no espaço de endereçamento é imediatamente visível as demais threads do processo. Caso contrário a nova thread recebe uma cópia exata do espaço de endereçamento.

3

Page 4: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Threads O novo thread começa a execução em function, a qual é chamada com arg sendo seu único parâmetro;

4

Page 5: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Threads O novo thread obtem obtém sua própria

pilha privada, com o ponteiro da pilha inicializado com stack_ptr;

Este parâmetro permite uma granularidade muito mais fina de compartilhamento que os sistemas Unix tradicionais.

5

Page 6: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Escalonamento Baseado em threads e não em processos;

Classes de threads: FIFO em tempo real:

Maior prioridade;

Não sofre interrupção exceto por um outro mais prioritário que tenha ficado pronto para executar.

Alternância circular em tempo real:

Podem ser interrompidos pelo relógio.

Tempo compartilhado.

Cada thread possui uma prioridade cujo padrão é 20;

6

Page 7: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Escalonamento - Regras Através da chamada nice a prioridade pode

ser alterada para valores entre 1 e 40;

Cada thread possui também um quantum;

O escalonador calcula a bondade de cada thread de acordo com as seguintes regras:

7

Page 8: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Escalonamento - Atualização O algoritmo de escalonamento

simplesmente escolhe a thread com maior bondade;

Ao ser executada cada tique do relógio (10 ms) reduz o quantum de 1;

A thread é retirada da CPU caso:

◦ Seu quantum chegue a 0;

◦ A thread tenha ficado bloqueada;

◦ Uma thread bloqueada de bondade maior ficou pronta.

8

Page 9: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Escalonamento - Recalculo Quando o quantum de todas as threads

prontas forem iguais a 0, o escalonador reinicializa o quantum de todas as threads usando a seguinte regra:◦ quantum = quantum_restante + (quantum/2) +

prioridade

Threads orientadas a E/S que estão bloqueadas podem ter algum quantum restante;

Como conseqüência, threads orientadas a E/S recebem quantum maiores e assim bondades maiores do que as orientadas a CPU;

9

Page 10: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Escalonamento – Threads CPU Quando threads orientados a computação

estão competindo pela CPU, aquelas com maiores prioridades obtêm uma fração maior da CPU. Por exemplo:

◦ A, prioridade 20; B, prioridade 5;

◦ A executa e após 20 tiques zera o quantum;

◦ B executa e após 5 tiques também zera o quantum;

◦ A obtem 20 e B 5;

◦ Essa atualização segue assim para sempre, com A obtendo 80% da CPU e B 20%.

10

Page 11: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Gerenciamento de Memória Em máquinas de 32 bits, cada processo

dispõe de 3 GB de espaço de endereçamento virutal para si próprio com 1 GB restante reservado para suas tabelas de páginas e dados do núcleo;

O EE é dividido em áreas organizadas em páginas com proteção e propriedades de paginação idênticas;

11

Page 12: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Gerenciamento de Memória O segmento de código e arquivos mapeados

são exemplos de áreas;◦ O tamanho da página é fixo: 4 KB para Pentium

e 8 KB para o Alpha;

Cada área é descrita no núcleo por meio de uma entrada vm_area_struct

Ela lista as propriedades da área:◦ Modo de proteção;

◦ Para qual direção cresce;

◦ Se é privada ao processo ou compartilhada;

◦ Se possui armazenamento de apoio no disco e onde.

12

Page 13: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Esquema de Paginação

13

Page 14: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Esquema de Paginação O Linux utiliza um esquema de paginação

em 3 níveis;

No Pentium, que utiliza paginação em 2 níveis, cada diretório Intermediário possui apenas uma entrada

Usos da memória física:

Núcleo: residente na memória, não sofre paginação;

14

Page 15: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Usos da memória física: Páginas de usuários;

Cache de blocos de arquivos: possui tamanho dinâmico e compete com páginas dos usuários;

Cache de paginação: conjunto de páginas dos usuários não utilizadas a muito tempo e que estão esperando para serem trocadas para o disco.

15

Page 16: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Algoritmo de Alocação de Memória O Linux gerencia memória usando o

algoritmo companheiro, com a adição de um vetor no qual:◦ o primeiro elemento é a cabeça de uma

lista de blocos com tamanho de uma unidade;

◦ o segundo elemento é a cabeça de uma lista de blocos com tamanho de duas unidades;

◦ o próximo elemento aponta para blocos de quatro unidades, e assim por diante;

Dessa maneira, qualquer bloco de potência de 2 pode ser encontrado rapidamente;

16

Page 17: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Algoritmo de Alocação de Memória

17

Page 18: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Algoritmo de Alocação de Memória

A figura ilustra o uso do algoritmo:

◦ uma solicitação de 8 páginas é atendida em (d);

◦ outra solicitação de 8 páginas é atendida em (e);

◦ outra solicitação de 4 páginas é atendida em (g);

◦ o segundo bloco de 8 páginas é liberado em (h);

◦ o primeiro bloco de 8 páginas é liberado em (i);

18

Page 19: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Fragmentação Interna O algoritmo utilizado gera considerável

fragmentação interna;

Solicitando-se um bloco de 65 páginas, obtêm-se 128;

Para amenizar este problema:

◦ Linux utiliza uma segunda alocação de memória que obtém blocos a partir do resultado retornado pelo algoritmo companheiro, e depois os divide para gerenciar unidades menores separadamente.

19

Page 20: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Algoritmo de Substituição de Páginas

O daemon de paginação, kswapd, executa uma vez por segundo e possui um laço que chama três procedimentos:

Tenta recuperar páginas da cache de paginação e da cache de blocos do sistema de arquivos que não foram referenciadas recentemente;

Páginas compartilhadas que nenhum dos usuários esteja usando muito;

Páginas comuns dos usuários.

20

Page 21: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Algoritmo de Substituição de Páginas

Um segundo daemon, bdflush, verifica periodicamente se a quantidade de páginas sujas é grande. Se for, inicia a escrita em disco.

21

Page 22: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Sistema de Arquivos Originalmente compatível com o Minix que

limita a 14 caracteres os nomes de arquivo e a 64 MB seu tamanho;

A primeira melhoria surgiu com o Ext, que permite 255 caracteres de nome e 2 GB de tamanho;

O Ext2 foi inventado com nomes longos de arquivos, arquivos grandes e melhor desempenho, tornando-se o principal sistema de arquivos.

22

Page 23: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Esquema dos Sistemas de Arquivo

23

Page 24: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Sistema de Arquivos Superbloco

Informa quantos blocos e i-nodes existem e qual o tamanho do bloco;

Descritor do grupo

Localização dos mapas de bits, número de blocos e i-nodes livres no grupo;

Mapas de bits

Controlam os blocos e i-nodes livres.

24

Page 25: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

I-nodes Possui 128 bytes, o dobro do Unix

tradicional;

Possui 12 endereços diretos e 3 indiretos;

Endereços estendidos de 3 para 4 bytes, para tratar partições de disco maiores que 224 blocos (16 GB);

Possui campos para listas de controle de proteção minucioso ainda não utilizados.

25

Page 26: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

Diretório /proc Cada processo possui uma entrada neste

diretório virtual contendo informações sobre o mesmo como sua linha de comandos, variáveis ambientais e máscaras de sinais;

O /proc do Linux possui ampla variedade de informações sobre:◦ CPU;◦ partições do disco;◦ Dispositivos;◦ vetores de interrupções;◦ módulos carregados, etc

Estas informações podem ser lidas por programas dos usuários desprivilegiados.

26

Page 27: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/6.linux2.pdfSe a thread foi criada compartilhando o processo, qualquer escrita no espaço de endereçamento é imediatamente visível

CPUInfo

27