Escolar Documentos
Profissional Documentos
Cultura Documentos
Lista de Exercícios 1
Capítulo 1 – Problemas
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.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.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.
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.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.
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.6 Cite uma vantagem de se usar discos SSD em relação a discos magnéticos.
1.12 Qual parte do sistema operacional toma decisão sobre qual tarefa irá executar?
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.
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.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.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();
/* 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;
#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;
}
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.
3.2 Liste pelo menos três estados possíveis que um processo pode estar.
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.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?