Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do...
Transcript of Sistemas Operacionais II - deinf.ufma.brgeraldo/soii/12.windows3.pdfmanipuladores do processo e do...
Windows – Conceitos Básicos
Sistemas Operacionais II
Geraldo Braz Junior
Departamento de Informática - UFMA
Introdução
2
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
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
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
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
Modelo
7
API Win32
8
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
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
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
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
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
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
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
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
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
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
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
Tabela de Prioridades
20
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
Classes de Prioridades
22
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
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
Inversão de Prioridade
25
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
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
Trampolim
28
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
Inicialização do Windows
30
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