0% acharam este documento útil (0 voto)
4 visualizações20 páginas

Universidade Paulista

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1/ 20

UNIVERSIDADE PAULISTA

SISTEMA OPERACIONAL

BRASÍLIA/ 2020
UNIVERSIDADE PAULISTA

SISTEMA OPERACIONAL

GABRIELA MARQUES L.P. LIMA


N330BJ9

BRASÍLIA
2020
UNIVERSIDADE PAULISTA

SISTEMA OPERACIONAL

Projeto para composição de nota de Faculdade


apresentada por Gabriela Marques Lopes Pereira
Lima, à Faculdade Paulista, como um dos requisitos
para a obtenção de nota da NP1 na matéria de
sistema operacional.

Orientador(a):
Prof(a). (Dr.) DAVI DREITAS

BRASÍLIA
2020
RESUMO

Este trabalho de pesquisa tem como objetivo aprofundar e melhorar o conhecimento


sobre comunicação entre processos e sistema de armazenamento de arquivos. Esse documento
trata de explicar de forma simples e clara o entendimento de tecnologias
Veremos assuntos sobre comunicação entre processos suas classificações e fundamentos e um
pouco da história e funcionamento do ZFS.

Palavras chaves: comunicação entre processos, ZFS.


SUMÁRIO

1. INTRODUÇÃO .................................................................................................................... 1
1.1 OBJETIVO GERAL ...................................................................................................... 1
2. COMUNICAÇÃO ENTRE PROCESSOS ......................................................................... 2
2.1 PROCESSOS .................................................................................................................... 2
2.2 CONDIÇÕES DE CORRIDA .......................................................................................... 4
2.3 REGIÕES CRÍTICAS ...................................................................................................... 4
2.4 EXCLUSÃO MÚTUA ..................................................................................................... 4
2.5 SINCRONIZAÇÃO ......................................................................................................... 5
2.5.1 SEMAFARO ............................................................................................................. 6
2.5.2 SEMAFARO BINARIO ............................................................................................ 6
3. ZFS ......................................................................................................................................... 6
3.1 O QUE É? ......................................................................................................................... 6
3.2 HISTÓRICO ..................................................................................................................... 7
3.3 DESCRIÇÃO ................................................................................................................... 7
3.3.1 COMO FUNCIONA? ................................................................................................ 8
3.3.2 UM SISTEMA DE ARQUIVOS FLEXÍVEL........................................................... 9
3.3.3 SNAPSHOTS ............................................................................................................ 9
3.3.4 RAID-Z.................................................................................................................... 10
3.3.5 INTEGRIDADE DE DADOS ................................................................................. 11
3.3.6 RECUPERAÇÃO DE DADOS ............................................................................... 11
4. CONCLUSÃO..................................................................................................................... 12
REFERÊNCIAS ..................................................................................................................... 13
1. INTRODUÇÃO

Esse documento trata de explicar de forma simples e clara o entendimento da


comunicação entre os processos sua importância, 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 precisa passar, ou solicitar, algum dado que só pode ser
informado por outro processo e o ZFS que vem cada vez mais aumentando seu mercado e
relevância no mundo da tecnologia

1.1 OBJETIVO GERAL


Estudar a comunicação entre processos suas características e diferentes implementações,
além de analisar e entender o ZFS.
2. COMUNICAÇÃO ENTRE PROCESSOS

Um programa é uma entidade estática que fornece as instruções necessárias para realizar
tarefas, o processo é um programa em execução que caracteriza-se por uma entidade
dinâmica, que muda de estados e concorre por recursos do sistema, todos os computadores
são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do
usuário, um computador pode também ler os dados de um disco e mostrar um texto na tela ou
enviá-lo para uma impressora. Cada processo está associado a um Bloco de Controle de
Processo (PCB - Proccess control block ou PCB), composto por informações como:
• Identificador do processo (PID)
• Registradores da CPU (incluindo o contador de programa)
• O espaço de endereçamento do processo
• A prioridade do processo
• O status do processo
• Informações sobre o escalonamento de processo
• Informações de entrada/saída (dispositivos de hardware ligados ao processo, arquivos
abertos, etc.)
• O ponteiro para o próximo PCB

2.1 PROCESSOS

A cooperação requer que os processos comuniquem entre si e sincronizem suas ações


Existem diferentes estratégias de comunicação entre processos - IPC (InterProcess
Communication), a maneira mais comum para a comunicação entre processos é a troca de
mensagens. O mecanismo de troca de mensagens permite a processos locais ou remotos
comunicarem, para a comunicação existir deve haver entre eles um canal de comunicação, a
implementação da maioria destes canais se baseia nas primitivas de mensagens send(msg) e
receive(msg). Assim para que um processo se 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.
Diferentes implementações são possíveis para a definição de canais de comunicação como:

Comunicação síncrona/assíncrona

➢ Sí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.
➢ Assíncrona - 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.

Comunicação confiável/não-confiável
➢ Confiável - Estabelecido um canal de comunicação send(msg), receive(msg), garante-
se que Q receberá msg de P. Existe um overhead para assegurar a confiabilidade.
➢ Não-Confiável - Ao enviar uma mensagem entre dois processos, não há garantia que
esta mensagem será entregue – Sem overhead de confiabilidade.

Comunicação orientada/não-orientada a conexão


➢ Orientada - Antes de dois processos comunicarem, o canal é estabelecido e só deixa de
existir quando finalizado por algum dos processos – Mesmo se ocioso, o canal
continua ativo
➢ Não-Orientada - O canal entre dois processos é estabelecido apenas no
envio/recebimento de uma mensagem – Ao concluir o envio/recebimento, o canal
deixa de existir
2.2 CONDIÇÕES DE CORRIDA

É uma situação onde dois os mais processos estão lendo ou escrevendo algum dado
acesso concorrente/compartilhado (mesmo não aparente) e o resultado depende de quem
processa no momento propício. O melhor resumo é que a situação precisa contar que algo está
em determinado estado e vai fazer algo pressupondo este estado, mas o estado muda por outra
execução entre o tempo que você obteve o estado e o momento que vai executar algo nele.
Depurar programas que contém condições de corrida não é fácil, pois não é possível prever
quando o processo será suspenso.

Em outros palavras, é a situação onde o tempo que os eventos ocorrem podem


influenciar sua execução. Pode ocorrer até mesmo nos processos do hardware, que devem ser
devidamente sanados. Softwares básicos como o sistema operacional, servidores diversos
como banco de dados e HTTP também encontram condições de corrida.

2.3 REGIÕES CRÍTICAS

Uma solução para as condições de corrida é proibir que mais de um processo leia ou
escreva em uma variável compartilhada ao mesmo tempo. Esta restrição é conhecida como
exclusão mútua, e os trechos de programa de cada processo que usam um recurso
compartilhado e são executados um por vez, são denominadas seções críticas ou regiões
críticas (R.C.).

2.4 EXCLUSÃO MÚTUA

Exclusão mútua (acrônimo mutex para mutual exclusion) é uma técnica usada em
programação concorrente(paradigma de programação para a construção de programas que
fazem uso da execução concorrente (simultânea) de várias tarefas computacionais interativas)
para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso
compartilhado, acesso esse denominado por seção crítica.
Assegura-se a exclusão mútua recorrendo aos mecanismos de sincronização
fornecidos pelo sistema operacional. Estas afirmações são válidas também para as threads (é
ainda mais crítico, pois todas as threads dentro do mesmo processo partilham os mesmos
recursos).

2.5 SINCRONIZAÇÃO

A sincronização entre processos permite gerir o acesso concorrente a recursos do


sistema operativo de forma controlada por parte dos processos, de maneira que um recurso
não seja modificado em simultâneo, ou que os processos não fiquem em espera que o recurso
seja libertado.

Segundo Machado e Maia (2013), os mecanismos que garantem a comunicação entre


processos concorrentes e o acesso a recursos compartilhados é a sincronização. Em sistemas
multitarefas, são mecanismos fundamentais para garantir a confiabilidade na execução de
aplicações concorrentes.

Um dos aspectos mais importantes em sincronização é determinar qual o objetivo a ser


atingido. Duas possibilidades são: exclusão mútua, seção crítica. Existem várias maneiras de
se conseguir exclusão mútua. A maioria envolve algum mecanismo de “trancamento”
(locking): evitar que alguém faça alguma coisa em determinado momento.
2.5.1 SEMAFARO

O conceito de semáforos foi proposto por Dijkstra em 1965 como um mecanismo de


sincronização de processos, permitindo de forma simples implementar a exclusão mútua e a
sincronização condicional. Atualmente, a maioria das linguagens de programação
disponibiliza rotinas para o uso de semáforos.

Basicamente um semáforo é uma variável inteira não negativa, normalmente, este valor está
associado à quantidade de recursos disponíveis, que só pode ser manipulada por duas
instruções: DOWN e UP.

➢ UP - Incrementa o valor de um semáforo e se existirem entidades bloqueadas neste


semáforo, uma dela é desbloqueada

➢ DOWN - Decrementa o semáforo. Se o resultado for menor que zero, a entidade fica
bloqueada neste semáforo.

Os semáforos podem ser considerados como binários (0 ou 1) ou contadores (0,1,2, ..., n).

2.5.2 SEMAFARO BINARIO

É um caso particular de semáforo no qual é iniciado com valor 1 e cujo valor nunca
ultrapassa 1. Pode ser utilizado para implementação de exclusão mútua

3. ZFS

3.1 O QUE É?

O ZFS é um acrônimo para Zettabyte File System é um sistema de arquivos e


gerenciador de volumes lógicos combinados, voltado para servidores e unidades de
armazenamento que combina o gerenciamento de volumes lógicos, alta performance e
recursos profissionais contra a perda de dados.
3.2 HISTÓRICO

Foi desenvolvido pela Sun Microsystems (atual Oracle Corporation) liderada por Jeff
Bonwick, Bill Moore e Matthew Ahrens, sendo anunciado publicamente em Setembro de
2004 com a ideia de usar a capacidade do ZFS integrado no tronco principal do
desenvolvimento do Solaris (que é um Sistema Operacional UNIX desenvolvido pela antiga
Sun Microsystems, hoje subsidiária da Oracle) em 31 de outubro de 2005 e lançado como
parte da compilação 27 do OpenSolaris(comunidade de desenvolvedores em volta do sistema
operacional Solaris) em 16 de novembro de 2005.

Originalmente, o ZFS era um software proprietário de código fechado desenvolvido


internamente como parte do Solaris, com uma equipe liderada pelo CTO da unidade de
negócios de armazenamento da Sun, Jeff Bonwick. Em 2005, a maior parte do Solaris,
incluindo o ZFS, foi licenciada como software de código aberto sob a Licença de
Desenvolvimento e Distribuição Comum (CDDL), como o projeto OpenSolaris. A Sun
anunciou que o ZFS foi incluído na atualização 6/06 do Solaris 10 em junho de 2006
tornando-se um recurso padrão do Solaris, um ano após a abertura da comunidade
OpenSolaris.

Em 2010, a Oracle interrompeu a liberação do código-fonte para o novo


desenvolvimento do OpenSolaris e do ZFS, efetivamente derivando seu desenvolvimento de
código fonte fechado a partir do ramo de código fonte aberto. Em resposta, o OpenZFS foi
criado como um novo projeto de desenvolvimento de código aberto, visando reunir indivíduos
e empresas que usam o sistema de arquivos ZFS de forma aberta.

3.3 DESCRIÇÃO

Por trabalhar em 128 bits o ZFS permite a você utilizar 256 quatrilhões de zettabyte de
armazenamento para uso no sistema operacional Unix desenvolvido com o propósito de
solucionar uma série de problemas existentes em outros sistemas de arquivos. Considerado
hoje em dia uma solução revolucionária de armazenamento, o ZFS apresenta facilidade de
gerenciamento e robustez.

3.3.1 COMO FUNCIONA?

O gerenciador de volumes do ZFS previne a redundância de dados, cria sistemas de


arquivos em pool de armazenamento que seria vários discos agrupados, deste discos físicos
você cria um pool de disco, deste pool você cria um disco virtual e depois volume para
armazenamento de dados. O sistema trabalha com o gerenciador de volumes e o espaço em
disco é dividido entre todos os sistemas de arquivos, esses fatores dispensam a determinação
prévia de capacidade em disco. Além de o usuário poder fazer diferentes configurações em
cada sistema, o arquivamento funciona como um sistema de memória virtual, ou seja, ao
acrescentar mais memória ao sistema todos os processos do sistema passam a usar o espaço
extra automaticamente.
3.3.2 UM SISTEMA DE ARQUIVOS FLEXÍVEL

O ZFS ajuda a evitar erros de planejamento no sistema de armazenamento distribuindo


os blocos fornecidos por todos os seus discos, permitindo assim dividir o espaço disponível
em sistemas de arquivos altamente configuráveis. Ele inclui ainda as permissões e cotas dos
sistemas de arquivos tradicionais, inclui níveis de compactação de dados transparentes,
recursos de duplicação, reservas de capacidade e snapshots clonáveis.

3.3.3 SNAPSHOTS

Trata-se da cópia disponível apenas para leitura de volume e sistema de arquivos. Essa
cópia é facilmente desenvolvida e no ato da criação não ocupa espaço adicional, a situação
muda apenas quando os conjuntos de dados ativos sofrem modificações. No ubuntu Zfs tem
uma funcionalidade chamada zsys que sempre que o apt modifica alguma coisa o zfs faz um
snapshot que pode ser usado como backup do sistema
3.3.4 RAID-Z

RAID é a abreviação para Redundant Array of Independent Disks, ou em tradução


livre, Conjunto Redundante de Discos Independentes. Essa tecnologia é baseada em montar
arranjos onde dois ou mais hard drives e/ou memórias SSDs trabalharão em conjunto, com o
intuito de aprimorar a segurança e performance de computadores, servidores e storages.

Na montagem e administração de arranjos de discos, o ZFS emprega RAID "soft",


oferecendo RAID-Z (paridade baseada em arranjos RAID 5 e semelhantes) e o espelhamento
de disco (semelhante ao RAID 1). Esse sistema distribui os dados e suas respectivas paridades
como no RAID-5, mas usa largura de faixa dinâmica: cada bloco é sua própria faixa RAID
independentemente do tamanho, sendo que cada gravação se torna uma “faixa completa” de
dados.

Existem cinco tipos de arranjo RAID-Z:

1) RAID-Z: RAID-Z0 (similar ao RAID 0, sem redundância),


2) RAID-Z1 (similar ao RAID 5, tolerância a falha de um apenas disco),
3) RAID-Z2 (semelhante ao RAID 6, permite falha simultânea até dois discos),
4) RAID-Z3 (uma configuração RAID 7, permite falha simultânea de três discos)
5) Espelhamento (semelhante ao RAID 1, permite que um disco falhe).

Além de lidar com falhas em globais de discos, o RAID-Z também detecta e corrige
problemas de gravação silenciosos, oferecendo "auto recuperação de dados": ao ler um bloco
RAID-Z, o ZFS o compara com a soma de verificação do algoritmo e, se os dados não
retornaram a resposta correta, o sistema lê a paridade, descobre qual disco retornou dados
incorretos e repara a área danificada, retornando os dados sem erros ao solicitante.
3.3.5 INTEGRIDADE DE DADOS

Flexibilidade é inútil sem confiabilidade, por isso o ZFS não compromete a


integridade ou redundância dos dados. O sistema cria uma cadeia organizada de verificação
assim que os dados são salvos pela primeira vez, verificando os blocos gravados toda vez que
os dados são lidos. Ele verifica até mesmo os metadados que descrevem o sistema de arquivos
e permite verificar periodicamente todas os checksums(é um dado de tamanho pequeno
derivado de um bloco de dados digitais com o objetivo de detectar erros que podem ter sido
introduzidos durante sua transmissão ou armazenamento) para determinar se os dados ou
backups usados com pouca frequência estão sofrendo corrupção silenciosa de dados. Ao
tomar essas precauções, o ZFS nunca retornará dados corrompidos do disco.

O ZFS pode manter a redundância de dados por meio de um sistema sofisticado de


várias estratégias de disco. Essas estratégias incluem o espelhamento e a distribuição de
espelhos equivalentes aos arrays RAID 1 e 10 tradicionais, inclui configurações “Raid-Z” que
toleram a falha de um, dois ou três discos de um determinado arranjo.

3.3.6 RECUPERAÇÃO DE DADOS

O ZFS não acompanha ferramentas para reparar sistemas de arquivos danificados, pois
foi projetado para auto-reparo instantâneo. Caso o pool seja comprometido devido a falha de
hardware, configuração, redundância inadequada ou qualquer outro tipo de desastre a ponto
de o sistema não conseguir remontar o pool, não existem ferramentas homologadas para
recuperar os dados armazenados.

Alguns fóruns online de usuários e especialistas em ZFS tem fornecido ajuda técnica
para usuários domésticos e empresas que enfrentam perda de dados por configuração ou
gerenciamento inadequado, porém esse risco existe. Além disso, qualquer intervenção em
sistemas de arquivos danificados exige sólidos conhecimentos sobre o assunto, por isso
intervenções realizadas por técnicos não capacitados podem causar perda de dados em caráter
permanente.
4. CONCLUSÃO

O desenvolvimento do presente trabalho de estudo possibilitou uma análise sobre o


processo de gerenciamento que um sistema executa e conhecimento de ferramentas de
armazenamento e gerencia meto de dados.
REFERÊNCIAS

FREITAS, Davi. Sistemas Operacionais Aberto. Brasília, 2020.

SIMIONI, Dionatan. Conheça o novo recurso do Ubuntu 20.04 LTS - ZFS (File
System). 2020. (14m18s). Disponível em:
https://www.youtube.com/watch?v=ppRLlMqRu9g. Acesso em 13 mai. 2020.

Bloco de controle de processo. Wikipedia,2018. Disponível em:


https://pt.wikipedia.org/wiki/Bloco_de_controle_de_processo. Acesso em 14 mai. 2020;

Solaris. Wikipedia,2020. Disponível em:


https://pt.wikipedia.org/wiki/Solaris_(sistema_operacional). Acesso em: 13 mai. 2020.

OpenSolaris. Wikipedia,2019. Disponível em: https://pt.wikipedia.org/wiki/OpenSolaris.


Acesso em: 13 mai. 2020.

Zettabyte. Wikipedia,2020. Disponível em: https://en.wikipedia.org/wiki/Zettabyte.


Acesso em: 13 mai. 2020.

RAID, arranjos de discos para trabalho em conjunto. ControleNet,2020. Disponível em:


https://www.controle.net/faq/qual-o-melhor-raid-a-ser-usado Acesso em: 14 mai. 2020.

LUIZ, Gabriel. Storage Pool (Espaços de armazenamento) no Windows 10.


CooperaTI,2018. Disponível em: https://cooperati.com.br/2018/07/storagepool-
windows10/. Acesso em: 14 mai. 2020.

ZFS. Infortrendbrasil,2020. Disponível em: http://www.infortrendbrasil.com.br/zfs/.


Acesso em: 13 mai. 2020.

ZFS. Wikipedia,2020. Disponível em: https://pt.wikipedia.org/wiki/ZFS. Acesso em: 13


mai. 2020.
ZFS, um sistema de arquivos para dispositivos de armazenamento. ControleNet,2020.
Disponível em: https://www.controle.net/faq/o-que-e-zfs. Acesso em: 13 mai. 2020.

Checksum. Wikipedia,2020. Disponível em: https://en.wikipedia.org/wiki/Checksum.


Acesso em: 13 mai. 2020.

SIQUEIRA, Fernando. Comunicação entre Processos. SitesGoogle. Disponível em:


https://sites.google.com/site/proffdesiqsistemasdistribuidos/aulas/3-comunicacao-entre-
processos. Acesso em: 14 mai. 2020.

SIQUEIRA, Fernando Sincronização e Comunicação de Processos. SitesGoogle.


Disponível em: https://sites.google.com/site/proffernandosiqueiraso/aulas/7-sincronizacao-
e-comunicacao-de-processos. Acesso em: 14 mai. 2020.

MANIERO, Antônio. O que é uma condição de corrida?. StackOverflow,2016.Disponivel


em: https://pt.stackoverflow.com/questions/159342/o-que-%C3%A9-uma-
condi%C3%A7%C3%A3o-de-corrida. Acesso em: 14 mai. 2020.

UEYAMA, Jó. Sistemas Operacionais. CoteiaWIKI. Disponível em:


http://wiki.icmc.usp.br/images/7/76/Aula06.pdf . Acesso em: 15 mai. 2020.

Programação concorrente. Wikipedia,2020. Disponível em:


https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_concorrente. Acesso em 15
mai. 2020.

Comunicação entre processos. Wikipedia,2019. Disponível em:


https://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_entre_processos. Acesso em
14 mai. 2020.
BORGES, Volnys. Semáforo, monitor e troca de mensagens. Edisciplinas,2013.
Disponível em:
https://edisciplinas.usp.br/pluginfile.php/91592/mod_resource/content/1/30-
SemaforoMonitorTrocaMsg-v21.pdf. Acesso em: 15 mai. 2020.

ZOTTESSO, Rafael. Sincronização e Comunicação entre Processos.Zottessso,2016.


Disponível em: http://www.zottesso.com.br/professor/disciplinas/SO/02%20-
%20Sincronizacao%20e%20comun.%20de%20processos.pdf. Acesso em 15 mai. 2020.

Você também pode gostar