Вы находитесь на странице: 1из 15

Sistemas

Operativos

COMUNICAÇÃO INTERPROCESSOS

Nome do estudante: Amisse A.S Momade

Curso: Gestão de Sistema de Informação - 2º Ano

Maputo, Julho de
Introdução 2020
Introdução
Amisse Alfredo Sadaca Momade

Comunicação Interprocessos

Trabalho de campo de
Sistemas Operativos

Maputo
2020

1
Índice

1. Introdução............................................................................................................................................ 2
1.1. Revisão teórica....................................................................................................................... 3
1.2. Objectivos................................................................................................................................. 3
1.2.1. Objectivo Geral............................................................................................................ 3

1.2.2. Objectivos específicos.............................................................................................. 4


2. Metodologia..........................................................................................................................................4

3. Evolução dos sistemas operativos ( Parte Contextual).......................................................4


4. Gerenciamento de processo..........................................................................................................6
5. Comunicação entre Processos......................................................................................................7
6. Mecanismos de comunicação entre-processos......................................................................8
7. Características da comunicação entre processos................................................................. 9
8. Vantagens do mecanismo de comunicação entre processos........................................ 10
9. Considerações finais...................................................................................................................... 12
10. Referências Bibliográficas......................................................................................................... 13

2
1. Introdução

Desde sua criação, os computadores sempre foram sistemas de elevada


sofisticação em relação ao estágio tecnológico de suas épocas de
desenvolvimento. Ao longo dos últimos 50 anos evoluíram incrivelmente e,
embora tenham se tornado mais comuns e acessíveis, sua popularização
ainda esconde sua tremenda complexidade interna.

Neste sentido, os sistemas operativos, em termos de suas origens e


desenvolvimento, acompanharam a própria evolução dos computadores.

Para perceber e analizar uma acção de comunicação Interprocessos,


devemos transparecer ou interpretar a função de um sistemas operativo.

Um Sistema Operativo, pode ser considerado, também um gestor de


recursos. Desta forma, determina que recursos do computador serão
utilizados para resolver um problema e a ordem em que estes serão
utilizados. De uma forma geral, um sistema operativo desempenha três
principais tipos de funções:

• Alocação e atribuição de recursos do sistema, tais como dispositivos de


entrada/ saída, software, unidade central de processamento, etc.

• Agendamento: Esta função coordena os recursos, jobs e segue um


determinado tipo de prioridade.

• Monitoramento: Esta função monitora e controla as atividades no sistema


de computador. Também, mantém os registos das operações, notifica os
utilizadores ou operadores de computador de qualquer anormalidade ou
erros.

Um sistema operativo é um programa que controla a execução dos


programas de aplicação e atua como uma interface entre o usuário do
computador o hardware do computador (figura 1).

2
Fig1. Interação de sistema operativo

1.1. Revisão teórica


Atualmente, os sistemas operativos (SO) estão cada vez mais fáceis de
usar,possuindo interfaces muito simples e bonitas. Contudo, todas estas
funcionalidadesnão surgiram do nada, foram evoluindo com o tempo. Por
exemplo, a bela interfacegráfica do Windows Vista é resultado de mais de 20
anos de desenvolvimento, desdeas primeiras versões deste sistema
operativo.

A evolução desses conceitos foram acompanhando a evolução do homem e


dasempresas através do uso de sistemas operativos instalados nos seus
computadoresque forma eficiente produzem resultados ao mínimo esforço
empreendido pelohomem. Os grandes investigadores estiveram
empenhados em trabalhos de criação demodelos e actualização de vários
sistemas operativos na medida em o tempo passapara que o mundo de hoje
fosse mais melhor com uso das tecnologias de informaçãomais adequados a
realidade.

1.2. Objectivos
1.2.1. Objectivo Geral
A despeito do tipo, sofisticação ou capacidades do computador, um sistema
operativo deve atender aos seguintes princípios:

a) Compreender como é realizada a comunicação entre os processos e


threads em execução no computador, e a maneira como ela é
implementada em alguns sistemas operativos.

3
1.2.2. Objectivos específicos

Para que se possa atingir o objectivo geral, faz-se necessário alcançar os


seguintes objetivos específicos:

a) Oferecer os recursos do sistema de forma simples e transparente;

b) Gerenciar a utilização dos recursos existentes buscando seu uso


eficiente em termos do sistema;

c) Prover interfaces de acesso aos dispositivos, mais simples de usar que


as interface de baixo nível.

2. Metodologia

Para a materialização desta pesquisa, recoreu se as consultas bibliograficas


de obras publicadas na internet e de Manual de conceito de hardware e
softawe de coputador.

3. Evolução dos sistemas operativos ( Parte Contextual)

Nos primórdios da computação, os computadores não possuíam sistema


operativo, apenas existindo o hardware do computador. Operador e
programador da máquina eram uma só pessoa, ou seja, todas as instruções
necessárias ao funcionamento do hardware eram realizadas manualmente.
Desta forma, todo o controle do sistema era feito através de botões e
displays no console e o operador/programador monitorava a execução de um
programa em tempo real. Sendo assim, os sistemas operativos foram criados
com a finalidade de tornar mais fácil e mais eficiente a utilização do
computador.

Na década de 60, os primeiros "sistemas operativos" eram únicos, pois cada


computador era vendido com um sistema operativo específico. Isto gerava
grandes problemas, pois resultava em arquiteturas diferentes e de pessoal
especializado que entendesse de cada sistema operativo. Após essa fase,
iniciou-se a pesquisa de sistemas operativos que automatizassem as tarefas,
pois os sistemas eram monousuários e tinham cartões perfurados como

4
entradas (eliminando, assim, o trabalho de pessoas que eram contratadas
apenas para trocar os cartões perfurados).

Em 1953, surgiu o sistema operativo chamado Multics, que foi um projeto


realizado em parceria com o Instituto de Tecnologia Massachusetts (MIT),
pela General Eletric (GE) e pelos laboratórios Bell (Bell Labs) e American
Telephone and Telegraph (AT&T). A intenção era de que o Multics tivesse
características de tempo compartilhado (vários usuários compartilhando os
recursos de um único computador), sendo assim o sistema mais arrojado da
época. Em 1969, já existia uma versão do Multics rodando num computador
GE645.

A partir da década de 60, começou a ser desenvolvido o sistema


operativo UNIX, que teve em seus princípios muitas inovações do Multics.
O UNIX criou um ecossistema de versões e inovações, entre estes,
destacam-se: System V e derivados - família BSD (FreeBSD, NetBSD,
OpenBSD, etc..), Linux (e derivados), HP-UX, AIX, e até o Mac OS X (que é
uma variante dos BSDs). Em 1973, outro pesquisador da Bell Labs,
Dennis Ritchie, reescreveu todo o sistema Unix numa linguagem de alto
nível, chamada C, desenvolvida por ele mesmo. Entre 1977 e 1981, a
AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o
System III. Em 1983, após mais uma série de modificações, foi lançado o
conhecido Unix System IV. Até hoje esse sistema é usado no mercado,
tornando-se o padrão internacional do Unix, comercializado por empresas
como IBM, HP, Sun.

Na década de 70, quando começaram a surgir os primeiros


computadores pessoais, houve a necessidade de um sistema operativo
de fácil operativoização (já que, desde então, os sistemas operativos não
facilitavam a vida do usuário leigo). Então, em 1980, William (Bill) Gates
e seu colega de faculdade, Paul Allen, fundadores da Microsoft (Figura 6.),
compraram o sistema QDOS ("Quick and Dirty Operating System") de Tim
Paterson por 50.000 dólares, batizaram-no de DOS (Disk Operating
System) e licenciaram o software à IBM (Figura 7). O DOS fez tanto

5
sucesso que foi utilizado como base para a tão conhecida família
Windows.

No começo dos anos 90, um estudante de computação finlandês publicou


em uma lista de discussão da Internet, que estava desenvolvendo um
núcleo de um sistema operativo e perguntou se alguém gostaria de
auxiliá-lo nesta tarefa. Este estudante chamava-se Linus Torvalds e o
primeiro passo em direção ao tão conhecido Linux foi dado naquele
momento. Dentre vários sistemas operativos podemos destar 5 ( Window,
MacOS, Linux, Android) de acordo com a figura 2.

Fig 2

4. Gerenciamento de processo

Durante as minhas pesquisas pude observar que o gerenciamento de


processos é parte fundamental para o entendimento dos sistemas
operativos em sua essência. Estudaremos nessa aula o que são os
processos, como funcionam, como são gerenciados pelo sistema
operativo junto aos recursos de hardware, juntamente com o seu ciclo de
vida junto ao sistema.

Considerando os sistemas multiusuários, cada usuário do sistema tem


seu programa associado a um processo. Nestes sistemas, o usuário ao
executar seu programa tem a impressão que todos os recursos do
computador estão disponíveis somente àquele programa.

Um processo é formado em sua essência por três partes, sendo eles:


contexto de hardware, contexto de software e espaço de endereçamento,
conforme pode ser visualizado na figura 3. Estas três partes são
responsáveis por manter todas as informações necessárias à execução
de um programa.

6
Fig.3

O sistema operativo é responsável pelas seguintes atividades em relação à


gerência de processos:

a) Criar e excluir processos de usuário e de sistema;

b) Suspender e retomar processos;

c) Fornecer mecanismos para a sincronização de processos;

d) Fornecer mecanismos para a comunicação de processos;

e) Fornecer mecanismos para o tratamento de deadlock;

5. Comunicação entre Processos

A comunicação entre os processos e threads é muito importante, pois é


uma das ferramentas que torna possível a execução de várias tarefas
simultaneamente no computador. A comunicação é utilizada quando um
processo ou uma thread precisa passar, ou solicitar, algum dado que só
pode ser informado por outro processo ou outra thread, por exemplo, o
gerenciador de impressão deve ser feito de tal forma que a comunicação
entre os seus processos seja eficiente, caso contrário a utilização da
impressora ficará comprometida.

Como foi visto anteriormente, tanto o sistema operativo quanto o


programa devem ser construídos de maneira que a comunicação entre os
processos e threads possa ser realizada. Para permitir isso, o sistema
operativo é feito com várias rotinas que realizarão o gerenciamento da
comunicação. Essas rotinas são acessadas pelos programas através das
API's do sistema operativo. Assim, os programas possuem funções
especiais, além das específicas, que realizarão a comunicação no
momento desejado.

7
A execução de um processo pressupõe por parte do sistema operativo,
entre outras coisas, a criação de um contexto de execução próprio que,
de certa forma, abstrai o processo dos componentes reais do sistema.
Devido a esta virtualização dos recursos, o processo não tem
conhecimento acerca dos outros processos e, como tal, não consegue
trocar informação.

6. Mecanismos de comunicação entre-processos

A comunicação entre processos é o que permite a transferência de


informação entre processos. Processos e threads interagem para trabalhar
conjutamente num sistema, estes trocam dados, utilizam os serviços de
comunicação fornecidos pela máquina e S.O e seguem protocolos de
comunicação para que se possam entender.

Há três formas de comunicação entre Processos:

Pipes

O mecanismos originais de comunicação inter-processos são os chamados


pipes. Em geral, pipes são empregados para estabelecer comunicação entre
processos pai e filho. Um pipe é um canal unidirecional de comunicação, isto
é, a informação _x001D_flui em uma única direção. Para estabelecer-se
comunicação bidirecional, são necessários dois pipes. Pipes são
implementados pelo núcleo como um sistema de arquivos. Cada pipe tem
um inode associado, sendo que o núcleo aloca blocos de dados à medida
que dados vão sendo escritos no pipe.

Memória Compartilhada

Uma outra forma de comunicação disponível é o compartilhamento de um


espaço virtual. Este espaço é criado via chamada de sistema shmget.
shmget possui três parâmetros: um identifcador global da região
compartilhada, o tamanho da região em bytes; e opções de controle (criação
e acesso). Como msgget, esta chamada retorna um identicador local da
região, criando-a caso inexista.

8
Deve-se observar que o mecanismo de memória compartilhada não
necessita operações especiais para a manipulação de dados. Como a região
é mapeada em um endereço local, leituras e escritas neste endereço se
processam com os comandos de associação e cópia binária providos pelas
linguagem

Mensagens

Troca de mensagens é um mecanismo de comunicação mais _x001D_exível


que pipes. Enquanto um pipe é um canal síncrono e unidirecional,
mensagens são canais tanto síncronos quanto assíncronos e bidirecionais.
Para o envio e recepção de mensagens, cria-se um port de comunicação.
Ports são identi- cados por um número inteiro. A chamada de sistema
msgget cria um port, retornando seu identificador local.

A comunicação é bidirecional, posto que, de posse de um identificador local


de port, um processo pode tanto enviar quanto receber mensagens neste
port.

Semáforos

Isso é usado na solução de problemas associados à sincronização e para


evitar condições de corrida. O principal objectivo da utilização de semáforos
é, Portanto, sincronizar o acesso a segmentos de memória partilhada. Para
que esta sincronização entre processos seja eficaz, um semáforo deve ser
independente dos processos, e é por isso que são armazenados no kernel do
sistema operativo.

Tomadas

Esse método é usado principalmente para se comunicar através de uma rede


entre um cliente e um servidor. Ele permite uma conexão padrão
independente do computador e do sistema operacional.

7. Características da comunicação entre processos

A troca de mensagens entre dois processos é feita através de duas


operações de comunicação: send e receive. Assim para que um processo se

9
comunique com o outro, o processo origem envia ( send ) uma mensagem
para um destino , onde um outro processo recebe a mensagem ( receive ).
Esta atividade envolve a comunicação entre o processo origem e o processo
destino e implica na sincronização dos dois processos.

Na troca de mensagens entre os processos, a comunicação pode ser


síncrona ou assíncrona.

Na comunicação síncrona o processo origem ao enviar a mensagem fica


bloqueado até que o processo destino até que a recepção correspondente
seja realizada. Quando uma recepção é realizada o processo fica bloqueado
até que a mensagem chegue. Assim, tanto a operação send quanto a
operação receive são bloqueantes na comunicação síncrona. Esta é a forma
padrão de comunicação entre os processos.

Na comunicação assíncrona o processo origem ao enviar a mensagem fica


liberado para prosseguir seu processamento, quanto a mensagem é enviada
ao destino. Neste caso, a recepção da mensagem pode ser bloqueante ou
não bloqueante. Na recepção não bloqueante o processo destino prossegue
seu processamento até que a mensagem seja entregue. Na recepção
bloqueante o processo destino é bloqueado enquanto e mensagem é
transmitida e somente é liberado quando a mensagem é entregue.

O destino de uma mensagem é formado pelo par de informações ( endereço


ip, porta ). Uma porta é um destino de mensagem dentro de computador
sempre especificado como um valor inteiro e positivo. Uma porta possui um
destino mas pode ter várias origens. Qualquer processo pode enviar uma
mensagem para uma porta. Cada porta possui apenas um destino exceto as
portas de multicast. Cada porta pode ter vários emitentes.

8. Vantagens do mecanismo de comunicação entre processos

Memória Compartilhada

Pros:

● Comunicação fei em jejum;

10
● O IPC mais rápido;

● Se vários processos quiserem acessar ao mesmo tempo, é preferível a


memória compartilhada;

● Nenhuma transferência de dados acontece aqui;

● Sincronização é necessária;

Contra:

● necessidade de sincronização;

Pipe

Pros:

● Dá duas pontas e indpendentemente lê e escreva

Contras:

● Processo da mesma árvore só pode usá-lo;

● Precisa do kernel para transferir os dados;

● Comunicação unidirecional;

● Comunicação acontece via kernel;

Socket

Pros:

● Pode usar o processo no sistema diferente pode se comunicar;

● O uso de uma fila de mensagens verdadeira tende a deixar as


mensagens de tamanho fixo. Se tiver um grande número de mensagens
de tamanhos variados, isso pode se tornar um problema de desempenho.
Usar um soquete pode ser uma maneira de contornar isso;

11
● Pode conectar um cliente simples a eles para teste (insira dados
manualmente, consulte a resposta). Isso é muito útil para depuração,
simulação e teste de caixa preta;

● Pode executar os processos em máquinas diferentes. Isso pode ser útil


para escalabilidade e é muito útil na depuração / teste se você trabalha
em software incorporado;

● Torna-se muito fácil expor seu processo como serviço;

Contras:

● A sobrecarga é maior que o IPC otimizado para uma única máquina. A


memória compartilhada, em particular, é melhor se você precisar do
desempenho e souber que seus processos estão todos na mesma
máquina;

● Segurança: - se os aplicativos clientes puderem se conectar, assim como


qualquer outra pessoa, se você não for cuidadoso com a autenticação. Os
dados também podem ser detectados se você não estiver criptografado e
modificado se não estiver assinando pelo menos os dados enviados por
fio.

Fila de mensagens:

Contras:

● O uso de uma fila de mensagens verdadeira tende a deixar você com


mensagens de tamanho fixo.

9. Considerações finais

Os actuais avanços em pesquisa e o projeto de novas tecnologias para os


computadores possibilitam o surgimento de novas geração de computadores.
Contudo, é indispensável a conjugação destes conceitos ( computador e
sistemas operativos ). Sistema operativo é intermédiário da parte física do
computador e a parte lógica. Para que ocorra o processo de gestão
sistemática ocorra num sistema operativo devemos ter em consideração seu

12
processo de comunicação com destaque para a comunicação entre
processos (IPC). Portanto, este processo provê ao sistema a transparência de
localidade de processos que é um elemento importante e desejável em
sistemas operacionais distribuídos.

Normalmente, os aplicativos podem usar o IPC, categorizado como clientes e


servidores, onde o cliente solicita dados e o servidor responde às solicitações
do cliente.

10. Referências Bibliográficas

Modulo de Sistemas Operativos, Curso de SGI, 2º ano, ISCED:2020


SILBERSCHATZ, A.; GAGNE, G.; GALVIN, P. B. Fundamentos de sistemas
operativos. Rio de Janeiro: LTC, 2004.
MAIA, Luiz Paulo. Introdução à arquitetura de sistemas operativos. São Paulo:
LTC, 2007.

http://tuti-sisop.blogspot.com/2014/04/7.html acessado em 25.07.2020

http://roberto.cfw.ufsm.br/images/uploads/sistemas_operativos.pdf acessado em
25.07.2020

https://www.geeksforgeeks.org/interprocess-communication-in-distributed-
systems/?ref=rp acessado em 27.07.2020

https://www.tutorialspoint.com/different-models-of-interprocess-communication
acessado em 25.07.2020

13