• Nenhum resultado encontrado

TI Básico. Sistemas Operacionais. Professor: Ricardo Quintão Site:

N/A
N/A
Protected

Academic year: 2021

Share "TI Básico. Sistemas Operacionais. Professor: Ricardo Quintão Site:"

Copied!
390
0
0

Texto

(1)

TI – Básico

Sistemas Operacionais

Professor: Ricardo Quintão

e-mail: rgquintao@gmail.com

(2)

Esconder a Complexidade do Hardware.

Devido a grande complexidade do hardware e também a dificuldade de manipular tal equipamento, o SO apresenta ao usuário uma máquina de forma que os seus recursos sejam acessados sem que haja necessidade de conhecimentos técnicos sobre o hardware instalado.

Prover Portabilidade dos Softwares tornando-os o máximo possível independente do Hardware.

Devido a grande variedade de equipamentos existentes e, consequentemente, formas diferentes de acessar tais equipamentos, o SO oferece uma forma padronizada de comunicação, independente do fabricante ou modelo do equipamento.

Gerenciamento do uso dos recursos do equipamento.

Quando existem diversos processos sendo executados no equipamento, estes processos precisarão acessar os recursos existentes (CPU, Memória, E/S). Para que não haja problemas na disputa por esses recursos, o SO faz a gerência definindo quando, como e por quem tais recursos serão utilizados.

(3)

Como um Sistema Operacional consegue se comunicar e gerenciar a vasta gama de equipamentos com seus códigos e formatos de comunicação diferentes e proprietários?

– Para realizar esta tarefa, foram criados módulos de comunicação específicos para cada equipamento.

– Estes módulos possuem todas as informações sobre o que o equipamento é capaz de realizar e todos os códigos e formatos necessários para configurar e acessar tais recursos no equipamento.

– Podemos visualizar estes módulos como sendo um manual explicativo dos recursos do equipamento.

(4)

– Tais módulos são chamados de “DRIVER”.

– Para que o SO consiga acessar o dispositivo, ele precisa ter acesso ao seu respectivo driver.

– O driver é um software que oferece ao sistema a capacidade de se comunicar com um determinado dispositivo.

(5)

A figura abaixo mostra esta organização:

Objetivos dos Sistemas Operacionais

Núcleo ou Kernel Impressora Placa de Rede Scanner Placa de Vídeo Driver Driver Driver Driver SO completo e personalizado para o equipamento

(6)

Sistemas Monoprogramáveis ou Monotarefa.

 Eles se caracterizam por permitir que o processador, a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa.

 Devido a isso, enquanto o programa aguarda por um evento, o processador permanece ocioso, sem realizar qualquer tipo de processamento.

 A memória é subutilizada caso o programa não a preencha totalmente.

Tipos de Sistemas Operacionais

(7)

Sistemas Multiprogramáveis ou Multitarefa.

 Neste tipo de sistema, os recursos computacionais são compartilhados entre os diversos usuários e aplicações.

 Enquanto um programa espera por uma operação de leitura ou gravação, outros programas podem estar sendo processados neste mesmo intervalo de tempo.

 Existe o compartilhamento da memória e do processador.

 O sistema operacional se preocupa em gerenciar o acesso concorrente aos seus diversos recursos de forma ordenada e protegida entre os diversos programas.

(8)

Sistemas com Múltiplos Processadores ou Multiprocessado.

 Este sistema se caracteriza por possuir duas ou mais CPUs interligadas e trabalhando em conjunto.

 A vantagem deste tipo de sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador.

(9)

Sistemas Multiprogramáveis ou Multitarefa. – Sistema Batch.

 O sistema batch tem a característica de não exigir a interação do usuário com a aplicação.

 Todas as entradas e saídas de dados da aplicação são implementadas por algum tipo de memória secundária, geralmente arquivos em disco.

 Atualmente, os sistemas operacionais implementam ou simulam o processamento batch, não existindo sistemas exclusivamente dedicados a este tipo de processamento.

(10)

Sistemas Multiprogramáveis ou Multitarefa.

– Sistema de Tempo Compartilhado (Time-Sharing).

 Estes sistemas permitem que diversos programas sejam executados a partir da divisão do tempo do processador em pequenos intervalos, denominados fatia de tempo (time-slice ou quantum).

 Caso a fatia de tempo não seja suficiente para a conclusão do programa, ele é interrompido pelo sistema operacional e substituído por um outro programa, enquanto aguarda por uma nova fatia de tempo.

 O sistema cria para cada usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está dedicado exclusivamente a ele.

(11)

Sistemas Multiprogramáveis ou Multitarefa. – Sistema de Tempo Real

 Estes sistemas são implementados de forma semelhante aos sistemas de tempo compartilhado.

 O que caracteriza a diferença entre os dois tipos de sistemas é o tempo exigido no processamento das aplicações.

 Enquanto em sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de processamento devem estar dentro de limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis.

(12)

Sistemas com Múltiplos Processadores. – Sistemas Fortemente Acoplados

Neste sistema existem vários processadores compartilhando uma única memória física e dispositivos de E/S, sendo gerenciados por apenas um sistema operacional.

– Sistemas Fracamente Acoplados

Estes sistemas caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu próprio sistema operacional e gerenciando seus próprios recursos.

(13)

Ciclo de Entrada e Saída

Operações de Entrada e Saída

Configurar o Dispositivo

Verificar se o Dispositivo está pronto

Realizar a transferência de um bloco de dados Verificar se os dados acabaram Final da E/S Não Sim Sim Não

(14)

• Existem três maneira básicas de executar operações de Entrada e Saída.

– Entrada e Saída controlada por programa ou polling.

 Nesta técnica, o processador sincroniza-se com o periférico para o início da transferência de dados.

 Após iniciada a transferência, o sistema fica permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final.

 Este controle mantinha o processador ocupado até o término da operação de E/S.

 Como o processador executa uma instrução muito mais rapidamente que a realização de uma operação de E/S, havia um enorme desperdício de tempo da CPU.

(15)

Operações de Entrada e Saída

A

Configurar o Dispositivo Verificar se o Dispositivo está pronto Realizar a transferência de um bloco de dados

Verificar se os dados acabaram

Ciclo de E/S

Entrada e Saída controlada por programa ou polling

(16)

– Entrada e Saída controlada por interrupção.

 Com a implementação do mecanismo de interrupção, as operações de E/S podem ser realizadas de uma forma mais eficiente.

 Neste caso, o controlador interrompe o processador para avisar do término da operação de E/S.

 Com este mecanismo, o processador, após a execução de um comando de leitura ou gravação, permanece livre para o processamento de outras tarefas.  O controlador por sua vez, ao receber um sinal de leitura fica encarregado de ler

os blocos do disco e armazená-los em memória ou registradores próprios.

Operações de Entrada e Saída

(17)

– Entrada e Saída controlada por interrupção (Continuação).

 Em seguida, o controlador sinaliza uma interrupção ao processador.

 Quando o processador atender à interrupção, a rotina responsável pelo tratamento transfere os dados dos registradores do controlador para a memória principal.

 Ao término da transferência, o processador pode voltar a executar o programa interrompido e o controlador fica novamente disponível para outra operação.

(18)

Operações de Entrada e Saída

A

Configurar o Dispositivo Verificar se o Dispositivo está pronto Realizar a transferência de um bloco de dados

Verificar se os dados acabaram

Ciclo de E/S

Entrada e Saída controlada por interrupção

E/S

IRQ do dispositivo

(19)

– Entrada e Saída controlada por DMA (Acesso Direto à Memória).

 Esta técnica permite que um bloco de dados seja transferido entre a memória principal e dispositivos de E/S sem a intervenção do processador, exceto no início e no final da transferência.

 Quando o sistema deseja ler ou gravar um bloco de dados, o processador informa ao controlador sua localização, o dispositivo de E/S, a posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco.

 Com estas informações, o controlador de DMA realiza a transferência entre o periférico e a memória principal, e o processador somente é interrompido no final da operação.

 A área de memória utilizada pelo controlador de DMA é chamada de buffer de entrada e saída.

(20)

– Entrada e Saída controlada por DMA (Continuação).

 No momento em que uma transferência de dados através da técnica de DMA é realizada, o controlador deve assumir, momentaneamente, o controle do barramento.

 Como a utilização do barramento é exclusiva de um dispositivo, o processador deve suspender o acesso ao barramento, temporariamente, durante a operação de transferência.

 Este procedimento não gera uma paralização, e o processador pode realizar tarefas, desde que sem a utilização do barramento, como um acesso à memória cache.

(21)

Operações de Entrada e Saída

A

Configurar o Dispositivo Verificar se o Dispositivo está pronto Realizar a transferência de um bloco de dados

Verificar se os dados acabaram

Ciclo de E/S

Entrada e Saída controlada por DMA

E/S IRQ do dispositivo

B

Configurar o DMA IRQ do DMA DMA realiza a transferência CPU E/S MEM DMA Evitar Evitar

(22)

• Uma interrupção é sempre gerada por algum evento externo ao programa e, nesse caso, independe da instrução que está sendo executada.

• Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa.

• Nesse caso, o processador deve interromper o programa para tratar o término da operação.

• Ao final da execução de cada instrução, a unidade de controle verifica a ocorrência de algum tipo de interrupção.

Operações de Entrada e Saída

Interrupção X Exceção

(23)

• Nesse caso, o programa em execução é interrompido e o controle desviado para uma rotina responsável por tratar o evento ocorrido, denominada rotina de

tratamento de interrupção.

• Para que o programa possa posteriormente voltar a ser executado, é necessário que, no momento da interrupção, um conjunto de informações sobre a sua execução seja preservado.

• Essas informações consistem no conteúdo de registradores, que deverão ser restaurados para a continuação do programa.

Operações de Entrada e Saída

Interrupção X Exceção

(24)

Operações de Entrada e Saída

Interrupção X Exceção

Identifica a origem da interrupção Salva o conteúdo dos registradores na pilha de controle

Aplicação

Rotina de Tratamento

Obtém o endereço da rotina de tratamento

Restaura o conteúdo dos registradores

Interrupção ou Exceção

(25)

Vetor de Interrupção 0 1 2 3 4 5 6 7 End. 7 End. 0 End. 1 End. 2 End. 3 End. 4 End. 5 End. 6

Operações de Entrada e Saída

Interrupção X Exceção

CPU Controlador de Interrupções IRQ INTA IRQ INTA BD

Número do Pino de IRQ

Clock do Sistema Controladora de Disco Teclado Mouse

.

.

.

.

.

RT referente ao Pino 0 RT referente ao Pino 1 RT referente ao Pino 2 RT referente ao Pino 3 RT referente ao Pino 4 RT referente ao Pino 5 RT referente ao Pino 6 RT referente ao Pino 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

Arquitetura do Sistema de Interrupção

(26)

• Para cada tipo de interrupção existe uma rotina de tratamento associada, para a qual o fluxo de execução deve ser desviado.

• A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina de tratamento.

• No momento da ocorrência de uma interrupção, o processador deve saber para qual rotina de tratamento deve ser desviado o fluxo de execução.

O principal método utiliza uma estrutura de dados chamada vetor de

interrupção, que contém o endereço inicial de todas as rotinas de tratamento

existentes associadas a cada tipo de evento.

Operações de Entrada e Saída

Interrupção X Exceção

(27)

• Uma exceção é semelhante a uma interrupção, sendo a principal diferença o motivo pelo qual o evento é gerado.

• A exceção é resultado direto da execução de uma instrução do próprio programa, como:

– Divisão de um número por zero;

– Overflow em uma operação aritmética; – Instrução Inválida;

– Instrução Ilegal, dentre outras...

Operações de Entrada e Saída

Interrupção X Exceção

(28)

• O sistema operacional é formado por um conjunto de rotinas que oferecem serviços aos usuários e às aplicações.

Esse conjunto de rotinas é denominado núcleo do sistema ou kernel.

• A maioria dos sistemas operacionais vem acompanhada de utilitários, linguagem de comandos, que são ferramentas de apoio ao usuário, porém não são parte do kernel.

(29)

Principais Funções do Núcleo do Sistema.

– Tratamento de interrupções e exceções;

– Criação e eliminação de processos e threads;

– Sincronização e comunicação entre processos e threads; – Escalonamento e controle dos processos e threads;

– Gerência de memória;

– Gerência do sistema de arquivo; – Gerência de dispositivos de E/S;

– Suporte a redes locais e distribuídas; – Contabilização do uso do sistema; – Auditoria e segurança do sistema.

Estrutura do Sistema Operacional

Funções de Kernel

(30)

• Para que o sistema possa gerenciar a máquina, ele tem que estar em um nível de privilégio superior ao dos demais processos que estão em execução.

• Se os processos estiverem no mesmo nível de privilégio que o SO, todos terão o mesmo poder de mando, o que levará ao caos e consequentemente, nada funcionará corretamente.

• Para conseguir ter privilégios superiores, o SO utiliza um recurso existente em diversos processadores conhecido como modo de acesso.

Estrutura do Sistema Operacional

Modos de Acesso

(31)

Em geral, os processadores possuem dois modos de acessos: modo usuário e

modo kernel.

• Quando o processador trabalha no modo usuário, só é permitido o acesso a parte do conjunto de instruções. As instruções permitidas são chamadas de instruções não-privilegiadas.

• Além disso, diversos outros mecanismos de proteção e restrição de acesso entram em funcionamento.

Estrutura do Sistema Operacional

Modos de Acesso

(32)

• No modo kernel, todo o conjunto de instruções pode ser executado. As instruções que só podem ser executadas neste modo são conhecidas por instruções privilegiadas.

• Esta separação de instruções privilegiadas e não-privilegiadas pode ser vista como sendo privilegiadas as instruções que colocam em risco o funcionamento do SO e não-privilegiadas são as instruções inofensivas, isto é, as que não oferecem risco ao SO.

Estrutura do Sistema Operacional

Modos de Acesso

(33)

Usuário

Estrutura do Sistema Operacional

Modos de Acesso

Kernel

Modos de Acesso da CPU

Conjunto de Instruções

Modo

Kernel

Modo

Usuário

Não-Privilegiadas

(Inofensivas)

Privilegiadas

(Perigosas)

(34)

• As rotinas do SO compõem o núcleo do sistema, oferecendo serviços aos usuários e suas aplicações.

• Todas as funções do núcleo são implementadas por rotinas do sistema que necessariamente possuem em seu código instruções privilegiadas.

• A partir desta condição, para que estas rotinas possam ser executadas, o processador deve estar obrigatoriamente em modo kernel, o que exige a implementação de mecanismos de proteção para garantir a confiabilidade do sistema.

Estrutura do Sistema Operacional

(35)

• Todo o controle de execução de rotinas do sistema operacional é realizado pelo mecanismo conhecido como system call.

• Toda vez que uma aplicação desejar chamar uma rotina do sistema operacional, o mecanismo de system call é ativado.

• Inicialmente, o SO verificará se a aplicação possui os privilégios necessários para executar a rotina desejada.

Estrutura do Sistema Operacional

(36)

• Em caso negativo, o SO impedirá o desvio para a rotina, sinalizando ao programa chamador que a operação não é possível.

• Este é um mecanismo de proteção por software no qual o SO garante que as aplicações só poderão executar rotinas do sistema que estão previamente autorizadas.

• Considerando que a aplicação possua o devido privilégio, o sistema primeiramente salva o conteúdo corrente dos registradores, troca o modo de acesso do processador de usuário para kernel e realiza o desvio para a rotina alterando o registrador PC com o endereço da rotina chamada.

Estrutura do Sistema Operacional

(37)

Ao término da execução da rotina, o modo de acesso é alterado de kernel

para usuário e o contexto dos registradores restaurado para que a

aplicação continue a execução a partir da instrução que chamou a rotina do

sistema.

Estrutura do Sistema Operacional

(38)

Estrutura do Sistema Operacional

Rotinas do SO e Chamadas ao Sistema (System Calls)

Verifica as permissões para execução da Rotina do SO. Se

permitido, redirecionar para a Rotina.

Salva o contexto dos registradores.

Altera o modo de acesso do processador para usuário.

Restaura o contexto dos registradores.

Aplicação

Rotina do SO

M odo k ernel M odo U s uário Mod o Usuário

Altera o modo de acesso do processador para kernel.

(39)

A arquitetura Monolítica.

– Esta pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamente e depois linkados, formando um grande programa executável, onde os módulos podem interagir livremente. – Os primeiros sistemas operacionais foram desenvolvidos com base neste

modelo, o que tornava seu desenvolvimento, e principalmente, sua manutenção bastante difíceis.

– Devido a sua simplicidade e bom desempenho, a estrutura monolítica foi adotada no projeto do MS-DOS e nos primeiros sistemas UNIX.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(40)

A arquitetura Monolítica.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

Hardware System Call Modo kernel Modo Usuário Aplicação Aplicação

(41)

A arquitetura em Camadas.

– Com o aumento da complexidade e do tamanho do código dos sistemas operacionais, técnicas de programação estruturada e modular foram incorporadas ao seu projeto.

– Na arquitetura de camadas, o sistema é dividido em níveis sobrepostos.

– Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pelas camada superiores.

– Neste tipo de implementação, as camadas mais internas são mais privilegiadas que as mais externas.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(42)

A arquitetura em Camadas (Continuação).

– A vantagem da estruturação em camadas é isolar as funções do sistema operacional, facilitando sua manutenção e depuração, além de criar uma hierarquia de níveis de modos de acesso, protegendo as camadas mais internas.

– Uma desvantagem para o modelo de camadas é o desempenho.

– Cada nova camada implica em uma mudança no modo de acesso.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(43)

A arquitetura em Camadas (Continuação).

– Atualmente, a maioria dos sistema comerciais utiliza o modelo de duas camadas, onde existem os modos de acesso usuário (não-privilegiado) e kernel (privilegiado).

– A maioria das versões do UNIX e o Windows da Microsoft está baseada neste modelo.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(44)

Usuário Supervisor Executivo

A arquitetura em Camadas.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(45)

Arquitetura Microkernel ou Cliente-Servidor.

– Uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema operacional o menor e mais simples possível.

– Para implementar esta idéia, os serviços do sistema são disponibilizados através de processos, onde cada um é responsável por oferecer um conjunto específico de funções, como gerência de arquivos, gerência de processos, gerência de memória, escalonamento, etc.

– Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(46)

Arquitetura Microkernel ou Cliente-Servidor (Continuação).

– Neste caso, a aplicação que solicita o serviço é chamada de cliente, enquanto o processo que responde à solicitação é chamado de servidor. – A principal função do núcleo é realizar a comunicação, ou seja, a troca de

mensagens entre cliente e servidor.

– Um cliente, que pode ser uma aplicação de um usuário ou um outro componente do sistema operacional, solicita um serviço enviando uma mensagem para o servidor.

– O servidor responde ao cliente através de uma outra mensagem.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(47)

Arquitetura Microkernel ou Cliente-Servidor (Continuação).

– A utilização deste modelo permite que os servidores executem em modo usuário, ou seja, não tenham acesso direto a certos componentes do sistema.

– Apenas o núcleo do sistema, responsável pela comunicação entre clientes e servidores, executa no modo kernel.

– Como consequência, se ocorrer um erro em um servidor, este poderá parar, mas o sistema não ficará inteiramente comprometido, aumentando assim a sua disponibilidade.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(48)

Arquitetura Microkernel ou Cliente-Servidor.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

Hardware

Microkernel

Modo kernel Modo Usuário

Aplicação

Servidor de

Arquivo

Servidor de

Memória

Servidor de

Impressão

(49)

Máquinas Virtuais.

– O modelo de máquina virtual cria um nível intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas virtuais.

– Este nível cria diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do hardware, incluindo os modos de acesso, interrupções, dispositivos de E/S.

– Como cada máquina virtual é independente das demais, é possível que cada MV tenha seu próprio sistema operacional e que seus usuários executem suas aplicações como se todo o computador estivesse dedicado a cada um deles.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(50)

Máquinas Virtuais (Continuação).

– Além de permitir a convivência de sistemas operacionais diferentes no mesmo computador, este modelo cria o isolamento total entre cada MV, oferecendo grande segurança para cada máquina virtual.

– Se, por exemplo, uma MV executar uma aplicação que comprometa o funcionamento do sistema operacional, as demais máquinas virtuais não sofrerão problema.

Estrutura do Sistema Operacional

Arquiteturas do Kernel

(51)

Estrutura do Sistema Operacional

Arquiteturas do Kernel

Hardware

Gerência de Máquinas Virtuais (MV)

MV

1

MV

3

MV

n

SO

1

SO

3

SO

n

AP

1

AP

3

AP

n

MV

2

SO

2

AP

2

Máquina Virtual.

(52)
(53)

• A gerência de uma ambiente multiprogramável é função exclusiva do sistema operacional que deve controlar a execução dos diversos programas e o uso concorrente do processador.

• Para isso, um programa ao ser executado deve estar sempre associado a um processo.

• O conceito de processo é a base para a implementação de um sistema multiprogramável.

• O processador é projetado para executar instruções a partir do ciclo de busca e execução.

(54)

• Na visão da camada de hardware, o processador executa instruções sem distinguir qual programa encontra-se em processamento.

• É de responsabilidade do sistema operacional implementar a concorrência entre programas gerenciando a alternância da execução de instruções na CPU de maneira controlada e segura.

• Neste sentido, o conceito de processo torna-se essencial para que os sistemas multiprogramáveis implementem a concorrência de diversos programas e atendam a múltiplos usuários simultaneamente.

• Um processo pode ser entendido inicialmente como um programa em execução, só que seu conceito é mais abrangente.

(55)

• Pode-se definir mais precisamente um processo como sendo o conjunto necessário de informações para que o sistema operacional implemente a concorrência de programas.

• O processo também pode ser definido como sendo o ambiente onde um programa é executado.

• Este ambiente, além das informações sobre a execução, possui também a quantidade de recursos do sistema que cada programa pode utilizar.

• O resultado da execução de um mesmo programa pode variar dependendo do processo em que é executado, ou seja, em função dos recursos que são disponibilizados para o programa.

(56)

• Um processo é formado por três partes conhecidas como contexto de hardware, contexto de software e espaço de endereçamento, que juntos mantêm todas as informações necessárias à execução de um programa.

Estrutura de um Processo

Programa Contexto de Software Contexto de Hardware Espaço de Endereçamento Estrutura de um Processo

(57)

Contexto de Hardware

– O contexto de hardware de um processo armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico, como o PC, SP (stack pointer) e o registrador de status.

– Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador.

– No momento em que o processo perde a utilização da CPU, o sistema salva as informações no contexto de hardware do processo.

– O contexto de hardware é fundamental para a implementação dos sistemas multiprogramáveis, onde os processos se alternam na utilização da CPU, podendo ser interrompidos e posteriormente restaurados.

(58)

Contexto de Hardware (Continuação)

– O sistema operacional gerencia a troca de contexto, base para a implementação da concorrência, que consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carregá-lo com os valores referentes ao do novo processo que será executado.

– Esta operação se resume em substituir o contexto de hardware de um processo pelo do outro.

(59)

Estrutura de um Processo

Troca de Contexto

Processo A Processo B

Carrega o conteúdo dos registradores do Processo B

Salva o conteúdo dos registradores do Processo A

Salva o conteúdo dos registradores do Processo B

Carrega o conteúdo dos registradores do Processo A

Sistema Operacional

Fatia de Tempo

(60)

Contexto de Software

– No contexto de software de um processo são especificados limites e características dos recursos que podem ser alocados pelo processo.

– Muitas destas características são determinadas no momento da criação do processo, enquanto outras podem ser alteradas durante sua existência.

– A maior parte das informações do contexto de software do processo provém de um arquivo do sistema operacional, conhecido como arquivo de usuários.

– Neste arquivo são especificados os limites dos recursos que cada processo pode alocar, sendo gerenciado pelo administrador do sistema.

– O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégios.

(61)

Contexto de Software (Continuação)

– Identificação

 Cada processo criado pelo sistema recebe uma identificação única (PID – Process Identification) representada por um número.

 Através do PID, o sistema operacional e outros processos podem fazer referência a qualquer processo existente, consultando o seu contexto ou alterando uma de suas características.

 O processo também possui a identificação do usuário.

 Cada usuário possui uma identificação única no sistema (UID – User Identification), atribuída ao processo no momento de sua criação.

 A UID permite implementar um modelo de segurança, onde apenas os objetos que possuem a mesma UID do usuário podem ser acessados.

(62)

Contexto de Software (Continuação)

– Quotas

 As quotas são os limites de cada recurso do sistema que um processo pode alocar.

 Caso uma quota seja insuficiente, o processo poderá ser executado lentamente, interrompido durante seu processamento ou mesmo não ser executado.

 Alguns exemplos de quotas presentes na maioria dos sistemas operacionais são: – Número máximo de arquivos abertos simultaneamente;

– Tamanho máximo de memória principal e secundária que o processo pode alocar;

– Número máximo de operações de E/S pendentes; – Tamanho máximo do buffer para operações de E/S;

– Número máximo de processos, subprocessos e threads que podem criar; – Espaço de disco disponível.

(63)

Contexto de Software (Continuação)

– Privilégios

 Os privilégios ou direitos definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao sistema operacional.

 Privilégios que afetam o próprio processo permitem que suas características possam ser alteradas, como prioridade de execução, limites alocados na memória principal e secundária, etc.

 Já os privilégios que afetam os demais processos permitem, além da alteração de suas próprias características, alterar as de outros processos.

(64)

Contexto de Software (Continuação)

– Privilégios (Continuação)

 Privilégios que afetam o sistema são os mais amplos e poderosos, pois estão relacionados à operação e à gerência do ambiente, como a desativação do sistema, alteração de regras de segurança, criação de outros processos privilegiados, modificação de parâmetros de configuração do sistema, entre outros.

 A maioria dos SOs disponibiliza uma conta de acesso com todos estes privilégios disponíveis, com o propósito de o administrador gerenciar o sistema operacional.

(65)

Espaço de Endereçamento

– O espaço de endereçamento é a área de memória pertencente ao processo onde instruções e dados do programa são armazenados para execução. – Cada processo possui seu próprio espaço de endereçamento, que deve ser

devidamente protegido do acesso dos demais processos.

(66)

• A figura a seguir mostra as características da estrutura de um processo.

Estrutura de um Processo

Programa Contexto de Software Contexto de Hardware Espaço de Endereçamento nome PID dono (UID) prioridade de execução data/hora de criação tempo de processador privilégios registradores gerais registrador PC registrador SP registrador de status Endereços de memória principal alocados

(67)

• O processo é implementado pelo sistema operacional através de uma estrutura de dados chamada Bloco de Controle do Processo (Process Control Block –

PCB).

• A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de endereçamento de cada processo.

• Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do sistema operacional.

Estrutura de um Processo

Bloco de Controle do Processo

(68)

• O tamanho desta área, geralmente é limitado por um parâmetro do sistema operacional que permite especificar o número máximo de processos que podem ser suportados simultaneamente pelo sistema.

• Toda a gerência dos processos é realizada por intermédio de chamadas a rotinas do sistema operacional que realizam operações como criação, alteração de características, visualização, eliminação, sincronização, suspensão de processos, dentre outras.

Estrutura de um Processo

Bloco de Controle do Processo

(69)

• Abaixo temos um exemplo de PCB.

Estrutura de um Processo

Bloco de Controle do Processo

Ponteiros

Estado do processo

Nome do processo

Prioridade do processo

Registradores

Limites de memória

Lista de arquivos abertos

(70)

• Em um sistema multiprogramável, um processo não deve alocar exclusivamente a CPU, permitindo que exista um compartilhamento no uso do processador.

• Os processos passam por diferentes estados ao longo do seu processamento em função de eventos gerados pelo sistema operacional ou pelo próprio processo.

• Um processo ativo pode encontrar-se em três diferentes estados (depende do SO).

(71)

– Criação

 É quando um processo está sendo criado. O processo fica neste estado enquanto todos os recursos iniciais para o seu processamento estão sendo alocados.

Estados de um Processo

– Término

 É quando um processo chegou ao fim. O processo fica neste estado enquanto todos os seus recursos estão sendo liberados.

(72)

– Execução (running)

 Um processo é dito no estado de execução quando está sendo processado pela CPU.

 Em sistemas com apenas uma CPU, somente um processo pode estar sendo executado em um dado instante de tempo.

 Os processos se alternam na utilização do processador seguindo uma política estabelecida pelo sistema operacional.

 Em sistemas com múltiplos processadores existe a possibilidade de mais de um processo ser executado ao mesmo tempo. Também é possível um mesmo processo ser executado simultaneamente em mais de uma CPU.

(73)

– Pronto (ready)

 Um processo está no estado de pronto quando aguarda apenas para ser executado.

 O sistema operacional é responsável por determinar a ordem e os critérios pelos quais os processos em estado de pronto devem fazer uso do processador.

 Este mecanismo é conhecido como escalonamento.

 Em geral, existem vários processos no estado de pronto organizados em listas encadeadas.

(74)

– Espera (wait)

 Um processo no estado de espera aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento.

 Como exemplo, podemos citar o término de uma operação de E/S ou espera de uma determinada data e/ou hora para continuar sua execução.  Em alguns sistemas operacionais, o estado de espera pode ser chamado de

bloqueado (blocked).

 O sistema organiza os vários processos no estado de espera também em listas encadeadas.

 Em geral, os processos são separados em listas de espera associadas a cada tipo de evento.

(75)

• Um processo muda de estado durante seu processamento em função de eventos originados por ele próprio (eventos voluntários) ou pelo SO (eventos involuntários). Abaixo temos as possíveis transições que um processo pode sofrer.

Estados de um Processo

Diagrama de Transição de Estados

Execução

Espera Pronto Criação

Término

Espera Pronto

Residente na MP Não Residente na MP

(76)

Estados de um Processo

Transições

Pronto Residente na MP Execução

Execução Pronto Residente na MP Execução Espera Residente na MP Espera Residente na MP Pronto Residente na MP Espera Residente na MP Espera não Residente na MP Espera não Residente na MP Pronto não Residente na MP

Pronto não Residente na MP Pronto Residente na MP Pronto Residente na MP Pronto não Residente na MP

Execução Término

(77)

Estados de um Processo

Transições

Criação Pronto Residente na MP

• A criação de um processo ocorre a partir do momento em que o sistema operacional adiciona um novo PCB à sua estrutura e aloca um espaço de endereçamento na memória para uso.

• A partir da criação do PCB, o sistema operacional já reconhece a existência do processo, podendo gerenciá-lo e associar programas ao seu contexto para serem executados.

Execução Término

• Na eliminação de um processo, o processo é encaminhado ao estado de Término e em seguida todos os seus recursos são desalocados e o PCB eliminado pelo Sistema Operacional.

(78)

Estados de um Processo

Transições

Pronto Residente na MP Execução

• Após a criação de um processo, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda por uma oportunidade para ser executado.

• Cada Sistema Operacional tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (política de escalonamento).

• Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como término da fatia de tempo que o processo possui para sua execução.

• Nesse caso, o processo volta para a fila de pronto onde aguarda por uma nova oportunidade para continuar seu processamento.

(79)

Estados de um Processo

Transições

• Um processo em execução passa para o estado de espera por eventos gerados pelo próprio processo, como operações de E/S, ou por eventos externos.

• Um evento externo é gerado, por exemplo, quando o sistema operacional suspende por um período de tempo a execução de um processo.

• Um processo no estado de espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido.

Um processo no estado de espera sempre terá de passar pelo estado de pronto antes de poder ser novamente selecionado para execução.

• Não existe a mudança do estado de espera para o estado de execução diretamente.

Execução Espera Residente na MP

(80)

Estados de um Processo

Transições

• Quando não existe espaço suficiente na memória principal para carregar um novo processo ou para aumentar a memória de um determinado processo, o SO envia algum processo do estado de espera para o disco em um mecanismo denominado Swap out.

• Dá-se preferência aos processos no estado de espera porque normalmente o tempo de permanência neste estado é longo.

• Esta transição é a mesma apresentada para a situação de residente na memória principal.

• A única diferença é que como o processo está originariamente fora da memória principal, ele mudará de estado, indo para pronto, mas permanecendo fora da memória principal.

Espera Residente na MP Espera não Residente na MP

(81)

Estados de um Processo

Transições

• Quando o sistema percebe que já está chegando a vez deste processo ser executado, ele realiza a transferência do disco para a memória principal no procedimento chamado de Swap in. • Se não houver memória principal disponível para receber o processo, um outro será retirado

para liberar memória e então será feita a transferência.

• No caso extremo de não haver memória disponível e todos os processos do estado de espera já estarem fora da memória principal, é feita então a retirada de um processo no estado de pronto.

Pronto não Residente na MP Pronto Residente na MP

(82)

• Processos independentes, subprocessos e threads são maneiras diferentes de implementar a concorrência dentro de uma aplicação.

• Nesse caso, busca-se subdividir o código em partes para trabalharem de forma cooperativa.

• Considere um banco de dados com produtos de uma grande loja, onde vendedores fazem frequentemente consultas.

• Neste caso, a concorrência na aplicação proporciona um tempo de espera menor entre as consultas, melhorando o desempenho da aplicação e beneficiando os usuários.

(83)

• O uso de processos independentes é a maneira mais simples de implementar a concorrência em sistema multiprogramáveis.

• Neste caso, não existe vínculo do processo criado com o seu criador.

• A criação de um processo independente exige a alocação de um PCB, possuindo contextos de hardware, contextos de software e espaço de endereçamento próprios.

(84)

• A seguir temos um exemplo de processos independentes.

Processos Independentes

Processo E Processo A Processo D Processos Independentes

(85)

• Subprocessos são processos criados dentro de uma estrutura hierárquica.

• Nesse modo o processo criador é denominado processo-pai, enquanto o novo processo é chamado de subprocesso ou processo-filho.

• O subprocesso, por sua vez, pode criar outras estruturas de subprocessos.

• Uma característica desta implementação é a dependência existente entre o processo criador e o subprocesso.

(86)

• Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados.

• De modo semelhante aos processos independentes, subprocessos possuem seu próprio PCB.

• Além da dependência hierárquica entre processos e subprocessos, uma outra característica neste tipo de implementação é que subprocessos podem compartilhar quotas com o processo pai.

• Neste caso, quando um subprocesso é criado o processo-pai cede parte de suas quotas ao processo-filho.

(87)

• A seguir temos um exemplo de subprocessos.

Subprocessos

Processo A

Processo A.1

Processo A.2

Processo A.1.1 Processo A.1.2

(88)

• CPU-Bound

– São processos que fazem uso intenso de CPU, realizando poucas operações de Entrada e Saída. (Ex: programas matemáticos, estatísticos, engenharia, física, etc).

• I/O Bound

– São processos que fazem uso intenso de Entrada e Saída, realizando poucos cálculos com a CPU. (Ex: editores de texto, planilhas eletrônicas, navegadores de Internet, clientes de e-mail, etc).

(89)

• O uso de processos independentes e subprocessos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema. • Sempre que um novo processo é criado, o sistema deve alocar recursos

(contexto de hardware, contexto de software e espaço de endereçamento), consumindo tempo de CPU neste trabalho.

• No momento do término dos processos, o sistema operacional também dispensa tempo para desalocar recursos previamente alocados.

• Outro problema é a comunicação e sincronização entre processos consideradas pouco eficientes, visto que cada processo possui seu próprio espaço de endereçamento.

(90)

• O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto em criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo.

• Em um ambiente multithread, um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código da aplicação.

• Neste caso, não é necessário haver diversos processos para a implementação da concorrência.

• Threads compartilham o processador da mesma maneira que um processo, ou seja, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado.

(91)

• Cada thread possui seu próprio contexto de hardware, porém compartilha o mesmo contexto de software e espaço de endereçamento com os demais threads do processo.

• O compartilhamento do espaço de endereçamento permite que a comunicação de threads dentro do mesmo processo seja realizada de forma simples e rápida.

• A Pilha é uma área reservada para uso exclusivo. Não é permitido o compartilhamento da pilha entre as threads.

(92)

Threads

Ambiente Monothreads

Thread Processo Thread Processo A Thread Processo B Thread Processo C Thread Processo D

(93)

Threads

Ambiente Multithreads

Contexto de Hardware Contexto de Hardware Contexto de Hardware Contexto de Software

Thread 1 Thread 2 Thread 3

Espaço de Endereçamento

(94)

Threads

Threads em Modo Usuário

• Threads em modo usuário (TMU) são implementados pela aplicação e não pelo sistema operacional.

• Para isso, deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e uma política de escalonamento.

• Neste modo, o sistema operacional não sabe da existência de múltiplos threads, sendo responsabilidade exclusiva da aplicação gerenciar e sincronizar os diversos threads existentes.

• A vantagem deste modelo é a possibilidade de implementar aplicações multithreads mesmo em sistemas operacionais que não suportam threads.

(95)

Threads

Threads em Modo Usuário

• Utilizando a biblioteca, múltiplos threads podem ser criados, compartilhando o mesmo espaço de endereçamento do processo, além de outros recursos.

• TMUs são rápidos e eficientes por dispensarem acessos ao kernel do sistema operacional, evitando assim a mudança de modo de acesso.

(96)

Threads

Threads em Modo Usuário

Th

re

ad

0

Th

re

ad

1

Th

re

ad

2

Th

re

ad

3

Th

re

ad

4

Biblioteca

Kernel

Modo Usuário

Modo Kernel

(97)

Threads

Threads em Modo Kernel

• Threads em modo kernel (TMK) são implementados diretamente pelo núcleo do sistema operacional, através de chamadas a rotinas do sistema que oferecem todas as funções de gerenciamento e sincronização.

• O sistema operacional sabe da existência de cada thread e pode escaloná-los individualmente.

• No caso de múltiplos processadores, os threads de um mesmo processo podem ser executados simultaneamente.

• O grande problema para os threads em modo kernel é o seu baixo desempenho.

(98)

Threads

Threads em Modo Kernel

• Enquanto nos threads em modo usuário todo tratamento é feito sem a ajuda do sistema operacional, ou seja, sem a mudança no modo de acesso, threads em modo kernel utilizam chamadas às rotinas do sistema operacional e, consequentemente, várias mudanças no modo de acesso.

(99)

Threads

Threads em Modo Kernel

Th

re

ad

0

T

h

rea

d

1

T

h

rea

d

2

T

h

rea

d

3

T

h

rea

d

4

Kernel

Modo Usuário

Modo Kernel

(100)

Threads

Threads em Modo Híbrido

TMU

0

TMU

1

TMU

2

TMU

3

TMU

4

Biblioteca

Kernel

Modo Usuário

Modo Kernel

TMK 0

TMK 1

TMK 2

(101)

Threads

Threads em Modo Híbrido

• O modo híbrido, apesar da maior flexibilidade, apresenta problemas herdados de ambas as implementações.

• Por exemplo, quando um TMK realiza uma chamada bloqueante, todos os seus TMUs são colocados no estado de espera.

• TMUs que desejam utilizar vários processadores devem utilizar diferentes TMKs, o que influenciará no desempenho.

(102)
(103)

• Com o surgimento dos sistemas multiprogramáveis, nos quais múltiplos processos poderiam permanecer na memória principal compartilhando o uso da CPU, a gerência do processador tornou-se uma das atividades mais importantes em um sistema operacional.

• A partir do momento em que diversos processos podem estar no estado de pronto, critérios devem ser estabelecidos para determinar qual processo será escolhido para fazer uso do processador.

• O módulo do sistema operacional responsável por esta escolha é o escalonador.

(104)

Definição

Execução

(105)

Utilização do Processador (CPU)

 É o tempo gasto pela CPU na execução dos processos do usuário.

 Na maioria dos sistemas é desejável que o processador permaneça a maior parte do seu tempo trabalhando nos processos do usuário.

Throughput (Vazão)

 Throughput representa o número de processos encaminhados para execução (executados) em um determinado intervalo de tempo.

 Quanto maior o throughput, maior a alternância de processos em função do tempo.  A maximização do throughput é desejada na maioria dos sistemas, porém aumenta o

custo relacionado à troca de contexto.

(106)

Tempo de Processador (CPU) ou Tempo de Burst ou Surto de CPU

 É o tempo total que um processo leva no estado de execução durante seu processamento, isto é, é o tempo de processamento necessário para completar a sua tarefa.

 As políticas de escalonamento não influenciam no tempo de processador de um processo, sendo este tempo função apenas do código da aplicação e da entrada de dados.

Tempo de Espera

 É o tempo total que um processo permanece na fila de pronto durante seu processamento, aguardando para ser executado.

 A redução do tempo de espera dos processos é desejada pela maioria das políticas de escalonamento.

(107)

Tempo de Turnaround

 É o tempo de existência de um processo, isto é, o tempo desde a sua criação até seu término.

 As políticas de escalonamento buscam minimizar o tempo de turnaround.

Tempo de Resposta

 É o tempo decorrido entre uma requisição ao sistema ou à aplicação e o instante em que a resposta é exibida.

 Em sistemas interativos, podemos entender como o tempo decorrido entre a última tecla digitada pelo usuário e o início da exibição do resultado no monitor.

(108)

Não-Preemptivo

 Neste tipo de escalonamento, quando um processo está em execução, nenhum evento externo pode ocasionar a perda do uso da CPU.

 O processo somente sai do estado de execução caso termine seu processamento ou execute instruções do próprio código que ocasionem uma mudança para o estado de espera.

Preemptivo

 Neste tipo de escalonamento o sistema operacional pode interromper um processo em execução e passá-lo para o estado de pronto, com o objetivo de alocar outro processo na CPU.

(109)

Operações de Entrada e Saída

Preempção

.

.

.

.

.

.

.

.

.

.

CPU Controlador de Interrupções IRQ INTA IRQ INTA BD

Número do Pino de IRQ

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Clock do Sistema

IRQ IRQ IRQ

DT A Fatia de Tempo ou Quantum é

(110)

• No escalonamento FIFO (first in, first out) também conhecido como FCFS (first

come, first served), o processo que chegar primeiro ao estado de pronto é

selecionado para execução.

• Sempre que chegar um processo no estado de pronto, ele é colocado no final da fila.

• Se um processo for para o estado de espera, o próximo da fila é escalonado. • Quando um processo do estado de espera volta para o estado de pronto, este

vai para o final da fila.

(111)

FIFO ou FCFS (Não-Preemptivo)

Execução

Espera

Criação

Término

(112)

No escalonamento SJF (Shortest Job First – Processo mais Curto Primeiro), o algoritmo de escalonamento seleciona o processo que tiver o menor tempo de processador (burst) ainda por executar.

• Dessa forma, o processo em estado de pronto que necessitar de menos tempo de CPU para terminar seu processamento é selecionado para execução.

• Uma implementação do escalonamento SJF com preempção é conhecida como escalonamento SRT (Shortest Remaining Time – Menor Tempo Restante Primeiro). • Nesta política, toda vez que um processo no estado de pronto tem um tempo de

processador estimado menor do que o processo em execução, o sistema operacional realiza uma preempção substituindo-o pelo novo processo.

(113)

• De modo semelhante ao SJF, o sistema operacional deve ser o responsável por estimar os tempos de processador dos processos, e o risco de starvation continua presente.

SJF (Não-Preemptivo)

Starvation  Adiamento indefinido, isto é, a possibilidade do processo ser adiado indefinidamente, correndo o risco de nunca ser executado.

(114)

• O escalonamento cooperativo é uma implementação que busca aumentar o grau de multiprogramação em políticas de escalonamento que não possuam mecanismos de preempção.

• Neste caso, um processo em execução pode voluntariamente liberar o processador, retornando à fila de pronto e possibilitando que um novo processo seja escalonado, permitindo, assim, uma melhor distribuição no uso da CPU.

• A principal característica do escalonamento cooperativo está no fato de a liberação do processador ser uma tarefa realizada exclusivamente pelo processo em execução, que de uma maneira cooperativa libera a CPU.

(115)

O escalonamento circular (round robin scheduling), é um escalonamento do tipo preemptivo, projetado especialmente para sistemas de tempo compartilhado.

• Esse algoritmo é bastante semelhante ao FIFO, porém quando um processo passa para o estado de execução existe um tempo limite para o uso contínuo do processador denominado fatia de tempo (time slice) ou quantum.

• No escalonamento circular, toda vez que um processo é escalonado para execução uma nova fatia de tempo é concedida.

• Caso a fatia de tempo expire, o sistema operacional interrompe o processo em execução, salva seu contexto e direciona-o para o final da fila de pronto.

• Este mecanismo é conhecido como preempção por tempo.

(116)

Fila Circular ou Round Robin (Preemptivo)

Execução

Espera

Criação

Término

Fila dos processos no estado de Pronto

Preempção por tempo

(117)

• A figura anterior ilustra o escalonamento circular, onde a fila de processos em estado de pronto é tratada como uma fila circular.

• O escalonamento é realizado alocando a CPU ao primeiro processo da fila de pronto. • O processo permanecerá no estado de execução até que termine seu processamento, voluntariamente passe para o estado de espera ou que sua fatia de tempo expire, sofrendo, neste caso, uma preempção pelo sistema operacional.

• Após isso, um novo processo é escalonado com base na política de FIFO.

• O valor da fatia de tempo depende da arquitetura de cada sistema operacional e, em geral, varia entre 10 e 100 milissegundos.

• Este valor afeta diretamente o desempenho da política de escalonamento circular.

Fila Circular ou Round Robin (Preemptivo)

(118)

• Caso o quantum tenha um valor muito alto, este escalonamento tenderá a ter o mesmo comportamento do escalonamento FIFO.

• Caso o valor do quantum seja pequeno, a tendência é que haja um grande número de preempções, o que ocasionaria excessivas mudanças de contexto, prejudicando o desempenho do sistema e afetando o tempo de turnaround dos processos.

• A principal vantagem do escalonamento circular é não permitir que um processo monopolize a CPU, sendo o tempo máximo alocado continuamente igual ao quantum definido no sistema.

• No caso de sistemas de tempo compartilhado, onde existem diversos processos interativos concorrendo pelo uso do processador, o escalonamento circular é adequado.

(119)

• Um problema presente nesta política é que processos CPU-bound são beneficiados no uso do processador em relação aos processos I/O-bound.

• Devido às suas características, os processos CPU-bound tendem a utilizar por completo a fatia de tempo, enquanto os processos I/O-bound têm mais chances de passar para o estado de espera antes de sofrerem preempção por tempo.

• Estas características distintas ocasionam um balanceamento desigual no uso do processador entre os processos.

(120)

• Um refinamento do escalonamento circular, que busca reduzir este problema, é conhecido como escalonamento circular virtual.

• Neste esquema, processos que saem do estado de espera vão para uma fila de pronto auxiliar.

• Os processos da fila auxiliar possuem preferência no escalonamento em relação à fila de pronto, e o escalonador só seleciona processos na fila de pronto quando a fila auxiliar estiver vazia.

• Quando um processo é escalonado a partir da fila auxiliar, sua fatia de tempo é calculada como sendo o valor da fatia de tempo do sistema menos o tempo de processador que o processo utilizou na última vez em que foi escalonado a partir da fila de pronto. Isto é, o quantum restante.

• Estudos comprovam que, apesar da maior complexidade na implementação, o balanceamento do uso do processador neste escalonamento é mais equilibrado.

(121)

Fila Circular Virtual (Preemptivo)

Espera

Fila auxiliar

Execução

Criação

Término

Fila dos processos no estado de Pronto

Preempção por tempo

Q

Q

Q

Q

R

Q

R

Q

R

Referências

Documentos relacionados

Da Silva et al (2020) estudaram a variabilidade espacial do fator k em áreas comerciais de cana-de-açúcar, causadas pelas estruturas multivariadas de perdas de carbono em

As Despesas Gerais e Administrativas (G&A) foram reduzidas em 50 bps como percentual da receita líquida no 3T12, na comparação com o 3T11, em virtude de alavancagem

3) Ao final do ano, a tesouraria do Distrito efetuará o depósito da quantia arrecadada pelo clube no Fundo Polio Plus, e em nome do clube, após descontar as despesas da

Participaram 128 indivíduos, de ambos os gêneros, residen- tes em São Paulo, que foram divididos em dois grupos: grupo disfonia comportamental (GDC), composto por 61 indivíduos,

Especialidade médica que trata clinicamente ou através de cirurgia das doenças do aparelho reprodutor

Assim, a contribuição de uma classe ou região para, por exemplo, a variação mensal, representa o efeito de uma determinada classe ou região na formação da taxa de

O paciente tem pelo menos 02 (dois) dos seguintes sinais e sintomas, sem nenhuma outra causa:. - febre (temperatura axilar > 37,8 o C)

Proponha Proponha uma uma função função chamada chamada inicializa() inicializa() que receba um vetor de inteiros, seu que receba um vetor de inteiros, seu tamanho,