Sistemas Operacionais

Get Started. It's Free
or sign up with your email address
Sistemas Operacionais by Mind Map: Sistemas Operacionais

1. ESTRUTURA DE DIRETÓRIOS: É como o Sistema organiza logicamente os arquivos. Contém entradas associadas aos arquivos, com as informações de localização, nome, organização e outros atributos:

1.1. NÍVEL ÚNICO: é a implementação mais simples de uma estrutura de diretórios, onde existe um único diretório contendo todos os arquivos do disco.

1.1.1. DIRETÓRIO PESSOAL: 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.

1.1.1.1. MÚLTIPLOS NÍVEIS (ÁRVORE): É o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais

2. Evolução dos Sistemas Operacionais : A evolução dos sistemas operacionais está ligada ao desenvolvimento dos computadores.

2.1. Foi em 1642 que Blaise Pascal inventou a máquina de somar para ajudar seu pai no processo de arrecadação de impostos.

2.1.1. Em 1673, Gottfried Leibniz criou uma máquina capaz de somar e multiplicar.

2.1.1.1. Mas foi só em 1820, que o francês Charles Colmar inventou uma máquina capaz de fazer as quatro operações aritméticas

2.1.1.1.1. Em 1822 o matemático inglês Charles Baddage criou uma máquina para cálculos e equações polinomiais.

3. Introdução

3.1. Um sistema operacional é um conjunto de rotinas executadas pelo processador, de forma semelhante aos outros programas utilizados. A principal função de um sistema operacional é controlar o funcionamento do computador, gerenciando a utilização e o compartilhamento de forma organizada os diversos recursos, como processadores, memórias e dispositivos de entrada e saída.

4. Máquinas de Camadas

4.1. O computador pode ser compreendido como uma máquina de camadas em dois níveis: hardware (nível 0) e software (nível 1). Essa visão em camadas é chamada de máquina virtual, pois o usuário interage com a máquina através do software, é como se o hardware não existisse. Essa visão é chamada de máquina virtual.

5. Geração dos Sistemas Operacionais

5.1. A Primeira Geração (1945-1955): Válvulas e Painéis com Plugs: A máquina ENIAC (Eletronic Numerical Integrator And Calculator) é considerado de fato o primeiro computador da história. O primeiro computador desenvolvido com a arquitetura de Von Neumann Foi o EDSAC(Eletronic Delay Storage Automatic Calculator), em 1949.

5.1.1. Aquitetuta de Von Neumann: Entrada de dados, processamento de dados e saída.

5.1.1.1. A Segunda Geração (1955 - 1965): Transistores e Sistemas Batch: A introdução do transistor em meados dos anos 50 mudou o quadro radicalmente. Os computadores tornaram-se bastante confiáveis,

5.1.1.1.1. A Terceira Geração (1965 - 1980): CIs e Multiprogramação: Fora popularizadas várias técnicas ausentes na segunda geração, uma delas foi a multiprogramação.

6. Concorrência

6.1. O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas multiprogramados. As operações concorrem pelo uso do processador.

7. Sistemas Monoprogramáveis X Multiprogramaveis

7.1. MONOPROGRAMÁVEIS: No tipo de sistema monoprogramavel, existe bastante desperdício de processador, o tempo de espera entre uma instrução e outra é longo se comparada com a velocidade do processador em executar as instruções. Outro problema identificado na monoprogramação, é o desperdício da memória principal. Um programa que não ocupe totalmente a memória ocasiona a existência de áreas livres sem utilização.

7.1.1. MULTIPROGRAMÁVEIS: Nos sistemas multiprogramaveis, vários programas podem estar residentes em memória, concorrendo pela utilização do processador. Dessa forma, enquanto um programa executa operações de entrada e saída, outros podem utilizar o processador. A memória se torna mais eficiente, pois existem vários programas residentes se revesando na utilização do processador

8. Interrupções e Exceções

8.1. Durante a execução de um programa podem ocorrer alguns eventos inesperados, ocasionado um desvio forçado no seu fluxo de execução. Estes tipos de eventos, são conhecidos por Interrupção ou Exceção e pode ser consequência da sinalização de algum dispositivo de hardware externo ao processador ou da execução de instruções do próprio programa. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido.

8.1.1. INTERRUPÇÃO: Uma interrupção é sempre gerada por algum evento externo ao programa e, nesse caso, independe da instrução que está sendo executada.

8.1.1.1. EXCEÇÃO: Uma exceção é resultado direto da execução de uma instrução do próprio programa.

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

9.1. A implementação de um dispositivo chamado controlador ou interface permitiu à UCP agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, a UCP não se comunicava mais diretamente com os periféricos, mas sim através do controlador. Com a implementação do mecanismo de interrupção no hardware dos computadores, as operações de E/S puderam ser realizadas de uma forma mais eficiente

10. Buffering

10.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.

11. Spooling

11.1. A técnica de spooling (simultaneous peripheral operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos sistemas operacionais. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs são processados. Um exemplo dessa técnica está presente quando as impressoras são utilizadas. No momento em que um comando de impressão é executado por um programa, as informações que serão impressas, são gravadas em um arquivo em disco (arquivo de spool), para ser impresso posteriormente pelo sistema.

12. Reentrância

12.1. Reentrância é 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.

13. ESTRUTURA DOS SISTEMAS OPERACIONAIS

13.1. O sistema operacional é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários do sistema e suas aplicações, bem como a outras rotinas do próprio sistema. Esse conjunto de rotinas é chamado núcleo do sistema ou Kernel (cérebro). As principais funções do núcleo são: ➢tratamento de interrupções; ➢criação e eliminação de processos; ➢sincronização e comunicação de processos; ➢escalonamento e controle dos processos; ➢gerência de memória; ➢gerência do sistema de arquivos; ➢operações de entrada e saída; ➢contabilização e segurança do sistema

14. System Calls

14.1. O usuário (ou aplicação), quando deseja solicitar algum serviço do sistema, realiza uma chamada a uma de suas rotinas ( ou serviços) através de system calls (chamadas ao sistema), que são a porta de entrada para se ter acesso ao núcleo do sistema operacional. O termo system call é típico de ambientes Unix, no ambiente Windows é conhecida como API (Application Program Inteface).

14.1.1. Todo o controle de execução de rotinas do sistema operacional é realizado pelo mecanismo system call

15. Modo de Acesso

15.1. Para que uma aplicação possa executar uma instrução privilegiada, o processador implementa o mecanismo de modos de acesso. Existem basicamente dois modos de acesso implementados pelo processador: modo usuário e modo kernel. Quando um processador trabalha no modo usuário, uma aplicação só pode executar instruções não privilegiadas, tendo acesso a um número reduzido de instruções, enquanto no modo kernel a aplicação pode ter acesso ao conjunto total de instruções do processador

16. Arquiteturas do Núcleo

16.1. A arquitetura do sistema é bastante complexa e deve atender aos requisitos de confiabilidade, portabilidade, fácil manutenção, flexibilidade e desempenho.

17. Sistemas Monolíticos

17.1. Essa arquitetura pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamentee depois unidos por links, formando um único programa, onde os módulos podem interagir livremente.

18. Sistemas em Camadas

18.1. Um sistema em camadas divide o sistema operacional em camadas sobrepostas. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos. Módulos de uma camada podem fazer referência apenas a módulos das camadas inferiores

19. Arquitetura MicroKernel

19.1. Uma tendência dos sistemas operacionais modernos é tornar o núcleo do sistema operacional o menor e mais simples possível. Para implementar esta idéia, o sistema é dividido em processos, sendo cada um responsável por oferecer um conjunto de serviços, como serviços de arquivos, serviços de criação de processos, serviços de memória, serviços de escalonamento, etc.

20. Processo

20.1. O processo é a base para implantação de um sistema operacional multiprogramável. O processador executa instruções, sem distinguir qual programa se encontra em execução. A gerência de um ambiente multiprogramável é uma função exclusiva do sistema operacional, que deve controlar a execução dos diversos programas e o uso concorrente do processador. Um programa para ser executado, deve estar sempre ligado a um processo

21. Estruturas do Processo

21.1. Um processo é formado por três partes, denominadas contexto de hardware, contexto de software e espaço de endereçamento, que juntas mantêm todas informações necessárias à execução de um programa.

22. Contexto de Hardware

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

23. Contexto de Software

23.1. No contexto de software são especificadas as características e limites dos recursos que podem ser alocados pelo processo, como o numero Maximo de arquivos abertos simultaneamente, prioridade de execução e tamanho do buffer dos dispositivos de E/S.

24. Identificação

24.1. Cada processo criado pelo sistema recebe uma identificação única (chamada de PID – Process IDentification), representada por um número e em alguns casos também através de um nome

25. Quotas

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

25.1.1. exemplos de quotas presentes nos sistemas operacionais modernos: • Número máximo de arquivos abertos simultaneamente; • Tamanho máximo de memória principal e secundaria que o processo pode alocar; • Número máximo de operações de E/S pendentes; • Tamanho máximo do buffer para operações de E/S; • Número máximo de processos, subprocessos e threads que podem ser criados.

26. Privilégios

26.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.

27. Espaço de Endereçamento

27.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

28. Bloco de Controle do Processo

28.1. O processo é implementado pelo SO através de uma estrutura de dados chamada Bloco de controle de processos (Process Control Block – PCB). A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de endereçamento de cada processo.

29. Estados do Processo

29.1. Os processos passam por diferentes estados ao longo de seu processamento, em função de eventos gerados pelo SO ou pelo próprio processo.

29.2. EXECUÇÃO: · Execução (running) – Um processo é dito no estado de execução quando está sendo processado pela CPU

29.2.1. PRONTO: Pronto (ready) – Um processo está no estado de pronto quando aguarda apenas para ser executado

29.2.1.1. ESPERA: Espera (wait) – Um processo no estado de espera aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento

30. 8 Mudanças de Estado de Processo

30.1.  PRONTO → EXECUÇÃO – Após a criação de um processo, o sistema o coloca em uma lista de processos no estado de pronto, aguardando para ser executado

30.1.1.  EXECUÇÃO → ESPERA – Um processo passa para o estado de espera por eventos gerados pelo próprio processo, como uma operação de E/S, ou por eventos externos. Um evento externo é gerado, por exemplo, quando o sistema operacional suspende por um período de tempo a execução de um processo.

30.1.1.1.  ESPERA → PRONTO – Ocorre quando uma operação solicitada é atendida ou o recurso esperado é concedido. Não existe a mudança de espera para execução diretamente.

30.1.1.1.1.  EXECUÇÃO → PRONTO – Ocorre através de eventos gerados pelo sistema, como o termino da fatia de tempo que o processo possui para sua execução. Então, aguarda nova oportunidade para continuar seu processamento.

31. Criação e Eliminação de Processos

31.1. CRIAÇ]AO: 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. Criação (new) – Um processo é considerado em estado de criação, quando o sistema operacional já criou um novo PCB, porém ainda não pode colocá-lo na lista de processos do estado de pronto.

31.1.1. ELIMINAÇÃO: No caso da eliminação de um processo, todos recursos associados a ele são desalocados e o PCB eliminado pelo sistema operacional. Terminado (exit) – Um processo no estado terminado não poderá ter mais nenhum programa executado em seu contexto, porém, o SO ainda mantém suas informações de controle na memória.

32. PROCESSOS INDEPENDENTES: O uso de processos independentes é a maneira mais simples de se implementar a concorrência em sistemas multiprogramáveis. Neste caso, não existe vínculo entre o processo criado e seu criador

33. SUBPROCESSOS: Subprocessos 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. O subprocesso pode criar outros subprocessos.

34. THREADS: O conceito de thread 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. Num ambiente multithread, um único processo pode suportar múltiplas threads, cada qual associado a uma parte do código da aplicação.

35. Processos Foreground e Background

35.1. FOREGROUND: Um processo foreground é aquele que permite a comunicação direta do usuário com o processo durante sua execução. Assim, ambos os canais estão associados a um terminal com teclado, mouse e monitor, permitindo portanto, a interação com o usuário .

35.1.1. BACKGROUND: Um processo background é aquele onde não existe a comunicação com o usuário durante seu processamento. Aqui, os canais de E/S não estão associados a nenhum dispositivo de E/S interativo, mas em geral a arquivos de E/S.

36. Processos do Sistema Operacional

36.1. O conceito de processo, além de estar associado a aplicações de usuários, podem também ser implementados na própria arquitetura do sistema operacional. Alguns serviços que o sistema operacional pode implementar através de processos são:  auditoria e segurança;  serviços de rede;  contabilização do uso de recursos;  contabilização de erros;  gerência de impressão;  gerência de jobs match;  temporização;  comunicação de eventos;  interface de comandos.

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

37.1. CPU-BOUND: Um processo é definido como CPU-Bound (ligado à CPU), quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o processador

37.1.1. I/0-BOUND: um processo I/O-Bound (ligado à E/S) passa a maior parte do tempo no estado de espera, pois realiza grande número de operações de E/S.

38. Sinais

38.1. Sinais são mecanismos que permitem notificar processos de eventos gerados pelo sistema operacional ou por outros processos. O uso de sinais é fundamental para a gerência de processos, além de possibilitar a comunicação e sincronização entre processos

39. AMBIENTE MONOTHREAD: Em um ambiente monothread, um processo suporta apenas um programa em seu espaço de endereçamento. Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.

40. AMBIENTE MULTITHERAD: Em um ambiente multithread, ou seja, com múltiplos threads, não existe a idéia de programas associados a processos, mas sim a threads. O processo, neste ambiente, tem pelo menos um thread em execução, mas pode compartilhar o seu espaço de endereçamento com inúmeros outros threads.

41. PROGRAMAÇÃO MULTITHREAD: O desenvolvimento de aplicações multithread não é simples, pois exige que a comunicação e o compartilhamento de recursos entre os diversos threads seja feito de forma sincronizada para evitar problemas de inconsistências e deadlock. Além das dificuldades naturais no desenvolvimento de aplicações concorrentes, o procedimento de depuração é bastante complexo.

42. Threads em Modo Usuário

42.1. Threads em modo usuário (TMU) são implementados pela aplicação e não pelo sistema operacional. Para isso, deve existir uma biblioteca de rotinas que possibilite a aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e uma política de escalonamento.

43. Threads em Modo Kernel

43.1. Threads em Modo Kernel (TMK) são implementados diretamente pelo núcleo do sistema opeacional, através de chamadas a rotinas do sistema que oferecem todas as funções de gerenciamento e sincronização. O sistema operacional sabe da existência de cada thread e pode escaloná-los individualmente. No caso de múltiplos processadores, os threads de um mesmo processo podem ser executados simultaneamente

44. Threads em Modo Híbrido

44.1. A arquitetura de threads em modo híbrido combina as vantagens de threads implementados em modo usuário (TMU) e threads em modo kernel (TMK). Um processo pode ter vários TMKs, e por sua vez, um TMK pode ter vários TMUs. O núcleo do sistema operacional reconhece os TMKs e pode escaloná-los individualmente. Um TMU pode ser executado em um TMK, em um determinado momento, e no instante seguinte ser executado em outro.

45. Scheduler Activations

45.1. Introduzido no início dos anos 90, este pacote combina o melhor das duas arquiteturas, mas em vez de dividir os threads em modo usuário entre os de modo kernel, o núcleo do sistema troca informações com a biblioteca de threads utilizando uma estrutura de dados chamada scheduler activations.

46. SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS

46.1. A criação dos sistemas operacionais multiprogramáveis foi o que tornou possível estruturar as aplicações de modo que partes diferentes do código pudessem ser executadas concorrentemente. Este tipo de aplicação foi denominada de aplicação concorrente.

47. Aplicações Concorrentes

47.1. Em aplicações concorrentes, pode ser necessário que os processos comuniquemse entre si. Esta comunicação pode ser implementada através de variáveis compartilhadas na memória principal ou trocas de mensagens. Mais uma vez, é necessário que haja sincronização entre a execução dos processos concorrentes.

48. Exclusão Mútua

48.1. Para que sejam evitados problemas desta natureza, onde dois processos manipulem o mesmo arquivo ou a mesma variável de memória simultaneamente, enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessar esse mesmo recurso deverão esperar. Isso se chama EXCLUSÃO MUTUA (Mutual Exclusion).

49. Starvation

49.1. A primeira situação indesejada é conhecida como starvation (ou espera indefinida).

50. Sincronização condicional

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

51. Soluções de Hardware

51.1. DESABILITAÇÃO DE INTERRUPÇÕES Faz com que o processo, antes de entrar em sua região crítica desabilite todas as interrupções externas e a reabilite após deixar a região critica. Como a mudança de contexto de processos só pode ser realizada através de interrupções, o processo que as desabilitou terá acesso exclusivo garantido. Apesar de simples, esta solução apresenta limitações

51.1.1. INSTRUÇÃO TEST - AND - SET Muitos processadores possuem uma instrução especial onde um processo apenas lê o conteúdo de uma variável, e armazena seu valor em outra área podendo neste caso fazer todas as manipulações necessárias e devidas sem precisar de prioridades ou esperar que a variável original seja liberada. Esta instrução é chamada de test-and-set e tem como característica ser executada sem interrupção, ou seja, trata-se de uma instrução invisível

52. Soluções de software

52.1. Diversos algoritmos foram propostos na tentativa de implementar a exclusão mútua através de soluções de software. As primeiras soluções tratavam apenas da exclusão mútua para dois processos e, inicialmente, apresentavam alguns problemas. A evolução ocorreu até uma solução definitiva para a exclusão mútua para N processos.

53. Semáforos

53.1. O conceito de semáforos foi proposto em 1965, sendo apresentado como um mecanismo de sincronização que permitia implementar, de forma simples, a exclusão mútua sincronização condicional entre processos.

54. Monitores

54.1. Monitores são mecanismos de sincronização de alto nível que tornam mais simples o desenvolvimento de aplicações concorrentes. Este conceito foi proposto em 1972.

55. Troca de mensagens

55.1. A troca de mensagens é um mecanismo de comunicação e sincronização entre os processos, implementado pelo sistema operacional através de duas rotinas do sistema SEND e RECEIVE. A rotina SEND é a responsável pelo envio de uma mensagem para o processo receptor enquanto a rotina RECEIVE por receber a mensagem do processo transmissor. T

56. Deadlock

56.1. O Deadlock existe em qualquer sistema multiprogramável. Dizemos que um processo está em Deadlock quando este para de responder porque está esperando por um evento que nunca ocorrerá. Esta situação é conseqüência do problema da exclusão mútua

57. Detecção de Deadlock

57.1. Em sistemas que não possuam mecanismos que previnam a ocorrência de deadlocks, é necessário um esquema de detecção e correção do problema. A Detecção do Deadlock é um mecanismo que determina a existência deste e identifica os recursos envolvidos no problema

58. Correção do Deadlock

58.1. Geralmente o problema é resolvido eliminando os processos envolvidos e desalojando os recursos para ele já garantidos. É aquele processo em que você dá um Alt+Ctrl+Del no Windows e aparece uma janela informando o aplicativo que não responde. Este aplicativo pode estar em um processo de Deadlock, neste caso você manda finalizar o aplicativo e tudo voltará ao normal.

59. GERÊNCIA DO PROCESSADOR

59.1. Com o surgimento dos sistemas multiprogramáveis, 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.

60. Critérios de escalonamento

60.1. - Utilização do processador: corresponde a uma taxa de utilização, que na maioria dos sistemas varia entre 30 e 90%. Throughput: é o número de processos executados em um determinado intervalo de tempo. Quanto maior o throughput, maior o número de tarefas executadas em função do tempo. ATempo de Processador: é o tempo que um processo leva no estado de execução, durante seu processamento.Tempo de Espera (pela CPU): é todo o tempo que o processo permanece na fila de pronto, aguardando a liberação da CPU para ser executado. Tempo de Turnaround: é o tempo total que o processo permaneceu no sistema, desde sua criação até o momento em que é encerrado. Tempo de Resposta: é o tempo decorrido entre uma requisição ao sistema e o instante em que a resposta começa a ser exibida

61. Escalonamentos Não-Preemptivos e Preemptivos

61.1. NÃO PREEMPTIVOS: Escalonamentos do tipo não-preemptivos são aqueles onde o sistema operacional não pode interromper o processo em execução para retirá-lo da CPU. Assim sendo, se nenhum evento externo ocorresse durante a execução do processo, este permanecia na CPU até terminar ou então alguma instrução do próprio programa o desviasse para o estado de espera (operação de E/S).

61.1.1. PREEMPTIVOS: Já os escalonamentos preemptivos 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. Neste caso o processo retirado da CPU volta ao estado de pronto, onde permanece aguardando nova oportunidade de ocupar a CPU. Com o uso da preempção, é possível ao sistema priorizar a execução de processos, como no caso de aplicações em tempo real.

62. . GERÊNCIA DE MEMÓRIA / MEMÓRIA VIRTUAL

62.1. Historicamente, a memória principal sempre foi vista como um recurso escasso e caro. Uma das maiores preocupações dos projetistas foi desenvolver sistemas operacionais que não ocupassem muito espaço de memória e, ao mesmo tempo, otimizassem a utilização dos recursos computacionais.

63. Funções

63.1. A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. Mesmo não havendo espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. Outra preocupação na gerência de memória é permitir a execução de programas maiores do que a memória física disponível.

64. Alocação Contígua Simples

64.1. Nesse modelo, a memória principal é dividida em duas partes, uma para o sistema operacional e a outra para o programa do usuário. Dessa forma, o programador deve desenvolver suas aplicações preocupado apenas em não ultrapassar o espaço de memória disponível.

65. Segmentação de Programas

65.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. Uma solução encontrada para o problema é dividir o programa em módulos, de modo que seja possível a execução independente de cada módulo, utilizando a mesma área de memória. A esta técnica dá-se o nome de segmentação ou overlay.

66. Alocação Particionada Estática

66.1. Inicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo que as outras estivessem disponíveis. Esta limitação se devia aos compiladores e linkeditores, que geravam apenas código absoluto. No código absoluto, todas as referências a endereços no programa são posições físicas na memória, ou seja, o programa só poderia ser carregado a partir do endereço de memória especificado no seu próprio código. A esse tipo de alocação de memória chamou-se alocação particionada estática absoluta

67. Alocação Particionada Dinâmica

67.1. Na alocação particionada dinâmica, 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. A este tipo de compactação de espaços livres foi dado o nome de alocação particionada dinâmica com realocação.

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

68.1. BEST - FIT: é escolhida a melhor partição, ou seja, aquela que deixa o menor espaço sem utilização. Uma grande desvantagem desta estratégia é que, como são alocados primeiramente as partições menores, deixando pequenos blocos, a fragmentação aparece mais rapidamente. - WORST - FIT: aloca o programa na pior partição, ou seja, aquela que deixa o maior espaço livre. Esta técnica, apesar de aproveitar primeiro as partições maiores, acaba deixando espaços livres grandes o suficiente para que outros programas utilizem esses espaços, permitindo que um número maior de processos se utilizem da memória, diminuindo ou retardando a fragmentação. - FIRST - FIT: esta estratégia aloca o programa na primeira partição que o couber, independente do espaço livre que vai deixar. Das três estratégias, esta é a mais rápida, consumindo menos recursos do sistema.

69. Swapping

69.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.

70. Memória Virtual

70.1. Memória virtual é 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. O conceito de memória virtual baseia-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal.

70.1.1. ESPAÇO DE ENDEREÇAMENTO VIRTUAL: é o conjunto de endereços virtuais que um processo pode endereçar.

70.1.1.1. ESPÇO DE ENDEREÇAMENTO REAL: analogamente, é o conjunto de endereços reais que um processo pode endereçar

70.1.1.1.1. MAPEAMENTO: consiste em permitir a tradução do endereço virtual em endereço real

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

71.1. Os algoritmos de substituição de páginas têm o objetivo de selecionar os frames que tenham as menores chances de serem referenciados num futuro próximo. Caso contrário, o frame poderia retornar diversas vezes para a memória real, provocando excesso de page faults.

72. GERÊNCIA DE SISTEMAS DE ARQUIVOS

73. Sistemas de alocação de arquivos

73.1. FAT: sistema criado no MS-DOS e depois utilizado no Windows. Usa listas encadeadas, tem um limite de área utilizável em partições de 2 GB, caracteriza-se por um baixo desempenho no acesso e armazenamento

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

73.1.1.1. NTFS: NT File System, original da plataforma Windows NT/2000/XP. Opera com uma estrutura em árvore binária, oferecendo alto grau de segurança e desempenho

73.1.1.1.1. UNIX: Usa diretório hierárquico, com um raiz e outros diretórios subordinados. Neste Sistema Operacional todos os arquivos são considerados apenas como uma “seqüência” de bytes, sem significado para o Sistema. É responsabilidade da aplicação controlar os métodos de acesso aos arquivos. O UNIX utiliza também alguns diretórios padronizados, de exclusividade do Sistema.