Conceitos Básicos de Sistemas Operativos PDF

Document Details

HumorousEuphonium

Uploaded by HumorousEuphonium

Instituto Politécnico do Porto

2017

Valentim Realinho

Tags

operating systems computer science processes concurrency

Summary

These lecture notes cover fundamental concepts of operating systems. It explains processes, multiprogramming, and inter-process communication. The document was created in 2017/2018.

Full Transcript

1. Conceitos Básicos Sistemas Operativos Baseado no Capítulo 2 e Raíssa Lizardo 2017/2018 Valentim Realinho Conceito de Processo  Processo  Entidade activa, que corresponde a um programa em execução  Cada processo tem um espaço de e...

1. Conceitos Básicos Sistemas Operativos Baseado no Capítulo 2 e Raíssa Lizardo 2017/2018 Valentim Realinho Conceito de Processo  Processo  Entidade activa, que corresponde a um programa em execução  Cada processo tem um espaço de endereçamento próprio  A gestão de processos é da responsabilidade do sistema operativo, que utiliza estruturas de dados (process tables) que descrevem o contexto de execução de cada processo  O próprio sistema operativo é também um conjunto de vários processos  Programa  Sequência de instruções sem actividade própria – não confundir com processo 2 Multi-programação  Num sistema multi-programado, mesmo que só exista um processador é possível vários processos estarem activos simultaneamente  Em cada instante temporal, apenas um deles pode utilizar o processador  A esta ilusão de vários processos correrem aparentemente em paralelo, dá-se o nome de pseudo- paralelismo 3 Multi-programação  Não devem ser feitas assunções em relação à ordem de comutação do processador, devido a:  Existência de interrupções Não  Falta de recursos determinista  Entrada de processos prioritários  Depois de uma comutação do processador, o próximo processo a utilizá-lo é escolhido pelo sequenciador de processos do SO 4 Multi-programação  Exemplo: 4 processos a correr Memória principal Comutações do CPU A B C A B D C B A Tempo de processamento D 5 Multi-programação  Concorrência  Os vários processos “competem” entre si pela atenção do processador...  Cooperação ...mas também podem trabalhar em conjunto para a realização de tarefas mais complexas.  Esta cooperação exige ao SO a existência de mecanismos de sincronização e comunicação entre processos 6 Estados de um Processo  Em Execução (Running)  O processo está a utilizar o processador  Pronto (Ready)  O processo está activo, mas está à espera de ter a atenção do processador, que nesse instante está dedicado a outro processo  Bloqueado (Blocked)  O processo está inactivo  À espera que termine uma operação de I/O  À espera que outro processo liberte recursos  Devido à ocorrência de uma page fault – não possui recursos na memória principal 7 Estados de um Processo  Diagrama de estados 2 Pronto Em Execução (ready) (running) 3 4 1 1. Processo bloqueia à espera de input Bloqueado 2. Escalonador escolhe outro processo (blocked) 3. Escalonador escolhe este processo 4. Input disponível 8 Criação de Processos  Inicialização do sistema  Processo init no Linux  Processo smss.exe no Windows 2000  Um utilizador cria um novo processo ao mandar executar um programa  Clicar um ícone  Executar um programa a partir da shell  %> netscape  Um processo é criado por outro, através de uma chamada ao sistema  Linux: fork()  Windows 2000: CreateProcess(...) 9 Terminação de Processos  Um processo pode terminar por diferentes causas  Saída voluntária  Normal  Em erro (previsto)  Saída involuntária  Erro de execução  Terminado por outro processo 10 Hierarquia de Processos  É comum um SO estabelecer uma hierarquia nos processos que se encontram a correr  Processo pai – processo que lança um novo processo  Processo filho – novo processo que é criado pelo pai  Um processo filho tem apenas um “pai” mas um processo pai pode ter vários “filhos”  No Linux é estabelecida uma hierarquia que podemos visualizar através do comando da shell pstree  No Windows 2000 não existe uma verdadeira hierarquia, pois quando é criado um novo processo, o controlo do mesmo pode ser passado para outro processo diferente do criador 11 Representação dos Processos  Internamente, o SO mantém estruturas de dados referentes a cada processo – as Process Tables  As várias Process Tables são agrupadas segundo listas ou arrays de estruturas... Process Process Process Process Table Table Table Table 1 2 3 n  Cada vez que ocorre uma comutação de processos, o SO salvaguarda e actualiza informação relevante na Process Table do processo que “perdeu” a CPU 12 Representação dos Processos  Informação nas Process Tables  Gestão de processos  Conteúdo dos registos da CPU (incluindo PC e SP)  Estado do processo  Prioridade do processo  Identificação do processo – PID  Identificação do processo pai – (PPID)  Identificação do utilizador que lançou o processo  Data/hora em que o processo foi iniciado  Tempo de CPU utilizado pelo processo 13 Representação dos Processos  Gestão de memória  Segmento de texto (programa)  Segmento de dados (heap)  Segmento do stack  Gestão de ficheiros  Directório actual (de trabalho)  Directório por defeito (e.g. root, home)  Descritores dos ficheiros abertos ... 14 Processos – LINUX  Comandos da shell  ps – listar processos  pstree – ver hierarquia dos processos  top – ver informações adicionais sobre os processos  kill – enviar sinal a um processo (pode ser um sinal para terminar outro processo)  Chamadas ao sistema  fork() – criar um novo processo filho  exit(…) – terminar processo  kill(…) – enviar sinal a um outro processo 15 Processos – Windows 2000  TaskManager  visualizar os processos que estão a correr  possibilita ao utilizador a terminação de processos  Chamadas ao sistema  CreateProcess(…) – criação de processos  ExitProcess(…) – saída voluntária  TerminateProcess(…) – terminação de outro processo 16 Threads  Conceito de thread  Tal como os processos, as threads são também entidades activas  Um processo pode ser composto por várias threads que partilham o mesmo espaço de endereçamento  Processos diferentes possuem recursos diferentes... ... mas um conjunto de threads dentro do mesmo processo partilha os mesmos recursos 17 Threads  Modelo clássico  por cada processo existe uma só thread  neste caso processo e thread correspondem ao mesmo conceito Processo 1 Processo 2 Processo 3 Thread 1 Thread 2 Thread 3 18 Threads  Modelo actual  por cada processo podem existir várias threads Processo 1 Processo 2 Processo 3 Threads  Cada thread tem registos, program counter, stack e estado próprios 19 Threads  Utilização de threads – Exemplos:  Processador de texto – podem existir threads para:  Ler input do teclado  Refrescar o écran  Salvar o documento automaticamente  Reformatar o documento, etc.  Web Server – dois tipos de threads  “dispatcher” – sempre que chega um pedido de página, a thread “dispatcher” lança uma thread “worker”  “worker” – procura a página pedida na cache de páginas, caso não a encontre, terá que ir buscá-la ao disco 20 Comunicação entre Processos  IPC (InterProcess Comunnication)  Programação concorrente  Elaboração de tarefas mais complexas  É desejável que o SO inclua:  Mecanismos de sincronização  Ordem no acesso aos recursos  Ordem quando existe dependência entre processos (e.g., o processo A produz dados utilizados pelo processo B)  Mecanismos de comunicação  Troca de dados entre vários processos (através de mensagens ou de partilha de memória) 21 Regiões Críticas e Exclusão Mútua  Exemplo – fila de impressão  Consideremos que dois processos A e B encaminham ficheiros para uma fila de impressão com vários slots.  Para gestão da fila utilizam-se duas variáveis:  in – variável partilhada pelos processos e que indica o próximo slot livre na fila  out – variável utilizada pelo processo “printer daemon” e que indica o slot do próximo trabalho a ser imprimido 22 Regiões Críticas e Exclusão Mútua  Exemplo – fila de impressão Fila de impressão 0 1 trab.txt out = 1 Processo A 2 prog1.c 3 contas.xls 4 in = 4 5 Processo B... 23 Regiões Críticas e Exclusão Mútua  Exemplo – fila de impressão  Código utilizado pelos processos void EnviarFicheiro(char NomeFicheiro[]) {... ProxSlotLivre = LerPartilhada_in(); CopiarString(NomeFicheiro, ProxSlotLivre); ++ProxSlotLivre; ActualizarPartilhada_in(ProxSlotLivre);... }  O que pode acontecer se ocorrer uma comutação de processos entre a leitura da variável in e a actualização do seu valor ? 24 Regiões Críticas e Exclusão Mútua  Região crítica  Secção do programa onde são efectuados acessos (para leitura e escrita) a recursos partilhados por dois ou mais processos  É necessário assegurar que dois ou mais processos não se encontrem simultaneamente na região crítica – exclusão mútua  Assegura-se a exclusão mútua recorrendo aos mecanismos de sincronização fornecidos pelo SO  Estas afirmações são válidas também para as threads (é ainda mais crítico, pois todas as threads dentro do mesmo processo partilham os mesmos recursos) 25 Regiões Críticas e Exclusão Mútua  Regras para programação concorrente  Dois ou mais processos não podem estar simultaneamente dentro de uma região crítica  Não se podem fazer assunções em relação à velocidade e ao número de CPUs  Um processo fora da região crítica não deve causar bloqueio a outro processo  Um processo não pode esperar infinitamente para entrar na região crítica 26 Mecanismos de Sincronização  Desactivação das interrupções  Mecanismo mais básico, que impossibilita a comutação de processos, garantindo assim a exclusão mútua... DesactivarInts(); RegiaoCritica(); ActivarInts(); RegiaoNaoCritica();...  Problema  É muito perigoso dar ao utilizador a possibilidade de desactivar as interrupções (imagina-se facilmente porquê) 27 Mecanismos de Sincronização  Trincos lógicos (locks)  Outra ideia é ter uma variável binária, partilhada por vários processos, que controla o acesso à região crítica... while (lock==0); lock = 0; RegiaoCritica(); lock = 1;...  Problemas:  Pode falhar na garantia da exclusão mútua.  Conduz a uma espera activa 28 Mecanismos de Sincronização  Espera Activa Um processo ocupa o CPU sem realizar processamento útil, até poder entrar na região crítica.  As esperas activas devem ser evitadas porque  reduzem a eficiência do processador  podem originar um problema designado por problema da inversão da prioridade  Um processo prioritário pode dar entrada no sistema sem que outro processo liberte o acesso à região crítica, monopolizando o CPU e ficando infinitamente à espera. 29 Mecanismos de Sincronização  Instrução TSL (Test and Set Lock)  Uma instrução do processador carrega num registo o valor lido de uma posição e de seguida escreve nessa posição um valor diferente de zero (e.g. 1)... while (TSL(lock)!=0); RegiaoCritica(); lock = 0; RegiaoNaoCritica();...  Problema  Resolve a exclusão mútua, mas conduz também a uma espera activa... 30 Mecanismos de Sincronização  Sleep e Wakeup  Duas chamadas ao sistema que funcionam do seguinte modo:  Sleep() – causa bloqueio ao processo que a invoca  Wakeup(PID) – desbloqueia o processo identificado por PID  A utilização destas duas chamadas evita esperas activas, e em conjunto com outros mecanismos (e.g. TSL) consegue-se garantir a exclusão mútua  Problema  lost Wakeup signal – um processo manda “acordar” o outro sem este ter “adormecido” ainda 31 Mecanismos de Sincronização  Semáforos  Propostos em 1965 por Dijkstra e muito utilizados hoje em dia (embora com variantes)  Um semáforo consiste basicamente num número inteiro não negativo  Foram originalmente sugeridas duas operações atómicas (indivisíveis) sob o ponto de vista do SO :  UP(Sem) – Incrementa em uma unidade o valor do semáforo Sem  DOWN(Sem) – Tenta decrementar em uma unidade o semáforo Sem. Caso o semáforo esteja a “0”, o processo que invoca DOWN bloqueia até que o valor do semáforo permita o decremento e a operação seja finalizada 32 Mecanismos de Sincronização  Semáforos – protecção da região crítica... DOWN(S); RegiaoCritica(); UP(S); RegiaoNaoCritica();... 33 Problema do Consumidor e Produtor  Dois processos partilham um buffer (ou array) de dimensão finita N:  processo produtor – coloca elementos no buffer  processo consumidor – extrai elementos do buffer while (TRUE) while (TRUE) { { Item = ProduzirItem(); Item = RetirarItem(); DepositarItem(Item); ConsumirItem(Item); } } 34 Problema do Consumidor e Produtor  O código proposto apresenta vários problemas...  Não se impede a ocorrência das seguintes situações:  o consumidor tenta extrair um elemento quando o buffer está vazio  o produtor tenta colocar um elemento no buffer quando este está cheio  O buffer é partilhado pelos dois processos, logo o seu acesso constitui uma região crítica – não está garantida a exclusão mútua  Estes problemas podem ser todos resolvidos utilizando semáforos 35 Problema do Consumidor e Produtor Inicialização dos semáforos Livre - inicializado com N (N é a capacidade do buffer); Ocups – incializado a 0; Mutex – inicializado a 1; while (TRUE) while (TRUE) { { Item = ProduzirItem(); DOWN(Ocups); DOWN(Livres); DOWN(Mutex); DOWN(Mutex); Item = RetirarItem(); DepositarItem(Item); UP(Mutex); UP(Mutex); UP(Livres) UP(Ocups); ConsumirItem(Item); } } 36 Deadlocks  Quando se elabora um programa que envolvam mecanismos de sincronização é necessário ter muito cuidado...  No problema anterior, o que pode acontecer se trocarmos a ordem dos DOWNs e se considerarmos que o buffer está vazio ?  Com a troca dos semáforos existe a possibilidade de ambos os processos bloquearem – esta situação designa- se deadlock 37 Deadlocks  Definição: Um conjunto de processos está num deadlock se cada um dos processos está bloqueado à espera de um sinal dependente de outro processo nesse conjunto. Exemplo X,Y e Z são Processo A Processo B Processo C inicializados a 1 DOWN(X) DOWN(Y) DOWN(Z) DOWN(Y) DOWN(Z) DOWN(X)......... UP(Y) UP(Z) UP(X) Comutações do CPU UP(X) UP(Y) UP(Z) 38 Outros Mecanismos  Mutex  Basicamente um semáforo mais simples que apenas assume os valores 0 e 1 (semáforo binário)  São amplamente utilizados para sincronização de threads  Barreiras  Um mecanismo de sincronização utilizado em arquitecturas multiprocessador quando está envolvido processamento por fases.  A barreira não deixa passar nenhum processo para a fase seguinte antes de todos os processos terem terminado a fase corrente 39 Outros Mecanismos  Monitores  Mecanismos de sincronização de alto nível com o objectivo de simplificar a programação concorrente  A ideia consiste em definir o código correspondente às regiões críticas dentro de uma rotina especial designada “monitor”  O “monitor” garante que apenas um processo pode estar no seu interior bloqueando todos os outros que tentem aceder antes do que lá está sair  Utilizados actualmente na linguagem Java (embora de uma forma diferente da definida originalmente) 40 Comunicação - Mensagens  Dois ou mais processos distintos podem ter necessidade de trocar dados entre si  Os dados que são trocados constituem uma mensagem  Chamadas ao sistema do tipo  Enviar(Destino, Mensagem)  Receber(Origem, &Mensagem) As chamadas ao sistema poderão ser bloqueantes 41 Comunicação - Mensagens  Modelo de comunicação Processo Processo Emissor Canal Receptor Mensagem 42 Comunicação - Mensagens  Existem várias formas diferentes de conseguir a comunicação entre processos:  Ficheiro  Forma trivial  Comunicação lenta e com muitas limitações  Memória partilhada  Dois ou mais processos partilham um segmento de memória  Comunicação rápida, mas desprovida de sincronização 43 Comunicação - Mensagens  Caixa de correio (ou fila de mensagens)  Fila com capacidade para armazenar um número limitado de mensagens  Permite a troca de mensagens entre diversos processos  Cada mensagem poderá ter um tipo associado, o que facilita a ordem no acesso às mensagens  Comunicação síncrona (Rendez-vous)  De cada vez que um processo envia uma mensagem a outro, bloqueia até que o segundo a leia, trocando-se nessa altura os dados de forma directa  Poupa-se memória, mas perde-se alguma eficiência em processamento 44 IPC – Unix/Linux  No Linux existem diversos mecanismos para comunicação e sincronização de processos  Pipes  Memória Partilhada  Filas de Mensagens (ou Mailboxes)  Sockets (para comunicação entre processos em máquinas diferentes)  Semáforos 45 IPC – Linux  Pipes  Mecanismo original de comunicação entre processos nos sistemas Unix  Pipes half-duplex  Utilizados para estabelecer um canal de comunicação unidireccional entre processo pai e processo filho  O canal de comunicação reside no núcleo do SO  Limitação – só podem ser utilizados entre processos relacionados hierarquicamente  Os pipes na shell são também deste tipo 46 IPC – Linux  Pipes half-duplex  %> ps -aux | grep kde | more Pipes ps –aux grep kde more Processos 47 IPC – Linux  Pipes half-duplex  Chamadas ao sistema (funções C)  pipe(.) – criar um pipe  read(.) – ler (bloqueia se o pipe está vazio)  write(.) – escrever no pipe (bloqueia se o pipe está cheio)  close(.) – fechar um dos canais do pipe  popen(.) – lançar processo filho e abrir pipe  pclose(.) – fechar pipe após terminação do processo filho 48 IPC – Linux  Named Pipes (FIFOS)  A grande diferença em relação aos pipes half-duplex é a comunicação ser efectuada através de um ficheiro especial – FIFO – o canal de comunicação passa a residir no sistema de ficheiros.  mknod e mkfifo  Cria-se este ficheiro especial e após isso são utilizadas funções normais para escrita e leitura em ficheiros  fopen e fclose (abrir e fechar)  fgets e fputs (ler e escrever string)  etc.  Os pipes com nome podem ser utilizados para estabelecer a comunicação entre quaisquer processos 49 IPC – Linux  Filas de mensagens  Seguem o modelo de comunicação por caixa de correio  São utilizadas para comunicação entre vários processos  Chamadas ao sistema (funções C)  msgget – criação ou associação  msgsnd – envio de mensagens (causa bloqueio se a fila estiver cheia)  msgrcv – recepção de mensagem (causa bloqueio se a fila não tiver nenhuma mensagem pretendida)  msgctl – operações de controlo e remoção 50 IPC – Linux  Memória partilhada  Define-se um conjunto de posições de memória que é partilhada por dois processos  Chamadas ao sistema (funções C)  shmget – criação ou associação  shmat – mapeamento do segmento de memória partilhada para o espaço de endereçamento do processo  shmdt – liberta o segmento do espaço de endereçamento do processo  shmctl – controlo e remoção  Atenção, pois estas chamadas ao sistema não são bloqueantes, pelo que é necessária a existência de mecanismos de sincronização 51 IPC - Linux  Semáforos  No Unix/Linux, existem algumas extensões às operações sobre semáforos atrás descritas:  Podem-se efectuar UPs e DOWNs com mais do que uma unidade  Pode-se operar com semáforos como se estes fossem binários  Chamadas ao sistema (funções C)  semget – criação ou associação a um grupo de semáforos  semop – operações sobre um grupo de semáforos  semctl – controlo, inicialização e remoção 52 Sequenciamento  Quando ocorre uma comutação de processos, o sequenciador (scheduler) escolhe um processo para o qual se atribui o CPU  A escolha é feita de acordo com um dado algoritmo de sequenciamento  Após a escolha do sequenciador, o despachante (dispatcher) encarrega-se de colocar o processo em execução.  O projecto do sequenciador de processos deve ter em conta as características do sistema em causa  Sistema batch  Sistema interactivo  Sistema em tempo real 53 Sequenciamento  Objectivos do sequenciamento (scheduling)  Justiça – garantir que todos os processos terão direito a tempo de CPU  Equilíbrio – manter os recursos do sistema com uma taxa de ocupação equilibrada  Prioridades – dar maior tempo de CPU aos processos com maior importância  Previsibilidade – um mesmo programa deve ser correctamente executado, independentemente da carga do sistema 54 Sequenciamento  Objectivos do sequenciamento (scheduling)  Maximizar o nº de processos concluídos por unidade de tempo  Maximizar a taxa de utilização do CPU em processamento útil  Minimizar o tempo de resposta  Maximizar o número de utilizadores interactivos  Cumprir os deadlines (em sistemas de tempo real) Alguns dos objectivos são contraditórios... 55 Sequenciamento  Comportamento dos processos  I/O-bound  Processo caracterizado por uma taxa elevada de operações I/O face à utilização do CPU tempo CPU I/O  Compute-bound Processo caracterizado por uma taxa elevada de utilização do CPU face a operações de I/O tempo CPU I/O 56 Sequenciamento  Sequenciamento com preempção (Preemptive scheduling)  O algoritmo de sequenciamento corre  Quando o processo que ocupa o CPU bloqueia  Em instantes temporais pré-determinados (interrupção do relógio)  Quando entra um processo prioritário (em sistemas de tempo-real)  Sequenciamento sem preempção (Non-preemptive scheduling)  O algoritmo de sequenciamento só corre após o bloqueio do processo que ocupa o CPU  Operação de I/O  Bloqueio num semáforo  Ocorrência de Page fault, etc. 57 Algoritmos de Sequenciamento  First-come, first-served (ou FIFO)  O CPU é atribuído aos processos pela sua ordem de chegada  Cada processo monopoliza o CPU até terminar, ou até bloquear numa operação de I/O  Características:  Algoritmo muito simples  Não é aplicável para processamento interactivo, mas pode ser utilizado em conjunto com outros algoritmos  Utilizado em sistemas batch 58 Algoritmos de Sequenciamento  Round-robin  Cada processo tem direito a um certo tempo de CPU – o quantum  Após o fim do quantum é colocado no fim da fila dos processos executáveis D C B A CPU Fim do quantum  Características A D C B CPU  Trata todos os processos de modo igual  Permite interactividade  Utilizado em conjunto com outros algoritmos 59 Algoritmos de Sequenciamento  Round-robin  O dimensionamento do quantum pode ter um impacto muito forte no desempenho do sistema  Quantum pequeno – o CPU perde rendimento...  Quantum grande – aumenta o rendimento, mas perde-se interactividade... Quantum Overhead tempo Tempo de processame nto útil Quantum Rendimento   Tempo de processame nto total Quantum  Overhead  Overhead – tempo necessário para o SO actualizar estruturas quando ocorre uma comutação de processos 60 Algoritmos de Sequenciamento  Prioridades  Existem processos mais importantes do que outros  A cada processo é atribuído um valor de prioridade  O sequenciador ordena os processos por ordem de prioridade  O CPU é atribuído ao processo com maior prioridade  Para evitar que processos prioritários monopolizem o CPU, a prioridade poderá ter duas componentes  Prioridade = prioridade base + prioridade dinâmica  Base – valor fixo, correspondendo à prioridade com que o processo é iniciado  Dinâmica – valor variável ao longo do tempo, calculada pelo sequenciador em certos instantes temporais 61 Algoritmos de Sequenciamento  Prioridades  Prioridades dinâmicas (exemplo de algoritmo simples)  Definir a prioridade dinâmica com base na fracção de tempo do quantum – f – que um processo utilizou antes de iniciar uma operação de I/O  Prioridade dinâmica = 1/f  Com este algoritmo beneficiam-se os processos I/O-bound Quantum = 10 ms Bloqueio ao fim de 1 ms => prior. din. = 10 Bloqueio ao fim de 2 ms => prior. din. = 5 Bloqueio ao fim de 5 ms => prior. din. = 2 62 Algoritmos de Sequenciamento  Multifila  Algoritmo que utiliza várias filas round-robin (ou FIFO) com prioridades e quantuns diferentes em cada uma  Quantuns pequenos para prioridades altas  Quantuns grandes para prioridades baixas  Em cada comutação um processo baixa a prioridade mas aumenta o seu quantum  Processos I/O-bound ficarão com prioridades altas e quantuns pequenos  Processos compute-bound ficarão com prioridades baixas, mas correm de um modo mais eficiente com quantuns altos 63 Algoritmos de Sequenciamento  Multifila  Exemplo Prioridade Processos 4 A B Quantum = q 3 C Quantum = 2q 2 D E F Quantum = 4q 1 G Quantum = 8q  Calcular quantas comutações seriam necessárias para um processo cujo tempo de execução seja de 20q. Supondo que o overhead é de q/5, calcule o rendimento e compare com o obtido se o quantum fosse sempre q. 64 Sequenciamento UNIX (caso geral)  Baseado em filas de prioridades divididas em modo núcleo (negativas) e modo utilizador (positivas)  Algoritmo round-robin em cada fila de prioridade Maior prioridade...... -4 Disco I/O Modo núcleo -3 Terminal output -2 Terminal input -1 Terminação do filho 0 Prioridade 0 1 Prioridade 1 2 Prioridade 2 Modo utilizador 3 Prioridade 3 4 Prioridade 4...... Menor prioridade 65 Sequenciamento UNIX (caso geral)  Prioridades em modo núcleo  Várias filas com prioridades negativas, cada uma delas correspondendo à saída de um bloqueio causado por uma dada situação em particular  Espera pela terminação do filho  Espera por input do terminal  Etc.  O objectivo deste esquema consistem em  acelerar pedidos de I/O dos processos I/O-bound;  servir rapidamente processos interactivos;  libertar rapidamente os processos do modo núcleo. 66 Sequenciamento UNIX (caso geral)  Prioridades em modo utilizador  Prioridades dinâmicas que visam lidar com processos compute-bound  A prioridade é calculada de acordo com  Prioridade = Prioridade base + k*T_CPU + Nice  T_CPU (utilização do CPU) pode ser calculada do seguinte modo: T _ CPU i1   T T_CPU i  2  Deste modo, não se penaliza tanto um processo compute-bound 67 Sequenciamento LINUX  Funcionamento do algoritmo  A escolha do sequenciador é feita segundo a goodness de cada thread – escolhe o que obter goodness mais alta if (classe == realtime) goodness = 1000 + prioridade; if (classe == timesharing && quantum>0) goodness = quantum + prioridade; if (classe == timesharing && quantum==0) goodness = 0;  Valores de prioridade entre 1 e 40 (40 é a mais elevada) – 20 é o valor por defeito  O quantum é medido em clock ticks (chamados jiffys). Cada jiffy corresponde a 10ms (por defeito)  Em cada clock tick, o valor do quantum é decrementado em uma unidade 68 Sequenciamento LINUX  Uma thread perde o processador se:  O seu quantum chegar a 0;  Bloquear (semáforo, I/O, etc.)  Uma thread com maior goodness desbloquear  Nessa altura é calculado um novo valor para os quantuns (em jiffys) de todas as threads (activas e bloqueadas)  Novo quantum = quantum que sobrou / 2 + prioridade  O objectivo é beneficiar threads I/O-bound  I/O-bound – o quantum tende para o dobro do valor da prioridade, consequentemente aumentando a goodness  compute-bound – o quantum tende para um valor igual ao da prioridade 69 Agradecimentos Alguns slides e outros materiais utilizados nesta unidade curricular são:  Adaptações de elementos de edições anteriores  Adaptações de materiais disponibilizados na Internet ou associados a livros de texto 70

Use Quizgecko on...
Browser
Browser