Você está na página 1de 5

DISCIPLINA: SISTEMA OPERACIONAIS I

1 – O sistema operacional é um conjunto de softwares que é responsável pelo gerenciamento


de diversos recursos do sistema. Suas principais funções englobam o facilitar o acesso aos
recursos do sistema e compartilhar de forma organizada protegida os mesmos.

2 – Está se referindo a maior proximidade com o usuário e maior distância do hardware.

3 – A linguagem de comandos permite que os usuários se comuniquem com o sistema


operacional de forma simples através de uma interface de comandos que são interpretados
pelo interpretador de comandos da linguagem de comandos. A linguagem de comandos pode
usar uma interface de linha de comandos ou uma interface gráfica. Para cada comando
executado pelo usuário o interpretador de comandos verifica o comando, analisa a sintaxe do
comado e verifica permissões para a execução do comando. Cada sistema operacional possui
sua linguagem de comandos específica. Os comandos da linguagem de comandos podem ser
gravados em arquivos de script para serem executados como se fossem programas. Esta forma
de uso da linguagem de comandos é muito usada para a automação de tarefas rotineiras,
como backup, carga de dados, etc. A linguagem de comandos não faz parte do núcleo do
sistema. Ela é um componente da arquitetura do sistema operacional e pode variar mesmo em
versões do mesmo sistema operacional.

4 – a) Barramento de dados – como o próprio nome já deixa a entender, é por este tipo de
barramento que ocorre as trocas de dados no computador, tanto enviados quanto recebidos.
b) Barramento de endereços – indica o local onde os processos devem ser extraídos e para
onde devem ser enviados após o processamento.
c) Barramento de controle – atua como um regulador das outras funções, podendo limitá-las
ou expandi-las em razão de sua demanda.
d) Barramento de processador-memória – conecta o processador com a memória do sistema
computacional.

5 - Localidade temporal - Se um item é referenciado, ele tenderá a ser referenciado


novamente. Exemplo: loops (instruções e dados). Dado que existe uma grande possibilidade de
um endereço de memória ser acessado novamente num curto período de tempo e este
estando na cache, será devolvido ao processador mais rapidamente.

Localidade Espacial - Se um item é referenciado, itens cujos endereços são próximos a este,
tenderão a serem referenciados também. Exemplo: acesso a dados de um array. Dado que
existe uma grande probabilidade de o próximo acesso estar ao redor/ perto da célula “x” o
sistema leva toda a “vizinhança” para a cache. Assim no próximo ciclo ou instrução que a CPU
for executar provavelmente, ela vai buscar em um dos endereços próximos ao último que foi
acessado, e como este já estará na cache esse tempo de resposta será muito menor, assim o
processador ficará menos tempo esperando a resposta do dado para continuar trabalhando.

6 – a) Os registradores são a “memória de trabalho” da CPU, são endereços que armazena


dados por um curto período para que o processador possa manipular esse dado ou usá-lo para
manipular algum outro. Eles são responsáveis por armazenar todas as informações referente a
execução de um programa.
b) Eles representam o momento de execução de um determinado programa. Inclusive alguns
servem para controle fundamental do funcionamento do processador ou da execução do seu
código, em geral coisas que você nem sabemos da existência.

c) Registradores de propósito geral, cujo uso é definido pelas instruções em execução. Podem
ser utilizados pelos programas para quaisquer objetivos, por exemplo, Acc (Acumulador) ->
Este registrador é especial porque ele é usado normalmente como fonte e destino de dados e
costuma ser um operando implícito nas instruções.

Registradores de propósito específicos, de uso exclusivo do processador, no processo de


execução das instruções de um programa. Exemplo: IR (Instruction Register), que armazena o
código da operação da instrução que está sendo executada.

7 – Essa tecnologia faz com que cada núcleo do processador possa executar mais de
um thread de uma única vez, tornando o sistema mais rápido quando se usam
vários programas ao mesmo tempo. Isso quer dizer que essa CPU pode trabalhar com oito
processos indivisíveis simultaneamente (um em cada núcleo) ou com até dezesseis linhas de
execução (threads) — as quais podem ou não ser de um mesmo processo.

8 – MAR=32 bits número max células = 2^32

9 – Os sistemas de tempo compartilhado (time-sharing) permitem que diversos programas


sejam executados a partir da divisão do tempo do processador em pequenos intervalos,
denominados fatia de tempo (time-slice). 

10 – Atualmente a maioria dos sistemas operacionais suportam multi processamento, dentre


eles os servidores de banco de dados, servidores de arquivos, servidores web usam sistemas
com múltiplos processadores justamente para atender a estes requisitos de infraestrutura.
Caso haja uma falha no sistema operacional, a aplicação deve continuar como se não houve
havido falha, sem que o usuário perceba que houve a falha.

11 – Sistemas Fortemente Acoplados: Nos sistemas fortemente acoplados (tightly coupled)


existem vários processadores compartilhando uma única memória física (shared memory) e
dispositivos de entrada/saída sendo gerenciados por apenas um sistema operacional. Em
função destas características, os sistemas fortemente acoplados também são conhecidos como
multiprocessadores.

Sistemas Fracamente Acoplados: Os sistemas fracamente acoplados (loosely coupled)


caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de
linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu próprio
sistema operacional e gerenciando seus próprios recursos, como UCP, memória e dispositivos
de entrada/saída. Em função destas características, os sistemas fracamente acoplados também
são conhecidos como multicomputadores. Neste modelo, cada sistema computacional
também pode ser formado por um ou mais processadores.

12 – Serve de comunicação do Sistema Operacional com os Dispositivos, em geral, possui


memória e registradores próprios para executar instruções enviadas pelo device driver.

13 – O modo PIO (Programmed Input/Output) e o modo DMA (Direct Memory Access) são
métodos de transferência de dados em dispositivos IDE/ATA (HD, DVD, CDROM, etc...). O
modo PIO é extremamente ultrapassado e tem uma taxa de transferência máxima de 16,7
MB/s (PIO 4), além de usar o processador para coordenar essa tarefa. O modo DMA surgiu
com a principal vantagem de proporcionar a comunicação direta entre o dispositivo IDE e a
memória, liberando o processador de gerenciar todo o resto.

14 – Em ciência da computação, buffer(retentor) é uma região de memória temporária


utilizada para escrita e leitura de dados. Os dados podem ser originados de dispositivos (ou
processos) externos ou internos ao sistema. Os buffers podem ser implementados em
software (mais usado) ou hardware. Normalmente são utilizados quando existe uma diferença
entre a taxa em que os dados são recebidos e a taxa em que eles podem ser processados, ou
no caso em que essas taxas são variáveis. Os buffers são mecanismos muito utilizados em
aplicações multimídia, em especial nas aplicações de streaming.

15 – Operação periférica simultânea on-line, sigla para isso é Spooling . Um spool é um tipo
de buffer que armazena os trabalhos de um dispositivo até que o dispositivo esteja pronto
para aceitar o trabalho. O spooling considera o disco como um buffer enorme que pode
armazenar tantos trabalhos para o dispositivo até que os dispositivos de saída estejam prontos
para aceitá-los. No spool, a E / S de um trabalho é sobreposta com o cálculo de outro trabalho.
Por exemplo, um spooler de cada vez pode ler a entrada de um trabalho e, ao mesmo tempo,
também pode imprimir a saída de outro trabalho. O spool também pode processar dados nos
sites remotos. O spooler só precisa notificar quando um processo é concluído no site remoto
para que o spooler possa fazer o spool do próximo processo para o dispositivo remoto. O spool
aumenta o desempenho do sistema aumentando a taxa de trabalho dos dispositivos.
Naturalmente leva a multiprogramação.

16 – Serão necessários 32 Kb.

17 – O processo é implementado pelo sistema operacional através de uma estrutura de dados


chamada bloco de controle do processo (PCB - Process Control Block). O sistema operacional,
através do PCB, mantém todas as informações sobre o contexto de hardware, contexto de
software e espaço de endereçamento. Cada processo possui seu PCB que mantêm todas as
suas informações. OS PCBS de todos os processos são mantidos na memória principal em uma
área exclusiva do sistema operacional. O tamanho desta área de memória é controlado por
parâmetro no sistema operacional de acordo com o número máximo de processos que podem
ser suportados pelo sistema operacional.

18 – As informações que permitem definir completamente o estado de uma tarefa são


coletivamente denominadas contexto da tarefa. Cada tarefa ativa no sistema possui uma
estrutura de dados associada a ela, onde são armazenadas as informações relativas ao seu
contexto e outros dados necessários à sua gerência. Essa estrutura de dados é geralmente
chamada de TCB (do inglês Task Control Block). Cada TCB funciona como um “descritor de
tarefa” e tipicamente contém as seguintes informações: Identificador da tarefa (geralmente
um número inteiro). Estado da tarefa (nova, pronta, executando, suspensa ou terminada).
Valores dos registradores do processador quando o contexto foi salvo pela última vez. Lista das
áreas de memória usadas pela tarefa (exclusivas ou compartilhadas com outras tarefas). Listas
de arquivos abertos, conexões de rede e outros recursos usados pela tarefa (exclusivos ou
compartilhados com outras tarefas). Informações de contabilização (data de início, tempo de
processamento, volume de dados lidos/escritos, etc.). Outras informações (prioridade,
proprietário, etc.). Os TCBs das tarefas são organizados em listas ou vetores (lista de tarefas
prontas, lista de tarefas aguardando um pacote de rede, etc). Para ilustrar o conceito de TCB, o
apêndice A apresenta o TCB do núcleo Linux (versão 2.6.12), representado pela estrutura
task_struct definida no arquivo include/linux/sched.h.
19 – Multithreading é a capacidade que o sistema operacional possui de executar vários
threads simultaneamente sem que uma interfira na outra. Estes threads compartilham os
recursos do processo, mas são capazes de ser executadas de forma independente. Para possuir
processamento multithread “real”, os processadores precisam ser capazes de atender duas ou
mais threads ao mesmo tempo e não simular este efeito, atendendo-as uma por vez em um
curto período de tempo. A maior vantagem trazida com a execução multithread é permitir que
os computadores com múltiplos núcleos de processamento possam aproveitar todo o seu
potencial e operar de forma mais rápida.

20 – Os sistemas de tempo compartilhado (time-sharing) permitem que diversos programas


sejam executados a partir da divisão do tempo do processador em pequenos intervalos,
denominados fatia de tempo (time-slice). A vantagem na sua utilização é possibilitar para cada
usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está
dedicado, exclusivamente, a ele

21 – Constitui-se do conteúdo de registradores. A troca de um processo por outro na CPU, pelo


sistema operacional, é denominada mudança de contexto. Mudança de Contexto - salva o
conteúdo dos registradores da CPU e carregá-los com os valores referente ao do processo que
está ganhando a utilização do processador.

22 – Estado novo (new). Enquanto o programa não é carregado e seu PCB precisa ser criado.
Estado pronto (ready). O PCB já foi criado e todos os recursos necessários a execução do
processo estão garantidos. *CPU está executando outro processo.
Estado execução (running). Chegou a vez da CPU executar o processo. Ele será executado por
um tempo e pode mudar seu estado.
Estado espera (waiting). O processo só estará no estado bloqueado/espera se ele estiver em
execução, e for colocado na fila de espera de E/S.
Estado terminado (terminated). Quando o processo chega ao fim. Acabou de rodar.

23 – Mudança de estado por eventos do próprio processo (eventos voluntários) ou causados


pelo sistema operacional (eventos involuntários).

24 – Novo -> pronto – o novo processo termina de ser carregado em memória, estando pronto
para executar.
Pronto -> executando – o processo é escolhido pelo escalonador para ser executado, entre os
demais processos prontos.
Executando -> pronto – está transição ocorre quando se esgota a fatia de tempo destinada ao
processo (quantum); – Nesse momento o processo não precisa de outros recursos além do
processador e por isso volta à fila de “pronto” para esperar novamente a disponibilidade do
processador.
Executando -> bloqueado – caso o processo em execução solicite acesso a um recurso não
disponível, ele abandona o processador e fica bloqueado até o recurso ficar disponível.
Bloqueado -> pronto – quando o recurso solicitado pelo processo se torna disponível, ele pode
então voltar ao estado de “pronto”.
Executando -> encerrado – O processo encerra sua execução ou é abortado em consequência
de algum erro (acesso inválido à memória, instrução ilegal, divisão por zero). – Em geral, o
processo que deseja terminar avisa ao sistema operacional através de uma chamada de
sistema.
Bloqueado, pronto -> encerrado – Interrupção (Ctrl-C, kill)
25 – Pode existir um outro processo em execução e este processo que estava bloqueado deve
aguardar sua vez no escalonador.

26 – Calcular/comparar/relacionar que é o "processamento" propriamente dito. Essa etapa


requer muita CPU, por isso é chamada de CPU bound. O gargalo é a velocidade de
processamento do processador.
Além de "processar" os dados propriamente dito, o computador tem que ler os dados (input
de dados) e escrever os resultados dos processamentos (output de dados) requerendo muito
IO (entrada/saída de dados). O gargalo é o IO, por isso é chamado de IO bound.

27 – Dado que o multithreading já é uma técnica de programação concorrente, e que


normalmente o número de theads é superior aos processadores/núcleos, apesar de não ser
garantido, a chance de eficiência é maior, pois é mais provável que a CPU execute mais
programas ao mesmo tempo. Exemplo: o processador Intel Core i7 2600. Verificando no site
da fabricante, temos a informação de que esse modelo vem com quatro núcleos e tem suporte
para trabalhar com até oito threads. Isso quer dizer que essa CPU pode trabalhar com quatro
processos indivisíveis simultaneamente (um em cada núcleo) ou com até oito linhas de
execução (threads) — as quais podem ou não ser de um mesmo processo.

28 – Em um ambiente monothread, só existe o PCB e ele quem vai conter o contexto se


hardware, e onde o estado ficará, um processo suporta apenas um programa no seu espaço
de endereçamento e apenas uma instrução é executada, já em um ambiente multithread cada
thread, que é menor e mais rápida, representa uma unidade de escalonamento independente
e, neste caso, o sistema não seleciona um processo para a execução, mas sim um de seus
threads (onde ficará o estado do processo).