Quais os objectivos da multiprogramação em
sistemas operativos? Que implicação tem a multiprogramação na unidade de gestão
de memória?


Principal
objectivo: utilização máxima do processador.


Esta solução torna os sistemas
multiprogramados permitindo que diversos programas estejam simultaneamente
activos, os diversos programas necessitam de estar na memória central para
facilmente se mudar de contexto


 


 


Processos


A comunicação entre processos permite a
partilha de informação entre processos. Que mecanismos existem para conseguir
essa comunicação? O que é comunicação síncrona e assincrona?


Para conseguir a comunicação
entre processos são usados mecanismos como os pipes e a memória partilhada.


Na comunicação sincrona ambos
os processos têm de se encontrar, quando um processo envia uma mensagem é
suspenso até o destinatário a receber. È muito vantajoso pois é de
implementação simples, e é de baixo overhead. Como desvantagem obriga a
execução sincrona mesmo quando esta não é desejada.


Na comunicação assincrona o emissor
não é bloqueado quando não existe nenhum receptor em espera, aumenta o grau de
concorrencia.


O que é um processo e como se caracterizam?
Explique o funcionamento do mecanismo de escalonamento de um sistema
preemptivo.


Um processo é um programa em
execução, tem associado, dados de entrada e de saida, e este encontra-se num
determinado estado.


A gestão de recursos de CPU é
conhecido por escalonamento. A politica de escalonamento define a forma como o
tempo de CPU é repartido pelos vários processos e a ordem com que esta partilha
é reservada.


 


Algoritmos preemptivos (com
preempção) são projectados com base na noção de prioridade. O processo com
maior prioridade na fila de processo READY deverá sempre ser escalonado para a
CPU. Se um processo está em execução na CPU e um novo processo, de maior
prioridade, entra na fila então o processo que ocupa a CPU será retirado.


Os algoritmos com preempção
estão associados com sistemas que utilizam interrupções para forçar a partilha
da CPU. Interrupção involuntária da execução do processo.


Em regra, todos os processos têm obrigação de
libertar explicitamente, antes determinar, todos os recursos que requisitaram
durante a sua execução. Por exemplo, se abriram um ficheiro, têm obrigação de o
fechar de novo, antes de terminarem. Para que servirá então anotar no Process
Control Block (PCB) todos os recursos que o processo vai adquirindo ?


Bloco de Controlo de
Processos(PCB) armazena:


Estado do processo


Contador de programa


Registos do CPU


Informações do despacho do
CPU(escalonador)


Informação de gestão da
memória


Contabilização de utilização
de recursos


Estado dos recursos de I/O


 


A anotação de todos os
recursos que o processo vai adquirindo serve para no caso de o processo não
terminarde forma normal, este não ficar a bçoquear a execução de outros.


Condições que terminam
processos:


Saída normal (voluntaria)


Saída por erro (voluntaria)


Erro fatal (involuntaria)


Killed por outro processo
(involuntaria)


O que é a mudança de contexto entre
processos? Como funciona? Os sistemas operativos multiprogramados necessitam
destes mecanismos?


A partilha do processador
requer um mecanismo de comutação de processos, a que se dá o nome de comutação
de contexto.


Comutação entre dois processos
faz-se através da:


·        
salvaguarda do estado do processo que perde a CPU;


·        
restauração do estado do processo que ganha a CPU.


Comutação deve ser frequente,
mas não exagerada, tem um custo overhead para o sistema.


 


A mudança de contexto entre
processos é realizada por uma parte do escalonador (“context switcher”) que
realiza a multiplexagem da CPU.


A multiplexagem pode ser
executada de forma voluntária pelo processo em execução. Nesse caso o processo “larga” a CPU porque pediu um recurso, podendo a CPU ser
utilizada por outros processos. Requisita o recurso ao gestor de recursos
(Scheduler) e passa ao estado READY (passa ao estado BLOCKED de o recurso não
está disponível). Uma lista de processos nesses estados é criada.


Os procesos podem ser
retirados involuntariamente da CPU porque:


Esgotou o tempo permitido


Existe preempção da CPU por um
processo mais prioritário.


 


Os sistemas operativos
multiprogramadados necessitam destes mecanismos porque executam vários
programas  deforma concorrente, que são mantidos em memória simultaneamente e o
CPU é multiplexado entre eles.


Na avaliação das estratégias
de selecção, os sitemas multiprogramados (“timesharing”) a medida mais comum é
o “response time”


O que é o pseudoparalelismo? Explique o
funcionamento do mecanismo de mudança de contexto entre processos num sistema
preemptivo?


Pseudoparalelismo:


·        
Numa máquina monoprocessador, o
paralelismo não pode ser entendido no sentido estrito:


·        
Em cada instante, apenas um
processo é executado, contudo considerando um intervalo de tempo
suficientemante largo vários processos executaram e progrediram.


·        
Conceptualmente cada processo
possui um CPU virtual.


·        
A mutiplexagem do processador é
feita a nível interno, de acordo com critérios especificados á priori
(multiprogramação).


·        
Sistemas com multiplas actividades
paralelas são designados por sistemas concorrentes.


Algoritmos preemptivos (com
preempção) são projectados com base na noção de prioridade. O processo com
maior prioridade na fila de processo READY deverá sempre ser escalonado para a
CPU. Se um processo está em execução na CPU e um novo processo, de maior
prioridade, entra na fila então o processo que ocupa a CPU será retirado.


Os algoritmos com preempção
estão associados com sistemas que utilizam interrupções para forçar a partilha
da CPU. Interrupção involuntária da execução do processo.


O que é o pseudoparalelismo? Idendifique os
vários estados de um processo e indique as razões pela qual se anota no Process
Block Control
todos os recursos que um processo vai alocando?


Pseudoparalelismo:


·        
Numa máquina monoprocessador, o
paralelismo não pode ser entendido no sentido estrito:


·        
Em cada instante, apenas um
processo é executado, contudo considerando um intervalo de tempo
suficientemante largo vários processos executaram e progrediram.


·        
Conceptualmente cada processo
possui um CPU virtual.


·        
A mutiplexagem do processador é
feita a nível interno, de acordo com critérios especificados á priori
(multiprogramação).


·        
Sistemas com multiplas actividades
paralelas são designados por sistemas concorrentes.


 


Estados de um processo:


RUNNING


BLOCKED


READY


 


Bloco de Controlo de
Processos(PCB) armazena:


Estado do processo


Contador de programa


Registos do CPU


Informações do despacho do
CPU(escalonador)


Informação de gestão da
memória


Contabilização de utilização
de recursos


Estado dos recursos de I/O


A anotação de todos os
recursos que o processo vai adquirindo serve para no caso de o processo não
terminarde forma normal, este não ficar a bçoquear a execução de outros.


Condições que terminam
processos:


Saída normal (voluntaria)


Saída por erro (voluntaria)


Erro fatal (involuntaria)


Killed por outro processo
(involuntaria)


Existem duas variantes do Windows NT: a
server e a workstation. A primeira mais vocacionada para servidora de ficheiros
e de aplicações (server computer) e a segunda orientada para estações de
trabalho pessoais (desktop computer). Sendo este um sistema preemptivo
acha que o timeslice nas duas variantes deverá ser diferente? Justifique


Algoritmos preemptivos (com
preempção) são projectados com base na noção de prioridade. O processo com
maior prioridade na fila de processo READY deverá sempre ser escalonado para a
CPU. Se um processo está em execução na CPU e um novo processo, de maior
prioridade, entra na fila então o processo que ocupa a CPU será retirado.


Os algoritmos com preempção
estão associados com sistemas que utilizam interrupções para forçar a partilha
da CPU. Interrupção involuntária da execução do processo.


 


Sem sistemas que utilizam
interrupções para forçar o abandono da CPU, é dado mais um grau de liberdade na
estratégia de escalonamento.


Neste caso um temporizador
define um intervalo de tempo (“time quantum” ou ”time slice”) que é o tempo de
CPU disponível e correspondente ao intervalo entre interrupções do
temporizador.


Note-se que existindo uma fila
de processos no estado READY e prontos a executar, é possível definir um
escalonamento que optimiza um determinado critério.


 


Sim o timeslice deverá ser
diferente, porque na workstation o utilizador precisa que os processos
respondam mais rapidamente para poder mudar de programa ou aplicação em
execução, no server não será necessário esta rapidez de resposta porque o
utilizador não vai estar a trabalhar directamente na maquina.


Um sistema operativo multi-utilizador deverá
ser preemptivo ou não preemptivo? Justifique.


Um sistema Operativo deverá
ser preemptivo, para possibilitar a interrupção de processos em execução na CPU
para poder ser executado outro processo.


Se um sistema operativo fosse não-preemptivo,
durante a execução de um processo no CPU, este não puderia ser liberado a outro
processo, originando assim que as máquinas ficassem mais lentas.


O acessso directo à memória (DMA) tem
vantagens em operações de transferências de dados de entradas/saídas. Num
sistema operativo preemptivo, que tarefas podem usufruir deste mecanismo?


O sistema de DMA – direct memory access:


-permite a
transferência de grandes quantidades de dados de um modo eficiente


-os dados são
transferidos directamente do buffer do controller para a memória central não
envolve intervenção do CPU


-quando transferência
termina, o CPU recebe interrupção


 


Tarefas de um Sistema
Operativo:


Execução
de Programas
: É necessário realizar um
conjunto de tarefas para a execução de um programa. Instruções e dados têm de
ser carregados em memória, dispositivos de


I/O(Entrada/Saída) e ficheiros
têm de ser inicializados. Mecanismos de partilha prontos.


Acesso
a dispositivos de Entrada/Saída
: Cada
dispositivo de I/O tem o seu conjunto de


instruções, sinais de controlo
e operação. O SO torna transparentes as particularidades dos vários periféricos.


Acesso
controlado a ficheiros
: No caso dos
ficheiros, para além da natureza do dispositivo de I/O, o SO deve permitir ler
ficheiros em vários formatos e protege-los de acordo com o tipo de acesso
permitido aos vários utilizadores.


Criação
de Programas
: O SO disponibiliza
facilidades e serviços, como editores e debuggers, que se encontram na forma de
utilitários que não fazem verdadeiramente parte do SO.


Acesso
ao sistema
: No caso de um sistema
partilhado, deve ser controlado o acesso ao sistema como um todo e
especificamente a cada recurso.


Detecção
de erros e resposta
: O sistema deve
dar resposta a uma grande variedade de erros que podem acontecer tanto no
hardware como no software.


Registo
de parâmetros
: Um bom SO permite
registar estatísticas relativas a vários recursos e monitorizar parâmetros de
desempenho. Esta informação permite o ajuste do sistema aumentando o seu
desempenho.


 


Semáforos


Quando um programa pretende
utilizar um recurso de forma exclusiva (por exemplo, alterar uma determinada
secção de uma base de dados, com a garantia de que mais nenhum outro processo
lê ou altera essa mesma secção), deve assinalar com um semáforo que mais
ninguém deve executar operações sobre esse recurso. Quando o programa termina a
utilização do recurso, deve libertá-lo, apagando o semáforo. O sistema
operativo disponibiliza e verifica os semáforos, garantindo a
exclusão mútua de processos na região crítica.


Quais as vantagens dos semáforos face à
utilização de trincos lógicos? Como funcionam e para que servem? Quais os
problemas que se colocam na utilização de semáforos no tratamento de
acontecimentos assíncronos?



Semaforo


Trinco lógico


Mecanismo de sincronização
que não requer espera activa.

-Baseia-se em duas
primiticas wait e signal que operam sobre uma variavel de forma indivisivel.


-As soluções apresentadas
são complexas para um programador

Desvantagens:

-Um processo que perdeu o
CPU enquanto estava na região crítica deixa o trinco fechado.

-Quando um processo tem que
ficar a espera, ele irá ficar em ciclo a testar a variavel trinco – Espera
Activa


 


Deadlock


O que é um deadlock? Que condições devem ser
prevenidas de forma a evita-lo?


Deadlock caracteriza uma situação
em que ocorre um impasse, ficando dois ou mais processos impedidos de continuar
as suas execuções, ou seja, ficam bloqueados.


Uma maneira de evitar
deadlocks é impedir que ao menos uma das condições para sua existência ocorra:


                Exclusão
mútua: impossível de evitar em geral.


                Aquisição
gradativa de recursos: impossível de evitar.


                Sem preempção:
Evitável.


                Adquirir todos
os recursos antes de começar a executar.


                Se algum
recurso não estiver disponível, liberar todos os recursos que já foram
adquiridos.


                Ineficiente.


 


Modulos


Qual o papel do sistema operativo num sistema
computacional? Enumere os principais módulos que compõem um sistema operativo
moderno justificando.


 


Quais as principais funções (módulos) de um
sistema operativo moderno?


Para
tornar os sistemas operacionais mais fáceis de serem escritos, eles são
construídos como uma série de módulos, cada módulo sendo responsável por uma
função. Os módulos típicos num  SO multiutilizador moderno geralmente são

                Núcleo (Kernel em inglês - também conhecido como
"executivo")

                Gerenciador de processo

                Escalonador (Scheduler, em inglês)

                Gerenciador de arquivo


 


A estrutura dos sistemas operativos tem
evoluído ao longo dos tempos. Qual a estrutura que lhe parece mais adequada no
presente cenário computacional. Justifique explicando a função do kernel e dos
vários módulos.


Função do Kernel:


                chaveamento entre programas

                controle e programação de dispositivo de hardware

                gerenciamento de memória

                gerenciamento de processos

                escalonamento de tarefas

                comunicação entre processos

                processamento de exceções e de interrupção


Função dos Módulos:


Memória/ Endereçamentos


O que é a alocação dinâmica de memória?
Enuncie e explique alguns dos algoritmos utilizados a alocação dinâmica de
memória.


Alocação dinâmica de memória é
uma técnica de gestão de memória, num sistema que suporta alocação dinâmica de
memória, necessita-se de saber quais os blocos livres e os seus tamanhos


Algoritmos utilizados:


First-Fit – pesquisa a lista e
devolve o primeiro bloco livre com dimensão suficiente para satisfazer o pedido


Next-Fit – pequena variação do
first-fit, na qual a pesquisa começa no ponto onde terminou a anterior.


Best-Fit – pesquisa na lista e
selecciona o bloco livre de dimensão mais aproximada da requerida. Mantem uma
lista ordenada pela dimensao de blocos livres.


Worst-Fit – procura na lista o
maior bloco livre, com a intenção de deixar livre um bloco de dimensão
considerável. Mantem uma lista ordenada pela dimensão dos blocos livres.


Quick-Fit – Mantem listas
separadas com os tamanhos requisitados.


O que é endereçamento virtual baseados em
segmentação e quais as razões da sua utilização? Explique o seu funcionamento
recorrendo a gráficos.


Ao segmentarmos o nosso
endereçamento, estamos a dividir funcionalmente os nossos programas em
segmentos lógicos.


O endereçamento virtual cria
um espaço de endereçamento independente e maior que a memória disponivel. Acaba
com a limitação do tamanho dos programas.


A segmentaçao deve ser uosada
para fazer uma Relocação dinâmica, através da tabela de segmentos; Partilha: de
segmentos partilhados; Locação: fragmentação externa; Protecção


 


 


Explique a diferença entre endereçamento real
e endereçamento virtual.


No endereçamento Real os
endereços são gerados pelos programas correspondem directamente aos programas
acedidos na memória.


                Dimensão dos
programas é limitada pela memória fisica.


                Programa só
funciona nos endereços físicos para os quais foram escritos


                Dificulta a
multiprogramação; não é possivel executar simultaneamente dois                                      programas
preparados para correr nos mesmo endereços.


No endereçamento Virtual os
endereços são gerados pelos programas e são convertidos em tempo de execução,
em endereços físicos.


 


É possível optimizar o mecanismo de traduções
de um sistema de endereçamento virtual baseado em segmentação?


É, para evitar a duplicação de
acessos á memoria, são guardados em registos o descritor do segmento em uso,
optimizando o mecanismo de traduções.


Comente a afirmação: “Nos sistemas de
endereçamento virtual baseados em paginação gera-se fragmentação interna”


A fragmentação interna é
gerada quando o bloco lógico do programa corresponde a um conjunt de páginas,
resultando uma fragmentação interna na última página.


 


 


O que é a paginação e quais as razões da sua
utilização? Explique o seu funcionamento. (recorra a gráficos legendados para
melhor elucidar).


Paginação cria um espaço de
endereçamento maior que a dimensão da memória física.


O espaço lógico do
endereçamentonão precisa de ser continuo.


As páginas (blocos) são de
tamanho fixo.


Ao criarmos a paginação
estamos a fazer um endereçamento virtual o que possibilita uma optimização do
mecanismo de traduçoes e a partilha de memória entre processos.


 


 


Varias


A concepção de sistemas operativos pressupõem
uma determinada estrutura. Quais as vantagens e desvantagens dos sistemas
monolíticos, por camadas e cliente/servidor.


Sistemas monolíticos (“The
Big Mess”)


·        
Não existe strutura. SO escrito
como uma colecção de procedimentos, cada um dos quais pode chamar qualquer
outro.


·        
Cada procedimento obedece a uma
espicificação bem definida no que respeita aos parâmetros e resultado.


·        
Não há código escondido. Cada
procedimento é visível por todos os outros, não possuindo uma estrutura
modular.


 


Estrutura Básica


·        
Um programa principal que chama
funções de serviço.


·        
Um conjunto de funções de serviço
que sustentam as chamadas ao SO (system call).


·        
Um conjunto de funções auxiliares
(apoio as funções de serviço).


 


Sistema dividido em camadas


·        
O sistema é estruturado em camadas
hierárquicas.


·        
A modularidade pressupõe que cada
camada apenas use funções e serviços de camadas de níveis inferiores


 


Primeiro exemplo desta
abordagem: THE – Technish Hogeschool Eidhoven


Camada
5: Processos do operador do sistema.


Camada
4: programa do utilizador.


Camada
3: gestão de I/O. Proporciona dispositivos de I/O transparentes e simples ás
camadas superiores.


Camada
2: comunicação entre processos.


Camada
1: gestão da memória.


Camada
0: escalonamento do processador. Comutar entre processos quando correm
interrupções ou timer expira.


 


Sistema cliente/servidor


Tendência dos sistemas
operativos actuais é de mover o máximo de código possível para camadas
superiores.


Remover código ao SO por forma
a simplificar o kernel.


Para obter um serviço (ex.:
leitura de um bloco de um ficheiro) o processo cliente envia um pedido ao
processo servidor.


O kernel encarrega-se das
comunicações entre os clientes e os servidores.


 


Divisão lógica do SO, em
unidades pequenas e de fácil utilização.


O kernel gere as comunicações.


Os servidores correm em modo
utilizador evitando um crash total do sistema na eventualidade de um erro
interno ao servidor.


Vocacionados para sistemas
distribuidos (em rede).



0 comentários:

Enviar um comentário