31
Windows Conceitos Básicos Sistemas Operacionais II Geraldo Braz Junior Departamento de Informática - UFMA

Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

  • Upload
    phungtu

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Windows – Conceitos Básicos

Sistemas Operacionais II

Geraldo Braz Junior

Departamento de Informática - UFMA

Page 2: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Introdução

2

Page 3: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Job Coleção de um ou mais processos

gerenciados como uma unidade;

Define cotas e limites de recursos associados:◦ Número máximo de processos;

◦ Tempo total de CPU disponível para cada processo individualmente e para todos os processos juntos;

◦ Uso máximo de memória, etc.

Pode ainda impor restrições como não ser capaz de obter poder de administrador mesmo com a senha apropriada.

3

Page 4: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Processos Possuem:

Espaço de endereçamento de 4 GB (2 para o usuário e o restante para o SO);

ID;

Um ou mais threads;

Lista de manipuladores;

Ficha de acesso contendo sua informação de segurança.

4

Page 5: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Threads Formam a base do escalonamento da CPU;

Executam no modo usuário, mas, ao realizar uma chamada ao sistema, ele alterna para o modo núcleo;

Possuem:◦ Estado;

◦ ID;

◦ Duas pilhas: uma para o modo usuário e outra para o modo núcleo;

◦ Um contexto, no qual salva seus registradores quando não está em execução.

◦ Pode ter ficha de acesso que sobreporá a ficha de acesso do processo.

5

Page 6: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Filamentos (fiber) O chaveamento de contexto de threads é

relativamente caro por requerer entrar e sair do modo núcleo;

Filamentos são como threads porém escalonados no espaço do usuário pelo programa que os criou;

Fornece um pseudo-paralelismo de peso leve;

Cada thread pode ter vários filamentos;

O núcleo não tem conhecimento dos filamentos;

Não há chamadas ao sistema para gerenciar filamentos e sim chamadas para a API Win32.

6

Page 7: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Modelo

7

Page 8: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

API Win32

8

Page 9: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Criação de Processos: Parâmetros de CreateProcess Ponteiro para o nome do arquivo executável;

Linha de comandos;

Ponteiro para um descritor de segurança para o processo;

Ponteiro para um descritor de segurança para o thread inicial;

Bit indicando se o novo processo herda os manipuladores de seu criador;

Sinalizadores (modo de erro, prioridade, etc.);

Ponteiro para variáveis do ambiente;

Ponteiro para o nome do diretório de trabalho;

Ponteiro para uma estrutura que descreve a janela inicial;

Ponteiro para uma estrutura que retorna 18 valores.

9

Page 10: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

CreateProcess Não possui hierarquia pai-filho;

Contudo, um dos 18 parâmetros retornados ao processo criador é o manipulador do novo processo (permitindo controle sobre o mesmo).

10

Page 11: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Criação de Thread: Parâmetros de CreateThread

Descritor opcional de segurança;

Tamanho inicial da pilha;

Endereço de início;

Um parâmetro definido pelo usuário;

Estado inicial (pronto ou bloqueado);

ID do thread.

11

Page 12: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Comunicação Interprocessos Pipes

◦ Bytes

◦ mensagens

Pipes com nome◦ podem ser usados em rede

Mailslots◦ Semelhantes a pipes porém são de apenas uma via

◦ Podem ser usados em rede sem garantias de entrega

◦ Permite ao emissor difundir msgs a diversos receptores

Sockets◦ Chamadas remotas de procedimentos

◦ Arquivos compartilhados

12

Page 13: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Sincronização de Processos Semáforos

Mutex

Regiões críticas

Não são objetos do núcleo, não possuindo manipuladores o que impede de serem passadas entre processos

Impedimento e desimpedimento: EnterCriticalSection e LeaveCriticalSection

13

Page 14: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Sincronização de Processos Eventos

◦ Tipos: reinício manual e reinício automático;

◦ Estados: ativado e desativado;

◦ Espera por um evento: WaitForSingleObject;

◦ Sinaliza evento: SetEvent;

◦ Reinício manual: todos os threads são liberados e o evento fica ativo até ser desativado manualmente por ResetEvent;

◦ Reinício automático: apenas um thead é liberado e o evento é desativado.

14

Page 15: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Implementação de Processos e Threads A chamada Createprocess realiza:

◦ O arquivo executável passado como parâmetro é aberto e examinado por núcleo.dll: Se for um arquivo válido POSIX, OS/2, Windows 16

bits ou MS-DOS, é configurado um ambiente especial para ele;

Se for um arquivo Win32.exe, o registro é lido para verificar se algo deve ser realizado com ele (ex: executar sob a supervisão de depurador)

Uma chamada ao sistema (NtCreateProcess) é realizada para criar o objeto do processo e um PCB inicializado com o ID, cotas e ficha de acesso do processo;

15

Page 16: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Implementação de Processos e Threads Núcleo.dll obtêm de volta o controle e realiza

outra chamada ao sistema (NtCreateThread) para criar a thread inicial;

Núcleo.dll envia uma mensagem ao ambiente do subsistema Win32 passando os manipuladores do processo e do thread;

O thread inicia sua execução executando um procedimento de sistema para terminar a inicialização;

O procedimento define a prioridade do thread e começa a executar o código do programa principal do processo.

16

Page 17: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento Quando uma das condições abaixo ocorrer,

o thread entra no modo núcleo e executa o escalonador:

O thread bloqueia em um semáforo, mutex, evento, E/S, etc.

Ele sinaliza um objeto (por exemplo, faz um up em um semáforo);

O quantum do thread expira.

17

Page 18: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento O escalonador também é chamado sob as

seguintes condições:◦ Uma operação de E/S termina◦ Uma espera temporizada expira.

A chamada SetPriorityClass define a classe de prioridade de todos os threads do processo. ◦ Valores: tempo real, alta, acima do normal,

normal, abaixo do normal e ociosa;

A chamada SetThreadPriority define a prioridade de alguns threads relativamente aos outros threads do processo. ◦ Valores: tempo crítico, a mais alta, acima do

normal, normal, abaixo do normal, a mais baixa e ociosa;

18

Page 19: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento Temos, portanto, 42 combinações possíveis.

Essa é a entrada para o algoritmo de escalonamento.

O sistema tem 32 prioridades, numeradas de 0 a 31;

As 42 combinações são mapeadas sobre as 32 classes de prioridade, conforme a tabela no próximo slide;

O valor da tabela determina a prioridade basedo thread;

Todo thread possui ainda uma prioridade atual que pode ser mais alta que a prioridade base.

19

Page 20: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Tabela de Prioridades

20

Page 21: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento As prioridades 16 a 31 são chamadas de tempo

real, mas não são: não há garantias de prazos;

Elas são reservadas para o próprio sistema e para as threads priorizadas pelo administrador do sistema;

O thread de prioridade 0 executa em segundo plano e só consome o tempo de CPU que ninguém quer;

Seu trabalho é zerar as páginas de memória para o gerenciador de memória;

Se não houver absolutamente nada a ser feito, o thread ocioso executa.

Um thread do usuário pode ter a prioridade elevada (nunca acima de 15) pelos seguintes motivos:

21

Page 22: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Classes de Prioridades

22

Page 23: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento Quando uma operação de E/S termina: a

idéia é manter os dispositivos de E/S ocupados. O aumento depende do dispositivo:

◦ 1 para disco, 2 para serial, 6 para teclado e 8 para placa de som;

Quando é liberado um thread esperando em um semáforo, mutex ou outro evento. Sua prioridade é elevada em 2 unidades se for um processo em primeiro plano ou 1 unidade caso contrário;

23

Page 24: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Escalonamento Se uma thread de GUI desperta

◦ Se um thread usar totalmente seu quantum, perde um ponto e é rebaixado nas classes de prioridade;

◦ Se um thread não consegue executar por um dado intervalo de tempo, ele é movido para a prioridade 15 por 2 quanta;

◦ Depois que os 2 quanta se esgotarem, ele volta abruptamente para a prioridade original. Este problema é conhecido por inversão de prioridade e é ilustrado a seguir.

24

Page 25: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Inversão de Prioridade

25

Page 26: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Inversão de Prioridade Quando uma nova janela se torna a janela

em primeiro plano, todos seus threads recebem um quantum maior a partir de um valor recuperado do registro;

O quantum normal é de 20 ms;

Em servidores monoprocessados é de 120 ms;

Em servidores multiprocessados são usados vários valores, dependendo da freqüência do relógio.

26

Page 27: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Emulação MS-DOS Programas DOS são executados em um

ambiente totalmente protegido;

Quando um programa DOS inicia, é carregado um programa de emulação do MS-DOS, o ntvdm (NT virtual DOS machine);

Quando o programa DOS faz chamadas ao sistema, o Windows 2000 retorna as chamadas ao ntvdm;

Essa técnica é conhecida por trampolim.

27

Page 28: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Trampolim

28

Page 29: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Emulação do DOS Se o programa DOS realizar operações

indevidas, como tentar escrever diretamente na RAM de vídeo, ler diretamente o teclado, isto causará um aborto do mesmo.

29

Page 30: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Inicialização do Windows

30

Page 31: Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do thread; O thread inicia sua execução executando um procedimento de sistema para

Inicialização do Windows Processos iniciados durante a inicialização

do sistema;

Processos acima da linha sempre são inciados;

Processos abaixo da linha podem ser ou não iniciados.

31