Você está na página 1de 8

Resumo aula 1 - de Infraestrutura de Software

Sistema Computacional = Em um esquema representado por camadas de baixo a alto


nível, o SO (sistema operacional) é a camada imediatamente acima do hardware que é o
software que executa em modo kernel. Nesse modo o SO pode executar qualquer instrução
que o hardware permita. Os outros software rodam no modo usuário, se comunicam com
sistemas operacional, esse sistema que faz a abstração/ gerenciamento do hardware é que
permite a comunicação diretamente com o hardware.

Definição 2: O sistema operacional pode ser visto, também, como máquina estendida em
que ele cria abstrações do hardware tornando mais simples o hardware ser usado por
programas e aplicativos (facilita a execução/ implementação de programas).

Processo: Engloba tudo aquilo que é necessário para o SO executar (Memória e Arquivos)

Memória Virtual: os programas que rodam no modo usuário não precisam estar
preocupados com o gerenciamento de memória.

Arquivo: Entidade que guarda um dado em um dispositivo de armazenamento (disco


rígido), como também pode ser uma abstração que o SO pode fazer reconhecer dispositivos
de entrada e saída. Ex: No o linux os Dispositivos de entrada e saída são representados por
arquivos especiais.

Definição 3: SO como gerenciador de recurso:

Gerencia e protege memória, dispositivos de E/S (entrada e saída) e outros recursos


(hardware)

Permite o compartilhamento (ou multiplexação) de recursos

O SO pode ser visto como um software que roda no modo núcleo e pode realizar qualquer
operação em um computador.
Barramentos e Dispositivos de E/S

Barramentos: “Conduítes” elétricos que carregam a informação entre os vários


componentes da máquina.

Dispositivos de E/S: Conexão da máquina com “o mundo externo”; conectados ao


barramento de E/S por:
● Controladores (chips no próprio dispositivo ou na placa mãe) ou
É uma interface que abstrai os detalhes dos dispositivos de entrada e saída para o
processador, facilitando a conexão processador/ CPU e os dispositivos.

● Adaptadores

Memória
É nela que ficam armazenados os dados e instruções de um programa que a CPU vai
executar.

Logicamente, a memória principal corresponde a um enorme vetor (array) de bytes


❖ cada posição tem um endereço único ( o índice do vetor )
❖ Os registradores da CPU muitas vezes são usados para armazenar endereços de
memória.
➔ assim, o número de bits em cada registrador limita o número de posições de
memória endereçáveis;

À medida que vai descendo na pirâmide as memórias ficam mais lentas.

Balanceamento custo/desempenho é levado em conta aqui, pois seria extremamente rápido


o acesso se a implementação fosse diretamente por meios de registradores, porém há um
enorme custo associado. Nesse sentido, tecnologias que intermediam esse acesso de
forma eficiente e barata os substituem, como é o caso de memórias caches.
Memórias caches estão mais próximas do processador, assim a CPU acessa os arquivos
em tempo de execução e, somente quando é necessário, acessa a memória principal.
Níveis de caches: L1 - pode estar dentro do processador, L2 pode estar fora, mas ainda
assim o acesso é mais rápido do que à memória principal. À medida que vai se distanciando
a cache vai ficando maior e a tecnologia que ela é construída é mais lenta,
consequentemente mais barata.

Multithreads e Multicore: Unidades de processamento segmentadas dentro do processador


principal, o desempenho é medido basicamente pela quantidade de caches contidas,
operando simultaneamente.

O sistema operacional faz parte de um conjunto de softwares básicos que o computador


precisa para o seu funcionamento. Para o caso execução de programas em linguagens
específicas, como c/ c++ há uma “tradução” promovida pelo SO em linguagem de máquina
para que as instruções sejam passadas diretamente para o processador executar tal
operação. Esse processo é chamado de compilação que converte o programa escrito em
alto nível em 0’s e 1’s. Porém antes de o programa ser efetivamente executado, ele é
convertido em Assembly, que é uma linguagem de baixo nível de descrição de hardware;

Resumo aula 3 - de Infraestrutura de Software

Assumindo que o sistema computacional tem um processador que só permite executar um


programa em determinado momento, a MULTIPROGRAMAÇÃO é uma técnica que permite
que vários programas sejam executados simultaneamente. Mas assumindo que a CPU só
permite que um programa seja executado por vez, o que ocorre é um chaveamento, que é
muito rápido e passa despercebido.

Sistemas de Multiprogramação: A ideia consiste em se ter programas que estão na


memória principal (JOB’s) e então o SO gerencia o tempo de execução de cada programa
desse, deixando que eles sejam executados por uma certa fatia de tempo.
O SO, basicamente, muda o programa que está
em execução no processador mudando o valor
de PC (registrador de ponteiro) na CPU, onde
ele coloca o endereço da próxima instrução a
ser executada. Ele (SO) adota uma técnica
chamada interrupção;
Sistema em tempo real?

É um sistema que além dos resultados corretos, esses resultados tem que ser
gerados satisfazendo restrições temporais. Ex: Reprodutor de vídeo.
Sistemas de tempo real estão presente em, por exemplo, sistemas médicos,
financeiros, aviões (cujos resultados precisam ser corretos, e precisam satisfazer
uma restrição de tempo, para que dado uma ordem do piloto em fazer aterrissagem
não demorem)

Sistemas de tempo real crítico:

Nesses sistemas, caso as restrições não sejam satisfeitas haverá consequências


irreversíveis. como por exemplo, aviões, robôs exploradores (robô que foi a marte)

Estruturação dos SO:

➢ sistema Monolítico (tudo se encontra no núcleo do SO, forma que se organiza):


Nessa estrutura todo o SO roda em modo núcleo e em sua forma mais pura, o sistema
monolítico é formado por várias funções onde não existe regra em que as funções são
chamadas na medida em que os serviços são requisitados. Em geral o desempenho nessa
estrutura é bom, pois não há muito overhead na forma que os serviços dos SO’s se
comunicam e como eles vão ser chamados, porém, já que tudo está rodando em modo
Kernel que pode fazer tudo com o hardware, o problema em uma determinada
funcionalidade afetará todo o SO.
O SO pode ser visto como um processo (programa em execução) que tem várias funções.
Procedimento em algumas linguagens de programação está associado a uma função que
não retorna valor.

Windows e Linux usam a estrutura monolítica, não puramente, podem usar um sistema que
consiste em camadas . Essa forma de organização fornece uma melhor modularidade que
permite uma maior facilidade na extensão do SO, ou seja, adiciona novas funcionalidades
bem como a correção de bugs.

A ideia de uma abordagem em camadas é que cada camada se comunica com a outra
imediatamente inferior e com uma camada imediatamente superior. Essa hierarquia facilita,
por exemplo, quando se quer fazer modificação no SO, bem como manutenção das
funcionalidades.

Sistemas em camadas é um sistema monolítico, uma organização hierárquica.


O problema dessa abordagem é que há uma perda de desempenho se comparada a
monolítica pura, onde há uma regra mais estrita de comunicação entre as funcionalidades.
Porém essa perda de desempenho é recompensada com uma melhor modularidade das
funcionalidades do SO.

É através das chamadas de sistemas que o SO provê funcionalidades aos aplicativos que
rodam no modo usuário .

A abordagem e camadas, apesar de ser uma organização da abordagem monolítica possui


os mesmos problemas. Uma alternativa é a arquitetura Micronúcleo, ou Microkernel. Nesse
caso o Kernel, só tem o mínimo de funcionalidade, algumas de suas funcionalidades são
retiradas e elas são executadas no modo usuário, como se fossem programas/processador.

Essa abordagem tem o custo do desempenho, pois não possui o mesmo que um sistema
monolítico. O núcleo é responsável por escalonamento, passagem de mensagens e
interrupções. Como os computadores estão cada vez mais rápidos, uma possível perda de
desempenho pode não ser algo significante.

O sistema micronúcleo pode ser aplicado em um Sistema distribuído, em que o SO está


rodando em várias máquinas e a responsabilidade do núcleo/ Kernel, é fazer a
comunicação entre os clientes e os servidores que estão rodando em máquinas diferentes.
A grande característica dos sistemas distribuídos é que apesar de estar sendo adotado as
várias máquinas, para o usuário que usa o SI é como se tivesse uma única máquina de
forma lógica, mas fisicamente, mais de uma máquina está sendo adotada.

Máquina virtual, é também, uma outra forma de estrutura para o SO, em que o SO nesse
caso, não tem como objetivo executar um sistema específico, como um SI de arquivos.
Mas prover várias máquinas virtuais as quais podem rodar SO diferentes.
Contexto de processo: Tudo aquilo que o processo precisa para sua execução, ou seja, os
valores dos registradores que ele usa pra CPU, a memória (espaço de endereçamento), E/A
- estágios das respectivas requisições , o estado do processo [...].

Todos processo quando é criado, o estado é “pronto”, o SO pega um processo que está no
estado de pronto e coloca ele pra executar na CPU, depois de alguns critérios como uma
fatia de tempo, o processo que está rodando/ executando é posto no estado de pronto para
que outros processos sejam executados. Caso, algum processo precise de algum
dispositivo, como E/S, e esse recurso não estiver pronto, ele é bloqueado e só depois que o
que ele solicitou estiver disponível, o SO colocar o processo no estado de pronto para só
depois ter possibilidade de executar.

Quem controla se o processo está no estado de pronto ou rodando é o escalonador


(componente do SO)
Threads em modo usuário (uso de biblioteca que simula o uso de threads) não são
reconhecidas pelo SO, usa menos recurso. Vai alocar
Threads em modo núcleo,

Você também pode gostar