Escolar Documentos
Profissional Documentos
Cultura Documentos
Os sistemas de usuário único devem maximizar o uso do sistema para o usuário. Uma GUI pode
“desperdiçar” ciclos de CPU, mas otimiza a interação do usuário com o sistema.
Q3- Qual é a principal dificuldade que um programador deve superar ao escrever um sistema
A principal dificuldade é manter o sistema operacional dentro das restrições de tempo fixas de um
sistema de tempo real. Se o sistema não concluir uma tarefa em um determinado período de tempo,
poderá causar uma falha em todo o sistema em execução. Portanto, ao escrever um sistema
operacional para um sistema de tempo real, o escritor deve ter certeza de que seus esquemas de
escalonamento não permitem que o tempo de resposta exceda a restrição de tempo.
operacional deve incluir aplicações como navegadores web e programas de e-mail. Argumente
tanto o que ele deve quanto o que ele não deve fazer isso e embase suas respostas.
Q5- 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)?
A distinção entre modo kernel e modo usuário fornece uma forma rudimentar de proteção da
seguinte maneira. Certas instruções podem ser executadas somente quando a CPU está no modo
kernel. Da mesma forma, os dispositivos de hardware só podem ser acessados quando o programa
está sendo executado no modo kernel. O controle sobre quando as interrupções podem ser
habilitadas ou desabilitadas também é possível somente quando a CPU está no modo kernel.
Consequentemente, a CPU tem capacidade muito limitada ao executar no modo de usuário,
reforçando assim a proteção de recursos críticos.
Ordem das operações privilegiadas: Definir valor do temporizador, limpar memória, desligar
interrupções, modificar entradas na tabela de status do dispositivo, acessar dispositivo de E/S. O
resto pode ser executado no modo usuário.
Q7- Alguns computadores antigos protegiam o sistema operacional inserindo-o em uma partição
da memória que não podia ser modificada pelo job do usuário ou pelo próprio sistema
operacional. Descreva duas dificuldades que você entende que poderiam surgir com tal esquema.
Os dados exigidos pelo sistema operacional (senhas, controles de acesso, informações contábeis e
assim por diante) teriam que ser armazenados ou passados através de memória desprotegida e,
portanto, acessíveis a usuários não autorizados.
Q8- Algumas CPUs fornecem mais de duas modalidades de operação. Cite dois usos possíveis para
Embora a maioria dos sistemas distinga apenas entre os modos de usuário e de kernel, algumas
CPUs oferecem suporte a vários modos. Vários modos podem ser usados para fornecer uma política
de segurança mais refinada. Por exemplo, em vez de distinguir apenas entre o modo de usuário e o
modo kernel, você pode distinguir entre diferentes tipos de modo de usuário. Talvez usuários
pertencentes ao mesmo grupo possam executar o código uns dos outros. A máquina entraria em um
modo especificado quando um desses usuários estivesse executando o código. Quando a máquina
estava nesse modo, um membro do grupo poderia executar código pertencente a qualquer outra
pessoa do grupo.
Outra possibilidade seria fornecer diferentes distinções no código do kernel. Por exemplo, um modo
específico pode permitir a execução de drivers de dispositivos USB. Isso significaria que os
dispositivos USB poderiam ser reparados sem ter que mudar para o modo kernel, permitindo
essencialmente que os drivers de dispositivos USB sejam executados em um modo quase
usuário/kernel.
Q9- Os timers podem ser usados para computar a hora corrente. Forneça uma breve descrição de
Um programa poderia usar a seguinte abordagem para calcular a hora atual usando interrupções de
temporizador. O programa pode definir um cronômetro para algum momento no futuro e
adormecer. Quando for despertado pela interrupção, ele poderá atualizar seu estado local, que está
usando para controlar o número de interrupções que recebeu até o momento. Ele poderia então
repetir esse processo de definir continuamente as interrupções do temporizador e atualizar seu
estado local quando as interrupções forem realmente acionadas.
Q10- Cite duas razões que tornam os caches úteis. Que problemas eles resolvem? Que problemas
eles causam? Se um cache pode ser aumentado até o tamanho do dispositivo para o qual está
armazenando (por exemplo, um cache tão extenso quanto um disco), por que não lhe dar esse
Os caches são úteis quando dois ou mais componentes precisam trocar dados e os componentes
realizam transferências em velocidades diferentes. Os caches resolvem o problema de transferência
fornecendo um buffer de velocidade intermediária entre os componentes. Se o dispositivo rápido
encontrar os dados necessários no cache, não precisará esperar pelo dispositivo mais lento. Os
dados no cache devem ser mantidos consistentes com os dados nos componentes. Se um
componente tiver uma alteração no valor dos dados e o dado também estiver no cache, o cache
também deverá ser atualizado. Isto é especialmente um problema em sistemas multiprocessadores
onde mais de um processo pode acessar um dado. Um componente pode ser eliminado por um
cache de tamanho igual, mas somente se: (a) o cache e o componente tiverem capacidade
equivalente de economia de estado (ou seja, se o componente retém seus dados quando a
eletricidade é removida, o cache deve também reter dados) e (b) o cache é acessível, porque um
armazenamento mais rápido tende a ser mais caro.
Q11- Qual a diferença entre os modelos cliente-servidor e entre pares dos sistemas distribuídos?
Por exemplo, vamos considerar um sistema de nós que compartilham receitas culinárias. No modelo
cliente-servidor, todas as receitas são armazenadas no servidor. Se um cliente desejar acessar uma
receita, ele deverá solicitá-la ao servidor especificado. Usando o modelo peer-to-peer, um nó par
poderia solicitar a outros nós par a receita especificada. O nó (ou talvez nós) com a receita solicitada
poderia fornecê-la ao nó solicitante. Observe como cada par pode atuar tanto como cliente (pode
solicitar receitas) quanto como servidor (pode fornecer receitas).
EXERCÍCIOS
Quando vários usuários compartilham um sistema simultaneamente, isso pode resultar em vários
problemas de segurança. Três desses problemas são;
Problema de privacidade: um usuário pode acessar os programas ou dados de outro usuário usando
recursos do sistema (CPU, memória, espaço em disco, periféricos) sem a contabilidade adequada.
Ataque de negação de serviço (DOS): um usuário pode impedir outro usuário parcial ou totalmente
de executar uma operação no sistema.
Integridade das informações: um usuário pode corromper algumas informações privadas de outro
usuário.
2. **Conexões de Rede:** A gestão da conectividade de rede é crucial para garantir que as estações
de trabalho possam se comunicar com os servidores de forma eficiente e segura.
**Computadores Móveis:**
1. **Bateria:** A gestão da bateria é crítica em dispositivos móveis, pois a vida útil da bateria é
limitada. Isso envolve otimização do consumo de energia e a gestão de aplicativos em segundo plano
que podem drenar a bateria.
Q14- Em que circunstâncias seria melhor para o usuário usar um sistema de tempo compartilhado
em vez de um PC ou uma estação de trabalho monousuária?
tarefa, por exemplo, se tivermos que realizar muitos cálculos,pode ser melhor usar um sistema de
compartilhamento de tempo.
No multiprocessamento assimétrico:
os processadores não são tratados igualmente.
As tarefas do sistema operacional são feitas pelo processador mestre.
Sistemas assimétricos de multiprocessamento são mais fáceis de projetar e são mais
baratos.
No multiprocessamento simétrico:
todos os processadores são tratados igualmente.
As tarefas do sistema operacional são feitas por processador individual.
Sistemas simétricos de multiprocessamento são complexos de projetar e são mais caros.
Vantagens com multiprocessadores:
Desempenho; o ganho de desempenho com múltiplos processadores pode ser obtido em
dois níveis. No primeiro nivel múltiplos processadores permitem a execução de diversas
tarefas independentes. No segundo, multiplos processadores permitem a execução de uma
mesma tarefa por vários processadores simultaneamente.
Escalabilidade: é a capacidade de adicionar novos processadores ao hardware do sistema.
Em ambientes que permitam apenas um processador, ppara aumentar a capacidade
computacional é necessário substituir a UCP por uma outra com maior poder de
processamento. Com múltiplos processadores, é possível ampliar a capacidade de
computação apenas adicionando-se novos processadores, com um custo inferior à
aquisição de um outro sistema com maior desempenho.
Relação Custo/desempenho: Sistemas com um único processador, por mais poderosos que
sejam, apresentam limitações de desempenho inerentes á sua arquitetura, devido as
limitações existentes na comunicação da UCP com as demais unidades funcionais,
principalmente a memória principal.
Desvantagens:
Com múltiplos processadores, novos problemas de comunicação e sincronização são
introduzidos, pois varios processadores podem estar acessando as mesmas posições de
memória. Além disso, existe o problema de organizar os processadores, memórias e
periféricos de uma forma eficiente, que permita uma relação custo/desempenho aceitável.
Dependendo do tipo de sistema, a tolerância contra falhas é dependente do sistema
operacional e não apenas do hardware, sendo dificil de ser implementada.
Q16- Em que os sistemas agrupados (clusters) diferem dos sistemas multiprocessadores? O que é
necessário para que duas máquinas pertencentes a um cluster cooperem para fornecer um serviço
de alta disponibilidade?
A diferença é que os sistemas clusterizados contêm dois ou mais sistemas independentes (em
sistemas multiprocessadores, os processadores não são tão independentes um do outro).
Para que os sistemas em cluster sejam eficientes, precisamos ter certeza de que o sistema não irá
parar se um ou mais sistemas no cluster falharem. Isso é feito adicionando um nível de redundância
ao sistema. Por exemplo, se algum sistema falhar, outro sistema poderá assumir o controle de seu
armazenamento e executar novamente os aplicativos necessários.
Nível de redundância.
Q17- Considere um cluster de computadores composto por dois nós executando um banco de
dados. Descreva duas maneiras pelas quais o software de cluster pode gerenciar o acesso aos
dados em disco. Discuta as vantagens e desvantagens de cada uma.
1. Clustering assimétrico - Aqui um nó fará todo o trabalho, enquanto o outro ficará em espera
e será ativado caso o nó ativo falhe. A vantagem é que o sistema claramente não irá parar se
o sistema ativo falhar. A desvantagem é que não é realmente eficiente; temos dois nós, mas
usamos ativamente apenas um deles.
2. Clustering simétrico - para ser mais preciso, observaremos o chamado clustering paralelo.
Neste caso, vários nós (aqui, 2 deles) podem ler os dados do disco. A vantagem é que um
sistema com clustering paralelo é muito mais eficiente do que um sistema com clustering
assimétrico. A desvantagem é que precisamos de software especial para implementar o
clustering paralelo.
Q18- Em que os computadores em rede são diferentes dos computadores pessoais tradicionais?
Além disso, quando temos que fornecer computadores para muitos usuários em vez de usar
computadores em rede, podemos compartilhar recursos de forma eficiente. Portanto, os
computadores em rede são mais fáceis de manter e econômicos, o que é outra grande
vantagem.
Os computadores em rede têm maior grau de probabilidade e são mais fáceis de manter.
Q19- 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?
A interrupção é usada para informar o computador sobre como encerrar o processo atual e
iniciar um novo para um circuito. Para esse processo, ele envia um sinal de computador.
Quando comparamos uma interrupção com uma armadilha, podemos ver que uma
interrupção é criada pelo hardware. Mas um toque é criado pelo software. A principal razão
para gerar uma armadilha é permitir que um programa ou tarefa seja executado
continuamente. É por isso que a continuidade do programa nunca será perdida.
Sim, armadilhas também podem ser geradas intencionalmente por um programa de
usuário.
Q20- O acesso direto à memória é usado em dispositivos de I/O de alta velocidade para impedir o
Uma interrupção é gerada por bloco, para informar ao driver do dispositivo que a operação
foi concluída.
C. A CPU pode executar outros programas enquanto o controlador de DMA está transferindo
dados. Esse processo interfere na execução dos programas de usuário? Caso interfira,
descreva que tipos de interferência são gerados.
Sim. Uma vez concluídos os processos DMA, é gerada uma interrupção que adiciona carga
aos processadores principais. Assim, afetando a sequência do processo de enfileiramento.
Q21- Alguns sistemas de computação não fornecem uma modalidade de operação privilegiada de
Teoricamente, isso pode ser feito executando apenas um processo por vez e monitorando-o
cuidadosamente e inspecionando sua saída. No entanto, isso certamente afeta a eficiência
do sistema (ele funcionará muito mais lentamente), e devemos ter a certeza de conhecer de
alguma forma a prioridade de cada processo.
Q22- Muitos sistemas SMP têm diferentes níveis de caches; um nível é local para cada núcleo de
processamento, e outro nível é compartilhado entre todos os núcleos de processamento. Por que
os sistemas de cache são projetados dessa forma?
Os caches locais são muito mais rápidos que os caches compartilhados. Os dados que se
espera que sejam usados por algum processador são colocados em seu cache local, mas
também são colocados no cache compartilhado. Colocamos os dados no cache
compartilhado para que possam ser rapidamente transferidos para um cache local de outro
processador caso ele inicie algum processo que necessite desses dados.
Q23- Considere um sistema SMP semelhante ao mostrado na Figura 1.6. Ilustre com um exemplo
como os dados que residem na memória poderiam ter um valor diferente em cada um dos caches
locais.
Deixe o processador 1: ler os dados X que possuem valor 3 da memória principal para seu
cache local.
A. Sistemas uniprocessadores
B. Sistemas multiprocessadores
Multi — Em um sistema multiprocessador, cada CPU possui seu próprio cache e/ou um cache
compartilhado e a memória principal. Sem coerência de cache, cada CPU pode armazenar uma cópia
local de alguns dados, digamos, um número inteiro I que foi armazenado no cache da memória
principal e muda para I não persistirá entre CPUs. Assim, os dados acessados podem estar
desatualizados ou inconsistentes entre os processadores.
C. Sistemas distribuídos
Um desses mecanismos é chamado de memória virtual. Todo processo que está sendo
executado no computador vai pensar que tem acesso a toda a RAM e só ele tem acesso à
RAM. Na realidade, ele tem acesso a uma pequena porção e quando aborda algum local na
RAM, o sistema operacional usará uma tabela para calcular um endereço físico na RAM a
partir do endereço solicitado por esse processo.
Outra maneira pode ser a verificação vinculada. Se um processo tentar acessar alguns
endereços na RAM que são necessários para o sistema operacional, a solicitação pode ser
ignorada e a interrupção pode ser gerada.
Algoritmo de paginação e memória virtual.
Q26- Que configuração de rede — LAN ou WAN — atenderia melhor os ambientes a seguir?
LAN (rede local) é um grupo de computadores e dispositivos de rede conectados entre si,
geralmente dentro do mesmo edifício.
WAN (wide area network) cobrem áreas maiores e até permitem que computadores em
diferentes nações se conectem. Como resultado, podemos concluir que:
Vários locais de campus em um sistema universitário estadual fazem parte de uma rede
maior que é distribuída por uma cidade, por isso é uma WAN.
C. Uma vizinhança
Um bairro é composto por várias casas onde cada casa ou edifício ou negócio nele é uma
LAN. Por exemplo, cada família pode ter vários PCs conectados em uma LAN. Como várias
LANs conectadas juntas formam uma WAN, a vizinhança pertence a uma WAN.
Q27- 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.
Vantagens: O usuário desfruta de software de código aberto gratuitamente, juntamente com uma
comunidade ativa de desenvolvedores voluntários que ajudam a mantê-lo.
Ao tornar o seu software open source, as empresas podem beneficiar de uma maior utilização e
feedback, bem como de uma melhor imagem pública.
Algumas comunidades de código aberto são mal atendidas, deixando o software dilapidado.
Capítulo 2
Q1- Qual é a finalidade das chamadas de sistema?
As chamadas de sistema permitem que processos em nível de usuário solicitem serviços do sistema
operacional.
Q2- Quais são as cinco principais atividades de um sistema operacional relacionadas com o
gerenciamento de processos?
a. A criação e exclusão de processos de usuário e de sistema
Q3- Quais são as três principais atividades de um sistema operacional relacionadas com o
gerenciamento de memória?
a. Acompanhe quais partes da memória estão sendo usadas no momento e por quem.
b. Decida quais processos serão carregados na memória quando espaço de memória fica disponível.
Q4- Quais são as três principais atividades de um sistema operacional relacionadas com o
Q5- Quais são as três principais atividades de um sistema operacional relacionadas com o
Q6- Que chamadas de sistema têm de ser executadas por um interpretador de comandos ou shell
para iniciar um novo processo?
Em sistemas Unix, uma chamada de sistema fork seguida por uma chamada de sistema exec precisa
ser executada para iniciar um novo processo. A chamada fork clona o processo atualmente em
execução, enquanto a chamada exec sobrepõe um novo processo baseado em um executável
diferente do processo de chamada.
Eles fornecem funcionalidades básicas aos usuários para que eles não precisem escrever seus
próprios programas para resolver problemas comuns.
Q8- Qual é a principal vantagem da abordagem em camadas para o projeto de sistemas? Quais as
Q9- Liste cinco serviços fornecidos por um sistema operacional e explique como cada um deles é
conveniente para os usuários. Em que casos seria impossível que programas de nível de usuário
b. Operações de E/S. Discos, fitas, linhas seriais e outros dispositivos devem ser comunicados em um
nível muito baixo. O usuário precisa apenas especificar o dispositivo e a operação a ser executada
nele, enquanto o sistema converte essa solicitação em comandos específicos do dispositivo ou do
controlador. Não se pode confiar que programas de nível de usuário acessem apenas dispositivos
que eles devem ter acesso e acessá-los somente quando não forem utilizados de outra forma.
e. Detecção de erro. A detecção de erros ocorre nos níveis de hardware e software. No nível do
hardware, todas as transferências de dados devem ser inspecionadas para garantir que os dados não
foram corrompidos durante o trânsito. Todos os dados na mídia devem ser verificados para garantir
que não tenham sido alterados desde que foram gravados na mídia. No nível do software, a mídia
deve ser verificada quanto à consistência dos dados; por exemplo, se o número de blocos de
armazenamento alocados e não alocados corresponde ao número total no dispositivo. Lá, os erros
são frequentemente independentes do processo (por exemplo, a corrupção de dados em um disco),
portanto deve haver um programa global (o sistema operacional) que lide com todos os tipos de
erros. Além disso, por terem erros processados pelo sistema operacional, os processos não precisam
conter código para capturar e corrigir todos os erros possíveis em um sistema.
Q10- Por que alguns sistemas armazenam o sistema operacional em firmware, enquanto outros o
armazenam em disco?
Para determinados dispositivos, como PDAs portáteis e telefones celulares, um disco com um
sistema de arquivos pode não estar disponível para o dispositivo. Nesta situação, o sistema
operacional deve ser armazenado no firmware.
Q11- Como um sistema poderia ser projetado para permitir a escolha de sistemas operacionais a
partir dos quais realizar a inicialização? O que o programa bootstrap teria de fazer?
Considere um sistema que gostaria de rodar tanto o Windows XP quanto três distribuições
diferentes de Linux (por exemplo, RedHat, Debian e Mandrake). outros armazenam-no no disco? d.
Comunicações. A passagem de mensagens entre sistemas exige que as mensagens sejam
transformadas em pacotes de informações, enviadas ao controlador de rede, transmitidas através
de um meio de comunicação e remontadas pelo sistema de destino. O pedido de pacotes e a
correção de dados devem ocorrer. Novamente, os programas do usuário podem não coordenar o
acesso ao dispositivo de rede ou podem receber pacotes destinados a outros processos. Cada
sistema operacional será armazenado em disco. Durante a inicialização do sistema, um programa
especial (que chamaremos de gerenciador de inicialização) determinará em qual sistema operacional
inicializar. Isso significa que, em vez de inicializar inicialmente em um sistema operacional, o
gerenciador de inicialização será executado primeiro durante a inicialização do sistema. É esse
gerenciador de inicialização responsável por determinar em qual sistema inicializar. Normalmente,
os gerenciadores de inicialização devem ser armazenados em determinados locais do disco rígido
sejam reconhecidos durante a inicialização do sistema. Os gerenciadores de inicialização geralmente
fornecem ao usuário uma seleção de sistemas para inicializar; os gerenciadores de inicialização
também são normalmente projetados para inicializar em um sistema operacional padrão se
nenhuma opção for selecionada pelo usuário.
EXERCÍCIOS
Q12- 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.
• Interface de usuário
• Execução do Programa
• Operações de E/S
• Manipulação do sistema de arquivos
• Comunicações
• Detecção de erro
2 - A outra categoria de funções existe para garantir o funcionamento eficiente do próprio
sistema. Graças a essas funções, sistemas com múltiplos usuários podem ganhar eficiência
ao compartilhar os recursos do computador entre seus usuários. As funções que fazem
parte desta categoria são:
• Alocação de recursos
• contabilidade
• proteção e segurança
Q13- Descreva três métodos gerais para passagem de parâmetros ao sistema operacional.
Q14- Descreva como você poderia obter um perfil estatístico do montante de tempo gasto por um
programa executando diferentes seções de seu código. Discuta a importância da obtenção desse
perfil estatístico.
Perfil estatístico é uma forma de análise dinâmica do programa que serve para auxiliar o
programa na otimização. Ele usa uma ampla variedade de técnicas para coletar dados como
tempo, complexidade de um programa ou a frequência e duração das chamadas de função.
Alguns exemplos de métodos que o perfil estatístico usa para coletar essas informações são:
• Interrupções de hardware
• Instrumentação de código
• Contadores de desempenho
• Simulação de conjunto de instruções
Normalmente, atualmente, os computadores pessoais têm um programa System profiller
que pode fornecer informações detalhadas sobre seu software e hardware. A fim de obter
um perfil estatístico da quantidade de tempo gasto por um programa executando diferentes
seções de seu código que usaríamos a partir dos métodos de interrupção do hardware.
Portanto, emitir interrupções periódicas do temporizador e quando as interrupções são
entregues na monitorização e supervisão de quais blocos de código estão sendo executados.
Como resultado, obtém um sistema de criação de perfil que monitoraria o código que está
sendo executado que posteriormente poderia ser usado pelo engenheiro para otimizar o
código de blocos que está consumindo muitos recursos da CPU.
O que devemos fazer para traçar um perfil estatístico da quantidade de tempo gasto por um
programador executando diferentes seções de código é emitir interrupções de temporizador.
Q15- Quais são as cinco atividades principais de um sistema operacional relacionadas com o
gerenciamento de arquivos?
Vantagens
Desvantagens
Por outro lado, ao usar a mesma interface, pode ser difícil capturar a funcionalidade de
determinados dispositivos. Como estamos usando APIs de acesso a arquivos, o sistema pode não
capturar todas as funcionalidades, o que pode resultar em perda de funcionalidade ou perda de
desempenho. O controle de entrada/saída ioctl é uma chamada de sistema suportada pela maioria
dos sistemas Unix/Linux para operações de entrada/saída específicas de dispositivos e outras
operações que não podem ser expressas por chamadas de sistema regulares. Essa chamada de
sistema pode ajudar a superar a perda de desempenho e funcionalidade até certo ponto. A versão
do Windows desta chamada de sistema no Win32Api é DeviceIoControl
Usar as mesmas chamadas de sistema para manipular arquivos e dispositivos resultaria no acesso
dos dispositivos como um arquivo no sistema de arquivos. As vantagens seriam que o código do
programa do usuário seria o mesmo usado para acessar arquivos e dispositivos, apenas os
parâmetros mudariam. Além disso, o código do driver pode ser reescrito para suportar APIs (que são
bibliotecas de chamadas de sistema). Por outro lado, seria difícil capturar todas as funcionalidades
de alguns dispositivos, o que poderia resultar numa perda de funcionalidade e desempenho.
Q17- Seria possível para o usuário desenvolver um novo interpretador de comandos usando a
interface de chamadas de sistema fornecida pelo sistema operacional?
Sim, qualquer usuário que saiba usar chamadas do sistema deve ser capaz de criar um novo
interpretador de comandos.
O interpretador de linha de comando (às vezes também chamado de shell) é a parte do sistema
operacional que entende e interpreta comandos inseridos por um ser humano ou por um programa
e os executa. Assim, o interpretador de comandos é simplesmente um programa que lê as instruções
dadas pelo usuário, traduza-as para o contexto do sistema operacional e as executa. Por outro lado,
uma chamada de sistema é a forma programática pela qual um programa de computador solicita um
serviço do kernel do sistema operacional no qual é executado. Em geral, as chamadas do sistema são
a forma como os programas interagem com o sistema operacional. Sempre que um programa ou
programador precisar fazer uma solicitação ao kernel, ele executará uma chamada de sistema. Com
base no exposto, podemos concluir que o interpretador de linha de comando é construído em
chamadas de sistema. Como resultado, faz sentido que qualquer usuário capaz de usar chamadas de
sistema possa criar e desenvolver uma nova interface de usuário.
Como o interpretador de comandos (ou shell) permite aos usuários funcionalidades como criar e
gerenciar processos, acessar scripts para desligar o computador ou copiar arquivos, que podem ser
acessados e implementados através de chamadas de sistema por um programa em nível de usuário,
podemos concluir é possível desenvolver um novo interpretador de comandos.
Q18- Quais são os dois modelos de comunicação entre processos? Quais são as fortalezas e
fraquezas das duas abordagens?
Vantagens
• É útil para trocar pequenas quantidades de dados
• Não há conflitos a evitar
• É mais fácil de implementar
Desvantagens
• Devido à implementação do processo de conexão descrito acima é mais lento que sua
contraparte
processos para trocar informações lendo e escrevendo dados em áreas de memória compartilhada.
A memória compartilhada pode ser simultaneamente acessada por vários processos. Exemplos da
vida real seriam os Sistemas POSIX, bem como sistemas operacionais Windows.
Vantagens
• Permite velocidade máxima
• Oferece melhor comodidade de comunicação
Desvantagens
• Tem problemas de segurança
• Os processos que utilizam o modelo de memória compartilhada precisam certificar-se de
que eles não estejam gravando no mesmo local de memória.
• Problemas na área de sincronização
Q20- Às vezes, é difícil adotar uma abordagem em camadas quando dois componentes do sistema
operacional dependem um do outro. Identifique um cenário em que não seja claro o modo de
dispor em camadas dois componentes do sistema que requeiram acoplamento estreito de suas
Funcionalidades.
A abordagem em camadas divide o sistema operacional em diferentes camadas, o que permite aos
implementadores alterar o funcionamento interno e aumentar a modularidade. Na abordagem em
camadas, a camada inferior é o hardware, enquanto a camada mais alta é a interface do usuário.
Geralmente a abordagem em camadas precisa ter algum tipo de separação entre as estruturas para
poder dividi-las em camadas. Como resultado, a maior dificuldade com a abordagem em camadas
envolve a definição adequada das várias camadas. Vamos considerar a memória virtual e o
armazenamento. A memória virtual foi desenvolvida numa época em que a memória física era cara e
é um recurso de gerenciamento de memória de um sistema operacional que usa hardware e
software para permitir que um computador compense a escassez de memória física. Ao usar
memória virtual, os dados são transferidos temporariamente da RAM para o armazenamento em
disco. Assim, a memória virtual e o sistema de armazenamento estão relacionados entre si. Durante
a execução do programa, talvez seja necessário mapear arquivos na memória do espaço virtual. Por
outro lado, a memória virtual normalmente usa o sistema de armazenamento para fornecer backup
de dados que não residem atualmente na memória. Às vezes, as atualizações do sistema de arquivos
são armazenadas temporariamente na memória física antes de serem enviadas para o disco. Como
resultado, precisamos planejar cuidadosamente a seção de armazenamento, a seção de memória
virtual e o sistema de arquivos também para que possa interagir com eles.
Q21- Qual é a principal vantagem da abordagem de microkernel para o projeto de sistemas? Como
os programas de usuário e serviços do sistema interagem em uma arquitetura de microkernel?
Quais são as desvantagens do uso da abordagem de microkernel?
A abordagem microkernel modulariza o kernel e estruturou o sistema operacional sistema
removendo todos os componentes não essenciais do kernel e implementando como programas de
sistema e de nível de usuário. O resultado seria um menor núcleo. Geralmente os microkernels
fornecem gerenciamento mínimo de processo e memória além de um recurso de comunicação.
Além disso, esta abordagem usa mensagem passando para permitir a comunicação entre o
programa cliente e os vários serviços que também estão em execução no espaço do usuário.
O microkernel deve fornecer comunicação entre o programa cliente e os diversos serviços que
também estão rodando no espaço do usuário. Neste caso a comunicação é fornecida através da
passagem de mensagens. O programa cliente e o serviço nunca interagem diretamente, apenas
trocando mensagens com o microkernel.
2. O sistema operacional é mais fácil de ser transferido de um design de hardware para outro.
4. O microkernel oferece mais confiabilidade devido ao kernel mais simples design e funcionalidade.
5. Uma vez que utiliza o compartilhamento de mensagens para se comunicar e a maioria dos
serviços são executado como usuário em vez de processos de kernel, ele também oferece maior
segurança.
Com módulos de kernel carregáveis, a ideia do design é que o kernel forneça serviços essenciais
enquanto outros serviços são implementados dinamicamente enquanto o kernel está em execução.
Aqui o kernel possui um conjunto de componentes principais e o restante dos serviços adicionais são
vinculados por meio de módulos. Como exemplo, poderíamos construir um algoritmo de
escalonamento diretamente no kernel e então adicionar suporte para diferentes sistemas de
arquivos através de módulos carregáveis. Como resultado, podemos adicionar ou remover
funcionalidades do kernel enquanto ele está em execução. Com módulos de kernel carregáveis, não
precisamos implementar todas as funcionalidades do sistema central. Os serviços adicionais são
implementados somente quando são necessários durante a inicialização ou quando o sistema
operacional está em execução. Não há necessidade de recompilar ou reinicializar o kernel quando
essas novas funcionalidades são adicionadas.
iOS é um sistema operacional móvel desenvolvido pela Apple para rodar seu smartphone
e seu tablet. iOS está estruturado no sistema operacional Mac OS X sistema com funcionalidade
adicional pertinente a dispositivos móveis. Seu design tem uma abordagem em camadas com quatro
pilhas básicas de software em camadas:
o Mac OS X OS.
bancos de dados.
Android
O sistema operacional Android foi projetado e desenvolvido para smartphones e tablets Android. O
Android é executado em uma variedade de plataformas móveis, enquanto seu código é de código
aberto e programado usando a linguagem de programação Java. A construção do Android é uma
pilha de software em camadas que fornece um rico conjunto de estruturas para o desenvolvimento
de aplicativos móveis, enquanto na parte inferior do software está o kernel do Linux.
A partir das informações acima sobre ambos os sistemas, podemos fazer essas comparações
Semelhanças
1. Ambos são baseados em kernels existentes. O núcleo do sistema operacional Android é baseado
no Kernel Linux e iOs no Mac OS X;
3. Ambos fornecem estruturas para desenvolvedores. No iOS podemos notar que a implementação
do Cocoa Touch que é uma API para Objective-C que fornece diversas estruturas para o
desenvolvimento de aplicativos. No Android podemos notar a presença de frameworks para
desenvolvimento de navegadores web (webkit), suporte a banco de dados (SQLite) e multimídia;
Diferenças
1. Os aplicativos iOS são desenvolvidos em Objective-C enquanto o Android é codificado
em Java. No entanto, em vez de usar a API Java padrão, o Google projetou uma API Android
separada para desenvolvimento Java;
2. O código do iOS é de código fechado, enquanto o Android é de código aberto, o que
3. Como o Android é programado em Java, ele usa uma máquina virtual (máquina virtual Darkvil)
enquanto o iOS executa código nativamente.
As semelhanças entre iOS e Android são que ambos são construídos em kernels existentes,
fornecem estruturas para desenvolvedores e possuem arquitetura que usa pilhas de software. No
entanto, o código do iOS é de código aberto, é codificado em Objective-C e é codificado
nativamente. O Android, por outro lado, é codificado em Java, é de código aberto e usa uma
máquina virtual.
Q24- Explique por que programas Java sendo executados em sistemas Android não usam a API
Java padrão e a máquina virtual.
Precisamos de uma nova API e de uma máquina virtual que seja compatível com dispositivos com
memória e capacidade de processamento de CPU limitadas. Portanto, tanto a API Android para
desenvolvimento Java quanto a máquina virtual são otimizadas para funcionar com smartphones e
sistemas de tablets
Q25- O sistema operacional experimental Synthesis tem um montador incorporado ao kernel. Para
otimizar o desempenho das chamadas de sistema, o kernel monta rotinas dentro do espaço do
kernel para minimizar o caminho que a chamada de sistema deve percorrer dentro do kernel. Essa
abordagem é a antítese da abordagem em camadas em que o caminho percorrido no kernel é
estendido para tornar a construção do sistema operacional mais fácil. Discuta as vantagens e
desvantagens da abordagem do Synthesis para o projeto do kernel e a otimização do desempenho
do sistema.
Vantagens
O sistema operacional experimental Synthesis consegue compilação on-the-fly graças ao
assembler incorporado no kernel e otimiza o desempenho das chamadas do sistema.
Desvantagens
• Depurar dentro do kernel é difícil
• Esta solução é muito específica do sistema, o que pode causar problemas com
atualizações, portabilidade e flexibilidade
• Além disso, por ser muito específico, um novo compilador deve ser escrito para cada
arquitetura