Você está na página 1de 14

Docente: Márcio Favacho

Discente: Vinicius do Amaral Lopes

Disciplina: Sistemas Operacionais

RESUMO:

No tópico 2.1 (Definição e estrutura de processos): Um processo é


basicamente um programa em execução. Em um processo há um conjunto de
dados necessários para sua execução, tais como: a identificação do processo,
contador de programa, ponteiros, as variáveis e dados armazenados em
memória, ente outros.

Um processo quando está em execução entra no estado de


“executando”, ao finalizar seu tempo de execução o escalonador interrompe o
processo deixando-o no estado de “pronto”, após chegar sua vez de ser
executado o escalonador acorda o processo, permitindo assim sua
continuidade.

Quando bloqueado, o processo não pode prosseguir com sua execução,


isso ocorre quando um sinal é enviado por outro processo ou pela decisão do
escalonador o mesmo só será desbloqueado com um evento externo.

As filas de controle “ReadyList” e “BlockedList” tem a função de efetuar o


compartilhamento da CPU entre processos.

Concorrência

Normalmente em um sistema multarefa vários programas são


executados ao mesmo tempo, e com isso o número de processos é maior que
os de CPUs. O fato de muitos processos existirem acaba deixando a
administração de recursos com muitos problemas, resultando em uma disputa
entre processos (processos concorrentes) pelo uso de um mesmo recurso. Ao
ocorrer uma disputa de processos o sistema operacional deve regular a ordem
segundo a qual os processos acessam os dados.
Thread ou processo leve

O processo possui duas partes: a ativa que consiste no fluxo de controle,


e a passiva que é o espaço de endereçamento. A vantagem da thread, se dá
pelo seu espaço de endereçamento ser compartilhado e consumir menos
recursos. O uso de multthread num espaço de endereçamento é mais eficiente
e econômico que diversos processos. Porém, em múltiplos processos, caso um
deles tenha de ser finalizado os outros não serão afetados, já num multthread a
finalização de uma thread acaba afetando o processo e assim afetando
também as demais threads.

No tópico 2.2 (Estados de um processo): Os processos passam por


diferentes estados durante seu processamento, um processo pode situar-se em
três estados:

 Running (execução): Um processo está no estado de execução


quando está sendo processado pela CPU

 Ready (pronto): Um processo está no estado de pronto quando ele


tem condições lógicas de executar e apenas aguarda para ser executado.

 Wait (espera): Um processo no estado de espera aguarda por algum


evento externo ou por algum recurso para prosseguir seu processamento, ou
seja, ele não tem condições lógicas de executar.

Durante seu processamento, em função de eventos voluntários ou


eventos involuntários, o processo muda de estado. Em um processo existem
quatro mudanças de estado:

 Pronto  Execução: Depois de criado, o processo é colocado em uma


lista de processos no estado de pronto, onde espera para ser executado.

 Execução  Espera: Quando em estado de execução, o processo


passa para o estado de espera por eventos gerados pelo próprio processo.
 Espera  Pronto: Quando em estado de espera, o processo passa
para o estado pronto quando a operação solicitada é atendida ou o recurso
esperado é permitido.

 Execução  Pronto: Quando em estado de execução, o processo


passa para o estado de pronto por eventos gerados pelo sistema.

Quando um processo está em estado de pronto ou espera ele não pode


se encontrar na memória principal. Uma técnica conhecida como swapping
retira processos da memória principal e os traz de volta seguindo critérios de
cada sistema operacional.

No tópico 2.3 (Tipos de processo): Concorrendo com os processos de


usuário, a CPU também executa os processos do sistema, com certa
prioridade. Os processos em execução, do usuário, podem assumir dois tipos
diferentes, de acordo com suas características de uso de CPU e periféricos:

• Processo CPU-bound: É aquele processo que utiliza muito a CPU. O


mesmo ganha uma faria de tempo e a utiliza por inteiro sem desperdício de
tempo, é o caso de programas científicos, de cálculo numérico, estatísticas,
etc. Normalmente trabalham mais com processamento do que com entrada de
dados.

• Processo I/O-bound: É o tipo de processo que utiliza muito mais E/S do


que a CPU. Por ocupar a CPU em períodos mínimos de tempo, esse tipo de
processo acaba permanecendo em tempo de espera tratando de interrupções.
Utilização em banco de dados, onde por sua vez, faz consultas e atualizações
constantemente.

No tópico 2.4 (Comunicação entre processos): Para a efetuação de


determinada tarefa, os processos precisam comunicar-se entre si. Para isso
dois paradigmas são empregues: a memória compartilhada e a troca de
mensagem. No primeiro, os processos possuem acesso a uma área de leitura
e escrita de informações. Já no segundo, consiste na utilização de fontes para
envio/recebimento de mensagens entre os processos.

Quando dois ou mais processos utilizam do mesmo recurso, pode-se


ocorrer inúmeras situações incomuns, isso ocorre por conta da interrupção
provocada pelo escalonador do sistema operacional. Esse tipo de situação é
conhecida como situações de corrida, e as áreas que por sua vez estejam
sofrendo por uma condição de corrida, é denominada seção crítica. Uma
estratégia conhecida como exclusão mútua, garante que os dados
compartilhados só possam ser manejados por um processo por vez.

Todavia, está estratégia não é o bastante para a solução do problema,


para isso temos quatro itens básicos:

● Dois processos não podem estar acessando suas regiões críticas ao


mesmo tempo;
● A velocidade e quantidade de processadores não deve interferir no
algoritmo;
● Um processo que esteja fora de sua seção crítica não deve impedir
outro processo de usá-la;
● Um processo não deve esperar indefinidamente para acessar sua
região crítica.

No tópico 2.5 (Escalonamento):


Responsável pelo escalonamento, o escalonador é quem determina qual
processo deve sair ou ir para a CPU em determinado momento. Também é
responsável pela designação de processos a processadores, deliberando sua
ordem de execução.

Os principais objetivos do escalonamento são:

● maximizar a utilização do processador;


● maximizar o número de processos completados por unidade de tempo;
● garantir que todos os processos recebam o processador;
● minimizar o tempo de resposta para o usuário.

Os tipos de escalonamento são:

● Não-preemptivo: ocorre quando o processo que está executando não


pode ser interrompido.
●Preemptivo: o processo pode ser retirado do processador que está
executando. Permite atenção imediata aos processos mais prioritários,
melhores tempos de resposta e compartilhamento uniforme do processador.

A multitarefa cooperativa não possui a figura do escalonador, pois nesse


caso são os aplicativos que cooperativamente se revezam na utlização dos
recursos de CPU e memória.

No tópico 3 (Gerência de memória): Um recurso de extrema


importância é a memória. O componente responsável pelo gerenciamento de
memória no sistema operacional, é o gerenciador de memória. Dentre várias
tarefas, o gerenciador de memória inspeciona as partes da memória que estão
em uso e as quais estão disponíveis, gerencia a substituição de processos
entre memória principal e secundária.

No tópico 3.1 (Endereços lógicos e físicos): Os endereços lógicos,


são endereços de memória que são gerados pelo processador à medida que
executa algum código, o mesmo corresponde à lógica do programa, mas não
são necessariamente iguais aos endereços reais das instruções e variáveis na
memória real do computador, que são chamados de endereços físicos.

Os endereços executados pelo processador são interrompidos por um


harware peculiar chamado de Unidade de Gerência de Memória (MMU -
Memory Management Unit), que por sua parte é responsável pela análise dos
endereços lógicos emitidos do processador, e define os endereços físicos
correspondentes na memória do periférico.
Para a segurança e estabilidade dos sistemas complexos, a proteção de
memória entre processos é essencial. A MMU pode ser ajustada rapidamente
para mudar a forma de conversão entre endereços lógicos e físicos, permitindo
assim uma área de memória exclusiva para cada processo do sistema.

No tópico 3.2 (alocação de memória): A alocação de memória está


dividida em:

● Alocação Estática: Decisão tomada quando o programa é compilado:


Na alocação estática, o espaço para as variáveis é reservado
automaticamente, e liberado posteriormente pelo compilador:

● Alocação Dinâmica: Decisão é adiada até a execução:


Na alocação dinâmica, o espaço para as variáveis é alocado
dinamicamente durante a execução do programa pelo programador

● Alocação Local: Este processo de alocação é usado para alterações


que são locais a funções e sub-rotinas. Dito isso, o processo deve manter
acessível as alterações locais da função.

No tópico 5 (Gerencia de dispositivos): O procedimento de


comunicação com uma placa de rede é totalmente diferente de uma
comunicação comum no disco rígido SCSI. Isso é ocorre por conta dos
periféricos do computador, possuírem cada um, sua singularidade. A gerência
de dispositivos, tem função de implementar a comunicação com cada
dispositivo através de drivers e criar modelos abstratos que permitem juntar
diversos dispositivos distintos em relação a mesma interface de acesso.

No tópico 5.1 (Dispositivos de entrada e saída): São dispositivos que


permitem a comunicação entre o computador e o mundo externo. Podem ser
divididos em: os que são utilizados como memória secundária, ou para
interface homem-máquina.
Um exemplo de memória secundária, são os discos rígidos, e de
interface homem-máquina são os teclados, monitores, entre outros. Por meio
desses dispositivos, tanto a CPU quanto a memória principal podem
comunicar-se com usuários e memórias secundárias, podendo fazer diversos
procedimentos.

No tópico 5.2 (Device drivers): Para que sistemas operacionais


possam ser compatíveis com equipamentos diferentes. Foi criado o Device
driver, eles são pequenos programas que fazem a comunicação entre o
Sistema Operacional de sua máquina e o Hardware.

Por conta de cada equipamento ter sua característica, o sistema


operacional acaba por não ter conhecimento sobre todos esses equipamentos
disponíveis. Com isso, o sistema operacional disponibiliza bibliotecas de
programação, para que o fabricante possa criar uma interface entre seu
equipamento e o software.

No tópico 5.3 (Acesso direto à Memória-DMA): O Acesso Direto à


Memória é uma parte do hardware que concede a transferência direta entre a
memória principal e periféricos. É uma técnica utilizada para a otimização de
memória por dispositivos.

O Acesso Direto à Memória só pode ser utilizado se o hardware tiver um


controlador de memória. Ele é um hardware feito para exercer toda a
sequência de transferência de dados acessando diretamente a memória.

No tópico 5.4 (Pedido de Interrupção-IRQ): Um pedido de interrupção,


é um sinal de hardware enviado para o processador que provisoriamente pausa
um programa que está em execução e permite que um manipulador
de interrupções, seja executado.
Um exemplo são: caracteres digitados no teclado, operações de leitura
no HD, dados recebidos, entre outros. Quando acontece uma interrupção, a
CPU detém o processamento em execução e executa uma parte de código
chamado de tratador de interrupção.
Essas interrupções podem ser criados por software ou hardware. Em
hardware, se dá por conta dos dispositivos periféricos ou pelo relógio. Já em
software, elas são chamadas de system calls ou traps.

No tópico 6 (Sistemas Operacionais Distribuídos): Um sistema


distribuído é uma coleção de computadores independentes que aparenta ser
um único computador aos seus usuários. O mesmo tornou-se possível por
conta de computadores mais rápidos e baratos e o surgimento de redes de
computadores de alta velocidade.

Vantagens de sistemas distribuídos sobre sistemas centralizados.


-Aplicável a mainframes;
● Barato;
● Velocidade;
● Distributividade Inerente;
● Confiabilidade;
● Crescimento Incremental.

Vantagens de sistemas distribuídos sobre micros independentes:


● Compartilhamento de dados. (colaboração e preço);
● Compartilhamento de dispositivos. (preço);
● Comunicação.;
● Flexibilidade.

Desvantagens de sistemas distribuídos:


● Software – sistemas operacionais, linguagens de programação e
aplicações.
● Comunicação – tratamento e recuperação de mensagens. Melhoria da
rede pode acarretar em custos altos.
● Segurança – Compartilhamento de dados implica em esquemas
especiais para proteção de dados sigilosos.

No tópico 6.1 (Conceitos de Hardware): Tanenbaum sugeriu que as


máquinas MIMD (múltiplas instruções e múltiplos dados) fossem dividas em
multiprocessadores, que utilizam memória compartilhada e multicomputadores
que dispõe exclusivamente da memória própria. Usualmente
multiprocessadores são sistemas fortemente acoplados e multicomputadores
são sistemas fracamente acoplados.

Multiprocessadores baseados em barramento.


São inúmeras CPUs ligadas por meio de um barramento. Por não
possuir caches locais, o barramento pode sobrecarregar rapidamente. Uma
solução seria inserir caches locais. No entanto, a coerência dos dados que
estão armazenados em cada cache é essencial.

Multiprocessadores com switch.


Utilizados com pontos de cruzamento ou barras cruzadas. As memórias
estão localizadas de um lado e os processadores do outro. O caminho em uma
comunicação é o switched e a memória não tem acesso, pois ele é bloqueado
para os outros processadores.

Multicomputadores baseados em barramento.


São CPUs com memória local, que por meio de um barramento trocam
mensagens. Tanto uma rede local quanto uma CPU, são conectadas através
de um barramento rápido.

Multicomputadores com switch.


São CPUs que possuem inúmeras conexões com diversas CPUs, onde
trocam mensagens por meio de CPUs que intermediam quando necessário a
comunicação.

No tópico 6.2 (Conceitos de Software): O sistema operacional exibe


aos usuários uma imagem que é quase totalmente definida por ele. Um
software fracamente acoplado possibilita que usuários e maquinas sejam
essencialmente independentes dos outros.

Há 8 possíveis combinações de hardware e software, porém apenas


quatro são identificáveis pelos usuários.
Sistemas operacionais de rede
Em Sistemas operacionais de rede, a comunicação é solicitada pelo
usuário e ocorre através da troca de mensagens.

Sistemas distribuídos verdadeiros


Sistemas distribuídos verdadeiros, conhecido também como sistemas
operacionais distribuídos. É um Software fortemente acoplado em um hardware
fracamente acoplado. O objetivo é a criar uma ilusão para os usuários que o
sistema de multicomputadores funciona como uma grande máquina de tempo
compartilhado. Ocasionalmente são referidos como sistemas de imagem única
ou uniprocessador virtual.

Características de SDs:
● Sistema de comunicação interprocessos único;
● Gerenciamento de processos único;
● Sistema de arquivos deve ter a mesma visão e regras em todas as
máquinas.
Segurança deve ser implementada em relação aos usuários e não as
máquinas;
● O mesmo núcleo (kernel) roda em todas as máquinas, já que os
mesmos implementam as mesmas funções e chamadas.

Sistemas multiprocessadores de tempo compartilhado


É um Software fortemente acoplado em um sistema fortemente
acoplado. Um exemplo são multiprocessadores que rodam à Unix. Com uma
Implementação mais simples que um sistema distribuído de verdade, por conta
do projeto do sistema operacional ter a capacidade de ser centralizado.

No tópico 6.3 (Questões de Projeto):

Transparência.
A transparência é o aspecto mais importante em SOD, objetivo é passar
a impressão de um sistema único para os usuários. A transparência pode ser
alcançada em dois níveis: Escondendo-se a distribuição dos usuários e
escondendo-se a distribuição dos programas.

Flexibilidade.
A aplicação de núcleos monolíticos ou de micro-núcleos relacionados
com servidores a nível de usuário.
Resumidamente um núcleo monolítico é um sistema operacional com
aplicações de conexão via rede e a integração de serviços remotos. Em
sistemas adaptados a Unix utilizam esse método, pois o Unix utiliza um núcleo
monolítico.
Os micro-núcleos implementam quatro ocupações:
● Um mecanismo de comunicação inter-processo.
● Algum gerenciamento de memória.
● Um pouco de gerenciamento de baixo-nível de processos e
escalonamento.
● Entrada e saída de baixo-nível.

Confiabilidade.
Um dos objetivos originais na construção do SODs, era o de se adquirir
um sistema mais confiável que sistemas com um único processador. A ideia é
que se uma máquina for quebrada, outra máquina do sistema pode assumir as
suas funções. Teoricamente, a confiabilidade total do sistema seria um OU das
confiabilidades dos componentes.
Aspectos de confiabilidade:
● Disponibilidade (availability).
● Segurança.
● Tolerância a falhas.

Performance.
Problema: comunicação entre CPUs é bem mais lenta que execução nas
CPUs, devido ao overhead de protocolos.
Capacidade de expansão (scalability).
A maioria dos SDs são projetados para trabalhar com algumas centenas
de CPUs. Soluções viáveis para sistemas com 200 máquinas podem falhar
bisonhamente para um sistema com 200.000.000 máquinas.
Algoritmos descentralizados tem as seguintes características:
● Nenhuma máquina tem informação completa sobre o estado do
sistema.
● Máquinas tomam decisões baseadas somente em informações locais.
● A quebra de uma máquina não faz com que o algoritmo falhe.
● Não trabalham com nenhuma suposição de que existe um clock
global.

No tópico 6.4 (Chamada remota a procedimento): A Chamada remota


de procedimento (RPC, acrônimo de Remote Procedure Call) é uma tecnologia
de comunicação entre processos que permite a um programa de computador
chamar um procedimento em outro espaço de endereçamento.

O RPC (Chamada de Procedimento Remoto) é uma tecnologia para a


criação de programas distribuídos servidor/cliente que provê um modelo de
comunicação no sistema operacional de alto nível.

Uma chamada remota de procedimento se difere das chamadas locais


em alguns pontos:
● Tratamento de erros: falhas do servidor ou da rede devem ser
tratadas;
● Variáveis globais e efeitos colaterais: Uma vez que o servidor não
possui acesso ao espaço de endereços do cliente, argumentos protegidos não
podem ser passados como variáveis globais ou retornados;
● Desempenho: chamadas remotas geralmente operam a velocidades
inferiores em uma ou mais ordens de grandeza;
● Autenticação: uma vez que chamadas remotas de procedimento
podem ser transportadas em redes sem segurança.
À vista disso, mesmo tendo diversas ferramentas que geram
automaticamente o cliente e o servidor, os protocolos precisam ser
desenvolvidos cuidadosamente.

Você também pode gostar