Buscar

Capítulo 1 - Sistemas Operacionais Modernos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aluno: Matheus Paulo dos Santos Demiro
Livro: Sistemas Operacionais Modernos - 4ª Ed. 2016. Autor: Tanenbaum,
Andrew S.
Resposta dos exercícios do Capítulo 1
1. O sistema operacional é um software ou conjunto de softwares cuja principal função
é fornecer ao usuário uma interface simples e de fácil manuseio com o computador.
Ou seja, o SO introduz uma camada de abstração entre o computador e o usuário,
que permite com que o usuário consiga interagir com o hardware do computador.
Além disso, outra função essencial do SO é lidar com o gerenciamento otimizado de
recursos (como memória, processadores, discos e vários outros componentes de
entrada e saída) do computador, abstraindo essa responsabilidade dos usuários.
2. Sistemas operacionais de computadores de grande porte: servidores web.
Sistemas operacionais de servidores: servidores que fornecem serviços de
impressão. Sistemas operacionais de multiprocessadores: sistemas de Big Data.
Sistemas operacionais de computadores pessoais: notebooks. Sistemas
operacionais de computadores portáteis: smartphones. Sistemas operacionais
embarcados: aparelhos de televisão. Sistemas operacionais de nós sensores
(sensor-node): sistema para controle de computadores minúsculos que se
comunicam entre si e com uma estação-base usando comunicação sem fio.
Sistemas operacionais de tempo real: sistemas de controle de processo industrial.
Sistemas operacionais de cartões inteligentes (smartcard): cartões de crédito.
3. A diferença entre o sistema de compartilhamento de tempo (ou timesharing) e de
multiprogramação está no funcionamento de cada um. Os sistemas de timesharing,
variantes da multiprogramação, permite com que os vários processos sejam
executados através de uma divisão de tempo do processador, ou seja, a CPU
fornece a cada processo uma fatia de tempo para execução, quando termina-se a
execução ou chega-se ao final do tempo concedido, é a vez de outro processo
receber uma fatia de tempo para execução. Isso se repete até o final do
processamento das tarefas solicitadas. Logo, a CPU fica alternando entre os
diferentes processos de forma que o usuário tenha a impressão de que todos os
processos estão sendo executados simultaneamente, permitindo a interação
simultânea com múltiplos processos em execução. Já os sistemas de
multiprogramação possibilitam que enquanto um programa esteja em operação de
leitura outros possam ser executados. Ou seja, se um processo precisa esperar por
liberação de memória ou aguardar a finalização de uma operação de E/S, por
exemplo, a CPU consegue alocar outro processo para ser executado, diminuindo o
tempo de ociosidade.
4. O acesso à memória exibe o princípio da localidade de referência, onde, se um
local é lido, a probabilidade de acessar locais próximos é muito alta, principalmente
os seguintes locais de memória. Portanto, ao armazenar em cache uma linha de
cache inteira, a probabilidade de ocorrência de um cache é aumentada em seguida.
Além disso, o hardware moderno pode fazer uma transferência em bloco de 32
ou 64 bytes para uma linha de cache muito mais rápido do que ler os mesmos
dados que palavras individuais.
5. A técnica de multiprogramação permite que a CPU execute outras tarefas enquanto
aguarda a finalização de uma operação de E/S. Se não houver DMA (Direct Memory
Access) a CPU fica 100% ocupada com operações de E/S, portanto, não há ganho
nenhum ao implementar a multiprogramação.
6. Os dispositivos de E/S (Entrada/Saída) interagem intensamente com os sistemas
operacionais e por isso precisam ser policiados e gerenciados de forma segura a fim
de não comprometer a integridade do sistema. Logo, as instruções de acesso a
esses dispositivos são instruções privilegiadas, ou seja, que só devem ser
executadas pelo sistema operacional ou sob sua supervisão, impedindo, dessa
forma, a ocorrência de problemas de segurança e integridade do sistema.
7. Essa ideia ainda está viva. Atualmente grande parte dos fabricantes de
computadores (Dell, Samsung, etc) lançam suas máquinas atreladas ao conceito de
“família” introduzido pela IBM.
8. Uma tela de texto monocromático de 25 linhas × 80 colunas de caracteres requer
25*80*8(bits por caractere) = 16000 bytes que é equivalente a 16 KB. O bitmap
colorido de 24 bits de 1200 × 900 pixels requer 1200*900*8 = 25920000 bytes que é
equivalente a 25920 KB. Em 1980, essas duas opções teriam custado US$ 80 e
US$ 129.600, respectivamente. Hoje em dia a primeira situação, preço de 0,000026
dólares/KB a primeira solução custa 0,000416 e a segunda 0,673 dólares.
9. Durante a realização dos processos pertinentes ao projeto os recursos humanos,
financeiros e tecnológicos, além do fator tempo devem ser coerentes com a meta a
ser alcançada. Podemos tomar como exemplo, de conflito entre metas, aquelas que
exigem agilidade (tempo/prazo de entrega) e perfeição (qualidade), sem dispor de
recursos financeiros e humanos para atender às demandas.
10. No modo núcleo a CPU pode executar qualquer instrução de sua arquitetura,
já no modo usuário somente um subconjunto das instruções é permitido. Desta
forma, programas criados pelos usuários rodam no modo usuário e não terão
acesso a recursos críticos do sistema diretamente.
11. Dados:
Capacidade do disco = 255GB = 273804165120 bytes
Número de cilindros = 65536
Número de setores = 255 por faixa
Quantidade de bytes por setor = 522 bytes
Tempo de busca = 11ms
Atraso rotacional médio = 7ms
Taxa de leitura = 100 MB/s
A fórmula para calcular o número de cabeças é a seguinte:
Capacidade do disco = (cilindros/disco) * (setores/faixa) * (cabeças/cilindro) *
(bytes/setor)
Número de cabeças =
273804165120 
65536 𝑥 255 𝑥 512
Número de cabeças = 32
Cada prato consiste em duas cabeças, uma para ler de cima e outra para ler de
baixo. Portanto, o número de pratos é igual a 16 (número de cabeças/2).
12. (a), (c) e (d)
13. Pode demorar 20, 25 ou 30 ms para concluir a execução desses programas,
dependendo de como o sistema operacional os agendar. Se P0 e P1 estiverem
agendados na mesma CPU e P2 estiver agendado na outra CPU, serão necessários
20 ms. Se P0 e P2 estiverem agendados na mesma CPU e P1 estiver agendado
na outra CPU, serão necessários 25 ms. Se P1 e P2 estiverem agendados na
mesma CPU e P0 estiver agendado na outra CPU, serão necessários 30 ms. Se
todos os três estiverem na mesma CPU, serão necessários 35 ms.
14. Cada instrução de nanossegundo emerge do pipeline. Isso significa que a
máquina está executando 1 bilhão de instruções por segundo, ou seja, 1 ns por
instrução. Não importa quantos estágios o pipeline possui.
15. Considerando uma média entre a memória cache, memória RAM e disco, a média
da velocidade devido todas essas memórias se interagirem fica em torno de 1 ns.
16. Nesse caso, o programa que fez uma chamada para escrever no disco também
precisa ser bloqueado. Isto porque o programa precisa esperar o fim da escrita para
saber se a escrita foi bem sucedida ou não, e quantos bytes foram escritos com
sucesso.
17. Instrução é uma chamada ao sistema operacional gerada pelo programa em
execução para realizar alguma operação na máquina. O SO faz a leitura da
instrução, verifica se há permissão para executá-la e, caso haja permissão, executa
a tarefa solicitada pela instrução. Basicamente, o SO utiliza a instrução para saber
qual tarefa deve ser realizada pela máquina.
18. Os sistemas de timesharing necessitam gerenciar os processos que estão em
execução para que seja possível fornecer uma fatia de tempo de CPU para cada
processo. Portanto, a tabela de processos é necessária para determinar quais,
quantos e em que estado os processos se encontram , dentre outros atributos.
Logo, ela é fundamental para o funcionamento dos sistemas de timesharing. Em um
computador pessoal (PC) da atualidade que executa UNIX ou Windows também é
necessário o uso da tabela de processos, pois, apesar de um único usuário está
utilizando, o sistema executa multitarefas e precisa de uma gerenciamento dos
processos para saber quais serão alocados para a CPU emum determinado
intervalo de tempo.
19. Sim, impossibilitar o uso dos arquivos que estavam no diretório antes do novo
sistema ser montado.
20. fork: falta de memória para criação do processo filho na memória. exec: número de
parâmetros inválidos. unlink: nome de arquivo inexistente.
21. CPU: multiplexação no tempo e espaço. Memória: multiplexação de espaço. Disco:
multiplexação de espaço. Placa de rede: multiplexação no tempo. Impressora:
multiplexação no tempo. Teclado: multiplexação no tempo. Monitor: multiplexação
no tempo.
22. Sim, essa chamada pode retornar algum valor diferente de nbytes. Principalmente
por dois motivos, um final de arquivo foi encontrado antes, ou o arquivo não pôde
ser lido.
23. Ele contém os bytes: 1, 5, 9, 2.
24. Considerando as seguintes informações:
Tamanho do arquivo = 10 MB
Taxa de leitura = 200 MB/s
Tempo para ler 10 MB = (Tamanho do arquivo/Taxa de leitura) = 0,05 s
Tempo para mover o braço de um cilindro para o próximo = 1 ms
Tempo para mover o braço até a faixa 50 = 1 ms * 50(movimentos) = 50 ms
Tempo para chegar no setor inicial do arquivo = 5 ms
Logo, o tempo total para retirar o arquivo do disco será de 55,05 ms.
25. Arquivos especiais de bloco são usados para modelar dispositivos que fornecessem
endereçamento aleatório, como discos. Já os arquivos especiais de caracteres são
usados para modelar dispositivos que utilizem acesso serial aos dados, como
modems e impressoras.
26. Não é necessário que ambos tenham o mesmo nome. O nome do procedimento não
é importante de forma alguma, funcionalmente falando. A chamada ao sistema é
mais importante que a chamada da biblioteca. Já que sem a chamada do sistema,
nenhuma biblioteca pode fazer tal chamada, o que não é verdade para o contrário. O
programa pode sim fazer uma chamada direta ao sistema.
27. Isso permite que um programa executável seja carregado em diferentes partes da
memória da máquina em diferentes execuções. Além disso, permite que o tamanho
do programa exceda o tamanho da memória da máquina.
28. Caso o programador esteja preocupado com o desempenho, então é importante se
atentar às chamadas de sistema, pois elas requerem desvio de fluxo e tratamento
das chamadas, coisas que tomam tempo e retardam a execução dos processos. Se
uma tarefa puder ser realizada sem uma chamada do sistema, o programa será
executado mais rapidamente.
29. Várias chamadas UNIX não possuem equivalentes na API Win32, resultando em um
maior trabalho para um programador em converter um programa UNIX para ser
executado sob o Windows, pois ele terá que recorrer a procedimentos com
funcionalidades similares entre os sistemas operacionais. As chamadas UNIX
apresentadas na figura 1.23 que não possuem equivalências na API Win32, são:
link, mount, unmount, chmod e kill. Para a chamada link um programa Win32 não se
pode referir a um arquivo por um nome alternativo ou vê-lo em mais de um diretório.
Em relação às chamadas mount e unmount um programa Windows não pode
fazer suposições sobre nomes de caminho padrão. A chamada chmod não existe
no Windows, pois o modelo de segurança do Windows é diferente do UNIX. A
chamada kill não é suportada pela API Win32, pois programadores do Windows não
podem matar um programa que não esteja se comportando de maneira
incorreta.
30. O principal fator que impede a criação de um sistema operacional completamente
portátil é que cada arquitetura de sistema possui seu próprio conjunto de instruções
que pode executar. Por exemplo, um Pentium não pode executar programas SPARC
e um SPARC não pode executar programas Pentium. Um sistema operacional
altamente portátil consiste em duas camadas de alto nível: camada dependente da
máquina e uma camada independente da máquina. A camada dependente da
máquina aborda as especificações do hardware e deve ser implementada
separadamente para cada arquitetura. Essa camada fornece uma interface uniforme
na qual a camada independente da máquina é construída. A camada independente
de máquina deve ser implementada apenas uma vez. Para ser altamente portátil, o
tamanho da camada dependente da máquina deve ser mantido o menor possível.
31. A separação de política e mecanismo permite que os designers de SO implementem
um pequeno número de primitivos básicos no kernel. Essas primitivas são
simplificadas porque não dependem de nenhuma política específica. Eles podem
então ser usados para implementar mecanismos e políticas mais complexas no nível
do usuário.
32. O grande uso de espaço em disco é uma das principais desvantagens da utilização
de máquinas virtuais, pois cada máquina virtual precisa de todos os arquivos do
sistema operacional instalado, ao final, o espaço ocupado por eles é enorme.
33.
a) 0,031536 segundos
b) 1 metro
c) bytes1015
d) É 6 x kg1024

Outros materiais