Como a evolução dos sistemas operacionais estão relacionados com o hardware?

1 1. Introdução 1.1. Conceituação dos Sistemas Operacionais A maior parte dos equipamentos que possuem sistemas operacionais, tais como estações de trabalho, computadores pessoais ou simplesmente PCs (Personal Computers) que são utilizados nas empresas e residências, além dos notebooks, celulares, automóveis, eletrodomésticos, televisores, entre outros, interage com os usuários de forma praticamente imperceptível. Contudo, as ações finais que esses dispositivos executam através de seus softwares são realizadas pelos sistemas operacionais (operating systems). Como o sistema operacional evoluiu ao longo do tempo, suas características serão abordadas neste livro-texto. Quando se pensa em sistema operacional, logo vêm à mente alguns dos mais famosos softwares do mercado, tais como Windows e Linux. Mas os sistemas operacionais surgiram muito antes do desenvolvimento do Windows e do Linux. Sistemas como MVS, OS/390 e o próprio UNIX são muito mais antigos. O sistema operacional, segundo Deitel, H. M.; Deitel, P. J.; Choffnes, D. R. (2005), é um software que habilita as aplicações a interagir com o hardware de um computador. Seu componente central é o núcleo, também conhecido como kernel. Os sistemas operacionais estão presentes em telefones celulares, automóveis, eletrodomésticos, computadores pessoais, além dos computadores de grande porte, ou mainframes (consultar glossário). Na figura 1 é possível perceber a posição do sistema operacional no contexto do computador. Assim, o sistema operacional relaciona-se com os softwares instalados para que estes tenham condição de interagir com os dispositivos do hardware. Dessa forma, o sistema operacional atua como um intermediário entre o usuário do computador e o hardware (Silberschatz, A.; Peterson, J. L.; Gavin, P., 1992). O sistema operacional faz a conexão entre os softwares aplicativos e as necessidades que estes possuem em interagir com o hardware. Dessa forma, os programadores de aplicações não necessitam ter sólidos conhecimentos de gerenciamento de memória ou de disco porque, hoje em dia, quem realiza essa atividade é o sistema operacional, de forma automática. O propósito de um sistema operacional é o de prover um ambiente no qual o usuário pode executar programas de uma forma conveniente e eficiente.

2 A partir da segunda metade do século XX, a computação evoluiu de uma forma surpreendente. Os recursos de um computador evoluem a taxas incríveis ao mesmo tempo em que o custo decresce. Os usuários de hoje, dos escritórios e das empresas, têm à sua disposição computadores pessoais que executam bilhões de instruções por segundo, e equipamentos que executam trilhões de instruções por minuto já são realidade cifras consideradas impossíveis de serem alcançadas há poucos anos. Ao mesmo tempo em que o preço dos microprocessadores reduziu, ampliou-se o seu poder, a tal ponto que esses dispositivos podem ser empregados em praticamente todas as situações da vida moderna. Nos computadores pessoais desenvolvemos a maior parte das atividades relacionadas à vida moderna. Neles, é possível desenvolver documentos eletrônicos, tais como textos, planilhas e apresentações. Também é possível ouvir música, assistir a vídeos, participar de comunidades virtuais e utilizar uma infinidade de aplicações voltadas a proporcionar mais comodidade aos usuários.

3 Outros dispositivos, além dos computadores pessoais, também possuem seus recursos de microprocessamento embarcados, por exemplo, os telefones celulares, os aparelhos MP3 e os aparelhos GPS. O aumento do número de dispositivos que possuem acesso a rede e a ampliação das redes com e sem fio aumentam a interatividade e propiciam comunicações entre pessoas localizadas a longas distâncias umas das outras. Esse fenômeno convergiu para um crescimento, como nunca foi visto, da Internet e da World Wide Web. Esse crescimento promoveu a criação e o desenvolvimento de uma infinidade de novos serviços, que revolucionam os negócios das empresas hoje em dia e demandam o processamento de enormes quantidades de transações por segundo. Isso quer dizer que os sistemas operacionais, que apóiam essa estrutura altamente crítica de processamento, passam por uma intensa transformação de papéis e responsabilidades. O sistema operacional como um software que controla um hardware é uma definição da década de Há algum tempo os sistemas operacionais evoluíram e passaram a exercer mais papéis. 2. Componentes do Sistema Operacional Nos sistemas operacionais, os usuários requisitam ao computador que realize uma determinada tarefa e o sistema operacional gerencia o software e o hardware para chegar à execução do resultado desejado. Dessa forma, por exemplo, quando um usuário solicita a impressão de um documento, o sistema operacional age no encaminhamento do documento até a porta de impressão virtual onde está instalada uma impressora, converte o arquivo para um formato que a impressora possa entender e o envia para impressão, monitorando o feedback do dispositivo, para saber se o documento foi impresso ou se algum problema ocorreu, como falta de papel, falta de tinta ou toner, papel encravado, etc. Uma outra forma de interação com o sistema operacional é através de uma aplicação chamada shel, que é um interpretador e, na maioria dos casos, é implementado como

4 interface de texto. Como ao sistema operacional estão reservadas as tarefas mais intrínsecas do ambiente computacional, é comum que a maioria dos usuários ache-o uma caixa preta (Deitel, H. M.; Deitel, P. J.; Choffnes, D. R., 2005). Pois não entendem como a relação entre software e hardwares, como processador, memória, disco rígido, modem, assegura a realização do trabalho correto. O software que contém os componentes centrais do sistema operacional chama-se núcleo ou kernel, em inglês. Dentre os componentes centrais do sistema operacional destacam-se: 3 escalonador de processos Determina o momento e o período de tempo em que um processo é executado pelo processador; 3 gerenciador de memória Determina o momento e a forma como a memória será cedida aos processos e o que fazer quando a memória principal estiver cheia; 3 gerenciador de E/S Atende às solicitações de entrada e saída destinadas e provenientes dos dispositivos de hardware; 3 gerenciador de comunicação interprocessos (IPC) Permite que os processos se comuniquem entre si; 3 gerenciador de sistema de arquivos Organiza as coleções de dados gravados nos dispositivos de armazenamento e fornece uma referência para acessar os dados neste dispositivo. 3. Evolução dos Sistemas Operacionais 3.1. Década de 40 3 Surgem os primeiros computadores digitais eletrônicos. Porém, esses equipamentos não possuíam um sistema operacional. 3 Programas eram submetidos em linguagem de máquina. 3 É quando ocorre a introdução da perfuração de cartão para armazenagem dos programas (ver figura 4).

5 3 O Assembly (consultar glossário) foi desenvolvido para agilizar o processo de programação Década de 50 3 Surge o primeiro sistema operacional, no início da década, desenvolvido pelos laboratórios de pesquisa da General Motors, para ser executado em seu computado IBM O IBM 701 foi o primeiro equipamento da IBM para uso geral. 3 O IBM 701 executava apenas um job (consultar glossário) de cada vez Década de 60 3 Deu-se início à multiprogramação (ver figura 5), quando projetistas desenvolveram sistemas operacionais que gerenciavam diversos jobs ao mesmo tempo.

6 3 Em 1964 a IBM lançou a família System/360, que utilizava o sistema operacional OS/360 e tinha a versatilidade de possuir escalabilidade, ou seja, podia oferecer maior capacidade à medida que o usuário necessitava fazer crescer a série. Com isso, a IBM permitiu que a arquitetura 360 pudesse evoluir para séries superiores e posteriores, como a série 370, série 390 e, mais recentemente, para a zseries, à medida que eram lançadas, possibilitando o reaproveitamento, de uma maneira facilitada, dos códigos escritos nas séries anteriores. 3 Os usuários interagiam com o computador por meio de terminais burros, ligados on-line diretamente ao computador. 3 Passou-se a focar a melhoria de produtividade e redução de recursos humanos. 3 Foram desenvolvidos sistemas de tempo compartilhado (Time Sharing Systems) (consultar glossário) e sistemas de tempo real (Real Time Systems) (consultar glossário). 3 Vários sistemas operacionais de tempo compartilhado foram desenvolvidos nessa época, tais como o CTSS (Compatible Time Sharing System), desenvolvido pelo MIT, o TSS (Time Sharing System), desenvolvido pela IBM, o Multics, desenvolvido pelo MIT, GE e BELL para ser o sucessor do CTSS, e o CP/CMS (Control Program / Conversation Monitor System), que evoluiu para o VM (Virtual Machine) da IBM, desenvolvido pelo Cambridge Scientific Center da IBM. 3 Os sistemas operacionais passaram a ser escritos em linguagem de alto nível. O primeiro caso foi o Multics, que foi escrito em PL1 da IBM. 3 Na sequência, os projetistas da UNIX desenvolveram o C especificamente para desenvolver o UNIX. Famílias de sistemas operacionais tiveram início a partir do UNIX, como o Xenix e o Linux, que atualmente possui diversas distribuições. 3 Em 1965, programadores com certa experiência recebiam US$ 4 por hora, enquanto o custo do aluguel da hora de um computador de grande porte, que possuía uma capacidade muito menor que a dos computadores pessoais de hoje, era normalmente de US$ 500 (Deitel, H. M.; Deitel, P. J.; Choffnes, D. R., 2005) (ver figura 6).

7 3.4. Década de 70 3 Criação da interface gráfica com o usuário (GUI Graphical User Interface), desenvolvida pelo Palo Alto Research Center (PARC) da Xerox. O primeiro sistema operacional dotado de interface gráfica com o usuário se chamou Alto (ver figuras 7a e 7b). O Alto foi projetado e construído pela Xerox e, embora a Xerox tenha doado certa quantidade para várias organizações, a empresa nunca vendeu nenhuma licença do Alto. 3 Nessa década os sistemas foram favorecidos pelos desenvolvimentos anteriores. Tornaram-se multimodais de multiprogramação, que suportava processamento em lote, tempo compartilhado e aplicações de tempo real.

8 3 Ocorre o amplo uso do protocolo TCP/IP e as redes LANs (Local Area Network) tornam-se práticas e baratas, a partir da aplicação do padrão Ethernet desenvolvido no Palo Alto Research Center (PARC) da Xerox. Com esses avanços, as comunicações entre computadores tornaram-se fáceis e a conectividade ficou mais frequente. 3 Nesse momento, os sistemas operacionais passaram a oferecer serviços de configuração da rede e administração da segurança, e seu desempenho cresce continuamente. 3 Os sistemas GUI foram amplamente explorados na década de 1980 pela Apple e pela Microsoft Década de 80 3 O sistema Apple II teve uma aceitação extraordinária. 3 A IBM lança o Personal Computer (PC) em 1982 e a Apple lança a sua versão de computador pessoal (ver glossário), batizado de Macintosh, em O poder de processamento dos microprocessadores cresceu de tal forma que os computadores pessoais dessa década possuem um poder de processamento equivalente aos computadores de grande porte de uma década atrás. 3 Em 1981 a Microsoft lança a primeira versão do MS-DOS para computadores pessoais IBM. A versão da IBM chamava-se DOS. 3 O MS-DOS representou um marco na indústria de software, porque permitiu que os fabricantes de software para rodar no MS-DOS o fizessem com muito mais facilidade do que era nos demais sistemas operacionais

9 até então. A grande redução de trabalho que o MS-DOS proporcionou aos fabricantes de software foi principalmente o uso das Interfaces de Programação de Aplicativos (API), que os programadores utilizavam para realizar manipulações detalhadas de hardware e outras operações. Dessa forma, os programadores de aplicações não necessitariam mais mexer com questões complexas de software, como o gerenciamento da memória do computador pessoal e acessos a seus dispositivos de entrada/ saída (ver figura 8). 3 Nesse momento ocorre uma enorme revolução na utilização dos recursos digitais, pois indivíduos sem formação tecnológica e as pequenas e médias empresas passam a ter os seus próprios computadores exclusivos, que também podiam transmitir dados entre sistemas de forma rápida e econômica. 3 Softwares aplicativos, tais como planilhas eletrônicas e editores de texto, ganham espaço e auxiliam as empresas a ganhar produtividade. 3 Boa parte dos usuários dos computadores pessoais passa a utilizar correio eletrônico, transferência de arquivos e acesso a bancos de dados remotos. 3 Surge a computação distribuída, que dá origem à arquitetura Cliente/Servidor (ver figura 9).

10 3 Em meados dessa década a Microsoft desenvolveu sua plataforma GUI, o Windows, que ainda não atuava como sistema operacional porque era executado de forma sobreposta ao DOS Década de 90 3 No final da década de 1990 um computador pessoal podia executar várias centenas de milhões de instruções por segundo (MIPS), enquanto armazena mais de 1Gb em disco rígido. 3 A Internet levou a uma enorme ampliação na popularidade da computação distribuída. 3 Em 1990 a Microsoft lançou o Windows 3.0, que apresentava grande funcionalidade. 3 O Windows tornou-se popular a partir de 1993, com o lançamento do Windows 3.1. Os sucessores, o Windows 95 e o Windows 98, praticamente dominaram o mercado, ainda nessa mesma década. 3 Usuários domésticos e empresas aumentavam a sua produtividade, agora com os computadores pessoais ligados em rede. 3 A Microsoft tornou-se dominante nessa época. 3 O Windows tomou em prestados muitos dos conceitos do Macintosh, tais como ícones, menus e janelas, e habilitava os usuários a utilizar múltiplas aplicações concorrentes de forma muito fácil. 3 Em 1993 a Microsoft decidiu também entrar no mercado de sistemas operacionais corporativos e lançou o Windows NT Década de Ocorre a disponibilidade da Internet de alta velocidade a preço acessível, através de diversas mídias, como par metálico telefônico, redes de cabo coaxial das companhias de TV a cabo, satélite e celular. 3 Surgem os microprocessadores com mais de núcleo, o que agrega uma forte ampliação da capacidade de processamento dos computadores pessoais e notebooks.

11 3 Linguagens de programação, como o Java, habilitam o surgimento da computação paralela. 3 Diferentemente dos sistemas e computadores da década de 60, que processavam as suas instruções de forma sequencial, ou seja, uma após a outra, na computação paralela, o processamento de uma determinada tarefa se dá enquanto o processador processa outras informações e gerencia diversos dispositivos. 3 Surgem sistemas operacionais de código aberto, como o FreeBSD, OpenBSD e Linux, baseado no GNU (General Public Licence), criado pela Free Software Foundation, que é um conceito da década de 1980, desenvolvido por seu fundador, Richard Stallman. Ele especifica que qualquer pessoa pode modificar e redistribuir software livremente sob sua licença, desde que as modificações sejam claramente especificadas e que qualquer outro derivado do software também seja livre. 3 Tornou-se possível configurar e registrar as preferências do perfil dos usuários, o que faz com que o sistema operacional se ajuste a essas preferências cada vez que o usuário realizar a sua autenticação no sistema operacional. 3 Características do tipo plug-and-play foram adicionadas aos sistemas operacionais, que habilitam os usuários a adicionar e remover dispositivos do sistema operacional sem a necessidade de reconfigurálos manualmente a cada nova ação. 3 Os projetistas preparam sistemas operacionais padronizando as interfaces com os usuários, como, por exemplo, no caso da adoção do sistema de janelas e ícones também por outros sistemas operacionais, como o Linux e suas distribuições, e pelo próprio UNIX. 3 Surge a computação móvel, proporcionada pelos dispositivos móveis, como telefones celulares, smartphones e PDAs, que passam a ser dotados de processadores cada vez mais poderosos, dando a oportunidade para a criação de novos sistemas operacionais, que poderão estar associados a questões muito específicas. 3 A proliferação dos dispositivos móveis deve-se em parte à evolução da amplitude e velocidade e à redução de custo dos serviços de comunicação de dados para esses dispositivos. 4. Conceitos Básicos Sobre Processador, Memória e Armazenamento Secundário 4.1. Processador

12 Boa parte dos sistemas operacionais depende do processador para gerenciar o seu mecanismo de proteção de forma a impedir alguns processos de acessar informações privilegiadas, ou memória que não lhe foi alocada. É um componente do hardware que executa um conjunto de instruções em linguagem de máquina, objetivando a execução eficiente de uma atividade específica. Os processadores podem atuar também como CPU (Unidade Central de Processamento), como um coprocessador gráfico, etc Memória Principal É a RAM (Random Access Memory), e consiste em uma memória volátil e de acesso aleatório. Sendo volátil, significa que perde seus dados quando o computador é desligado. Quanto ao acesso aleatório, permite que os processos possam realizar pesquisas em qualquer ordem para a localização de dados. O sistema pode impedir esses processos de acessar endereços de memória que não lhe foram atribuídos, fornecendo registradores de limite que especificam o endereço de início e de fim da memória atribuída a um processo. As memórias DRAM (RAM Dinâmica) são os tipos mais comuns de memória RAM, e obrigatoriamente precisam ser acessadas de tempos em tempos para que o conteúdo não seja perdido. As memórias SRAM (RAM Estática), normalmente utilizadas como caches de processador, não precisam ser acessadas periodicamente e são mais rápidas e também mais caras que as memórias DRAM Hierarquia das Memórias 3 Registradores Estas memórias muito rápidas operam na velocidade do processador, estão incorporadas no próprio processador e guardam dados para uso imediato pelo processador; 3 Cache As memórias cache são divididas em L1 e L2, às vezes L3, e são integradas aos processadores mais novos para poder explorar as interconexões de alta velocidade. Muitos megabytes são transferidos entre a cache e o processador antes de estarem disponíveis para a memória principal. Possuem uma latência (tempo de resposta) superior à dos

13 registradores; 3 Memória Principal ou Memória Primária São memórias voláteis com maior capacidade de armazenamento e acesso mais lento que os registradores e cache; 3 Armazenamento Secundário É a forma de armazenamento mais lenta, porém com maior capacidade de armazenamento. São os discos rígidos, CD, DVD, etc. Novos desenvolvimentos dos fabricantes tendem a possibilitar o desenvolvimento de memórias mais velozes e de maior capacidade, com custo menor, respeitando a Lei de Moore. A chamada Lei de Moore, que é a profecia feita na década de 70 por Gordon Moore, um dos fundadores da Intel, de que a potência dos processadores dobraria a cada 18 meses, sobreviveu mais de duas décadas e ainda não parece estar totalmente desgastada, apesar do ciclo evolutivo dos transistores estar chegando ao fi m e novas tecnologias estarem sendo estudadas. 3 Armazenamento Secundário Devido à sua capacidade limitada e volatilidade, a memória principal não é adequada para armazenar grandes quantidades de dados ou por muito tempo, ou ambos. Para realizar o armazenamento de grandes quantidades de dados de forma permanente, como arquivos e softwares, o computador usa o armazenamento secundário. Normalmente o armazenamento secundário se dá no disco rígido ou no pen drive. Apesar de custar menos e armazenar mais do que as memórias RAM, não possui a mesma velocidade de acesso.

14 5. Sistemas 5.1. Sistema Monousuário e Monotarefa É quando o sistema operacional permite que apenas um usuário execute uma tarefa de cada vez. Um bom exemplo está nos sistemas operacionais de boa parte de telefones celulares, ou também o sistema operacional PALM OS Sistema Monousuário e Multitarefa É o caso do usuário que utiliza um computador pessoal em casa ou no escritório. Essa situação configura um ambiente monousuário, porque apenas um usuário acessa o computador pessoal em cada momento. Contudo, sistemas operacionais como Windows XP, Windows Vista e Linux permitem que esse usuário utilize muitas tarefas simultaneamente, como, por exemplo, acessando s enquanto visita alguns sites e verifica os dados de uma planilha, ouvindo uma rádio na Internet, com todos esses serviços sendo executados de forma simultânea.

15 5.3. Sistema Multiusuário É o sistema operacional comumente encontrado nos servidores (ver figura 11), em que uma série de usuários pode estar realizando tarefas concorrentes e acessos a informações de banco de dados sem que um interfira no trabalho do outro. Um exemplo é o Windows XP Server 2003 ou o UNIX. 6. Chamadas ao Sistema Desde a década de 1980, os sistemas operacionais incorporaram as Interfaces de Programação de Aplicativo ou API (Application Programming Interfaces). As APIs (ver figura 12) fornecem rotinas que os programadores podem utilizar no desenvolvimento de softwares para requisitar serviços ao sistema operacional, por exemplo, para realizar uma impressão ou gravar um determinado conteúdo em disco. Essas chamadas das APIs que executam rotinas numa camada mais baixa do sistema são conhecidas como chamadas ao sistema.

16 6.1. Sistemas com Compartilhamento de Tempo (Time Sharing) Um sistema com compartilhamento de tempo (Time Sharing), também conhecido como multitarefa (Silberschatz, A.; Peterson, J. L.; Gavin, P., 1992), é uma extensão lógica da mutiprogramação (ver figura 5). Vários jobs sãos executados pela CPU, que comuta o processamento de cada job. O sistema Time-Sharing foi desenvolvido para prover interatividade no uso dos computadores pessoais a um custo acessível. Um sistema Time-Sharing utiliza o gerenciamento e a multiprogramação da CPU para prover a cada usuário uma pequena porção de tempo compartilhado de processamento Sistemas Distribuídos O processamento distribuído de dados (ver figura 13) compreende a ação de um conjunto de processadores interconectados de tal forma a permitir a descentralização dos recursos e prover um ambiente para execução de programas de aplicação.

17 A maior vantagem desse sistema é que, em caso de falha de hardware de qualquer dos processadores, o outro pode assumir as funções e continuar os seus trabalhos. Essa característica aumenta a confiabilidade no sistema Sistemas de tempo Real São sistemas utilizados normalmente como um dispositivo de controle rodando em uma aplicação dedicada Bootstrap Para que um sistema operacional possa começar a gerenciar os recursos de um computador, é necessário que ele seja carregado na memória no momento da inicialização do computador.

18 7. Gerenciamento de Processos 7.1 Conceituação de Processos O gerenciamento de processos ocorre porque o sistema, quando intercala a execução de um determinado processo, deve conseguir administrá-lo cuidadosamente para que possa reiniciá-lo quando ele for retomado. Os processos devem possuir a capacidade de poder comunicar-se com o sistema operacional, de forma que possam informar, por exemplo, o fim da execução do processo Condições de Corrida e Regiões Críticas Alguns sistemas operacionais permitem que processos que trabalham de forma simultânea frequentemente compartilhem o mesmo armazenamento. Esse armazenamento pode ocorrer na memória principal ou pode ser um arquivo compartilhado. A natureza do armazenamento não elimina a região crítica quando ocorre o risco de problema (ver figura 14). Segundo Tanenbaum (1987), onde dois ou mais processos estão lendo ou gravando um dado compartilhado localizado no mesmo endereço de memória principal ou secundária, pode ocorrer uma condição da corrida (race condition) ou condição de disputa (DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R., 2005). Essa situação deve ser evitada porque pode causar erros em aplicações que serão difíceis de identificar. Para prever o aparecimento das regiões críticas, deve-se encontrar um meio de proibir que mais de um processo leia ou grave os dados compartilhados no mesmo momento e no mesmo endereço. Assim, é necessário garantir que, se um processo estiver utilizando uma variável ou arquivo compartilhado, o outro processo será

19 impedido de realizar a mesma tarefa Concorrência e Sincronização Processos Concorrentes Os processos no sistema podem ser executados de maneira concorrente. Isso quer dizer que muitos processos podem ser multitarefa em uma CPU. Existem várias razões que justificam permitir as execuções concorrentes: 3 Compartilhamento de Recurso Físico Os recursos de hardware do computador são finitos e podem ser compartilhados, tornando o ambiente multiusuário; 3 Compartilhamento de Recursos Lógicos Muitos usuários podem estar interessados no mesmo fragmento de informação, que pode ser provida em um ambiente que permita o acesso concorrente a esses recursos; 3 Aumento de Velocidade da Computação Quando se deseja que uma tarefa específica seja executada rapidamente, quebra-se essa tarefa em subtarefas e uma a uma elas são executadas paralelamente com outras; 3 Modularidade Quando ocorre a construção de sistemas em padrão modular, dividindo-se as funções em processos distintos; 3 Conveniência O usuário pode querer ter muitas tarefas para trabalhar ao mesmo tempo. Um exemplo está no fato de que usuários podem estar editando, imprimindo e compilando de forma concorrente Sincronização Serão apresentadas algumas instruções simples de hardware que podem ser executadas em muitos sistemas. Essas instruções especiais podem ser usadas para resolver os problemas de regiões críticas com relativa simplicidade. Uma instrução pode ser definida na forma que segue: 7.4. Monitores e S emáforos Monitores Para facilitar o processo de escrever programas de forma correta, foi proposta uma sincronização de alto nível chamada monitor. Um monitor é uma coleção de

20 procedures, variáveis e estruturas de dados que são agrupados em um tipo especial de pacote. Processos podem chamar as procedures em um monitor se necessitarem, mas não terão acesso às estruturas de dados internos de uma procedure declarada fora do monitor Semáforos Como resultado para a dificuldade com as regiões críticas, existe uma ferramenta de sincronização chamada semáforo. O semáforo é um contador e é usado quando o recurso a ser utilizado pertence a um conjunto de recursos idênticos. É uma variável inteira, maior que zero, que é acessada apenas por duas operações: P (wait) e V (signal). O P decrementa 1, quando um recurso é removido do conjunto e está em uso pela thread. O V acrescenta 1, o que indica que a thread devolveu um recurso Comunicação Interprocessos Ocorre quando há a necessidade de que os processos se comuniquem uns com os outros Escalonamento de Processador O escalonamento de processador ocorre quando existe uma política do sistema para escolher quais processos executar. A política de escalonamento deve atender algumas premissas ligadas a desempenho e maximização do número de processos executados, reduzir o tempo de latência (tempo de espera antes da execução), evitar antecipação indefinida de processos e aperfeiçoar o uso do(s) processador(es). 8. Gerenciamento de Memória 8.1. Conceituação O gerenciamento de memória estabelece a estratégia de otimização da memória diante da carga que esta sofrerá, e é normalmente realizado via software ou hardware. Dessa forma, o gerenciamento de memória é um recurso importante do sistema operacional, pois estabelece como os espaços de memória disponíveis serão alocados para os processos e como atender as requisições de memória de um processador Swapping Compreende um esquema de troca no qual os processos não permanecem na memória principal até o final de sua execução. Sendo assim, enquanto o processo aguarda uma E/S, é substituído por outro processo na memória, para retornar assim que a ação de E/S estiver concluída. Quando ocorre a retirada do processo da memória, o sistema armazena o processo num armazenamento temporário (swap out). Assim que o sistema recuperar o processo (swap in) do armazenamento secundário, ocorre a continuação do processamento. O sistema operacional normalmente realiza o swap out e o swap in muitas vezes antes de terminar a execução do processo.

21 8. 3. M e mória Virtual Os sistemas de memória virtual dão aos processos a impressão de que há mais memória disponível do que de fato existe instalada. Para o propósito deste tópico, o aluno deve saber que há dois tipos de endereços nos sistemas de memória virtual: os propostos pelos próprios processos (endereço virtual) e os disponíveis na memória principal (endereço real). Toda vez que um processo acessar um endereço virtual, o sistema operacional o converterá para um endereço real. O propósito desse recurso é aperfeiçoar o uso da memória, porque memórias principais são rápidas, mas muito caras. Por isso, construir um sistema totalmente pensado para se alojar na memória principal é inviável, dada a limitação de tamanho que esse sistema necessariamente teria. Portanto, uma opção interessante é criar a ilusão de que há mais memória utilizando-se o espaço do armazenamento secundário Segmentação Na segmentação de memória física, os dados e instruções de um programa são divididos em blocos, denominados segmentos. Cada segmento pode conter um fragmento do conteúdo que deve ser armazenado, sem a obrigação de que os blocos tenham o mesmo tamanho, conforme figura 16.

22 9. Sistema de Arquivo 9.1. Conceituação Um arquivo consiste em um ou mais registros físicos, que são a unidade de informação lida ou escrita de fato, ou seja, uma coleção nomeada de dados, para um dispositivo de armazenamento. Muitos sistemas utilizam arquivos para guardar informações de uma forma que possa ser recuperada. Essa guarda acontece, normalmente, em dispositivos de armazenamento secundário, como disco rígido ou um pen drive Diretórios Os diretórios são recursos utilizados para organizar e localizar arquivos rapidamente, conforme figuras 17 e 18. Na verdade, os diretórios também são arquivos, que contêm as informações e as localizações de outros arquivos.

Como a evolução dos sistemas operacionais estão relacionada com o hardware?

Cada tipos de sistema operacional reflete a arquitetura de hardware e de telecomunicações de sua época. Este tipo de sistema operacional permite que apenas um programa seja armazenado na memória para execução. Os demais programas devem aguardar o término da execução do programa que está em memória.

Como o sistema operacional se relaciona com o hardware?

Um sistema operacional é responsável pelo gerenciamento de todo o hardware do seu computador. É ele que vai diz, por exemplo, qual processo (programa em execução) poderá utilizar o processador e por quanto tempo. Outro papel do sistema operacional é garantir que um programa não interfira no outro.

Como foi o processo de evolução dos sistemas operacionais?

Quanto às gerações de Sistemas Operacionais, podemos fazer uma tabela relacionada a cada arquitetura de hardware que foi desenvolvida: 1ª Geração (1945/55): Válvulas e Painéis, uso de Plug's. 2ª Geração (1955/65): Transistores e Sistemas Batch. 3ª Geração (1965/80): Circuitos Integrados e Multiprogramação.

Quais seriam os componentes de hardware mínimos para que o sistema operacional possa integrar?

Requisitos mínimos de hardware: 512 MB RAM ou mais (dependendo das demais necessidades da versão do sistema operacional utilizado e de qualquer outro programa instalado) 900 MB de espaço livre no disco rígido. Uma resolução padrão de tela não inferior a 1024 x 768 pixeis é a ideal.