Você está na página 1de 6

Nome: Brendel Dias de Lima

Data: 11/06/2019
UNINCOR – Universidade Vale do Rio Verde
Curso: Ciência da Computação
Sistemas Operacionais
Exercícios– Estrutura do SO, Arquiteturas Kernel e Processos

1) O que é concorrência e como este conceito está presente nos sistemas


operacionais multiprogramáveis?
R: Concorrência é o princípio básico para projeto e implementação dos sistemas
operacionais multiprogramáveis onde é possível o processador executar instruções em
paralelo com operações de E/S. Isso possibilita a utilização concorrente da UCP por
diversos programas sendo implementada de maneira que, quando um programa perde o
uso do processador e depois retorna para continuar o processamento, seu estado deve
ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua
execução exatamente na instrução seguinte àquela em que havia parado, aparentando ao
usuário que nada aconteceu.

2) Explique o mecanismo de funcionamento das interrupções. Por que esse


mecanismo é fundamental para a implementação da multiprogramação?

R: Uma interrupção é sempre gerada por algum evento externo ao programa e, neste
caso, independe da instrução que está sendo executada. Ao final da execução de cada
instrução, a unidade de controle verifica a ocorrência de algum tipo de interrupção.
Neste 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.

3) O que é DMA e qual a vantagem desta técnica?

R: A técnica de DMA 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 realiza a transferência entre o periférico e a
memória principal, e o processador são somente interrompidos no final da operação.

4) Explique a técnica de buffering. Como essa técnica permite aumentar a


concorrência em um sistema computacional?

R: Buffer é uma área da memória principal que é utilizada para armazenar


temporariamente dados oriundos de alguma memória auxiliar como discos.
Quando se usa buffers o computador não vai precisar interromper o processamento
tão frequentemente para ir buscar os dados no disco. Isso aumenta a concorrência
porque os dados já se encontram no disco então os processos que dependem de tais
dados podem ser ativados mais rapidamente, aumentando a concorrência.
5) Explique o mecanismo de spooling de impressão.

R: No momento em que um comando de impressão é executado, as informações que


serão impressas são gravadas antes em um arquivo em disco, conhecido como arquivo
de spool, liberando imediatamente o programa para outras atividades. Posteriormente, o
sistema operacional encarrega-se em direcionar o conteúdo do arquivo de spool para a
impressora.

6) Explique o que significa reentrância, em um sistema multiprogramável. Qual é a


vantagem de seu uso?
R: Reentrância refere-se à qualidade de uma sub-rotina ser
executada concorrentemente de forma segura, isto é, a sub-rotina pode ser invocada
enquanto está em execução. Para atender essa qualidade, a sub-rotina não deve
armazenar dados estáticos (globais) não constantes, não deve retornar o endereço de
dados estáticos não constantes, deve trabalhar somente com os dados fornecidos pela
sub-rotina que a invocou, não deve contar com exclusão mútua para recursos
construídos com o modelo singleton e só deve invocar sub-rotinas que também atendam
as qualidades anteriores, isto é, que também sejam reentrantes.
Vários níveis de prioridade de tarefas ou multiprocessamento geralmente complicam o
controle de código reentrante. Código de entrada/saída geralmente não é reentrante pois
manipula recursos singleton como discos rígidos. Entretanto, a reentrância é uma
funcionalidade importante da programação funcional.

7) O que é o núcleo do sistema e quais são suas principais funções?

R: O núcleo do sistema é composto por um conjunto de rotinas, que estão disponíveis


para ser usado pelo usuário e às suas aplicações. Este núcleo, também recebe outro
nome, kernel, e as suas principais funções são, contabilização do uso do sistema,
auditoria e segurança.

8) Explique como funciona a mudança de modos de acesso (modo usuário e modo


kernel) e dê um exemplo de como um programa faz uso desse mecanismo.

R: Sempre que um programa necessita executar uma instrução privilegiada, a solicitação


deve ser realizada através de uma chamada a um system call, que altera o modo de
acesso do processador do modo usuário para o modo kernel. Ao término da execução da
rotina do sistema, o modo de acesso retorna para o modo usuário.

9) O que é uma system call e qual sua importância para a segurança do sistema?
Como as system calls são utilizadas por um programa?

R: É uma implementação de mecanismos de proteção ao núcleo do sistema e de


acesso aos seus serviços. Essa chamada de sistema tem por importância garantir a
integridade do sistema. Para cada serviço existe uma System Call associada e cada
sistema operacional tem seu próprio conjunto de chamadas.

10) Explique as arquiteturas monolítica, microkernel e de camadas. Quais as


vantagens e desvantagens de cada arquitetura?
R: A arquitetura monolítica pode ser comparada com uma aplicação formada por vários
módulos que são compilados separadamente e depois linkados, formando um grande e
único programa executável, onde os módulos podem interagir livremente. 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 camadas
superiores. 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. Microkernel é uma arquitetura de núcleo (kernel) de
um sistema operativo cujas funcionalidades são quase todas executadas fora do núcleo,
em oposição a um núcleo monolítico. Os processos se comunicam com um núcleo
mínimo, usando o mínimo possível o "espaço do sistema" (kernel space). Neste local os
aplicativos tem acesso a todas as instruções e a todo o hardware e deixando o máximo
de recursos rodando no "espaço do usuário" (user-space) em que o software tem
algumas restrições, não podendo acessar algumas hardwares, nem tem acesso a todas as
instruções).
Basicamente o Microkernel executa a maioria dos processos fora do kernel, ele carrega
o mínimo de processos possíveis no kernel space. O restante dos módulos são
executados como processos de usuário comuns para o sistema.
Um dos principais benefícios de utilizar a arquitetura dessa maneira, com divisão de
tarefas entre módulos, é uma menor preocupação com os erros, já que sistemas
operacionais são muito sujeitos a eles. Isso não quer dizer que erros não vão acontecer,
porém, erros que provavelmente causariam uma falha e derrubariam todo o sistema,
agora irão apenas causar uma falha naquele módulo em específico, trazendo alta
confiabilidade.

11) Defina o conceito de processo. Por que o conceito de processo é tão importante
no projeto de sistemas multiprogramáveis?

R: Um processo pode ser definido como o ambiente onde um programa é executado.


Este ambiente, além das informações sobre a execução, possui também o quanto de
recursos do sistema cada programa pode utilizar, como o espaço de endereçamento,
tempo de processador e área em disco.
Através de processos, um programa pode alocar recursos, compartilhar dados, trocar
informações e sincronizar sua execução. Nos sistemas multiprogramáveis os processos
são executados concorrentemente, compartilhando o uso do processador, memória
principal, dispositivos de E/S dentre outros recursos.

12) Um processo é formado por três partes, conhecidas como contexto de


hardware, contexto de software e espaço de endereçamento. Explique cada uma
dessas partes.
R: Quando um processo está em execução, o seu contexto de hardware está
armazenando nos registradores do processador. No momento em que o processo perde a
utilização da UCP, o sistema salva as informações no contexto de hardware do
processo. O sistema operacional gerencia a mudança 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 UCP e carrega-lo com os valores referentes ao do novo
processo que será executado. Resume-se em substituir o contexto de hardware de um
processo pelo outro.
No contexto de software de um processo são especificados limites e características dos
recursos que podem ser alocados pelo processo, como o número máximo de arquivos
abertos simultaneamente, prioridade de execução e tamanho do buffer para operações de
E/S. É composto por três grupos de informações sobre o processo: Identificação, quotas
e privilégios.
Cada processo criado pelo sistema recebe uma identificação única (PID) representada
por um número. Quotas: As quotas são os limites de cada recurso do sistema que o
processo pode alocar. (número máximo de arquivos abertos, número máximo de
operações de E/S, etc.)
Os privilégios definem as ações que um processo pode fazer em relação a ele mesmo,
aos demais processos e ao sistema operacional.

O espaço de endereçamento é a área da memória pertencente ao processo onde


instruções e dados do programa são armazenados para execução.

13) Explique a técnica conhecida como swapping.

R: É uma técnica aplicada à gerência de memória que visa dar maior taxa de utilização à
memória principal, melhorando seu compartilhamento. Visa também
resolver o problema da falta de memória principal num sistema. Toda vez que um
programa precisa ser alocado para execução e não há espaço na memória principal, o
sistema operacional escolhe entre os processos alocados que não tem previsão de
utilizar a CPU nos próximos instantes (quase sempre entre aqueles que estão em
interrupção de E/S ou no final da fila de pronto), e “descarrega” este processo da
memória para uma área especial em disco, chamada arquivo de swap, onde o processo
fica armazenado temporariamente. Durante o tempo em que o processo fica em swap, o
outro que necessitava de memória entra em execução ocupando o espaço deixado pelo
que saiu. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU,
o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da
área de swap para a memória principal, para que este possa ser executado novamente. E
vai trabalhando assim até que os processos vão terminando. O problema dessa técnica é
que pode provocar um número excessivo de acesso à memória secundária (disco),
levando o sistema a uma queda de desempenho.

14) Explique como é a implementação da troca de contexto.

R: No momento em que o processo perde a utilização da UCP, o sistema salva as


informações no contexto de hardware do processo. O sistema operacional gerencia a
mudança 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 UCP e carrega-lo
com os valores referentes ao do novo processo que será executado.

15) Como o sistema operacional implementa o conceito de processo? Qual a


estrutura de dados indicada para organizar os diversos processos na memória
principal?

R: O processo é implementado pelo sistema operacional através de uma estrutura de


dados chamada bloco de controle de processo (PCB). A partir do PCB, o S.O mantém
(na memória principal) todas as informações sobre o contexto de hardware, software e
espaço de endereçamento de cada processo.
16) Defina os cinco estados possíveis de um processo.

 Criação: 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.

 Execução: Quando está sendo processado pela UCP.

 Pronto: Quando aguarda apenas para ser executado.

 Espera: Quando está aguardando por um evento externo ou por algum recurso
para prosseguir seu processamento.

 Término: Não poderá ter mais nenhum programa executando no seu contexto,
porém o S.O ainda mantém suas informações de controle presentes em memória.

17) Explique a diferença entre processos foreground e background.

 Foreground: É aquele que permite a comunicação direta de usuário com o


processo durante o seu processamento.
 Background: Não existe a comunicação com o usuário durante o seu
processamento.

18) Qual a relação entre processo e arquitetura microkernel?

R: A arquitetura microkernel programa o uso intensivo de processos que


disponibilizam serviços para processos das aplicações e do próprio sistema operacional.

19) Dê exemplos de aplicações CPU-Bound e I/O-Bound.

 CPU-bound: É encontrado em aplicações científicas que efetuem muitos


cálculos.
 I/O-bound: É encontrado em aplicações comerciais, que se baseiam em leitura,
processamento e gravação.

20) Explique os algoritmos de escalonamento FIFO, SJF, Cooperativo e Round-Robin.

FIFO é conhecido popularmente por Algoritmo de Fila Simples, é uma estrutura de


dados que apresenta o seguinte critério: O primeiro elemento a ser retirado é o primeiro
que tiver sido inserido.  É também um algoritmo de escalonamento não preemptivo
que entrega a CPU os processos pela ordem de chegada. Ele executa o processo como
um todo do inicio ao fim não interrompendo o processo executado até ser finalizado,
então quando um novo processo chega e existe um ainda em execução ele vai para uma
fila de espera. Esta fila de espera nada mais é do que uma fila que organiza os processos
que chegam até eles serem atendidos pela CPU.
SJF é uma política de escalonamento que seleciona para ser executado o processo com o
menor tempo de execução. SJF é um algoritmo não preventivo. Shortest Remaining
Time é uma variação preventiva de SJF. O escalonamento SJF é vantajoso por sua
simplicidade e também porque minimiza o tempo médio que cada processo leva desde
quando ele é criado até o fim de sua execução, incluindo aqui o tempo de espera entre o
momento em que ele é criado e o momento em que é selecionado para executar. No
entanto, essa estratégia pode levar a inanição de processos com longos tempos de
execução caso processos curtos sejam continuamente adicionados ao
escalonador. Highest Response Ratio Next é um algoritmo similar que resolve este
problema ao levar em conta o envelhecimento dos processos. Outra desvantagem do
SJF é a necessidade de saber previamente os tempos para execução do processo.
Embora seja impossível prever os tempos de maneira exata, existem diversos métodos
que podem ser usados para estimá-los, tais como média ponderada ou uso dos tempos
de execução anteriores para processos semelhantes.
No algoritmo cooperativo quando uma tarefa se inicia ela só será interrompida quando
terminar sua execução ou quando ela própria renunciar ao uso do processador. No
escalonamento cooperativo o papel do escalonador de processos é basicamente iniciar
processos, podendo usar algoritmos para determinar qual processo iniciar. Uma das
vantagens são as aplicações podem ter uma implementação mais simples por não terem
que lidar com interrupções do processamento. E a desvantagem Aplicações mal escritas
podem monopolizar o tempo do processador causando um travamento no sistema

Round Robin é simples e fácil de implementar. O algoritmo deescalonamento Round-


Robin é um dos mais antigos e simples algoritmos, além de ser totalmente imune a
problemas de starvation que são tarefas que nunca são executadas em função de ter
prioridade inferior as demais.

Você também pode gostar