Buscar

Atividades Aula 03 e 04 Lucas Theisen

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 9 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

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 6, do total de 9 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

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 9, do total de 9 páginas

Prévia do material em texto

Baseado nos vídeos das Aulas 22-25/02/2021 
 
Para resolver as questões e o laboratório proposto, leia os livros de Sistemas Operacionais – 
Cap. 2 e 3 - Conceitos e Mecanismos – Prof. Mazieiro e as páginas 35 à 56 SO Modernos 4° 
Edição -Andrew S. Tanenbaum Herbert Bos. 
 
1.O que diferencia o núcleo do restante do sistema operacional? 
Núcleo é o coração do sistema operacional, responsável pela gerência dos 
recursos do hardware usados pelas aplicações. Ele também implementa as 
principais abstrações utilizadas pelos aplicativos e programas utilitários 
 
2. Seria possível construir um sistema operacional seguro usando um 
processador que não tenha níveis de privilégio? Por quê? 
Não porque uma aplicação com acesso pleno ao hardware seriam um risco à 
segurança, pois poderia contornar facilmente os mecanismos de controle de 
acesso aos recursos (tais como arquivos e áreas de memória). Sem os privilégios 
uma aplicação por exemplo pode acessar a placa de rede para enviar ou receber 
dados. 
 
3. Os processadores da família x86 possuem dois bits para definir o nível de 
privilégio, resultando em 4 níveis distintos. A maioria dos sistemas 
operacionais para esses processadores usam somente os níveis extremos (0 
e 3). Haveria alguma utilidade para os níveis intermediários? 
A maioria dos SO's utilizam apenas 2 níveis para diferenciar os privilégios, então 
depende do sistema. Ou seja se o sistema operacional fizesse uso dos níveis 
intermediários. 
4. Quais as diferenças entre interrupções, exceções e traps? 
Interrupções: são gerados por eventos externos ao processador, ocorridos nos 
dispositivos periféricos e reportados por seus controladores. 
Disciplina: Sistemas Operacionais 
Prof. Agnaldo, da Costa 
Ementa: Classificação dos Sistemas Operacionais, Estruturas 
de Sistemas Operacionais, Elementos de Hardware, 
Chamadas de Sistemas. 
Exceções: são gerados por procedimentos internos do processador. 
Traps: são interrupções acionadas intencionalmente no código, afim de alterar o 
nível de privilégio do processador para executar certo procedimento. 
 
5. O comando em linguagem C fopen é uma chamada de sistema ou uma 
função de biblioteca? Por quê? 
O comando em linguagem C 'fopen' é uma função da biblioteca 'STDIO.H', 
possuindo parâmetros para a chamada da função. Dentro da função existe a 
chamada de sistema para utilização dos recursos necessários à execução plena da 
função. 
 
 
6. A operação em modo usuário permite ao processador executar somente 
parte das instruções disponíveis em seu conjunto de instruções. Quais das 
seguintes operações não deveriam ser permitidas em nível usuário? Por quê? 
(a) Ler uma porta de entrada/saída 
(b) Efetuar uma divisão inteira 
(c) Escrever um valor em uma posição de memória 
(d) Ajustar o valor do relógio do hardware 
(e) Ler o valor dos registradores do processador 
(f) Mascarar uma ou mais interrupções 
Letra C e F. Por que aplicativos e utilitários devem ter acesso mais restrito ao 
hardware, para não interferir nas configurações e na gerência, o que poderia 
desestabilizar o sistema inteiro. Além disso, aplicações com acesso pleno ao 
hardware seriam um risco à segurança, pois poderiam contornar facilmente os 
mecanismos de controle de acesso aos recursos (tais como arquivos e áreas de 
memória). 
 
7. Considerando um processo em um sistema operacional com proteção de 
memória entre o núcleo e as aplicações, indique quais das seguintes ações 
do processo teriam de ser realizadas através de chamadas de sistema, 
justificando suas respostas: 
(a) Ler o relógio de tempo real do hardware. 
(b) Enviar um pacote através da rede. 
(c) Calcular uma exponenciação. 
(d) Preencher uma área de memória do processo com zeros. 
(e) Remover um arquivo do disco. 
O confinamento de cada aplicação em sua área de memória, imposto pela MMU 
aos acessos em memória em nível usuário, provê robustez e confiabilidade ao 
sistema, pois garante que uma aplicação não poderá interferir nas áreas de 
memória de outras aplicações ou do núcleo. Então teria que ser realizada uma 
chamada de sistema, pois somente o núcleo teria acesso direto à memória. 
A ativação de uma rotina do núcleo usando esse mecanismo é denominada 
chamada de sistema. 
 
8. Coloque na ordem correta as ações abaixo, que ocorrem durante a 
execução da função printf("Hello world") por um processo (observe que nem 
todas as ações indicadas fazem parte da sequência). 
() A rotina de tratamento da interrupção de software é ativada dentro do 
núcleo. 
(5) A função printf finaliza sua execução e devolve o controle ao código 
do processo. 
(2) A função de biblioteca printf recebe e processa os parâmetros de 
entrada (a string “Hello world”). 
(3) A função de biblioteca printf prepara os registradores para solicitar 
a chamada de sistema write() 
() O disco rígido gera uma interrupção indicando a conclusão da 
operação. 
() O escalonador escolhe o processo mais prioritário para execução. 
() Uma interrupção de software é acionada. 
(1) O processo chama a função printf da biblioteca C. 
(4) A operação de escrita no terminal é efetuada ou agendada pela 
rotina de tratamento da interrupção. 
() O controle volta para a função printf em modo usuário. 
 
 
9. Monte uma tabela com os benefícios e deficiências mais relevantes das 
principais arquiteturas de sistemas operacionais. 
Arquitetura Benefícios Deficiências 
 
 
Arquitetura monolítica 
 
Desempenho 
 
Robustez do sistema, 
Manutenção e evolução 
do núcleo mais 
complexas, ou seja uma 
maior dificuldade de 
desenvolvimento. 
 
 
 
 
 
Arquitetura micronúcleo 
 
Maior modularidade (cada 
serviço pode ser 
desenvolvido de forma 
independente dos 
demais); mais 
flexibilidade, pois os 
serviços podem ser 
carregados e desativados 
conforme a necessidade; 
e mais robustez, pois 
caso um serviço falhe, 
somente ele será afetado, 
devido ao confinamento 
de memória entre os 
serviços. 
 
Perda de desempenho 
devido a troca de 
mensagens entre 
dispositivos. 
 
 
 
Arquitetura em camadas 
 
Robustez e organização 
 
Desempenho menor 
devido ao empilhamento 
das camadas, nem 
sempre a divisão de 
funcionalidades do 
sistema em camadas é 
óbvia 
 
 
Arquitetura Máquinas 
Virtuais 
 
Portabilidade das 
aplicações a vários tipos 
de hardware 
 
 
 
Custo adicional de 
execução na máquina 
virtual 
 
 
 
10. Qual é a diferença entre sistemas de compartilhamento de tempo e de 
multiprogramação? 
A diferença entre o sistema de compartilhamento de tempo e de multiprogramação 
está no funcionamento de cada um. 
Os sistemas de compartilhamento de tempo, também chamados de time-sharing, 
possibilitam que vários programas sejam executados através de uma divisão de 
tempo do processador em intervalos curtos. Nessa solução, para cada atividade 
que recebe o processador é definido um prazo de processamento, denominado 
fatia de tempo. Esgotado seu tempo, a tarefa em execução perde o processador e 
volta para uma fila de tarefas “prontas”, que estão na memória aguardando sua 
oportunidade de executar, e outra tarefa é ativada. 
Os sistemas de multiprogramação ou multitarefa são uma evolução dos programas 
de monoprogramação. Eles possibilitam, por exemplo, que enquanto um programa 
esteja em operação de leitura outros possam ser executados. 
 
11. Explique como a separação da política e mecanismo ajuda na construção 
de sistemas operacionais baseados em micronúcleos. 
Como política consideram-se os aspectos de decisão mais abstratos, que podem 
ser resolvidos por algoritmos de nível mais alto, como por exemplo decidir a 
quantidade de memória que cada aplicação ativa deve receber, ou qual o próximo 
pacote de rede a enviar para satisfazer determinadas especificações de qualidade 
de serviço. 
Por outro lado, como mecanismo consideram-se os procedimentos de baixo nível 
usados para implementar aspolíticas, ou seja, para atribuir ou retirar memória de 
uma aplicação, enviar ou receber um pacote de rede, etc. 
Essa separação entre os conceitos de política e mecanismo traz uma grande 
flexibilidade aos sistemas operacionais, permitindo alterar sua personalidade 
(sistemas mais interativos ou mais eficientes) sem ter de alterar o código que 
interage diretamente com o hardware. 
A separação da política e mecanismo ajuda na construção de sistemas 
operacionais baseados em micronúcleos pois um sistema micronúcleo consiste em 
retirar do núcleo todo o código de alto nível, normalmente associado às abstrações 
de recursos (que seriam as políticas), deixando no núcleo somente o código de 
baixo nível necessário para interagir com o hardware e criar algumas abstrações 
básicas (que seriam os mecanismos). Ou seja a separação da política e 
mecanismo facilita construção de sistemas baseados em micronúcleo pois permite 
alterar a personalidade do sistema sem alterar o código que interage diretamente 
com o hardware que fica no micronúcleo. 
 
12. Para um programador, uma chamada de sistema parece com qualquer 
outra chamada para uma rotina de biblioteca. É importante que um 
programador saiba quais rotinas de biblioteca resultam em chamadas de 
sistema? Em quais circunstâncias e por quê? 
Geralmente as chamadas de sistema são oferecidas para as aplicações em modo 
usuário através de uma biblioteca do sistema (system library), que prepara os 
parâmetros, invoca a chamada e, no retorno desta, devolve à aplicação os 
resultados obtidos. 
É muito importante sobre a questão do desempenho. Chamadas ao sistema 
requerem desvio de fluxo e tratamento das chamadas que trazem consigo 
armazenamento e resgate de contexto, coisas que tomam tempo. 
 
13. Quais das instruções a seguir devem ser deixadas somente em modo 
núcleo? 
(a) Desabilitar todas as interrupções. 
(b) Ler o relógio da hora do dia. 
(c) Configurar o relógio da hora do dia. 
(d) Mudar o mapa de memória. 
 A, C, D pois atuam diretamente sobre o hardware. 
 
Laboratório: 
Para executar os comandos abaixo o sistema operacional Linux Ubuntu deve 
estar instalado: 
 
1. O utilitário strace do UNIX permite observar a sequência de chamadas de 
sistema efetuadas por uma aplicação. Em um terminal, execute strace date 
para descobrir quais os arquivos abertos pela execução do utilitário date (que 
indica a data e hora correntes). Por que o utilitário date precisa fazer 
chamadas de sistema? 
As chamadas são efetuadas para que a memória seja mapeada e as bibliotecas 
necessárias sejam carregadas, de modo que as informações sobre a data possam 
ser carregadas. 
 
2. O utilitário ltrace do UNIX permite observar a sequência de chamadas de 
biblioteca efetuadas por uma aplicação. Em um terminal, execute ltrace date 
para descobrir as funções de biblioteca chamadas pela execução do utilitário 
date (que indica a data e hora correntes). Pode ser observada alguma relação 
entre as chamadas de biblioteca e as chamadas de sistema observadas no 
item anterior? 
Sim, uma vez que o utilitário date implementa uma biblioteca com finalidade de se 
comunicar com o núcleo, esta é responsável por toda a manipulação dos detalhes 
de baixo nível - linguagem de máquina - relacionados com a troca de informação 
entre núcleo e rotina privilegiada, criando-se então o que conhecemos por 
conversão de convenções de chamadas. Tais, são oferecidas em aplicação no 
modo usuário através da System Library que é responsável por preparar os 
parâmetros, instanciar a interrupção de software, retornando à aplicação os 
resultados ganho. 
 
3. O sistema operacional Ubuntu pode ser obtido gratuitamente no site 
https://ubuntu.com/download/server. Instale-o em uma máquina virtual e 
explore seus processos, usando os comandos top e ps. Identifique os 
principais processos em execução, usando a documentação do site. 
 
4. Implemente os comandos abaixo no Linux e descreve a função cada um 
realiza: 
a) Kill 
Mata um processo por ID 
 
b) killall e pkill 
killall - mata um processo pelo nome. 
pkill - mata um processo, pode levar o nome parcial ou completo. 
 
c) renice 
O comando renice modifica a prioridade dos processos em execução. É 
semelhante ao comando nice, mas é usado para processos que já estão em 
execução. 
Um valor mais alto de prioridade, na verdade, torna o processo com menor 
prioridade; isso significa que o processo exigirá menos recursos do sistema 
(e, portanto, é um processo “mais agradável”). Um valor de prioridade mais 
baixo significa que o processo exigirá mais recursos, possivelmente negando 
esses recursos a processos “mais agradáveis”. 
O valor da prioridade de qualquer processo pode variar de -20 (prioridade 
mais alta, menos “agradável”) a 20 (prioridade mais baixa, “mais legal”). A 
prioridade padrão de novos processos, por padrão, é 0. 
 
5. No Power Shell do Windows digite o comando “get-process”, o que será 
mostrado? Para eliminar um processo o que devo fazer? 
São exibidos todos os processos em execução no Windows. Obtém os processos 
em execução no computador local. 
Para eliminar um processo: 
Pelo id do processo: stop-process 2576<enter>, onde o número 2576 é o Id do 
processo referente a este processo. 
Pelo nome do processo: stop-process –name “nomedopreocesso”. 
Exemplo: stop-process –name explorer<enter>. 
Outro comando para parar um serviço em execução e que é muito utilizado no linux 
é o comando kill podendo ser pela Id (kill 2576) ou pelo nome do processo (“kill -
name explorer). 
 
6. Abra o Notepad do Windows, supondo que necessitamos parar o processo 
em execução desse editor, então digitaremos o comando “stop-process (PID), 
compare esse comando com o Kill do Linux. 
Ambos fazem a mesma coisa (encerram o processo).

Continue navegando