Você está na página 1de 11

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS

Bacharelado em Sistema de Informação

SISTEMAS OPERACIONAIS

LISTA DE EXERCÍCIOS 1

Luiz Henrique Diniz Sousa

Sidnei Melo Magalhães

BETIM - MG

2010
Luiz Henrique Diniz Sousa

Sidnei Melo Magalhães

SISTEMAS OPERACIONAIS

LISTA DE EXERCÍCIOS 1

Trabalho apresentado à disciplina de Sistemas


Operacionais, do Instituto de Informática da
Pontifícia Universidade Católica de Minas
Gerais.

Prof: Caio Veloso

BETIM - MG

2010
1- Quais as duas principais funções de um Sistema Operacional?

Gerenciamento de Processo, Gerenciamento de Memória, Sistema de Arquivos,


Entrada e Saída de Dados.

As duas principais funções de um SO são:

 Coordenador, responsável pela proteção, pela comunicação e pelo


gerenciamento de recursos;
 Provedor de serviços (sistema de arquivos, tratador de dispositivos,
entre outros)

2- O que é multiprogramação? Cite duas razões para se ter multiprogramação?

Multiprogramação é a execução concorrente de múltiplos programas em um único


processador.
 Duas razões para se ter multiprogramação:

 Maximizar o uso do recurso processador;


 Diminuir os períodos de espera do programa.

3. O que é Spooling?

Spooling ou simplesmente Spool (do acrônimo Simultaneous Peripheral Operation


Online) refere-se a um processo de tranferência de dados colocando-os em uma área
de trabalho temporária onde outro programa pode acessa-lo para processa-lo em um
tempo futuro. A técnica de Spooling consistem em colocar jobs em um buffer, uma
área da memória ou de um disco onde um dispositivo pode acessa-la quando estiver
preparada. O Spooling é útil porque os dispositivos acessam dados em diferentes
velocidades, o buffer provê uma estação de espera onde o dado pode ficar
armazenado enquanto o dispositivo mais lento fica carregando. O mais comum
exemplo de spooling é o da impressora. Ao invés de enviar os jobs diretamente para
a impressora e ficar esperando o término da impressão para iniciar a execução de
outro programa, a UCP envia o job para um arquivo intermediário (no início era uma
fita). Este arquivo é, então, impresso, sendo que a ordem de impressão dos jobs é
determinada por prioridades atribuídas à eles.

4. Defina as propriedades essenciais dos seguintes tipos de Sistemas


Operacionais:

a. Batch

São tarefas geralmente demoradas que podem ser escadas, principalmente


em computadores de grande porte, para a execução em um horário pré determinado.

Jobs (tarefas), sem interação com o usuário, executados seqüencialmente.


Sort, compilações, backup, etc.
Podem apresentar tempos de resposta longos (seqüenciais).

b. Time-Sharing

Significa compartilhamento de tempo, ou seja, o tempo ocioso entre os


processos são compartilhados com outros processos para dinamizar o sistema.
Múltiplas tarefas são executados simultaneamente, sendo que a CPU atende cada
tarefa por um determinado tempo, em sequência. Os tempos dedicados para cada
tarefa são pequenos o suficiente para dar a ilusão de que as tarefas estão sendo
executadas simultaneamente.

 Respostas do SO em poucos segundos.


 Para cada usuário uma fatia de tempo (time-slice) é alocada pelo
processador. Caso a execução exceda a fatia de tempo ele é substituído por
outro e fica esperando nova oportunidade.
 Todos os recursos são compartilhados, porém o usuário tem a impressão de
estar utilizando a máquina sozinho.
 Implementação complexa porém aumentam a produtividade dos usuários,
reduzindo custos de utilização.

c. Tempo-real

É uma expressão que se refere a sistemas em que o tempo de execução de


uma determinada tarefa é rígido. O tempo de execução de uma operação pode ser
muito curto ou não. O que importa para este tipo de sistema é que a tarefa seja
executada. O sistema deve ser implementado visando principalmente a ordem de
agendamento das tarefas e o gerenciamento de recursos para que possa executar a
tarefa no tempo correto ou informar imediatamente que a tarefa não poderá ser
executada.

São freqüentemente usados como dispositivos de controle em aplicação


dedicada. As restrições temporais são bem definidas e fixas. Não existe o conceito de
fatia de tempo. Um programa executa até que outro, com maior prioridade assuma o
Processador. Podem ser Hard ou Soft.
 Hard: memória secundária inexistente ou limitada, dados armazenados em
memória principal ou ROM. Conflitos om time-sharing, não suportados por
sistemas operacionais de propósito geral.
 Soft: utilidade limitada em controle industrial e robótica, aplicações que
requerem características avançadas de SO.

d. Distribuído
A computação distribuída, ou sistema distribuído, é uma referência à
computação paralela e descentralizada, realizada por dois ou mais computadores
conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.

 Distribui a computação entre vários processadores físicos.


 Loosely coupled system – cada processador tem sua própria memória local;
Processadores comunicam-se através de várias linhas de comunicação, tais
como barramentos de alta velocidade e linhas telefônicas.
 aumenta a velocidade de computação -> load sharing.

5. Descreva as diferenças entre multiprocessamento simétrico e assimétrico.


Quais as vantagens e desvantagens dos sistemas multiprocessador?

Simétrico Assimétrico
 Cada processador executa uma cópia  A cada processador é atribuída uma
idêntica do SO. tarefa específica.
 Muitos processos podem executar de  Processador mestre escalona e
uma vez sem deterioração do aloca trabalho para os processos
desempenho. escravos.
 É suportado pela maioria dos SO´s  Mais comum em sistemas muito
modernos. grandes.

O multiprocessamento simétrico ou SMP (Symmetric Multi-Processing) é uma


tecnologia que permite a um determinado sistema operacional distribuir tarefas entre
dois ou mais processadores. Este método, mais especificamente, permite que vários
processadores partilhem o processamento de instruções requisitadas pelo sistema.

O multiprocessamento simétrico oferece um aumento linear na capacidade de


processamento a cada processador adicionado. Não há necessariamente um
hardware que controle este recurso, cabe ao próprio sistema operacional suportá-lo.

Sistemas de multiprocessamento simétrico são considerados mais poderosos em


relação aos de multiprocessamento assimétricos, abaixo alguns descritivos de
comparação entre eles.

 No multiprocessamento simétrico muitos processos podem ser executados ao


mesmo tempo sem queda no desempenho, pois o sistema operacional delega
as instruções a cada processador;
 Se um processador falhar o sistema não tranca pois qualquer outro
processador pode assumir as tarefas daquele que falhou, já no assimétrico por
exemplo, se o processador mestre falhar o sistema trava;
 No SMP o usuário pode melhorar o desempenho da máquina simplesmente
adicionando um processador;

Vantagens:
 aumento de desempenho;
 são econômicos;
 aumento da confiabilidade;
 degradação controlada (fail-soft systems).

Desvantagens:

 problemas de sincronização;
 controle de concorrência;
 consistência das informações.

6. O que é uma chamada de sistema (ou interrupção)? Qual é o uso dessa


função?

É o mecanismo usado pelo programa para requisitar um serviço do sistema


operacional, ou mais especificamente, do núcleo do sistema operacional.

7. Para que tipos de operações o DMA é útil? Quais as implicações de uma


organização sem DMA na multiprogramação?

O DMA permite que certos dispositivos de hardware num computador acedam a


memória do sistema para leitura e escrita independentemente da CPU. Muitos
sistemas utilizam DMA, incluindo controladores de disco, placas gráficas, de rede ou
de som.O acesso direto da memória é usado igualmente para transferência de dados
de núcleos em processadores multi-core, em especial nos sistema-em-
microplaquetas do processador, onde seu elemento de processamento é equipado
com uma memória local ,e o acesso direto da memória é usado para transferir dados
entre a memória local e a memória principal. Os computadores que têm os canais de
acesso direto a memória podem transferir dados aos dispositivos com muito menos
perdas gerais de processamento do que computadores sem uma via de acesso direto
à memória. Similarmente um elemento de processamento dentro de um processador
multi-core pode transferir dados para e de sua memória local sem ocupar seu tempo
de processamento e permitir a simultaneidade de transferência de dados. Sem
acesso direto da memória, usando a modalidade programada de entrada/saída (E/S)
para uma comunicação com os dispositivos periféricos, ou as instruções da troca no
caso dos núcleos multi-core, o processador central é ocupado inteiramente para a
leitura ou escrita da operação, e assim não se torna possível executar o outro afazer.
Com acesso direto da memória, o processador central executa transferências, faz
outras operações enquanto alguma transferência estiver em andamento, recebe uma
interrupção do controlador de acesso direto da memória uma vez que a operação foi
feita.

8. Que características de hardware (máquina) são necessárias para suportar


proteção para o kernel do SO ? Explique brevemente cada característica e
como elas permitem o kernel controlar os programas de usuário.

 A unidade de processamento central (CPU, p processador). Esta é a parte


mais central de um sistema de computação, responsável por rodar ou executar
programas nele. O núcleo têm a responsabilidade de decidir em qualquer
momento qual dos programas em execução deve ser alocado para o
processador ou processadores (cada um dos quais geralmente pode executar
um programa por vez)
 A memória. A memória é usada para armazenas ambos instruções do
programa e dados. Tipicamente, ambos precisam estar presentes na memória
de modo a tornar a execução do programa possível. Frequentemente múltiplos
programas buscarão acesso à memória ao mesmo tempo, na maioria das
vezes exigindo mais memória do que o computador pode disponibilizar. O
núcleo é responsável pela decisão de que memória cada processo pode
utilizar, e determinar o que fazer quando menos do suficiente está disponível.
 Qualquer dispositivo de entrada/saída presente no computador, tais como
teclado, rato, entradas de disquete, impressoras, telas, etc. O núcleo aloca
pedidos de aplicativos para realizar entrada/saída para um dispositivo
apropriado (ou subseção de um dispositivo, no caso de arquivos em um disco
ou janelas em uma tela) e fornece métodos convenientes para o uso do
dispositivo (tipicamente abstraído ao ponto onde o aplicativo não precisa mais
conhecer os detalhes da implementação do dispositivo).

9. O que são processos e quais as vantagens da adoção desse método?

Um sistema operacional não executa somente o programa que podemos ver. Um


único aplicativo pode ter vários processos relacionados a ele. Os processos
representam tarefas em execução, mas nem todas têm relação direta com algum
aplicativo. Muitas delas são executadas em plano de fundo e mantêm o sistema
trabalhando - gerenciando redes, memória, disco, checagem antivírus, etc. Logo,
podemos definir processos como softwares que executam alguma ação e que podem
ser controlados de alguma maneira, seja pelo usuário, pelo aplicativo correspondente
ou pelo sistema operacional.
Um processo tem uma série de características próprias. A estrutura básica é formada
por uma imagem do código executável associado a um programa. A memória contém
o código executável e dados específicos. Há também a descrição de recursos do
sistema alocados ao processo, informações de atributos de segurança e a indicação
do estado atual.

10. Como o sistema operacional trata um processo?

O sistema operacional precisa mudar de um processo para o outro milhares de vezes


por segundo:
Um processo ocupa uma certa quantidade de memória RAM. Ele também utiliza os
registradores, pilhas e filas da CPU e memória do sistema operacional.
 Quando 2 processos acontecem ao mesmo tempo, o sistema operacional
aloca uma certa quantidade de ciclos da CPU para um programa.
 Depois que os ciclos são executados, o sistema operacional faz uma cópia
de todos os registradores, pilhas e filas utilizados pelos processos e
registra o ponto em que a execução foi interrompida.
 Ele então carrega todos os registradores, pilhas e filas utilizados pelo
segundo processo e aloca outra quantidade de ciclos de CPU para ele.
 Quando os ciclos terminam, o sistema operacional copia todos os
registradores, pilhas e filas utilizadas pelo segundo programa e carrega o
primeiro programa.

11. Quais os atributos são usualmente atribuídos a um processo para que o


mesmo possa ser controlado pelo sistema operacional?

Todas as informações necessárias para controlar a mudança dos processos são


armazenadas num pacote de dados chamado de bloco de controle de processo, que
contém:
 um número ID que identifica o processo;
 ponteiros para as localizações do programa e seus dados quando o último
processamento ocorreu;
 conteúdo dos registradores;
 estado de vários flags e switches;
 ponteiros para os limites superior e inferior da memória requisitada para o
processo;
 uma lista de arquivos abertos pelo processo;
 a prioridade do processo;
 o status de todos os dispositivos de entrada/saída requisitados pelo
processo.

Cada processo tem um status associado a ele. Muitos processos não consomem
tempo da CPU até que recebam algum tipo de comando. O processo pode estar, por
exemplo, esperando que o usuário aperte alguma tecla, enquanto ele espera, a CPU
não é utilizada. Neste momento, o processo está "suspenso". Quando o usuário
aperta a tecla, o sistema operacional muda o status do processo. Quando o status do
processo muda de "pendente" para "ativo" ou de "suspenso" para "em execução", as
informações no bloco de controle de processo devem ser usadas, assim como os
dados de programa, para direcionar a execução da alternância de tarefas do sistema
operacional.
Essa troca de processo acontece sem a interferência direta do usuário e cada
processo consegue ciclos de CPU suficientes para realizar suas tarefas em um
período razoável de tempo. O problema acontece quando o usuário tenta executar
muitos processos ao mesmo tempo. O próprio sistema operacional precisa de alguns
ciclos de CPU para salvar todos os registradores, filas e pilhas dos processos e
realizar a alternância entre eles. Se uma determinada quantidade de processos é
iniciada, e se o sistema operacional não foi cuidadosamente planejado, o sistema
pode começar a usar a maioria dos ciclos de CPU disponível para alternar os
processos em vez de executá-los. Isso se chama thrashing e geralmente requer
algum tipo de intervenção direta do usuário para interromper os processos e
reorganizar o sistema.
Uma forma de reduzir o thrashing é diminuir a necessidade de criação de novos
processos para realizar as tarefas. Alguns sistemas operacionais utilizam um
processo mais "leve" chamado thread. Uma thread pode controlar o trabalho mas,
geralmente, não lida com os vários tipos de entrada/saída e não estabelece
estruturas que exijam o longo bloco de controle de processo de um processo regular.
Um processo pode iniciar muitas threads ou outros processos, mas uma thread não
pode iniciar um processo.
Em um sistema com duas ou mais CPUs, o trabalho é dividido. O sistema
operacional deve equacionar a demanda de cada processo para as diferentes
CPUs. Os sistemas operacionais assimétricos utilizam uma CPU para suas
próprias necessidades e dividem os processos dos aplicativos entre as outras CPUs.
Os sistemas operacionais simétricos compartilham as várias CPUs e equacionam
a demanda e a disponibilidade da CPU, mesmo quando o sistema operacional é o
único aplicativo em execução.
A CPU não é o único recurso requisitado mesmo quando somente o sistema
operacional está sendo executado. O gerenciamento da memória é um passo crucial
para que todos os processos sejam executados de maneira tranqüila.

12. Quais os estados de um processo e suas possíveis transições de estados?

Um processo passa por diferentes estados desde sua criação até seu término.
Enquanto ele é criado, seu estado é considerado "Novo"; em ação, muda para
"Executando"; quando depende da ocorrência de algum evento, vira "Esperando";
quando não mais necessário, o processo é "Terminado". O sistema operacional reúne
todas essas informações através de estruturas específicas chamadas PCB (sigla
de Process Control Blocks, o que em tradução livre seria Blocos de Controle de
Processos).

13. Considere o diagrama de transição entre estados do processo no caso de


cinco estados (Novo, Pronto, Rodando, Bloqueado, Terminado). Por que não ha
uma transição do estado Bloqueado para o estado Rodando?

14. O que significa o termo “árvore de processos”?

Os processos pai criam processos filhos, que, por sua vez, criam outros processos,
formando uma árvore de processos. Esta criação é feita por chamadas de sistema.
Um processo filho pode receber recursos diretamente do sistema operacional, obter
um subconjunto dos recursos do processo pai ou mesmo compartilhar todos os
recursos do processo pai. Dados de inicialização podem ser passados do processo pai
para o processo filho. Ao criar um processo filho o processo pai pode continuar a
executar concorrentemente com o processo filho ou esperar até que alguns ou todos
processos filhos tenham terminado. O espaço de endereçamento do processo filho
pode ser uma duplicata do processo pai ou ter um programa carregado para ele.

15. Que eventos podem motivar a criação ou finalização de um processo?

Inicialização do sistema operacional; Inicialização de um programa e Chamada de


sistema, são eventos que motivam a criação de processos. Saída normal; Saída com
erro; Fatal Error (involuntário) ou outro processo (involuntário), são eventos de
finalização de processos.

16. Como ocorre a execução de múltiplos processos em um sistema de


computação?

A execução de um programa envolve necessariamente a execução de suas


instruções por um CPU, um exemplo é um processo como um programa em
execução. Podem existir chamadas ao sistema que permitam que os processos criem
subprocessos a serem executados simultaneamente.
Um processo pode usar vários recursos para realizar uma tarefa, como tempo
de CPU, memórias, arquivos e dispositivos de E/S. Esses recursos podem ser
alocados ao processo quando ele é criado ou durante sua execução. Dados iniciais
(dados de entrada) podem ser fornecidos na criação de um processo. Quando um
processo terminar, o sistema operacional solicitará a liberação de recursos que
possam vir a ser usados novamente.
Um programa por si só não é um processo, ele é uma entidade passiva, assim
como, por exemplo, o conteúdo de um arquivo armazenado em um disco, ao passo
que um processo é uma entidade ativa, com um contador de instruções que
determinam a próxima instrução a ser executada. A execução de um processo deve
progredir de maneira seqüencial, ou seja, a CPU executa uma instrução após a outra,
até que o processo termine. Apenas uma instrução de um dado processo é
executado, assim, duas seqüências diferentes de execução de um mesmo programa
constituem dois processos distintos.
Processos são unidades de trabalho em um sistema, o qual é constituído de
um conjunto de processos.
O sistema operacional é responsável  pelas seguintes atividades:
-         Criação e remoção de processos, tanto do sistema quanto dos usuários.
-         Suspensão e reativação de processos.
-         Sincronização de processos.
-         Comunicação entre processos.
-         Tratamento de impasses entre processos.

17. Um computador tem: memória cache, memória principal e um disco usado


para memória virtual. Se uma palavra procurada estiver na cache serão
necessários 20 ns para acessá-la. Se essa palavra estiver na memória principal,
mas não na cache, serão precisos 60 ns para carregá-la na cache, seguidos de
20 ns para ler a palavra na cache. Se a palavra não estiver na memória
principal, são precisos 12 ms para buscar a palavra no disco, seguidos por 60
ns para copiá-la na cache, e depois 20 ns para ler a palavra. A razão de
ocorrência na cache é de 0.9 e a razão de ocorrência na memória principal é de
0.6. Qual o tempo médio (em ns) para acesso a uma palavra procurada neste
sistema?

Calculado através da Moda(Estatística) que reza pelo valor que tem mais frequência
na situação, então seguindo a razão 0,9, o tempo de acesso é 20ns referente ao
acesso em cache.

18. Considere o código em C abaixo sobre o uso da instrução fork().


Descreva o funcionamento do código. Rodando esse código, quantos
processos são gerados?

int main()
{
int pid;
int pid2;
int i;
pid = getpid(); // RETORNA A ID DO PROCESSO
printf("PID = %4d \n", pid); // MOSTRA A ID DO PROCESSO
for (i=0; i<3; ++i)
{
pid = getpid(); // RETORNA A ID DO PROCESSO
printf("i = %4d, PID = %4d \n", i, pid); //MOSTRA A ID DO PROCESSO
pid2=fork(); //DUPLICA O PROCESSO ATUAL
if (pid2 != 0) printf("I am the parent %4d, i = %4d \n", pid2, i); //MOSTRA O PROCESSO
PAI
if (pid2 == 0) printf("I am a child %4d, i = %4d \n", pid2, i); //MOSTRA O PROCESSO
FILHO
sleep(5); //pausa o processo
}
}

Resp.: O código acima, faz referencia a criação de processos “pai e filho”, a instrução
“getpid”, retorna a ID do processo, neste caso, a ID do processo “PAI”, quando se usa
a instrução “FORK”, o processo “PAI” é duplicado, gerando o processo “FILHO”, se
“FORK” retornar zero, então o processo “FILHO” foi criado, se retorna um numero
diferente de zero, então o processo “PAI” foi criado. Como a instrução “FORK”
duplica o processo atual, ao entrar na instrução “FOR” o processo é duplicado 2,4 e
8, dando um total de 15 processos gerados.

Você também pode gostar