Você está na página 1de 9

Sistemas Operacionais

Lista de Exercícios 1

Capítulo 1 – Problemas

1.1 Quais são as três finalidades principais de um sistema operacional?

1.2 De que modo a diferença entre modalidade de kernel e modalidade de usuário funciona como
um tipo rudimentar de sistema de proteção (segurança)?

1.3 Qual das instruções a seguir devem ser privilegiadas?

a) Configurar o valor do timer.


b) Ler o relógio.
c) Limpar a memória.
d) Emitir uma instrução de exceção.
e) Desativar interrupções.
f) Modificar entradas na tabela de status de dispositivos.
g) Passar da modalidade de usuário para a de kernel.
h) Acessar dispositivo de I/ O.

1.4 Os timers podem ser usados para computar a hora corrente. Forneça uma breve descrição de
como isso pode ser feito.

1.5 Cite duas razões que tornam as caches úteis. Que problemas elas resolvem? Que problemas
elas causam? Se uma cache pode ser aumentada até o tamanho do dispositivo para o qual
está armazenando (por exemplo, uma cache tão extensa quanto um disco), por que não lhe
dar esse tamanho e eliminar o dispositivo?

1.6 Em um ambiente de multiprogramação e tempo compartilhado, vários usuários


compartilham o sistema simultaneamente. Essa situação pode resultar em diversos
problemas de segurança.
a) Cite dois desses problemas.
b) Podemos assegurar o mesmo nível de segurança em uma máquina de tempo
compartilhado como em uma máquina dedicada? Explique sua resposta.

1.7 Qual é o objetivo das interrupções? Em que uma interrupção difere de uma exceção? As
exceções podem ser geradas intencionalmente por um programa de usuário? Caso possam,
com que propósito?
1.8 O acesso direto à memória é usado em dispositivos de I/ O de alta velocidade para impedir o
aumento da carga de execução da CPU.

a) Como a CPU interage com o dispositivo para coordenar a transferência?


b) Como a CPU sabe quando as operações da memória foram concluídas?
c) A CPU pode executar outros programas enquanto o controlador de DMA está
transferindo dados. Esse processo interfere na execução dos programas de
usuário? Caso interfira, descreva que tipos de interferência são gerados.

1.9 Alguns sistemas de computação não fornecem uma modalidade de operação privilegiada de
de hardware. É possível construir um sistema operacional seguro para esses sistemas de
computação? Dê argumentos para defender e para refutar essa possibilidade.

1.10 Descreva um mecanismo que garanta a proteção da memória impedindo que um


programa modifique a memória associada a outros programas.

1.11 Descreva alguns dos desafios inerentes ao projeto de sistemas operacionais para
dispositivos móveis em comparação com o projeto de sistemas operacionais para PCs
tradicionais.

Capítulo 1 – Questões Curtas

1.1 Quais são os quatro componentes de um sistema computacional?

1.2 Liste pelo menos três recursos que o sistema operacional aloca.

1.3 O que sistemas operacionais de dispositivos móveis normalmente incluem além do kernel?

1.4 O que é uma interrupção?

1.5 Qual operação especial dispara uma interrupção de software?

1.6 Cite uma vantagem de se usar discos SSD em relação a discos magnéticos.

1.7 Qual a diferença entre memória volátil e não volátil?

1.8 Cite um outro termo para sistemas multiprocessados.

1.9 Cite pelo menos duas vantagens de sistemas multiprocessados.

1.10 Como a multiprogramação aumenta a utilização da CPU?


1.11 Qual é o termo usado para um programa que foi carregado em memória e está
executando?

1.12 Qual parte do sistema operacional toma decisão sobre qual tarefa irá executar?

1.13 Quais são os dois modos de operação de um sistema computacional?

1.14 Qual é o modo do sistema durante a inicialização (boot)?

1.15 Qual é o modo do sistema quando o sistema operacional assume o controle?

1.16 Qual é o modo do sistema quando um programa de usuário está executando?

1.17 Cite pelo menos duas atividades que o sistema operacional é responsável quando fazendo
o gerenciamento de processos.

1.18 Cite pelo menos duas atividades que o sistema operacional é responsável quando fazendo
o gerenciamento de memória.

1.19 Cite pelo menos duas atividades que o sistema operacional é responsável quando fazendo
gerenciamento de arquivos?

1.20 Ordene os seguintes dispositivos de armazenamento do mais rápido para o mais lento em
termos de tempo de acesso: (1) memória principal, (2) disco magnético, (3) registradores, (4)
disco SSD, (5) cache.

1.21 Qual a diferença entre proteção e segurança?

1.22 Cite um exemplo de um sistema operacional de código aberto.


Capítulo 2 – Problemas

2.1 Qual é a finalidade das chamadas de sistema?

2.2 Quais são as cinco principais atividades de um sistema operacional relacionadas com o
gerenciamento de processos?

2.3 Quais são as três principais atividades de um sistema operacional relacionadas com o
gerenciamento de memória?

2.4 Quais são as três principais atividades de um sistema operacional relacionadas com o
gerenciamento de memória secundária?

2.5 Qual é a finalidade do interpretador de comandos? Por que ele é, usualmente, separado do
kernel?

2.6 Que chamadas de sistema têm de ser executadas por um interpretador de comandos ou shell
para iniciar um novo processo?

2.7 Qual é a finalidade dos programas de sistema?

2.8 Os serviços e funções fornecidos por um sistema operacional podem ser divididos em duas
categorias principais. Descreva resumidamente as duas categorias e discuta em que elas diferem.

2.9 Descreva três métodos gerais para passagem de parâmetros ao sistema operacional.

2.10 Quais são as cinco atividades principais de um sistema operacional relacionadas com o
gerenciamento de arquivos?

2.11 Quais são os dois modelos de comunicação entre processos? Quais são os pontos fortes e
fracos das duas abordagens?

2.12 Por que a separação entre mecanismo e política é desejável?

2.13 Quais são as vantagens do uso de módulos de kernel carregáveis?


Capítulo 2 – Questões Curtas

2.1 Quais são as duas abordagens para oferecer interfaces de usuário?

2.2 O que é uma chamada de sistema?

2.3 O que é uma API?

2.4 Liste pelo menos três categorias de chamadas de sistema.

2.5 Liste pelo menos três categorias de programas de sistema.

2.6 Qual é o nome do pequeno pedaço de código que localiza o kernel e o carrega na memória
principal?
Capítulo 3 – Problemas

3.1 Usando o programa mostrado na Figura 3.30, explique qual será a saída na LINHA A.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int value = 5;

int main() {
pid_t pid;
pid = fork();
if (pid == 0) { /* processo-filho */
value += 15;
return 0;
} else if (pid > 0) { /* processo-pai */
wait(NULL);
printf(“PARENT: value = %d”, value); /* LINHA A */
return 0;
}
}
Figura 3.30 Que saída haverá na linha A?

3.2 Incluindo o processo-pai inicial, quantos processos são criados pelo programa mostrado na
Figura 3.31?
#include <stdio.h>
#include <unistd.h>
int main() {
/* cria um processo-filho */
fork();

/* cria outro processo-filho */


fork();

/* e cria um outro */
fork();

return 0;
}
Figura 3.31 Quantos processos são criados?

3.5 Quando um processo cria um novo processo usando a operação fork(), qual dos estados
a seguir é compartilhado entre o processo-pai e o processo-filho?

a) Pilha
b) Heap
c) Segmentos de memória compartilhada

3.9 Descreva as ações executadas por um kernel para a mudança de contexto entre processos.

3.11 Explique o papel do processo init em sistemas UNIX e Linux no que diz respeito ao
encerramento de processos.

3.12 Incluindo o processo-pai inicial, quantos processos são criados pelo programa mostrado na
Figura 3.32?

#include <stdio.h>
#include <unistd.h>

int main() {
int i;

for (i = 0; i < 4; i++)


fork();
return 0;
}

Figura 3.32 Quantos processos são criados?


3.17 Usando o programa mostrado na Figura 3.35, explique qual será a saída nas linhas X e Y.

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

#define SIZE 5
int nums[SIZE] = {0,1,2,3,4};

int main() {
int i;
pid_t pid;

pid = fork();
if (pid == 0) {
for (i = 0; i < SIZE; i++) {
nums[i] *= -i;
printf(“CHILD: %d“, nums[i]); /* LINHA X */
}
} else if (pid > 0) {
wait( NULL);
for (i = 0; i < SIZE; i++)
printf(“PARENT: %d“, nums[i]); /* LINHA Y */
}
return 0;
}

Figura 3.35 Que saída teremos na Linha X e na Linha Y?

3.18 Quais são os benefícios e as desvantagens de cada uma das situações a seguir? Considere
tanto o nível de sistema quanto o nível de programador.

a) Comunicação síncrona e assíncrona


b) Armazenamento em buffer automático e explícito
c) Envio por cópia e envio por referência
d) Mensagens de tamanho fixo e de tamanho variável
Capítulo 3 – Questões Curtas

3.1 Quais são os quatro componentes de um processo?

3.2 Liste pelo menos três estados possíveis que um processo pode estar.

3.3 O que um PCB (Process Control Block)?

3.4 Qual um outro termo para processo?

3.5 Qual o papel do escalonador de processos?

3.6 Qual o termo usado para descrever o processo de se salvar o estado de um processo e
restaurar o estado de um outro processo?

3.7 O que é um PID (Process IDentifier)?

3.8 Qual chamada de sistema cria um processo em sistemas Unix?

3.9 Qual chamada de sistema encerra um processo em sistemas Unix?

3.10 Qual o nome do processo que sistemas Unix atribuem a um novo pai de um processo
órfão?

3.11 Quais são os dois modelos fundamentais de comunicação entre processos (IPC)?

3.12 Quais são as duas chamadas de sistema usadas para comunicação entre processos via
troca de mensagens?

3.13 Troca de mensagens é geralmente mais rápida que memória compartilhada. Verdadeiro ou
Falso?

Você também pode gostar