Você está na página 1de 16

CAPTULO 1 1 Quais so as duas principais funes de um Sistema Operacional?

? Os sistemas operacionais podem ser analisados de dois pontos de vista: como mquinas estendidas e como gerenciadores de recursos. Como mquina estendida, o SO deve fornecer ao usurio uma viso de mquina virtual que seja mais conveniente ao uso do que a mquina real, com abstraes dos detalhes complicados da execuo das tarefas. J como gerenciador de recursos, o SO tem a funo de gerenciar de forma adequada as diferentes partes do computador (CPU, memria, acesso ao disco, etc), a fim de que as aplicaes impostas pelo usurio sejam executadas o mais rpido possvel.

2 Qual a diferena entre modo ncleo e modo usurio? Por que a diferena importante para um Sistema Operacional? O modo ncleo (tambm chamado de modo kernel ou supervisor) diz respeito ao modo de execuo em que todas as instrues do processador podem ser executadas. Os sistemas operacionais (SO) rodam neste modo de execuo. J o modo usurio refere-se um modo de execuo em que o processador pode executar apenas instrues no-privilegiadas. Os processos do usurio (editores de texto, compiladores, etc) rodam neste modo de execuo. Esta distino serve para proteger o hardware da ao direta do usurio. Caso um processo rodando em modo usurio necessite da execuo de uma instruo privilegiada (de acesso ao hardware), o processador deve ser chaveado para o modo usurio, por meio de uma chamada de sistema (system call).

3 O que multiprogramao? Multiprogramao a capacidade do sistema operacional de executar concorrentemente vrios processos, alternando-os entre CPU e memria. A vantagem da multiprogramao est no fato dela evitar que a CPU fique ociosa enquanto outros processos em execuo esto realizando operaes que no requerem seu uso (como, por exemplo, operaes de entrada/sada).

4 O que spooling? Voc acredita que computadores pessoais avanados tero spooling como um recurso padro no futuro? Spooling (Simultaneous Perifrica Simultnea On Line). Peripheral Operation On Line Operao

Spooling de entrada consiste na leitura de jobs (por exemplo, cartes) para o disco, para que, assim que o processo em execuo termine, haja jobs prontos para serem processados pela CPU. Spooling de sada consiste na prvia transferncia dos arquivos de impresso para o disco. Nos computadores pessoais modernos, no faz mais sentido a utilizao de spoolings de entrada, j que todos os dados j esto, desde o incio, carregados no disco. Talvez ainda possa ser encontrado spoolings de sada em tarefas de impresso, nas quais necessrio armazenar a fila de impresso para que sejam liberados os recursos da CPU.

5 Nos primeiros computadores, cada byte de dados lidos ou escrito era diretamente tratado pela CPU (isto , no havia DMA - Direct Memory Access acesso direto memria). Quais so as implicaes dessa organizao para a multiprogramao? A principal funo da multiprogramao no deixar a CPU ociosa enquanto outros processos em execuo esto realizando operaes que no requerem seu uso (operaes de I/O). No caso de no haver DMA, a CPU ficaria ocupada com as operaes de I/O, que podem ser muito demoradas, no podendo realizar outras tarefas.

6 Por que o tempo compartilhado no era comum em computadores de segunda gerao? Nos computadores de segunda processamento em lote (batch systems). gerao utilizava-se sistemas de

Logo, o tempo de compartilhamento no era comum, uma vez que os computadores utilizados para os clculos (maiores e mais caros) eram otimizados para o processamento dos programas, ao contrrio dos utilizados para os programas de leitura de cartes e impresso de resultados (menores e mais baratos), que no requeriam grande capacidade de processamento.

7 Quais das seguintes instrues devem ser permitidas somente em modo ncleo? (a) Desabilitar todas as interrupes. (b) Ler o relgio de hora do dia. (c) Configurar o relgio de hora do dia. (d) Mudar o mapeamento de memria. (a), (c) e (d) s devem ser permitidas em modo kernel, uma vez que atuam diretamente sobre o hardware. (b) e poder ser realizadas pelo usurio atravs de system calls. OBS: Chamada de Sistema (system call) constitui uma interface entre programas aplicativos e o sistema operacional. Ela uma rotina que prov acesso s funcionalidades do SO, tais como manipulao de arquivos, controle de processo, gerenciamento de memria, etc.

8 Relacione algumas diferenas entre os sistemas operacionais de computadores pessoais e os sistemas operacionais de computadores de grande porte. SOs de computadores pessoais so sempre interativos, muitas vezer com apenas um usurio. SOs para mainframes quase sempre do nfase ao processamento em lote (batch) ou tempo de compartilhamento (timesharing) com muitos usurios. Proteo e uso dos recursos so muito mais problemticos nestes computadores.

9 D um motivo pelo qual um sistema operacional patenteado, de cdigo-fonte fechado, como o Windows, deve ter qualidade melhor do que um sistema operacional de cdigo-fonte aberto, como o Linux. Agora, d um motivo pelo qual um sistema operacional de cdigo-fonte aberto, como o Linux, deve ter qualidade melhor do que um sistema operacional patenteado, de cdigo-fonte fechado, como o Windows. Cdigo aberto: Um bug pode ser corrigido por qualquer um e a correo disponibilizada publicamente. O mesmo vale para melhorias. Cdigo fechado: Maior suporte e padronizao para o desenvolvimento de softwares.

10 Um arquivo do MINIX, cujo proprietrio tem UID = 12 e GID = 1, tem o modo rwxr-x---. Outro usurio, com UID =6, GID = 1, tenta executar o arquivo. O que acontecer ? Proprietrio: rwx; Grupo: rx; Outros: (nada). r: read; w: write; x: execute

11 Em vista do fato de que a simples existncia de um superusurio pode levar a todos os tipos de problemas de segurana, por que existe tal conceito? Superusurio uma abstrao no nvel do funcionamento so SO. Seu papel , basicamente, determinar quais usurios e grupos podem ler, escrever e executar quais arquivos. Portanto, o conceito de superusurio necessrio para restringir o acesso irrestrito a apenas alguns usurios especiais.

12 Todas as verses do UNIX suportam atribuio de nomes de arquivo usando caminhos absolutos (relativos raiz) e caminhos relativos (relativos ao diretrio de trabalho). possvel descartar um deles e usar apenas o outro? Se for assim, qual deles voc sugeriria manter? Sim. Ao meu ver, os caminhos relativos so apenas uma abstrao do sistema operacional para o usurio, uma vez que o caminho concatenado e o sistema utiliza-se sempre do caminho absoluto. Portanto, seria possvel eliminar a utilizao de caminhos relativos, mantendo apenas a utilizao de caminhos absolutos.

13 Por que a tabela de processos necessria em um sistema de tempo compartilhado? Ela tambm seria necessria em sistemas operacionais de computador pessoal, nos quais existe apenas um processo, com esse processo tomando conta da mquina inteira at que termine? A tabela de processos necessria para manter o estado dos processos que esto atualmente suspensos (em estado de espera ou bloqueados). No caso de SOs com apenas um processo, esta tabela no necessria, uma vez que o nico processo nunca entra em estado suspenso.

14 Qual a diferena bsica entre um arquivo especial de bloco e um arquivo especial de caractere? Os arquivos especiais so utilizados para fazer com que dispositivos de I/O se comportem como arquivos normais. Assim, eles podem ser lidos ou escritos utilizando-se as mesmas chamadas de sistema que se usa para arquivos convencionais. Os arquivos especiais de bloco so utilizados para modelar dispositivos que consistem em um conjunto de blocos endereveis aleatriamente, como os discos. Pode-se, por exemplo, acessar um bloco especfico deste arquivo sem se preocupar com a estrutura do sistema de arquivos do disco por ele representado. Os arquivos especiais de caractere so utilizados para modelar dispositivos que aceitam como entrada, ou tm como sada, um fluxo de caracteres, tais como impressoras ou modems.

15 No MINIX 3, se o usurio 2 cria um vnculo (link) para o arquivo pertencente ao usurio 1 e, ento, o usurio 1 remove esse arquivo, o que acontece quando o usurio 2 tenta ler o arquivo? O arquivo continuar acessvel. Um arquivo pode ser considerado um apontador para a regio do endereo contendo seus dados. Links nada mais so outros apontadores para a mesma regio da memria de um arquivo. Portanto, ao remover um arquivo, remove-se apenas o apontador, mantendo-se os dados na memria. Somente quando todos os links forem removidos que os dados sero excludos.

16 Os pipes so um recurso fundamental? Alguma funcionalidade importante seria perdida se eles no estivessem disponveis? No, uma vez que seria possvel criar um arquivo de sada de um processo e utiliz-lo como entrada de outro, o que realizaria a mesma tarefa dos pipes. Entretanto, os pipes facilitam muito a vida do usurio, uma vez que a tcnica utilizada acima necessitaria de uma ateno do usurio quanto excluso dos arquivos criados, depois de utilizados.

17 Os instrumentos modernos para o consumidor, como equipamentos estreos e cmeras digitais, frequentemente tm uma tela na qual podem ser inseridos comandos e os resultados podem ser vistos. Muitas vezes, esses equipamentos tm interiormente um sistema operacional primitivo. A que parte de um software de computador pessoal o processamento de comandos por meio da tela de um equipamento estreo ou de uma cmera semelhante? Ao shell, ou seja, ao interpretador de instues do sistema operacional.

18 O Windows no tem uma chamada de sistema fork, embora seja capaz de criar novos processos. D um palpite abalizado sobre a semntica da chamada de sistema utilizada pelo Windows para criar novos processos. O Windows nao possui a system call fork, mas possui o CreateProcess (algo similar a fork + execve).

19 Por que a chamada de sistema chroot limitada ao superusurio? (Dica: pense nos problemas de proteo). chroot uma system call utilizada para alterar a raz da rvore de diretrios. Pode ser utilizado para que usurios normais (sem privilgios de superusurio) s possam acessar a estrutura de arquivos a partir de um certo nvel da rvore. Portanto, por se tratar de uma chamada que envolve a segurana do sistema operacional, deve ser limitada apenas ao superusurio.

20 Examine a lista de chamadas de sistema da Figura 1-9 (As principais chamadas de sistema do MINIX). Qual delas voc acha que provavelmente ser executada mais rapidamente? Explique sua resposta. exit, pois no precisara armazenar nenhuma informao do processo, j que este est sendo terminado.

21 Suponha que um computador possa executar 1 bilho de instrues/segundo e que uma chamada de sistema ocupe 1000 instrues, incluindo a interrupes e toda a troca de contexto. Quantas chamadas de sistema o computador pode executar por segundo e ainda ter a metade da capacidade da CPU para executar cdigo de aplicativos? Precisaria executar 0,5 bilhes de instrues/s. Logo, se cada system call ocupa 1000 instrues, ento sero realizadas 500.000 chamadas a system calls/s.

22 Existe uma chamada de sistema mknod na Figura 1-9, mas no h chamada rmnod. Isso significa que voc precisa tomar muito cuidado ao criar inodes dessa maneira porque no h meios de remover todos eles? No. Os arquivos especiais (dispositivos de I/O) so abstrados de forma a serem tratados como arquivos normais. Desta forma, podemos remov-los normalmente atravs do uso de rm.

23 Por que o MINIX 3 tem o programa update executando em segundo plano (background) o tempo todo? O programa update, que lanado na inicializao do MINIX, executa uma chamada sync a cada 30 segundos, com o objetivo de esvaziar o cache (flushing). Portanto, necessrio que este programa rode em background para no manter o sistema constantemente ocupado.

24 Faz algum sentido ignorar o sinal SIGALARM? Se um sinal de alarme no for capturado, a ao padro ser executada, e o processo sinalizado ser terminado. Portanto, faz sentido o processador ignorar o sinal SIGALARM, no caso do responsvel pelo processo desejar que este seja eliminado ao receber um sinal de alarme.

25 O modelo cliente-servidor popular em sistemas distribudos. Ele tambm pode ser utilizado em um sistema de um nico computador? Sim. Um exemplo o prprio MINIX 3. Nestes casos, o kernel chamado de microkernel, pois passa requisies do usurio para servidores (FS, PM, etc), que rodam em modo usurio. Estes servidores tm o objetivo de diminuir a quantidade de processos executando em modo kernel. Desta forma, se um servidor falhar, a mquina no ser derrubada. Outra vantagem desta arquitetura sua capacidade de adaptao para uso em sistemas distribudos. Se um cliente se comunica com um servidor por meio de mensagens, o cliente no precisa saber se a mensagem manipulada de forma local ou se foi enviada por um servidor em uma mquina remota. Para o cliente, a situao a mesma: uma requisio foi enviada e uma resposta retornou.

26 As verses iniciais do Pentium no suportavam um monitor de mquina virtual. Qual caracterstica fundamental necessria para permitir que uma mquina possa se tornar virtual? A caracterstica fundamental necessria para que uma mquina possa se tornar virtual o tratamento de sinais de interrupo.

CAPTULO 2 1 Por que a multiprogramao fundamental para a operao de um sistema operacional moderno? Um SO moderno precisa se adequar a um grande compartilhamento de tempo e a uma grande demanda de processos, isso seria praticamente impossvel sem a multiprogramao, com uma organizao adequada no armazenamento dos processos atravs, principalmente, da tabela de processos.

2 Quais so os trs principais estados que um processo pode estar? Descreva sucintamente o significado de cada um.

y y y

Running (executando): processo utilizando a CPU; Ready (pronto): processo executvel. Temporariamente parado, de forma a permitir que outro processo seja executado; Blocked (bloqueado): processo incapaz de executar at que algum evento externo acontea (e desbloqueie este processo);

3 Suponha que voc fosse projetar uma arquitetura de computador avanada que fizesse a troca de processo em hardware, em vez de ter interrupes. De quais informaes a CPU precisaria? Descreva como a troca de processo em hardware poderia funcionar. A CPU precisaria saber o momento em que o processo em execuo bloqueado para fazer a troca por um processo no estado Pronto. Em uma arquitetura mais avanada, a CPU precisaria saber o tempo que o processo est executando e sua prioridade em relao aos outros processos que esto no estado Pronto para realizar alternncia entre processos e gerar sensao de simultaneidade de execuo de processos. Isto , o escalonamento de processos precisaria ser implementado em hardware. Para realizar a troca de processos o hardware deve empilhar o registrador de estado e o "program counter" (PC) e salvar o estado dos registradores do processo em execuo. Quando este processo voltar a executar, o hardware desempilha o registrador de estado, o "program counter" (PC) e recupera o estado dos registradores do processo que ir executar.

4 Em todos os computadores atuais, pelo menos parte das rotinas de tratamento de interrupo escrita em linguagem assembly. Por qu? Pois os tratamentos de interrupes requerem que a rotina comee salvando o estado dos registradores na tabela de processos e configurando o ponteiro da pilha para uma pilha temporria, utilizada no tratamento da interrupo. Entretanto, estas aes no podem ser expressas em linguagens de alto nvel, como C, e, portanto, devem ser escritas em assembly.

5 Redesenhe a Figura 2-2, adicionando dois novos estados: novo e terminado. Quando um processo criado, ele est inicialmente no estado novo. Quando ele sai, est no estado terminado.

6 No texto, foi dito que o modelo da Figura 2-6(a) no era conveniente para um servidor de arquivos usando uma cache na memria. Por que no? Cada processo poderia ter a sua prpria cache? Se o servidor de arquivos for programado para utilizar o modelo da figura 2-6(a), mostrada abaixo, cada thread deste servidor possuir uma rea especfica de endereamento de memria. Esta rea utilizada para implementar cache. Logo, cada processo teria cache em uma rea diferente da memria. Desta maneira, se uma thread realizar operao de escrita no arquivo X e logo em seguida outra thread realizar uma operao de leitura ou escrita no arquivo X, existe o risco de que a operao realizada pela primeira tenha efeito apenas no cache e no no arquivo gravado, por exemplo, no HD. Logo, a

segunda thread estaria operando com um arquivo desatualizado. No momento que uma das threads realizar flushing do cache no HD, poder existir o problema de uma das verses do arquivo, modificada em uma das threads, ser perdida. Desta maneira, conclu-se que cada processo no poderia ter sua prpria cache.

7 Qual a diferena fundamental entre um processo e uma thread? Uma thread compartilha seu espao de endereamento com outras threads mas tem fluxo de controle prprio, ao passo que um processo possui um espao de endereamento e fluxo de controle nicos e portanto, no compartilha recursos com outros processos.

8 Em um sistema com threads, existe normalmente uma pilha por thread ou uma pilha por processo? Explique. Cada thread possui seu prprio controle e fluxo e, portanto, sua prpria pilha. Isso necessrio para que cada thread possa ser interrompida (por escalonamento ou bloqueio) e retomada do mesmo ponto, independente uma das outras.

9 O que uma condio de corrida? Condio de corrida a situao em que dois ou mais processos realizam leitura ou escrita de dados compartilhados e o resultado final depende da ordem e tempo de execuo dos processos.

10 D um exemplo de uma condio de corrida que poderia acontecer no momento de comprar passagens de avio por duas pessoas que desejam viajar juntas. y y y O comprador A verifica que existem dois acentos juntos disponveis; Neste mesmo instante, um comprador B realiza a compra de um dos acentos desejados por A; Quando o comprador A tenta concluir sua compra, verifica que um dos acentos no se encontra mais disponvel, impossibilitando-o de comprar os dois acentos juntos.

Concluso: o resultado da compra foi afetado pela ordem das compras realizadas pelos compradores A e B.

17 Na seo 2.2.4, foi descrita uma situao com um processo de alta prioridade, H, e um processo de baixa prioridade, L, que leva H a entrar em um lao infinito. O mesmo problema ocorrer se for usado escalonamento roundrobin, em vez de escalonamento por prioridade? Discuta. No, uma vez que, no escalonamento round-robin, o controle da ordem dos processos feito atravs do quantum. Portanto, caso um processo entre em seu estado crtico, em loop infinito, o escalonamento ir alternar para outro processo da fila aps o fim de seu quantum.

18 Dentro dos monitores, o sincronismo utiliza variveis de condio e duas operaes especiais, WAIT e SIGNAL. Uma forma mais geral de sincronizao seria ter uma nica primitiva, WAITUNTIL, que tivesse como parmetro um predicado booleano arbitrrio. Assim, algum poderia escrever, por exemplo: WAITUNTIL x < 0 or y + z < n A primitive SIGNAL no seria mais necessria. Esse esquema claramente mais geral do que o de Hoare ou Brinch Hansen, mas no utilizado. Por que no? (Dica: pense a respeito da implementao.) Pois seria de implementao custosa, uma vez que, cada vez que h uma mudana em alguma varivel que aparece em um predicado no qual algum processo est esperando, a rotina de sistema reavalia o predicado para ver se o processo pode ser desbloqueado. Com os monitores de Hoare e Brinch Hansen, os processos s podem ser acordados por meio de uma primitiva de sinal.

19 Um restaurante fast food tem quatro tipos de funcionrios: (1) os atendentes, que anotam os pedidos dos clientes; (2) os cozinheiros, que preparam o alimento; (3) os embaladores, que colocam o alimento em saquinhos; e (4) os caixas, que entregam os saquinhos para os clientes e recebem o dinheiro. Cada funcionrio pode ser considerado um processo de comunicao seqencial. Que forma de comunicao entre processos eles utilizam? Relacione este modelo com os processos no MINIX 3. A comunicao entre os empregados se d por meio de mensagens: pedidos, comida e saquinhos. Se compararmos com a comunicao de processos do MINIX 3, podemos dizer que os quatro processos esto conectados atravs de pipes.

20 Suponha que temos um sistema de passagem de mensagens usando caixas de correio (mailbox). Ao enviar para uma caixa de correio cheia ou ao tentar receber de uma caixa vazia, um processo no bloqueado. Em vez disso, ele recebe um cdigo de erro. O processo responde ao cdigo de erro apenas tentando novamente, repedidamente, at ser bem-sucedido. Esse esquema leva a condies de corrida? No, uma vez que nada nunca perdido. Mas trata-se de uma espera ativa (loop de espera).

21 Na soluo do problema da janta dos filsofos (Figura 2-20), por que a varivel de estado configurada como HUNGRY na funo take_forks? Pois caso o filsofo seja bloqueado, seus vizinhos podem, depois, por meio de um teste, verificar seu estado (faminto) atravs da varivel, para que este possa ser desbloqueado assim que os garfos estiverem disponveis.

22 Considere a funo put_forks da Figura 2-20. Suponha que a varivel state[i] tenha sido configurada como THINKING aps as duas chamadas para test e no antes. Como essa alterao afetaria a soluo para o caso de 3 filsofos? E para 100 filsofos? Nessas condies, assim que o filsofo terminasse de comer, nenhum de seus vizinhos seriam escolhidos para comer, mesmo com os garfos disponveis. Desta forma, o sistema convergiria para um estado em que todos os filsofos ficam pensando (tanto para 3 quanto para 100 filsofos).

23 O problema dos leitores e escritores pode ser formulado de vrias maneiras com relao a qual categoria de processos pode ser iniciada e quando. Descreva completamente trs variaes diferentes do problema, cada uma favorecendo (ou no favorecendo) alguma categoria de processos. Para cada variao, especifique o que acontece quando um leitor ou um escritor se torna pronto para acessar a base de dados e o que acontece quando um processo tiver terminado de usar a base de dados. Variao 1: leitores tm prioridade. Assim, nenhum escritor pode iniciar enquanto um leitor estiver ativo. Quando um leitor aparece, pode ser iniciado imediatamente, a no ser que um escritor esteja ativo. Neste caso, quando o escritor terminar, se houver leitores esperando, todos so iniciados, independente da presena de escritores esperando. Variao 2: escritores tm prioridade. Neste caso, nenhum leitor pode iniciar enquanto houver escritoires esperando. Quando o ltimo processo ativo terminar, o escritor iniciado, se houver um. Caso contrrio, todos os leitores, se houver algum, so iniciados. Variao 3: verso simtrica. Quando um leitor est ativo, novos leitores podem ser iniciados imediatamente. Quando o escritor terminar, um novo escritor tem prioridade, se algum estiver esperando. Ou seja, uma vez iniciado os leitores, continua-se com leitores at no haver mais nenhum. Da mesma forma, uma vez iniciado escritores, todos os escritores pendentes esto habilitados para rodar.

24 Os computaodres CDC 6600 podiam manipular at 10 processos de E/S simultaneamente, usando uma forma interessante de escalonamento roundrobin, chamada compartilhamento de processador. Uma troca de processo ocorria aps cada instruo, de modo que a instruo 1 vinha do processo 1, a instruo 2 vinha do processo 2, etc. A troca de processo era feita por um hardware especial e a sobrecarga era zero. Se um processo precisasse de T segundos para terminar na ausncia de concorrncia, de quanto tempo ela precisaria se fosse usado compartilhamento de processador com n processos? Iria precisar de n*T segundos.

25 Normalmente, os escalonadores round-robin mantm uma lista de todos os processo executveis, com cada processo ocorrendo exatamente uma vez na lista. O que aconteceria se um processo ocorresse duas vezes na lista? Voc pode imaginar um motivo para permitir isso? Se um processo ocorre mltiplas vezes na lista, significa por ciclo para este processo. Isto pode ser usado para compartilhamento da CPU para processos de maior importncia prioridade). Entretanto, caso este processo seja bloqueado, todas suas entradas na lista de processos Prontos. mltiplos quanta dar um maior (uma espcie de preciso remover

26 Medidas de determinado sistema mostraram que o processo mdio executado por um tempo T antes de ser bloqueado na E/S. Uma troca de processo exige um tempo S, que efitivamente desperdiado (sobrecarga). Para escalonamento round-robin com quantum Q, escreva uma frmula para a eficincia da CPU para cada uma das opes a seguir: (a) Q = infinito (b) Q > T (c) S < Q < T (d) Q = S (e) Q quase 0   

(a) (b) (c) (d) (e)

        

27 Cinco tarefas esto esperando para serem executadas. Seus tempos de execuo esperados so 9, 6, 3, 5 e X. Em que ordem elas devem ser executadas para minimizar o tempo de resposta mdio? (Sua resposta depender de X.) Para minimizar o tempo de resposta mdio, utiliza-se o algoritmo de escalonamento SJT (Shortest Job First): y y y Se X < 3 Se X = 3 Se X = 4 X, 3, 5, 6, 9; X, 3, 5, 6, 9 ou 3, X, 5, 6, 9; 3, X, 5, 6, 9;

y y y y y

Se Se Se Se Se

X X X X X

= = = = >

5 3, X, 5, 6 3, 5, X, 7 ou X = 8 9 3, 5, 6, 9 3, 5, 6,

6, 9 ou 3, 5, X, 6, 9; 6, 9 ou 3, 5, 6, X, 9; 3, 5, 6, X, 9; X, 9 ou 3, 5, 6, 9, X; 9, X;

Você também pode gostar