Sistema Operacional

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Sistema Operacional por Mind Map: Sistema Operacional

1. Sincronização e comunicação entre processos

1.1. Aplicações Concorrentes

1.1.1. pode ser necessário que os processos comuniquem-se entre si.

1.2. Especificação de Concorrência em Programas

1.2.1. Técnicas mais recentes tentam expressar a concorrência no código dos programas de uma forma mais clara e estruturada.

1.3. Problemas de Compartilhamento de Recursos

1.3.1. Para melhor compreensão da importância da sincronização entre processos concorrentes, são apresentados alguns exemplos-problema de compartilhamento de recursos.

1.4. Exclusão Mútua

1.4.1. A exclusão mútua deverá agir apenas sobre os processos que estão concorrendo em um determinado recurso

1.5. Starvation

1.5.1. Quem determina as prioridades dos processos é o sistema operacional. Neste caso existem duas formas do sistema operacional determinar qual será a vez de quem. Ou por escolha aleatória ou por prioridades

1.6. Sincronização condicional

1.6.1. é uma situação onde o acesso a um recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso.

1.7. Soluções de Hardware

1.7.1. Desabilitação de interrupções

1.7.2. Instrução test-and-set

1.8. Soluções de software

1.8.1. Diversos algoritmos foram propostos na tentativa de implementar a exclusão mútua através de soluções de software.

1.9. Semáforos

1.9.1. O semáforo é uma variável que fica associada a um recurso compartilhado, indicando quando este está sendo acessado por um outro processo

1.10. Monitores

1.10.1. são mecanismos de sincronização de alto nível que tornam mais simples o desenvolvimento de aplicações concorrentes

1.11. Deadlock

1.11.1. O Deadlock existe em qualquer sistema multiprogramável

1.11.1.1. Dizemos que um processo está em Deadlock quando este para de responder porque está esperando por um evento que nunca ocorrerá.

1.11.2. Detecção de Deadlock

1.11.2.1. A Detecção do Deadlock é um mecanismo que determina a existência deste e identifica os recursos envolvidos no problema

1.11.3. Correção do Deadlock

1.11.3.1. Geralmente o problema é resolvido eliminando os processos envolvidos e desalojando os recursos para ele já garantidos

2. Gerência do processador

2.1. Funções

2.1.1. onde múltiplos processos poderiam permanecer na memória e disputar o uso de um único processador, a gerência do processador tornou-se uma das atividades mais importantes em um sistema operacional.

2.2. Critérios de escalonamento

2.2.1. Utilização do processador

2.2.1.1. corresponde a uma taxa de utilização, que na maioria dos sistemas varia entre 30 e 90%.

2.2.2. Throughput:

2.2.2.1. : é o número de processos executados em um determinado intervalo de tempo

2.2.3. Tempo de Processador

2.2.3.1. é o tempo que um processo leva no estado de execução, durante seu processamento

2.2.4. Tempo de Espera (pela CPU)

2.2.4.1. : é todo o tempo que o processo permanece na fila de pronto, aguardando a liberação da CPU para ser executado.

2.2.5. Tempo de Turnaround

2.2.5.1. : é o tempo total que o processo permaneceu no sistema, desde sua criação até o momento em que é encerrado

2.2.6. Tempo de Resposta

2.2.6.1. é o tempo decorrido entre uma requisição ao sistema e o instante em que a resposta começa a ser exibida.

2.3. Escalonamentos Não-Preemptivos e Preemptivos

2.3.1. não-preemptivos

2.3.1.1. são aqueles onde o sistema operacional não pode interromper o processo em execução para retirá-lo da CPU

2.3.1.1.1. São escalonamentos não-preemptivos

2.3.2. preemptivos

2.3.2.1. são caracterizados pela possibilidade de o sistema operacional interromper o processo em execução para retirá-lo da CPU e dar lugar a outro.

2.3.2.1.1. São escalonamentos preemptivos

3. Gerência de memória / Memória Virtaul

3.1. Alocação Contígua Simples

3.1.1. Este tipo de alocação foi implementado nos primeiros sistemas operacionais, embora ainda nos dias de hoje esteja presente em alguns sistemas monoprogramáveis

3.2. Segmentação de Programas

3.2.1. Na alocação contígua simples todos os programas estão limitados ao tamanho da memória principal disponível para o usuário

3.3. Alocação Particionada Estática

3.3.1. Os sistemas operacionais evoluíram para proporcionar melhor aproveitamento dos recursos. Nos sistemas monoprogramáveis o processador fica grande parte do tempo ocioso e a MP é sub-utilizada.

3.4. Alocação Particionada Dinâmica

3.4.1. foi eliminado o conceito de partições de tamanho fixo. Nesse esquema, cada programa, ao ser carregado, utilizaria o espaço necessário à sua execução, tornando esse espaço a sua partição

3.5. Estratégias de Alocação de Partição

3.5.1. Os sistemas operacionais implementam basicamente três estratégias para determinar em qual área livre um programa será alocado para execução.

3.6. Swapping

3.6.1. É uma técnica aplicada à gerência de memória que visa dar maior taxa de utilização à memória principal, melhorando seu compartilhamento. Visa também resolver o problema da falta de memória principal num sistema.

3.7. Memória Virtual

3.7.1. é uma técnica sofisticada e poderosa de gerência de memória onde as memórias principal e secundária são combinadas, dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal.

3.8. Algoritmos de substituição de páginas

3.8.1. O maior problema na gerência de memória virtual por paginação não é decidir quais páginas carregar para a memória real, mas sim quais páginas liberar.

4. Gerência de sistemas de arquivos

4.1. Estrutura de Diretórios

4.1.1. Nível único

4.1.1.1. é a implementação mais simples de uma estrutura de diretórios, onde existe um único diretório contendo todos os arquivos do disco

4.1.2. Diretório pessoal

4.1.2.1. Evolução do modelo anterior, permite a cada usuário ter ser “diretório” particular, sem a preocupação de conhecer os outros arquivos do disco.

4.1.3. Múltiplos níveis (ÁRVORE)

4.1.3.1. É o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais.

4.2. Sistemas de alocação de arquivos

4.2.1. FAT

4.2.1.1. sistema criado no MS-DOS e depois utilizado no Windows.

4.2.2. FAT32

4.2.2.1. igual ao FAT no que diz respeito a organização e desempenho, mas pode trabalhar com partições de até 2TB.

4.2.3. NTFS

4.2.3.1. NT File System, original da plataforma Windows NT/2000/XP

4.2.4. UNIX

4.2.4.1. Usa diretório hierárquico, com um raiz e outros diretórios subordinados

4.3. Gerência de espaço livre

4.3.1. Alocação contígua

4.3.1.1. armazena o arquivo em blocos seqüencialmente dispostos no disco

4.3.2. Alocação encadeada

4.3.2.1. nesta modalidade o arquivo é organizado como um conjunto de blocos ligados logicamente no disco, independente de sua localização física, onde cada bloco possui um ponteiro para o bloco seguinte.

4.3.3. Alocação indexada

4.3.3.1. esta técnica soluciona a limitação da alocação encadeada, no que diz respeito ao acesso, pois permite acesso direto aos blocos do arquivo.

4.4. Proteção de acesso

4.4.1. Considerando-se que os meios de armazenamento são compartilhados por vários usuários, é fundamental que mecanismos de proteção sejam implementados para garantir a integridade e proteção individual dos arquivos e diretórios

4.4.1.1. Senha de acesso

4.4.1.1.1. mecanismo de simples implementação

4.4.1.2. Grupos de usuário

4.4.1.2.1. é muito utilizada em muitos Sistemas Operacionais

4.4.1.3. Lista de controle de acesso

4.4.1.3.1. é uma lista associada ao arquivo onde são especificados quais os usuários e os tipos de acesso permitidos.

5. Evolução Sistema Operacional

5.1. 1969 - UNIX

5.2. 1977 - BSD

5.3. 1978 - Apple DOS

5.4. 1979 - Atari DOS

5.5. 1980 - Apple SOS

5.6. 1980 – Xenix

5.7. 1980 - 86-DOS (Q-DOS)

5.8. 1981 - MS-DOS / IBM PC DOS

5.9. 1982 – SunOS

5.10. 1983 - Apple ProDOS

5.11. 1983 - Lisa OS

5.12. 1984 - Mac OS

5.13. 1985 – AmigaOS

5.14. 1985 - Windows 1.0

5.15. 1986 - LynxOS

5.16. 1989 – NeXTSTEP

5.17. 1990 - Windows 3.0

5.18. 1991 - Linux

5.19. 1991 - System 7

5.20. 1991 - BeOS

5.21. 1991 - Workplace OS

5.22. 1992 - Windows 3.1

5.23. 1992 – Solaris

5.24. 1993 – Debian

5.25. 1993 – FreeBSD, NetBSD

5.26. 1993 – Slackware

5.27. 1994 - Copland (System 8)

5.28. 1994 - SUSE

5.29. 1995 - Windows 95

5.30. 1996 - Rhapsody

5.31. 1997 - Symbian

5.32. 1998 - Windows 98

5.33. 1999 - Windows 98 SE

5.34. 1999 - Yellow Dog Linux

5.35. 2000 - Windows 2000

5.36. 2000 - Knoppix

5.37. 2001 - Windows XP

5.38. 2001 - OS X

5.39. 2002 - Gentoo Linux

5.40. 2003 - Kurumin

5.41. 2004 - Ubuntu

5.42. 2006 - OpenSUSE

5.43. 2006 - Windows Vista

5.44. 2007 - iOS

5.45. 2008 - OpenSolaris

5.46. 2008 - Android

5.47. 2009 - Mac OS X Snow Leopard

5.48. 2010 - Windows Phone

5.49. 2011 - Chrome OS

5.50. 2011 - Mac OS X Lion

5.51. 2012 - Tizen

5.52. 2012 - Windows 8

5.53. 2013 - Ubuntu Touch

5.54. 2013 - Firefox OS

5.55. 2013 - Orbis OS

5.56. 2015 - Windows 10 versão 6.4.9879

5.57. 2016 Windows 10 versão10.0.14393

5.58. 2018 - Windows 10 versão10.0.17134

5.59. 2018 - Windows 10 versão10.0.17134

5.60. 2018 - Windows 10 versão10.0.17134

5.61. 2019 - Windows 10 versão 10.0.18363

5.62. 2020 - Windows 10 versão10.0.19041

6. Introdução : Um sistema operacional é um conjunto de rotinas executadas pelo processador, de forma semelhante aos outros programas utilizados

6.1. Funções Básicas

6.1.1. Fornecer uma interface com o usuário

6.1.2. Gerenciar a operação dos dispositivos de hardware do computador

6.1.3. Gerenciar e manter o sistema de arquivos;

6.1.4. Dar suporte aos programas que são executados.

7. Concorrência

7.1. Sistemas Operacionais podem ser vistos como um conjunto de rotinas executadas de forma concorrente e ordenada

7.1.1. Sistemas Monoprogramáveis X Multiprogramaveis

7.1.1.1. Monoprogamavél :sistema monoprogramavel, existe bastante desperdício de processador

7.1.1.2. Multiprogramaveis: vários programas podem estar residentes em memória, concorrendo pela utilização do processador

7.2. Interrupções e Exceções

7.2.1. Durante a execução de um programa podem ocorrer alguns eventos inesperados, ocasionado um desvio forçado no seu fluxo de execução.

7.3. Operações de Entrada/Saída

7.3.1. Um canal de E/S pode controlar múltiplos dispositivos através de diversos controladores. Cada dispositivo, ou conjunto de dispositivos, é manipulado por um único controlador. O canal atua como um elo de ligação entre a UCP e o controlador

7.4. Buffering

7.4.1. A técnica de buffering consiste na utilização de uma área de memória para a transferência de dados entre os periféricos e a memória principal denominada buffer.

7.5. Spooling

7.5.1. foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos sistemas operacionais.

7.5.1.1. A solução foi armazenar os vários programas e seus dados, também chamados de jobs, em uma fita magnética e, em seguida, submetê-los a processamento.

7.6. Reentrância

7.6.1. a é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória.

8. Evolução

8.1. O Início da Computação

8.1.1. A Primeira Geração (1945-1955): Válvulas e Painéis com Plugs

8.1.2. A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch

8.1.3. A Terceira Geração (1965 - 1980): CIs e Multiprogramação

8.1.4. A Quarta Geração (1980-1990): Computadores Pessoais

9. Estrutura Dos Sistemas Operacionais

9.1. System Calls

9.2. Modos de Acesso

9.3. Arquiteturas do núcleo

9.4. Sistemas Monolíticos

9.5. Sistemas em Camadas

9.6. Máquinas Virtuais

9.7. Arquitetura Microkernel

10. Processo

10.1. O processo é a base para implantação de um sistema operacional multiprogramável

10.2. Estrutura do Processo

10.2.1. O processador foi projetado para executar as instruções a partir do ciclo de busca e execução

10.3. Contexto de hardware

10.3.1. O contexto de hardware guarda o conteúdo dos registradores do processador

10.4. Contexto de software

10.4.1. Identificação

10.4.1.1. Cada processo criado pelo sistema recebe uma identificação única (chamada de PID – Process IDentification)

10.4.2. Quotas

10.4.2.1. As quotas são os limites de cada recurso do sistema que um processo pode alocar

10.4.3. Privilégios

10.4.3.1. Os privilégios ou direitos definem as ações que um processo pode fazer em ralação a ele mesmo, aos demais processos e ao sistema operacional

10.5. Espaço de endereçamento

10.5.1. O espaço de endereçamento é a área de memória pertencente ao processo onde as instruções e dados do programa são armazenados para execução

10.6. Bloco de controle do proceso

10.6.1. processo é implementado pelo SO através de uma estrutura de dados chamada Bloco de controle de processos (Process Control Block – PCB)

10.7. Estados do Proceso

10.7.1. um proceso não deve alocar o processador com exclusividade, de forma que possa ser compartilhado

10.7.1.1. Execução (running

10.7.1.2. Pronto (ready)

10.7.1.3. Espera (wait)

10.8. Mudanças de Estado de Proceso

10.8.1. Pronto → Execução

10.8.2. Execução → Espera

10.8.3. Espera → Pronto

10.8.4. Execução → Pronto

10.9. Criação e Eliminação de Procesos

10.9.1. Processos são criados e eliminados por diversas razões. A criação de um processo ocorre quando o sistema operacional adiciona um novo PCB à sua estrutura e reserva espaço na memória para uso

10.9.1.1. Criação (new)

10.9.1.2. Terminado (exit)

10.10. Processos Independentes, Subprocesos e Threads

10.10.1. Subprocessos

10.10.1.1. são criados dentro de uma estrutura hierárquica. E neste caso, o processo criador é denominado processo pai e o novo processo é chamado de subprocesso ou processo filho.

10.10.2. thread

10.10.2.1. foi estabelecido com a intenção de reduzir o tempo gasto na criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo

10.11. Processos Foreground e Background

10.11.1. processo possui sempre associado à sua estrutura, pelo menos dois canais de comunicação por onde são realizadas todas as entradas e saídas de dados ao longo do seu processamento

10.12. Processos do Sistema Operacional

10.12.1. auditoria e segurança;

10.12.2. serviços de rede;

10.12.3. contabilização do uso de recursos;

10.12.4. contabilização de erros;

10.12.5. gerência de impressão;

10.12.6. gerência de jobs match;

10.12.7. temporização;

10.12.8. comunicação de eventos;

10.12.9. interface de comandos.

10.13. Processos CPU-Bound e I/O-Bound

10.13.1. CPU-Bound

10.13.1.1. quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o processador. Este tipo de processo realiza poucas operações de leitura e gravação e é encontrado em aplicações científicas que efetuam muitos cálculos

10.13.2. I/O-Bound

10.13.2.1. passa a maior parte do empo no estado de espera, pois realiza grande número de operações de E/S.

10.14. Sinais

10.14.1. são mecanismos que permitem notificar processos de eventos gerados pelo sistema operacional ou por outros processos