Capítulo 1 - Introdução

De BCC Wiki

Sistemas Operacionais - Tanenbaum (Segunda Edição)

Questões - Capítulo 1 - Introdução

1. Quais são as duas principais funções de um sistema operacional?

  • O sistema operacional funciona como uma ponte entre o hardware e o software, possibilitando a comunicação entre ambos e lidando com os requisitos necessários para que tal comunicação seja efetiva sem que o usuário necessite saber como ela é feita. Além disso, o sistema operacional gerencia os recursos do sistema e guarda quem está usando cada recurso, mediando pedidos conflitantes.

2. O que é multiprogramação?

  • É a técnica de permitir que vários programas sejam guardados na memória "paralelamente", ou seja, na ociosidade do processador, esperando por um trabalho ficar completo, outro programa assumiria o controle da CPU, fazendo com que esta se mantivesse ocupada por quase 100% do tempo.

3. O que é spooling? Você acredita que os computadores pessoais avançados terão spooling como um recurso padrão no futuro?

  • Spooling é a técnica de escrever dados em um local temporário (no disco, por exemplo) para que eles possam ser acessados no futuro. É geralmente utilizado quando dois devices possuem velocidades de leitura/escrita muito diferentes; assim é possível ajustar a mesma a cada um deles.

4. Nos primeiros computadores, cada byte de dados lido ou escrito era diretamente tratado pela CPU (ou seja, nao havia DMA - acesso direto à memória). Que implicações esse arranjo tem para a multiprogramação?

  • Com esse arranjo, não é possível realizar a multiprogramação. A única maneira de carregar vários programas era utilizando o sistema batch, manualmente, que carregava os programas sequencialmente, um após o término do outro.

5. Por que o tempo compartilhado não é comum em computadores de segunda geração?

  • Do mesmo modo que não há multiprogramação, ou seja, não é possível realizar a "interrupção" de um programa para carregar outro, ou utilizar a CPU no tempo de espera de outro, não há time-sharing. A falta de possibilidade de acesso direto à memória exclui tais técnicas de utilização eficiente de CPU.

6. Quais das seguintes instruções devem ser permitidas apenas no modo de kernel?

  • (a) Desativar todas as interrupções
  • (b) Ler o relógio de hora do dia
  • (c) Configurar o relógio de hora do dia
  • (d) Mudar o mapeamento da memória
  • Considerando que o relógio de hora do dia NÃO é o relógio da CPU, apenas as instruções (a) e (d). Para a instrução (a), uma vez que o kernel é quem controla e gera as interrupções, para desativá-las é necessário estar em modo kernel. Para a instrução (d), uma vez que o kernel divide a memória de modo que programas não acessem regiões indevidas, apenas em modo kernel é possível alterar essa estrutura.

7. Relacione algumas diferenças entre sistemas operacionais de computadores pessoais e sistemas operacionais de mainframe.

  • Os sistemas operacionais de mainframe possuem poucos processos e muito tempo de uso de CPU por cada um deles, diferentemente dos sistemas operacionais de computadores pessoais, com pouco trabalho dividido em muitos processos. Estes estão preocupados com o real-time do usuário, enquanto aqueles preocupam-se em resolver completamente os problemas o mais rápido possível.

8. Um arquivo de MINIX cujo proprietário tem uid = 12 e gid = 1 tem modo rwxr-x---. Outro usuário com uid = 6, gid = 1 tenta executar o arquivo. O que acontecerá?

  • Ele pode pois está no mesmo grupo e porque no segundo bloco de permissões, reservado a isto, há a permissão de execução x.

9. Em vista do fato de que a mera existência de um superusuário pode levar a todo tipo de problemas de segurança, por que tal conceito existe?

  • Nem todos os usuários estão habilitados a lidar com alterações substanciais em baixo nível do sistema. Dessa forma, é necessário que haja um modo para que o administrador do mesmo possa fazê-lo, apesar dos problemas de segurança que podem ser causados por isso.

10. O modelo cliente-servidor é popular em sistemas distribuídos. Ele também pode ser utilizado em um sistema de um único computador?

  • Sim, é possível que o modelo cliente-servidor seja utilizado em um único computador. As parcelas possíveis de serem removidas do kernel (como alguns serviços) são transferidos para uma camada mais acima, tornando o kernel com conteúdo mínimo e fazendo com que o serviço deste passe a ser a manipulação entre clientes e servidores, estes últimos abrigando as remoções do kernel, cada uma em um servidor diferente (memória, arquivos, terminal, rede, dentre outros).

11. Por que a tabela de processos é necessária em um sistema de tempo compartilhado? Ela também é necessária em sistemas de computadores pessoais em que só um processo existe e toma conta da máquina inteira até que se encerre?

  • É necessária informação sobre os processos rodando, em espera, bloqueados, há quanto tempo estão rodando e outros detalhes relevantes para a escolha dos processos que serão executados pelo processador. Em computadores com só um processo tomando conta da CPU até que se encerre, não é necessária, pois não há multiprogramação e escalonamento de processos.

12. Qual é a diferença essencial entre um arquivo especial de bloco e um arquivo especial de caractere?

  • Arquivos especiais existem para que dispositivos de entrada e saída possam ser tratados como arquivos no MINIX. Os arquivos especiais de bloco são utilizados para leitura e escrita em dispositivos que contêm blocos endereçáveis, como discos; já os de caractere são utilizados para dispositivos que recebem ou enviam caracteres/bytes (impressora, teclado, modem).

13. No MINIX, se o usuário 2 cria um vínculo para um arquivo possuído pelo usuário 1, e, então, o usuário 1 remove esse arquivo, o que acontece quando o usuário 2 tentar ler o arquivo?

  • O usuário 2 ainda consegue ler o arquivo cujo vínculo foi criado. Para o usuário 1, o arquivo não mais aparece, porém ele ainda permanece no local onde se encontrava, e o vínculo do usuário 1 para ele, foi perdida, fato que não ocorreu com o usuário 2. Para cada diretório há uma tabela referenciando os arquivos que podem ser acessados através dele, através de seu inode, nome, dentre outras informações. O arquivo somente é removido da tabela se não é referenciado por nenhum inode.

14. Por que a chamada de sistema de CHROOT é limitada ao superusuário? (Sugestão: pense nos problemas de proteção.)

  • A chamada de sistema CHROOT altera o diretório-raiz, ou seja, qualquer caminho de arquivo a partir do / (absoluto) irá começar nesse novo diretório. Isso dá permissão ao usuário de criar e editar diretórios importantes, alterar permissões de outros usuários, obter senhas de proteção salvas em arquivos, modificar programas importantes, dentre outras ações indevidas a usuários não-raiz.

15. Por que o MINIX tem o programa update executando em segundo plano o tempo todo?

  • Para minimizar o risco de perda dos dados que estão guardados em cache em caso de falha de energia ou qualquer outro problema, o MINIX executa o update para, a cada 30 segundos, escrever os dados modificados do cache no disco e atualizá-lo.

16. Faz qualquer sentido ignorar o sinal SIGALRM?

  • O sinal SIGALRM indica que houe uma interrupção causada por algum fator e que o processo que está atualmente rodando deve ser interrompido para tratá-la. Caso o sinal não seja tratado, pode ser que o processo esteja "travado", e a ação padrão do MINIX é "matá-lo". Seria possível ignorar o sinal em casos de interrupção de entrada e saída, porém é possível que tais interrupções objetivem "matar" o processo atual. Uma melhor saída seria então não ignorar nenhum sinal SIGALRM, ou configurar o sistema operacional para ignorar alguns tipos de sinais que podem não ser relevantes.

17. Escreva um programa (...)

 #include <stdio.h>
 int main{
   printf("Hello World!\n");
   return 0;
 }

18. Escreva um shell (...)

  • shell
Ferramentas pessoais