Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMA OPERACIONAL Professor Me. Victor Andrei da Silva Reitor Márcio Mesquita Serva Vice-reitora Profª. Regina Lúcia Ottaiano Losasso Serva Pró-Reitor Acadêmico Prof. José Roberto Marques de Castro Pró-reitora de Pesquisa, Pós-graduação e Ação Comunitária Profª. Drª. Fernanda Mesquita Serva Pró-reitor Administrativo Marco Antonio Teixeira Direção do Núcleo de Educação a Distância Paulo Pardo Edição de Arte, Diagramação, Design Gráfico B42 Design *Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência. Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal. Universidade de Marília Avenida Hygino Muzzy Filho, 1001 CEP 17.525–902- Marília-SP Imagens, ícones e capa: ©envato, ©pexels, ©pixabay, ©Twenty20 e ©wikimedia F385m sobrenome, nome nome livro / nome autor. nome /coordenador (coord.) - Marília: Unimar, 2021. PDF (00p.) : il. color. ISBN xxxxxxxxxxxxx 1. tag 2. tag 3. tag 4. tag – Graduação I. Título. CDD – 00000 BOAS-VINDAS Ao iniciar a leitura deste material, que é parte do apoio pedagógico dos nossos queridos discentes, convido o leitor a conhecer a UNIMAR – Universidade de Marília. Na UNIMAR, a educação sempre foi sinônimo de transformação, e não conseguimos enxergar um melhor caminho senão por meio de um ensino superior bem feito. A história da UNIMAR, iniciada há mais de 60 anos, foi construída com base na excelência do ensino superior para transformar vidas, com a missão de formar profissionais éticos e competentes, inseridos na comunidade, capazes de constituir o conhecimento e promover a cultura e o intercâmbio, a fim de desenvolver a consciência coletiva na busca contínua da valorização e da solidariedade humanas. A história da UNIMAR é bela e de sucesso, e já projeta para o futuro novos sonhos, conquistas e desafios. A beleza e o sucesso, porém, não vêm somente do seu campus de mais de 350 alqueires e de suas construções funcionais e conectadas; vêm também do seu corpo docente altamente qualificado e dos seus egressos: mais de 100 mil pessoas, espalhados por todo o Brasil e o mundo, que tiveram suas vidas impactadas e transformadas pelo ensino superior da UNIMAR. Assim, é com orgulho que apresentamos a Educação a Distância da UNIMAR com o mesmo propósito: promover transformação de forma democrática e acessível em todos os cantos do nosso país. Se há alguma expectativa de progresso e mudança de realidade do nosso povo, essa expectativa está ligada de forma indissociável à educação. Nós nos comprometemos com essa educação transformadora, investimos nela, trabalhamos noite e dia para que ela seja ofertada e esteja acessível a todos. Muito obrigado por confiar uma parte importante do seu futuro a nós, à UNIMAR e, tenha a certeza de que seremos parceiros neste momento e não mediremos esforços para o seu sucesso! Não vamos parar, vamos continuar com investimentos importantes na educação superior, sonhando sempre. Afinal, não é possível nunca parar de sonhar! Bons estudos! Dr. Márcio Mesquita Serva Reitor da UNIMAR Que alegria poder fazer parte deste momento tão especial da sua vida! Sempre trabalhei com jovens e sei o quanto estar matriculado em um curso de ensino superior em uma Universidade de excelência deve ser valorizado. Por isso, aproveite cada minuto do seu tempo aqui na UNIMAR, vivenciando o ensino, a pesquisa e a extensão universitária. Fique atento aos comunicados institucionais, aproveite as oportunidades, faça amizades e viva as experiências que somente um ensino superior consegue proporcionar. Acompanhe a UNIMAR pelas redes sociais, visite a sede do campus universitário localizado na cidade de Marília, navegue pelo nosso site unimar.br, comente no nosso blog e compartilhe suas experiências. Viva a UNIMAR! Muito obrigada por escolher esta Universidade para a realização do seu sonho profissional. Seguiremos, juntos, com nossa missão e com nossos valores, sempre com muita dedicação. Bem-vindo(a) à Família UNIMAR. Educar para transformar: esse é o foco da Universidade de Marília no seu projeto de Educação a Distância. Como dizia um grande educador, são as pessoas que transformam o mundo, e elas só o transformam se estiverem capacitadas para isso. Esse é o nosso propósito: contribuir para sua transformação pessoal, oferecendo um ensino de qualidade, interativo, inovador, e buscando nos superar a cada dia para que você tenha a melhor experiência educacional. E, mais do que isso, que você possa desenvolver as competências e habilidades necessárias não somente para o seu futuro, mas para o seu presente, neste momento mágico em que vivemos. A UNIMAR será sua parceira em todos os momentos de sua educação superior. Conte conosco! Estamos aqui para apoiá-lo! Sabemos que você é o principal responsável pelo seu crescimento pessoal e profissional, mas agora você tem a gente para seguir junto com você. Sucesso sempre! Profa. Fernanda Mesquita Serva Pró-reitora de Pesquisa, Pós-graduação e Ação Comunitária da UNIMAR Prof. Me. Paulo Pardo Coordenador do Núcleo EAD da UNIMAR 007 Aula 01: 018 Aula 02: 026 Aula 03: 034 Aula 04: 042 Aula 05: 049 Aula 06: 054 Aula 07: 059 Aula 08: 064 Aula 09: 072 Aula 10: 078 Aula 11: 084 Aula 12: 092 Aula 13: 099 Aula 14: 105 Aula 15: 111 Aula 16: Sistemas Operacionais Tipos de Sistemas Operacionais Serviços e Funções de Sistemas Operacionais Processos e Threads Semáforos e Mutex Monitores Impasse/Deadlock Sistemas Operacionais Endereço Lógico e Físico Gerenciamento de Arquivos Estrutura de Armazenamento de Massa Proteção e Segurança Malwares As Máquinas Virtuais/Virtualização Linux Como Utilizar o Linux Introdução É um imenso prazer me conectar com você por meio deste livro, e tenho a certeza de que ao longo das unidades e temas, vamos conhecer um pouco mais sobre o universo do conhecimento que envolve os sistemas operacionais. Desde a criação do computador, a área da informática tem evoluído de forma rápida e intensa, e compreender o funcionamento de sistemas operacionais e sua aplicação em desktops e dispositivos é fundamental para os pro�ssionais da área. Sistemas operacionais (SOs) são elementos essenciais para o funcionamento de pequenos aparelhos até grandes processadores e equipamentos de tecnologia. Usuários por todo o mundo, em suas rotinas de trabalho, utilizam sistemas e equipamentos para realizar diversas atividades de trabalho e negócios, e um bom sistema operacional, aliado com o uso de um equipamento de última geração, pode garantir mais desempenho e performance nessas ações. Os SOs têm in�uência direta na experiência do usuário e no comportamento das aplicações. A usabilidade dos sistemas tem se tornado cada vez mais dinâmica, o que é motivo de preocupação das empresas. O grande número de dados tem aumentado exponencialmente, e a busca por mais velocidade e desempenho, aliada à segurança de equipamentos e sistemas, é importante para o sucesso das tarefas. Assim, ao longo deste material, faremos uma imersão em temas importantes da área para compreender como elas impactam na criação de soluções que visam auxiliar no desempenho das mais diversas atividades pro�ssionais, tecnológicas ou cientí�cas. Vamos lá? 6 01 Sistemas Operacionais 7 Introdução a Sistemas Operacionais Olá a todos! Neste início de disciplina, para entender melhor a de�nição do sistema operacional, é necessário primeiro entender o signi�cado de hardware e software. Keen (1996) de�ne hardware como “a parte física do equipamento, portanto, um conjunto de unidades que constituem um sistema de processamento de dados. São exemplos de hardwares: teclado, mouse, monitor, processador, memória, gabinete, entre outros”. Maran (1999) de�ne softwarecomo “um conjunto de instruções eletrônicas que dizem ao computador o que fazer. Software também é conhecido por programa ou aplicativo. Sistemas operacionais, planilhas eletrônicas, processadores de textos, são alguns exemplos de softwares”. Com essas de�nições, percebe-se que sistema operacional, a�nal, é um software, o item mais importante para que o computador possa funcionar adequadamente, pois todos os aplicativos precisam dele para funcionar. Por manter uma comunicação direta com o hardware, o sistema operacional atua na camada modo núcleo. Todos os outros softwares atuam na camada modo usuário, pois não mantém uma comunicação direta com o hardware. 8 Segundo Tanenbaum (2016, p. 3) PCs são “equipados com um dispositivo de software chamado de sistema operacional, cuja função é fornecer aos programas do usuário um modelo do computador melhor, mais simples e mais limpo, assim como lidar com o gerenciamento de todos os recursos mencionados”. Sistemas operacionais podem ter ou não interfaces grá�cas. Quando não há interface grá�ca, é utilizado o termo shell. Quando há interface grá�ca, o termo utilizado é GUI (Graphical User Interface). Os sistemas operacionais com interfaces grá�cas são indicados para o uso doméstico devido à facilidade que proporciona aos usuários. A Xerox foi quem utilizou a interface grá�ca pela primeira vez, porém, como produto, a GUI foi utilizada de maneira inédita pela Apple. A interação com os dispositivos digitais é geralmente realizada por meio de um mouse, teclado ou através do simples toque em telas sensíveis que equipam smartphones, tablets e computadores. Por meio dessa interação, os usuários podem selecionar e manipular ícones e símbolos a �m de conseguir realizar tarefas com algum dispositivo. Esses símbolos são denominados de widgets, na maioria dos casos, e são agrupados em kits. Leia mais em: 9 https://go.eadstock.com.br/Mi A matemática e escritora inglesa Ada Lovelace, considerada a primeira programadora do mundo, escreveu o primeiro algoritmo para o matemático e inventor Charles Babbage. Fonte: Disponível aqui Disponível aqui Geração de Computadores A área de TI (Tecnologia da informação) tem evoluído consideravelmente através dos anos. Os sistemas operacionais também. O sistema operacional era ligado à arquitetura dos computadores aos quais eram executados. Cada geração de computador tinha um tipo especí�co de sistema operacional (Tanenbaum, 1990, p. 5). Entre os anos de 1792 a 1871, o matemático inglês Charles Babbage projetou o primeiro computador digital. Mesmo tendo gastado muito dinheiro e trabalho, nunca conseguiu fazê-lo funcionar porque a máquina era mecânica e a tecnologia usada na época não conseguiu acompanhá-la. Como era uma máquina analítica, não tinha sistema operacional. “Babbage percebeu que ele precisaria de um software para sua máquina analítica, então ele contratou uma jovem chamada Ada Lovelace, que era a �lha do famoso poeta inglês Lord Byron, como a primeira programadora do mundo. A linguagem de programação Ada é uma homenagem a ela.” (Tanenbaum, 1990, p. 5) 10 https://pt.wikipedia.org/wiki/Ada_Lovelace#/media/Ficheiro:Ada_lovelace.jpg https://pt.wikipedia.org/wiki/Charles_Babbage#/media/Ficheiro:Charles_Babbage_-_1860.jpg A máquina analítica de Babbage Fonte: Disponível aqui A primeira geração (1945-1955) fazia uso das válvulas e precisava de muitas pessoas para operá-las. Não havia sistemas operacionais. O alemão Konrad Zuse construiu o computador Z3 com relés eletromagnéticos, e o inglês Alan Turing e um grupo de cientistas construíram a máquina Colossus, na Inglaterra. Howard Aiken, de Harvard, construiu o Mark I. Já o ENIAC foi construído na Universidade da Pensilvânia, por um aluno de graduação, J. Presper Eckert, e seu professor William Mauchly. 11 https://pt.wikipedia.org/wiki/Maquina_Anal%C3%ADtica#/media/Ficheiro:AnalyticalMachine_Babbage_London.jpg O Colossus e o cientista da computação Alan Turing Fonte: Disponível aqui Disponível aqui O ENIAC e o Mark I Fonte: Disponível aqui Disponível aqui 12 https://pt.wikipedia.org/wiki/Colossus_(computador)#/media/Ficheiro:Colossus.jpg https://escola.britannica.com.br/artigo/Alan-Turing/631068 https://pt.wikipedia.org/wiki/ENIAC#/media/Ficheiro:ENIAC_Penn1.jpg https://pt.wikipedia.org/wiki/Harvard_Mark_I#/media/Ficheiro:Harvard_Mark_I_Computer_-_Right_Segment.JPG O IBM 7094 e um sistema 1401, composto (da esquerda para a direita): leitor/perfurador, , processador e impressora Fonte: Disponível aqui Disponível aqui A segunda geração (1955-1965) fazia uso de transistores ao invés de válvulas, e os computadores �caram mais con�áveis – assim surgiram os computadores de grande porte, os mainframes. Para Tanenbaum (2016, p. 5), muitos computadores “utilizavam a técnica de cartão perfurado para a inserção de instruções, criado pela empresa IBM.” 7094 e o 1401 foram os principais computadores dessa geração, fabricados pela IBM. Utilizavam os sistemas operacionais FMS (Fortran Monitor System) e o IBSYS, desenvolvidos pela IBM para executar no 7094 e, são sistemas operacionais em lote (batch). A terceira geração (1965-1980) fazia uso das CIs e multiprogramação. Os fabricantes de computadores tinham duas categorias de produtos: diferentes e incompatíveis. Eram os computadores comerciais e os computadores cientí�cos de grande escala. O computador 7094 era usado na ciência e na engenharia, orientado por palavras que realizavam cálculos numéricos complexos. Já o 1401 era orientado por caracteres, e seu uso era para a ordenação e impressão de �tas por bancos e companhias de seguro, ou seja, era um computador para uso comercial. A quarta geração (1980 - 1990), usou os circuitos integrados em larga escala (Large Scale Integration — LSI), que são os chips que contém milhares de transistores. Esta geração é conhecida como computadores pessoais, e as máquinas �caram cada vez menores. IBM PC e Apple Lisa são exemplos de computadores desta geração. O IBM PC utilizou o sistema operacional MS-DOS (Disk Operating System - distribuído pela Microsoft), e o Apple Lisa foi desenvolvido por Steve Jobs, mas foi um fracasso. 13 https://pt.wikipedia.org/wiki/IBM_7090#/media/Ficheiro:IBM_7094_console2.agr.JPG https://pt.wikipedia.org/wiki/IBM_1401#/media/Ficheiro:BRL61-IBM_1401.jpg Telefone móvel da década de 1960 e o DynaTAC 800x, pai dos celulares Fonte: Disponível aqui Disponível aqui A quinta geração (1990 - presente), marcada pelos computadores móveis. Em 1946, apareceu o primeiro telefone móvel, que pesava aproximadamente 40 quilos. Em 1970, surgiu o primeiro telefone móvel, o DynaTAC e pesava em torno de 1 quilo, conhecido como “tijolão”. 14 https://pt.wikipedia.org/wiki/Telefone_celular#/media/Ficheiro:Mobile_radio_telephone.jpg https://pt.wikipedia.org/wiki/Motorola_DynaTAC#/media/Ficheiro:DynaTAC8000X.jpg “O DynaTAC (DYNamic Adaptive Total Area Coverage ou Cobertura Total de Área Dinâmica Adaptiva) 8000x era bem diferente do que estamos acostumados nos dias de hoje. Primeiramente, ele era enorme, tendo dimensões de 33 cm x 4,4 cm x 8,9 cm. Outro limitador era a bateria, que durava apenas 30 minutos de conversação e demorava 10 horas para ser recarregada por completo.” Ficou curioso? Saiba mais sobre o “tijolão” em: Em 1990, a Nokia lançou o N9000, que combinava dois dispositivos, um aparelho de telefone e um PDA (Personal Digital Assistant — assistente digital pessoal). A Ericsson, em 1997, fez o lançamento do “Penelope” GS88, primeira vez que o termo smartphone foi utilizado. 15 https://go.eadstock.com.br/Mj O Nokia N900 e o Ericsson GS88 Fonte: Disponível aqui Disponível aqui Atualmente, 90% da população global tem telefone móvel, que pode ser em forma de relógio de pulso, óculos e até embutido em itens de vestimenta. Esses aparelhos não fazem somente chamadas telefônicas, mas possibilitam a navegação na internet, o envio e o recebimento de emails, jogar, enviar e receber mensagens, entre outras utilidades. 16 No dia 20 de novembro é comemoradoo aniversário do lançamento da versão do Microsoft Windows. O seu início não foi fácil, apesar de ter sido lançado com apps tais como Word e Excel, e seu lançamento ocorreu junto com o lançamento do Macintosh, computador da Apple. Somente com a terceira versão do sistema operacional, Windows 3.11, é que foi despertado o interesse do público. Após o lançamento desta versão, a Microsoft, empresa de Bill Gates, começou a desenvolver outras versões do sistema operacional, acertando em algumas versões e errando em outras. 17 https://go.eadstock.com.br/Mk 02 Tipos de Sistemas Operacionais 18 Principais Tipos de Sistemas Operacionais Os sistemas operacionais existem há cerca de cinquenta anos, período em que foram desenvolvidos muitos tipos de sistemas operacionais, alguns bem conhecidos e outros nem tanto. Alguns sistemas operacionais foram bem desenvolvidos e outros nem chegaram a ser terminados. Sistemas operacionais de computadores de grande porte Os sistemas operacionais para os computadores de grande porte ou mainframes, segundo Tanenbaum (2016, p. 25) “são máquinas do tamanho de uma sala ainda encontradas nos centros de processamento de dados de grandes corporações.” A diferença dos mainframes para os computadores pessoais é a capacidade de E/S. É comum encontrar mainframes com 1.000 discos e milhões de gigabytes de dados como servidores so�sticados da web, nas transações entre empresas e em sites de comércio eletrônico em larga escala. Esses tipos de computadores são indicados para processarem muitas tarefas ao mesmo tempo exigindo o mínimo de E/S. OS/360 é um exemplo de sistema operacional de computadores de grande porte. Mais tarde, foi substituído pelo OS/390, e atualmente, as versões do Unix, como é o caso do Linux, estão sendo utilizadas como sistema operacional de computadores de grande porte. 19 Sistemas operacionais de ser�dores Esses sistemas operacionais são executados em servidores, que são computadores pessoais considerados grandes, nas estações de trabalho ou até mesmo nos computadores de grande porte. Eles têm a vantagem de servir múltiplos usuários ao mesmo tempo por meio das redes de computadores, além de possibilitar que os usuários compartilhem recursos de hardware e software. Os servidores possibilitam o serviço de impressão de arquivos e até mesmo impressão através da web. Usam diversas máquinas como servidoras para dar suporte aos clientes, armazenar páginas da web, e atender às requisições solicitadas. Solaris, FreeBSD, Linux e Windows Server 201x são alguns exemplos de sistemas operacionais de servidores. 20 Sistemas operacionais de multiprocessadores Os Sistemas operacionais de multiprocessadores são chamados de computadores paralelos, multicomputadores ou multiprocessadores porque permitem conectar diversos CPUs em um único sistema. Esses sistemas operacionais são especiais, pois permitem a comunicação, a consistência e a conectividade entre as CPUs. Os computadores pessoais fazem uso de chips multinúcleo, o que permite trabalhar com multiprocessadores de pequena escala. São exemplos de sistemas que podem ser executados em multiprocessadores os sistemas operacionais Windows e Linux. Sistemas operacionais de computadores pessoais Os computadores atuais atendem à multiprogramação, que permite que diversos softwares sejam iniciados no momento que o sistema é inicializado. Porém, atende somente a um usuário de cada vez. Tem como principais utilidades dar acesso à internet e fazer o processamento de textos e planilhas. Linux, o FreeBSD, o Windows e o OS X da Apple são alguns exemplos de sistemas operacionais de computadores pessoais. O desenvolvimento de software sem o uso de sistemas operacionais, no mínimo, seria mais lento e trabalhoso, seria imprescindível uma nova programação e con�guração de cada dispositivo/hardware a ser usado a cada nova implementação. 21 Sistemas operacionais de computadores portáteis O computador portátil, também conhecido como PDA (Personal Digital Assistant — assistente pessoal digital) pode ser um tablet, um smartphones ou outro computador portátil e geralmente eles cabem na palma da mão. Para Tanenbaum (2016, p. 26), “A maioria deles conta com CPUs multinúcleo, GPS, câmeras e outros sensores, quantidades enormes de memória e sistemas operacionais so�sticados. Além disso, todos eles têm mais aplicativos (“apps”) de terceiros que você possa imaginar.” Exemplos mais conhecidos de sistemas operacionais de computadores portáteis, são o Android do Google e o iOS da Apple. Sistemas operacionais embarcados Os sistemas operacionais embarcados não permitem que usuários façam a sua instalação. Ele já vem instalado de fábrica e não são vistos como computadores. Podemos citar como exemplos os aparelhos de televisão, os MP3, o forno micro- ondas, entre outros. O sistema operacional desses aparelhos está gravado na memória ROM. QNX, VxWorks e Embedded Linux são exemplos de softwares embarcados. 22 Sistemas operacionais de nós sensores (sensor- node) Esse tipo de sistema usa redes de nós sensores muito pequenos com várias �nalidades. Os nós se comunicam entre si através de comunicação sem �o. Pode ser usado com a �nalidade de medir a precipitação para a previsão de tempo, medir a temperatura, detectar incêndios em �orestas, saber informações sobre inimigos em campos de batalhas, entre outros. Os sensores se apresentam em forma de pequenos computadores que utilizam a bateria com rádios integrados e têm a necessidade de funcionar por longos períodos sem interrupção, geralmente ao ar livre e em condições críticas. A rede precisa suportar falhas de nós individuais, como ocorre nos casos da bateria se esgotar. TinyOS é um exemplo de sistema operacional para um nó sensor. Sistemas operacionais de tempo real Esses sistemas possuem o tempo como característica principal. Há dois tipos de sistema de tempo real: crítico e não crítico. Tanenbaum (2016, p.26) exempli�ca sistema de tempo real crítico como os “sistemas de controle de processo industrial, computadores em tempo real têm de coletar dados a respeito do processo de produção e usá-los para controlar máquinas na fábrica. Muitas vezes há prazos rígidos a serem cumpridos.”, ou seja, a ação desses sistemas deve ser realizada em 23 um determinado tempo ou dentro de certo tempo. Esses sistemas são fáceis de serem encontrados nos processos industriais, militares e de aviação. Outra característica importante desse tipo de sistema é a garantia de que determinada ação ocorrerá no momento exato que deve ocorrer. O sistema de tempo real é caracterizado como não crítico quando a ação que deveria ocorrer em determinado momento não ocorre, e isto não prejudica de forma permanente. Smartphones, áudio digital e sistemas de multimídia são alguns exemplos. Esses tipos de softwares são inseridos pelo projetista, o que não permite que usuários façam sua própria instalação, mas os torna seguros. eCos é um exemplo deste tipo de software. Sistemas operacionais de cartões inteligentes (smart card) Esses são os menores sistemas operacionais. São encontrados nos cartões inteligentes, que são do mesmo tamanho que o cartão de crédito e possuem um chip de CPU. Há dois tipos desses sistemas: os que realizam somente uma função e os que realizam múltiplas funções. Há modelos de cartões inteligentes que são orientados a Java e possuem o ROM, que contém um interpretador para a Java Virtual Machine (JVM — Máquina virtual Java). 24 Quais são os melhores sistemas operacionais da atualidade? E os principais SOs para notebooks e celulares? Conheça em: 25 https://go.eadstock.com.br/Ml 03 Serviços e Funções de Sistemas Operacionais 26 Funções dos Sistemas Operacionais Quando utilizam os computadores, os usuários gostam de executar várias funções ao mesmo tempo, podendo ser computadores pessoais ou não. No uso pessoal, podemos citar que é comum as pessoas navegar na internet, escutar música e se corresponder por meio de trocas de mensagens nas redes sociais. Cada uma dessas funções é umprocesso gerenciado pelo sistema operacional, que tem como função garantir que os processos sejam executados da melhor maneira possível, sem travamento e sem demora. Afora os processos que são solicitados pelos usuários, há os processos que são executados de tempos em tempos sem que o usuário solicite ou intervenha, como exemplo, atualização do antivírus. Os processamentos são executados muito rapidamente, o que leva à falsa impressão de que são executados tudo ao mesmo tempo. A gerência do processador ou a gerência de processos ou atividades é quem faz a distribuição do tamanho do processamento entre as aplicações de maneira que nenhuma aplicação possa monopolizar o uso do processador. Por isso, o sistema operacional tem a função de fazer o gerenciamento das múltiplas requisições de processos recebidas e coordenar o acesso aos recursos (Maziero, 2011). Gerenciamento de processos O sistema operacional tem como uma das funções mais importantes o gerenciamento de processos. Ele envolve os arquivos que o aplicativo precisa acesso para funcionar bem, o tempo de CPU (unidade central de processamento) e o uso da memória. Uma das precauções que o sistema operacional tem com a máquina é sobre os processos: criar e destruir, parar, retomar e auxiliar nos mecanismos de comunicação. É importante modi�car a con�guração da ferramenta de gerenciamento de processos para dar prioridade às tarefas indispensáveis ou forçar sua execução de modo manual. 27 Gerenciamento de memória principal A memória principal também é gerenciada pelo sistema operacional. Ela tem como função armazenar os dados que são compartilhados pela CPU e pelos aplicativos. Um ponto importante a se preocupar é nos casos em que haja falha, pois ela perde a sua capacidade. Por isso, a importância do sistema operacional ser o responsável pelo gerenciamento de memória, tomando os devidos cuidados para não a sobrecarregar e, desta forma, evitar a perda dos dados e informações contidas nela. O gerenciamento da memória é realizado pelo sistema operacional, que garante qual parte da memória está sendo usada e qual serviço está sendo executado no momento. Além disso, a memória principal organiza os espaços livres onde os processos serão colocados e aloca e solicita um espaço que seja necessário para ser utilizado da melhor forma. Gerenciamento de armazenamento secundário O sistema operacional também gerencia o armazenamento secundário. Em caso de falha, a memória pode perder todos os dados contidos nela, por isso é importante ter o armazenamento secundário que armazena os dados por um longo período. O gerenciamento do armazenamento secundário é parecido com o da memória principal, o sistema operacional cuida do espaço livre, da ordem de economia e dos dados armazenados. Gerenciamento do sistema de entrada e saída As portas de entrada e saída do computador também são gerenciadas pelo sistema operacional. Para que periféricos tais como monitor, impressora e fones de ouvido funcionem perfeitamente, o sistema tem como responsabilidade pesquisar na rede os dados necessários de cada um. 28 Registro do sistema de arquivos É da responsabilidade do sistema operacional criar, excluir e arquivar os arquivos criados, além de facilitar a busca deles quando solicitados. A comunicação entre os arquivos e as mídias de armazenamento também é da responsabilidade do sistema operacional. Segurança A segurança da máquina também é da responsabilidade do sistema operacional, que assegura que usuários não permitidos não tenham acesso à máquina e a atividades indevidas. Outra ação importante é evitar que os vírus tenham acesso à máquina. Algumas con�gurações podem ser realizadas para o sistema executar e garantir a segurança do sistema. 29 Comunicação entre elementos e aplicações O sistema operacional faz a comunicação entre os componentes do computador e todos os outros aplicativos que se encontram em contato com ele, além de enviar e receber todas as informações. Tudo isso é possível através das interfaces de rede. Relatar status do sistema Por padrão, ao lado do sistema operacional há outros softwares instalados, mas não é um sistema operacional. O status do sistema propicia características e ambiente básico para o desenvolvimento e execução dos softwares instalados no computador e suporta qualquer tipo de linguagem de programação, permitindo a instalação de qualquer tipo de aplicativo na máquina. Ele veri�ca a necessidade de alguma ação a ser realizada para o bom funcionamento do sistema, além de informar como está sua situação. Gerenciamento de recursos É função do sistema operacional gerenciar os principais componentes do computador através do gerenciador de recursos e todos os componentes que entram em contato com ele. Deve cuidar da segurança e da comunicação da unidade central de processamento (CPU) e também dos dispositivos externos conectados à máquina. 30 Administração do usuário É de responsabilidade do sistema operacional gerenciar os per�s criados e armazenados no computador. O per�l de usuário pode ser do tipo único ou multiusuário. O per�l de usuário único signi�ca que há somente as atividades de um usuário ativas, e o per�l de usuário multiusuário signi�ca que poderá haver atividades de vários usuários ativos ao mesmo tempo. Ser�ços de sistemas operacionais A de�nição de um processo é bem simples, um programa em execução é chamado processo. A leitura de um e-book no computador é um processo. Para ler o e-book no computador, ele precisa estar em execução e, para isso, é necessário que o e-book esteja aberto e um processador de texto também. Neste momento, há um processo em execução. Para ele ter entrado em execução, foi preciso que o sistema operacional estivesse monitorando o dispositivo de entrada, no caso o mouse ou o teclado e, identi�casse que houve uma instrução, um clique duplo do mouse ou uma execução através do teclado, por exemplo, sobre determinado arquivo. Foi preciso que o sistema operacional identi�casse o tipo do arquivo e consultasse a lista de programas que poderiam executar e interpretar o arquivo. Após ter localizado o programa para executar o arquivo, o sistema operacional solicitou o uso do processador que realizou o processamento, criando um processo, ou seja, um programa em execução. Um processo precisa de recursos para executar a sua tarefa. Tais recursos podem ser arquivos e dispositivos de entrada/saída, memória, tempo de CPU. Conforme os processos são criados e/ou são mantidos em execução, os recursos são alocados ao processo. Os processos têm sua memória dividida em três áreas: seção de texto, seção de dados e a pilha. A área de texto contém o código do programa, o contador do programa e o conteúdo que está nos registradores do processador. A área de dados contém as variáveis globais, e a lacuna é o espaço para alocação dinâmica de 31 Imagem 4 – As áreas do processo: texto, seção e pilha Fonte: Tanenbaum (2016, p. 39). memória enquanto o processo está em execução. Já a área da pilha contém dados temporários tais como endereços de retorno, variáveis locais e parâmetros de função. A área de dados cresce para cima e a pilha cresce para baixo, como mostrado na Imagem 4. 32 Fonte: o autor (2021). Nos computadores que possuem o sistema operacional Windows, pressione CTRL+ALT+DEL e será aberto o gerenciador de tarefas. Na aba processos, aparece quais programas em execução estão sendo coordenados pelo sistema operacional. Caso o sistema operacional seja Linux, digite o comando ps no console. 33 04 Processos e Threads 34 Processos Atualmente, é normal para os computadores realizar mais de uma tarefa ao mesmo tempo. Os usuários estão acostumados a fazer várias solicitações ao mesmo tempo, mas a maioria nem imagina como isso acontece. Tanenbaum (2016, p. 59) explica: Primeiro, considere um servidor da web, em que solicitações de páginas da web chegam de toda parte. Quando uma solicitação chega, o servidor confere para ver se a página requisitada está em cache. Se estiver, elaé enviada de volta; se não, uma solicitação de acesso ao disco é iniciada para buscá-la. No entanto, do ponto de vista da CPU, as solicitações de acesso ao disco levam uma eternidade. Enquanto espera que uma solicitação de acesso ao disco seja concluída, muitas outras solicitações podem chegar. Se há múltiplos discos presentes, algumas ou todas as solicitações mais recentes podem ser enviadas para os outros discos muito antes de a primeira solicitação ter sido concluída. Para controlar essas solicitações, é preciso um serviço chamado processo. Em um PC normal, após inicializar o sistema, vários processos são inicializados sem que o usuário saiba. Pode ser inicializado um processo para aguardar a entrada de e- mails, outro para executar o antivírus. Outros tipos de processos podem ocorrer concomitantemente com outro, por exemplo, o usuário pode salvar e imprimir arquivos em uma mídia externa enquanto navega na web. Nos sistemas de multiprogramação, a central de processamento vai de um para outro processo em questão de milissegundos. A Imagem 5 apresenta um computador multiprogramado com quatro programas na memória. 35 Imagem 5 – Código de erros do sistema Fonte: Tanenbaum (2016, p. 60). O Modelo de Processo Todos os softwares possíveis de execução, incluindo o sistema operacional, são processos. Muitos imaginam que há uma CPU virtual para cada processo, mas a realidade é que a CPU está sempre trocando de processo em processo a todo momento, o que recebe o nome de multiprogramação. Tanenbaum (2016, p. 61) esclarece por meio de uma analogia a distinção entre processo e programa, “considere um cientista de computação que gosta de cozinhar e está preparando um bolo de aniversário para sua �lha mais nova. Ele tem uma receita de bolo de aniversário e uma cozinha bem estocada com todas as provisões: farinha, ovos, açúcar, extrato de baunilha etc. Nessa analogia, a receita é o programa, isto é, o algoritmo expresso em uma notação adequada, o cientista de computação é o processador (CPU) e os ingredientes do bolo são os dados de entrada. O processo é a atividade consistindo na leitura da receita, busca de 36 ingredientes e preparo do bolo por nosso cientista. Agora imagine que o �lho do cientista de computação aparece correndo chorando, dizendo que foi picado por uma abelha. O cientista de computação registra onde ele estava na receita (o estado do processo atual é salvo), pega um livro de primeiros socorros e começa a seguir as orientações. Aqui vemos o processador sendo trocado de um processo (preparo do bolo) para um processo mais prioritário (prestar cuidado médico), cada um tendo um programa diferente (receita versus livro de primeiros socorros). Quando a picada de abelha tiver sido cuidada, o cientista de computação volta para o seu bolo, continuando do ponto onde ele havia parado.” Criação do Processo O sistema operacional é o responsável para que um processo possa existir. Em sistemas projetados para executar apenas uma aplicação, pode ser possível ter todos os processos que poderão ser necessários quando o sistema for ligado. Em geral, os sistemas têm uma maneira de iniciar e terminar cada processo, de acordo com a necessidade e enquanto a operação for executada. Um processo é capaz de ser gerado por intermédio de algumas ocorrências. Segundo Tanenbaum (2016, p. 61), um processo consegue ser gerado por intervenção de quatro ocorrências: 37 1. Inicialização do sistema. Quando o computador é ligado, o sistema operacional e o computador são iniciados. 2. Execução de uma chamada de sistema de criação de processo por um processo em execução. Quando o processador de texto é usado e deseja imprimir o que foi criado, tem um processo (processador de texto) solicitando a criação de outro processo (gerenciador de impressão). 3. Solicitação de um usuário para criar um processo. Ao executar um programa, na maioria das vezes clica-se duas vezes sobre ele e ele é executado pelo sistema operacional. 4. Início de uma tarefa em lote. É empregada somente nos sistemas de grande porte. O sistema operacional executará o processo até �nalizá-lo, somente depois começará a executar outro processo. Pode ocorrer que, logo após um processo ser criado, ele compartilhe de outros recursos do seu autor, como arquivos que estejam abertos. Término do Processo Qualquer processo tem o seu início e o seu término. Portanto, após o processo ser realizado, ele é encerrado mediante algumas situações. Tanenbaum (2016, p. 63) lista as situações: Saída normal voluntária: acontece quando o processo é �nalizado com êxito ou quando o usuário encerra o processo. Término por erro voluntário: acontece nos processos com erro fatal e o encerramento é solicitado. Erro fatal involuntário: acontece quando um processo em execução recebe uma instrução não planejada. Cancelamento por outro processo involuntário: acontece quando um processo é �nalizado por um programa autorizado. 38 A diferença do encerramento por erro e por erro fatal ocorre quando o desenvolvedor criou uma exceção para o erro, caso contrário, é considerado encerramento por erro fatal. O ambiente necessário para a execução de um processo é formado pelos contextos de hardware e de software. O contexto de hardware é fundamental para que os processos possam se revezar no controle (utilização) da UCP, podendo ser interrompidos pelo SO e, posteriormente, reinicializados do ponto onde haviam parado sem qualquer solução de continuidade, isto é, como se nada tivesse ocorrido. A operação que possibilita tal revezamento é chamada de troca de contexto (context switch) e consiste basicamente em salvar o conteúdo dos registradores e carregá-los com os valores referentes ao processo que esteja ganhando o controle da UCP. Leia mais em: 39 https://go.eadstock.com.br/Mm Threads Thread é a atividade de um processo. Um arquivo sendo digitado no teclado e exibido na tela do computador é um thread. Os sistemas operacionais da atualidade atuam em processos com várias atividades, chamados múltiplos threads. Nos sistemas de processamento em lote (batch jobs), geralmente cada processo possui somente um thread, chamados de monothread. É normal o usuário utilizar nos computadores domésticos processos com múltiplos threads, chamados multithread. Tanenbaum (2016, p. 67) de�ne thread da seguinte maneira: Em sistemas operacionais tradicionais, cada processo tem um espaço de endereçamento e um único thread de controle. Na realidade, essa é quase a de�nição de um processo. Não obstante isso, em muitas situações, é desejável ter múltiplos threads de controle no mesmo espaço de endereçamento executando em quase paralelo, como se eles fossem (quase) processos separados (exceto pelo espaço de endereçamento compartilhado). Todo processo possui no mínimo um thread. Os threads permitem múltiplas execuções em um processo. 40 Condições de corridas ocorrem quando dois ou mais processos acessam informações compartilhadas obtendo como resultado ocorrências que depende da ordem em que os processos são executados. Esta ordem de execução é determinada pelo mecanismo de escalonamento do sistema operacional. A condição de corrida pode ser impedida pelos mecanismos de exclusão mútua. É da responsabilidade da exclusão mútua certi�car que apenas um processo usará os dados compartilhados num exato momento. A região crítica ocorre quando o trecho do código onde os dados compartilhados são acessados. A exclusão mútua tem como �nalidade impedir que mais de um processo entre na região crítica. Há inúmeras maneiras para atingir a exclusão mútua, se um processo utilizar a região crítica, outro processo não poderá utilizar a mesma região para evitar que aconteçam problemas. Seguindo estas informações vamos analisar como este processo ocorre numa �la de impressão. Para fazer a impressão de qualquer arquivo é necessário colocá-lo na �la de impressão, que está compartilhada. O processo de impressão organiza os arquivos de acordo com a ordem que chegaram à �la. Se a �la de impressão for compartilhada,signi�ca que as informações, os indicadores de frente e �m da �la também são. Quando dois processos decidem imprimir um documento no mesmo momento, o primeiro processo acaba sendo interrompido por ter acabado o seu tempo, e o segundo processo coloca o seu documento na �la antes que o primeiro processo tenha sido �nalizado. Neste caso, houve uma condição de corrida. Fonte: REISSWITZ, Flávia. Análise de Sistemas V. 9. ed. Clube de Autores, 2009. 41 05 Semáforos e Mutex 42 Em 1965, o cientista da computação holandês E. W. Dijkstra teve a ideia de usar uma variável inteira para contar o número de sinais. Sua proposta, embasada no semáforo da cidade, surgiu como um recurso para ajudar os programadores que não tinham conhecimentos profundos em hardware e nas implementações às instruções TSL. Esta solução tem o nome de semáforo, e é representada por uma variável especial do tipo abstrato de dados. Duas operações possibilitam chegar ao semáforo: WAIT () e SIGNAL (). Silberschatz (2011) descreve que as operações wait e signal devem ser executadas indivisivelmente, portanto, quando um processo alterar o valor do semáforo, nenhum outro processo poderá alterar o mesmo valor, concomitantemente. Nos sistemas operacionais, há possibilidade de haver dois modelos de semáforos: semáforos binários e semáforos de contagem. Nos semáforos binários, como o nome diz, o valor da variável pode receber somente dois valores, 0 e 1. Este semáforo também recebe o nome de mutex, por ser usado para garantir a exclusão mútua. Os semáforos de contagem controlam o acesso a algum recurso. O seu valor inicial é a mesma quantidade de recursos disponíveis. Se um dos recursos for solicitado, a operação wait é chamada para fazer o decréscimo de valor levando até ao número zero, para caracterizar que todos os recursos se encontram em uso. No momento em que houver a liberação de um recurso, a operação signal acrescenta um valor à variável do semáforo. Quando uma operação de semáforo for iniciada, nenhum processo pode ter acesso ao semáforo até que a operação seja �nalizada ou bloqueada. Essa ação é importante para resolver os problemas de sincronização e anular condições de corrida. 43 Um processo tem suas próprias características. Tem como estrutura básica uma imagem de código executável associado a um software. O código executável e dados especí�cos fazem parte da memória. Cada processo atravessa por estados distintos do início ao �m. No momento inicial é classi�cado como “Novo”. Durante a sua execução é classi�cado como “Executando”. Mas quando precisa da execução de algum evento é classi�cado como “Esperando”. Logo não seja mais preciso, seu processo é classi�cado como “Terminado”. O sistema operacional é o responsável por juntar todos estes dados por meio das estruturas especí�cas conhecidas como PCB (sigla de Process Control Blocks) ou Blocos de Controle de Processos. Com os conhecimentos adquiridos sobre processos, terá maior compreensão sobre Gerenciador de Tarefas do Windows. Utilize a combinação Ctrl+Alt+Del e selecione Gerenciador de Tarefas, depois a aba “Processos”. As informações apresentadas é a lista dos processos que estão em execução naquele momento. O Gerenciador de Tarefas, por padrão, �ltra alguns processos apresentando uma lista pequena. Para ter acesso à lista completa de todos os processos clica em "Mostrar processos de todos os usuários”. 44 https://go.eadstock.com.br/Ou Figura 7 – O problema do produtor-consumidor com uma condição de corrida fatal Fonte: Tanenbaum (2016, p. 89). Dijkstra propôs trabalhar com duas ações nos semáforos: down e up. Down signi�ca generalizações de sleep, e up signi�ca wakeup. Para Dijkstra, a execução da operação down em um semáforo tinha como função averiguar se o valor é maior do que 0. Em casos em que se obtém a resposta positiva, o valor será decrementado. Nos casos em que o valor for 0, o processo é posicionado para dormir sem completar o down. 45 Solucionando o Problema Produtor-Consumidor Usando Semáforos Semáforos são utilizados para esclarecer a di�culdade do sinal perdido. Nos casos em que diferentes CPUs estejam sendo utilizadas, todo semáforo precisará ser preservado por uma variável de trava, junto com as orientações TSL ou XCHG empregadas para garantir que somente uma CPU analisará o semáforo. A execução do semáforo ocorrerá em microssegundos, à medida que o produtor ou o consumidor são capazes de ter longa duração. Para realizar este procedimento são usados três semáforos, o full, o empty e o mutex. O semáforo full faz a contagem do número de vagas que se encontram cheias. O semáforo empty faz a contagem do número de vagas vazias. O semáforo mutex certi�ca-se de que o produtor e o consumidor não conectem ao bu�er, simultaneamente. No início, full tem o valor de 0; empty possui o mesmo número de vagas no bu�er; mutex é 1. Semáforos inicializados com 1 e utilizados por dois ou mais processos para garantir que apenas atinjam a região crítica um de cada vez, recebem o nome de semáforos binários. Para assegurar que a exclusão mútua exista, é necessário certi�car-se de que cada processo execute um down momentos antes de atingir a sua região crítica e um up no �nal. Nos sistemas que usam semáforos, a forma padrão de ocultar interrupção é iniciar um semáforo com 0, relacionado com o dispositivo de E/S. Imediatamente após o início de um dispositivo de E/S, o processo de gerenciamento executa um down no semáforo associado, o que faz com que seja bloqueado imediatamente. No momento em que ocorre a interrupção, o tratamento de interrupção executa um up, fazendo com que o processo se torne importante e preparado para nova execução. Os semáforos são usados de duas formas distintas: para exclusão mútua e para a sincronização. Para a exclusão, é utilizado o semáforo mutex. Para fazer a sincronização são utilizados os semáforos full e empty. O semáforo mutex assegura 46 que somente um processo de cada vez esteja lendo ou escrevendo no bu�er ou em várias associadas. A exclusão mútua tem como função impedir o caos (Tanenbaum, 2016, p. 91). A sincronização é o segundo uso dos semáforos. Para Tanenbaum (2016, p. 91), semáforos full e empty “são necessários para garantir que determinadas sequências ocorram ou não. Nesse caso, eles asseguram que o produtor pare de executar quando o bu�er estiver cheio, e que o consumidor pare de executar quando ele estiver vazio. Esse uso é diferente da exclusão mútua”. Alguns aplicativos são verdadeiros devoradores de memória e prejudicam o desempenho do sistema. Um bom exemplo é o processo svchost.exe, responsável por executar várias tarefas do Windows. Contudo, se ele consome muita memória de seu PC, como saber quais os aplicativos responsáveis por isso? Clique com o botão direito do mouse sobre ele e depois na opção Ir para Serviço(s). Nela, você visualiza a aba Serviços do próprio Gerenciador, e lá serão exibidos os aplicativos relacionados ao processo que você selecionou. Se desejar, você pode encerrá-los. Infelizmente, o Gerenciador de tarefas do Windows não permite a você visualizar o quanto cada aplicativo consome de memória, porém, seu leque de possíveis devoradores já diminui bastante. 47 https://go.eadstock.com.br/Ov Mutex Nas ocasiões em que o semáforo não precisa fazer contagem, a função mutex pode ser utilizada. Mutexes têm como funcionalidade coordenar a exclusão mútua de qualquer recurso ou trecho de código em geral. Os mutexes são simples e fáceis de implementar, por isto, são essenciais em pacotes de threads, contribuindo com as implementações que são realizadas totalmente no espaço do usuário. Mutex é o nome dado a uma variável compartilhada que pode ter dois estados: destravado ou travado. Precisa somente de 1 bit para caracterizá-lo, mas constantemente um número inteiro é utilizado. O valor 0 representa destravado e os outros valores representam travado. Mutexes fazem uso de duas rotinas. Mutex_lock e Mutex_unlock. O Mutex_lock ocorre quando um thread necessita acessar a regiãocrítica. Tanenbaum (2016) enfatiza “Se o mutex estiver destravado naquele momento (signi�cando que a região crítica está disponível), a chamada seguirá e o thread que chamou estará livre para entrar na região crítica”. Mas, nos casos em que o mutex encontrar-se travado, o thread que fez a solicitação será bloqueado até que o thread na região crítica seja concluído e chame mutex_unlock. Continua Tanenbaum (2016) “Se múltiplos threads estiverem bloqueados no mutex, um deles será escolhido ao acaso e liberado para adquirir a trava”. Existe uma distinção entre enter_region e mutex_lock. Nos casos em que o mutex_lock erra em obter uma trava, o thread_yield é chamado para liberar a CPU para outro thread. Tanenbaum (2016) a�rma que “thread_yield é apenas uma chamada para o escalonador de threads no espaço de usuário, ela é muito rápida”. 48 06 Monitores 49 Monitor O programador teve um ganho de rendimento com o uso de semáforos, tanto pelo que o semáforo proporciona quanto pela facilidade do seu uso. Mas isto não evita que o programador use os semáforos incorretamente. Para ajudá-los, nestes casos, foi criado o monitor. Quando utiliza semáforo é preciso ser responsável, pois qualquer erro pode fazer com que pare toda a execução. Os erros ocorrem em condição de impasses, corridas e diversos tipos de procedimento inesperado e inimitável. Para ajudar no desenvolvimento adequado de programas, Brinch Hansen (1973) e Hoare (1974) apresentaram uma ideia de sincronização de nível mais alto denominada monitor. Monitor é um conjunto de normas de rotinas, variáveis e estruturas de dados, agrupadas em um tipo exclusivo de módulo ou pacote. Os processos conseguem juntar as rotinas em um monitor, a todo momento, mas não conseguem conectar claramente as estruturas internas de dados do monitor através de rotinas declaradas fora do monitor. Tanenbaum (p. 96, 2016) de�ne: Monitores são uma construção da linguagem de programação, então, o compilador sabe que eles são especiais e podem lidar com chamadas para rotinas de monitor, diferentemente de outras chamadas de rotina. Tipicamente, quando um processo chama uma rotina do monitor, as primeiras instruções conferirão para ver se qualquer outro processo está ativo no momento dentro do monitor. Se isso ocorrer, o processo que chamou será suspenso até que o outro processo tenha deixado o monitor. Se nenhum outro processo está usando o monitor, o processo que chamou pode entrar. 50 O compilador é responsável por compilar a exclusão mútua nas chegadas do monitor, mutex ou semáforo binário é a forma normal de utilizar. Como a responsabilidade é do compilador de organizar a exclusão mútua, di�cilmente ocorre algum erro. Desta forma, o programador não precisa saber como é organizada a exclusão mútua, ele precisa saber que em todas as regiões críticas que são alteradas em normas de monitores, não há a possibilidade de dois processos executarem suas regiões críticas, simultaneamente. Os monitores facilitam a exclusão mútua, mas é necessária uma forma para os processos bloquearem quando não conseguirem continuar. Algumas linguagens implementam o conceito de monitor para garantir que os semáforos sejam utilizados de forma correta, são elas: Java, Pidgin Pascal e C#. Pidgin Pascal é uma linguagem imaginária, Java e C# são linguagens reais. A linguagem C não pode ser usada nos monitores, pois eles são conceitos da linguagem C e não os possui. A linguagem Java orientada a objetos oferece suporte a threads de usuário, além de permitir que as rotinas �quem agregadas em classes. O sistema operacional se utiliza de diversas técnicas para certi�car que a comunicação através dos processos aconteça sem interrupções e de forma ordenada. Se ocorrer de dois processos estarem concorrendo em condição de pronto são perfeitamente capazes de ser processados. Podem ocorrer duas situações: Mais de uma CPU na máquina, não há nenhum problema, pois há mais unidades de processamento desocupadas do que o número de processos a serem executados. Apenas uma CPU na máquina, neste caso, haverá uma CPU e dois processos a serem executados. Para casos como estes, o sistema operacional dispõe de escalonador de processos. 51 Em grandes e médias cidades há um problema já conhecido pelos engenheiros de tráfego, o problema de �uxo de tráfego. Em ciência da computação esse problema é visto na área de redes de computadores quando existe um congestionamento em algum ponto da rede. As operações de espera e sinal nas variáveis de condição em um monitor são semelhantes às operações P e V na contagem de semáforos. Uma instrução de espera pode bloquear a execução de um processo, enquanto uma instrução de sinal pode fazer com que outro processo seja desbloqueado. No entanto, existem algumas diferenças entre eles. Quando um processo executa uma operação P, ele não necessariamente bloqueia esse processo, porque o semáforo de contagem pode ser maior que zero. Em contraste, quando uma instrução de espera é executada, ela sempre bloqueia o processo. Quando uma tarefa executa uma operação V em um semáforo, ela desbloqueia uma tarefa que está aguardando esse semáforo ou incrementa o contador do semáforo se não houver tarefa para desbloquear. 52 https://go.eadstock.com.br/Ow O produtor e o consumidor possuem threads. Os threads do produtor e do consumidor são práticos e similares em várias ocasiões. O produtor possui um laço ilimitado criando dados e os inserindo no bu�er comum. O consumidor também possui um laço ilimitado retirando dados do bu�er e criando coisas diferentes. No momento em que o produtor está ativo e incluso no insert, ele entende que o consumidor não consegue estar ativo e o remove, fazendo com que as variáveis possam ser renovadas de forma protegida e o bu�er sem dúvida de ter condições de corrida. Os monitores são concebidos da linguagem de programação. É de responsabilidade do compilador identi�car e organizar, de qualquer forma, a exclusão mútua. Algumas linguagens, como é o caso de Pascal, C. etc., não possuem monitores, sendo assim, não deve esperar que seus compiladores realizem qualquer tipo de exclusão mútua. Mas, é simples criar semáforos para estas linguagens, é só adicionar rotinas de código de montagem à biblioteca para enviar as solicitações up e down. Não é preciso nem informar ao compilador que o semáforo existe, mas o sistema operacional deve ser informado sobre o semáforo. Se o sistema operacional for fundamentado em semáforo, há possibilidades de desenvolver programas para ele em C++ ou em próprio C. Com o monitor é diferente, é necessária uma linguagem que seja incorporada. O monitor e o semáforo foram planejados para resolver o impasse da exclusão mútua em um ou mais computadores, com acesso à memória padrão. As corridas com os semáforos na memória compartilhada poderão ser impossibilitadas de ocorrer e protegidas com as instruções TSL ou SCHG. A conclusão de que se tem é que o monitor não é vantajoso, à exceção de uma escassa linguagem de programação e, o semáforo pertence a um grau muito baixo. Além de tudo, as fontes originais não possibilitam a transferência de dados entre os computadores. Precisa de outras coisas mais essenciais. 53 07 Impasse/Deadlock 54 Impasse O sistema operacional tem um trabalho muito importante, a escolha de quais processos serão processados primeiro. Independentemente dos diversos métodos que há nas máquinas, apenas um processo por vez pode ser utilizado. Scanner, CD-ROM, impressora são alguns dos recursos. Na hora em que dois ou mais processos precisarem do recurso que o outro está utilizando e bloqueando, há uma situação de impasse ou deadlock. Para Tanenbaum (2010, p. 271), o impasse é “um conjunto de processos que estará em situação de impasse se todo processo pertencente ao conjunto estiver esperando por um evento que somente outro processo desse mesmo conjunto poderá fazer acontecer”. Imagine dois processos, X e Y, que precisam usar recursos do PC, impressora e scanner. Os processos executam as funções como:O processo X digitaliza uma ilustração e solicita a impressora para impressão. O processo Y faz a impressão através da impressora e depois digitaliza uma ilustração. A execução destes processos ocorreu com o processo X acionando primeiro o uso da impressora, que foi prontamente atendido. Logo após, foi pedido início do processo Y, o escalonamento de nome round-robin inicializou o processo Y, que usufruiu do recurso scanner. O processo X encerrou a utilização da impressora e buscou a execução do scanner, ele estava bloqueado pelo uso do processo Y. A mesma coisa aconteceu com o processo Y, quando solicitou o uso da impressora, ela estava bloqueada pelo processo X. Neste caso, houve um impasse entre dois processos e o uso de seus recursos. Nenhum processo será �nalizado se não foi solicitado pelo usuário. O impasse acontece quando quatro situações acontecem concomitantemente: inexistência de preempção, posse e espera, exclusão mútua e espera circular. Na exclusão mútua, cada recurso consegue ser utilizado somente por um processo por vez. Se mais um processo pedir o mesmo recurso, o processo que pediu precisa ser suspenso até o recurso ser disponibilizado. 55 Na posse e espera, um processo necessita estar no mínimo em um recurso e aguardar para conseguir recursos complementares que se encontrem na execução de outro processo. Na inexistência de preempção, um recurso permitido a um processo não permite que seja retirado deste processo. O recurso deve ser disponibilizado livremente pelo processo que esteja sendo mantido depois que o processo tiver �nalizado a sua atividade. Na espera circular, precisa ter uma associação entre dois ou mais processos. Cada um destes processos depara com o aguardo de um recurso que esteja em uso pelo próximo componente da cadeia. De uma forma mais simples, para melhor entendimento, podemos dizer que deadlock é um termo empregado para traduzir um problema ocorrido quando um grupo de processos competem entre si. A ocorrência do deadlock depende das características de dois ou mais programas diferentes e dos respectivos processos a executar pelos diferentes programas ao mesmo tempo. Pode ser que esses processos possam ser executados de forma repetitiva usando diferentes processos sem que ocorra deadlock, todavia, basta um único processo padrão complicado para entrar em situação de deadlock. 56 https://go.eadstock.com.br/Ox Prevenção de Impasses Um impasse acontece se quatro condições forem realizadas ao mesmo tempo. Caso haja garantia que ao menos uma das situações não aconteça, certi�ca-se um sistema operacional sem problemas. Para isto, deve estabelecer alguns critérios, tais como: atacar a condição de exclusão mútua, atacar a condição de posse e espera, atacar a condição de inexistência de preempção, atacar a espera circular. Atacar a condição de exclusão mútua signi�ca que todo tipo de aplicação de recurso só deve existir nos casos em que seja indispensável. Ademais, precisará garantir que o mínimo permitido de processos consiga solicitar o recurso. Atacar a condição de posse e espera signi�ca certi�car-se de que quando um processo solicitar um recurso, ele não se encontre em nenhum outro recurso ou estes precisam encontrar-se livres para que a ação possa acontecer. Atacar a condição de inexistência de preempção signi�ca que um processo que esteja em um recurso requisita outro recurso que não seja capaz de ser reservado rapidamente. A preempção permite que, a cada intervalo de tempo, o recurso possa ser utilizado por um processo. Esta forma de prevenção é perigosa. Suponha que diversos processos tenham requisitado a impressora e, por causa da preempção, as linhas impressas são relacionadas a um processo. É uma situação perigosa, pressupõe diversos processos requerendo uso da impressora e, por causa da preempção, toda linha imprimida é referente a um processo. No �nal da execução, os arquivos teriam sido impressos de maneira errônea. Atacar a espera circular signi�ca certi�car-se de que ela não aconteça. Para isto, é determinada uma regra a todas as categorias de recursos. Um processo é capaz de solicitar recursos quando preciso, mas estes precisam ser realizados em ordem numérica. 57 Computadores são cheios de recursos que só podem ser utilizados por um processo por vez. O controle de acesso aos mesmos é realizado de forma individual, pelos mecanismos de exclusão mútua, como os semáforos. Contudo, uma nova classe de problemas surge quando vários processos estão competindo por vários destes recursos ao mesmo tempo. Fonte: ROCHA, Carlos Gustavo A. da. 58 https://go.eadstock.com.br/Oy 08 Sistemas Operacionais 59 Sistemas Operacionais O PC possui o sistema operacional como o software mais importante. Ele nos possibilita manuseá-lo e determinar o que ele deve fazer. Um computador sem um sistema operacional é inoperante. Sem ele não há plataforma que sustente os softwares para executar nenhum tipo de trabalho, ouvir uma música, acessar uma rede social, escrever um documento, elaborar uma planilha etc. O sistema operacional administra todos os mecanismos do computador, o software e o hardware. O sistema operacional coordena todos os softwares e componentes da máquina. Ao ligar o botão de ligar da máquina, o sistema operacional efetua todos os testes necessários para assegurar que tudo vai ser realizado, perfeitamente, certi�ca os componentes físicos e, só assim, inicializa o sistema operacional. A de�nição do sistema operacional para Tanenbaum (2016, p. 3), É difícil dizer com absoluta precisão o que é um sistema operacional, além de ele ser o software que opera em modo núcleo — e mesmo isso nem sempre é verdade. Parte do problema é que os sistemas operacionais realizam duas funções essencialmente não relacionadas: fornecer a programadores de aplicativos (e programas aplicativos, claro) um conjunto de recursos abstratos limpo em vez de recursos confusos de hardware, e gerenciar esses recursos de hardware. Dependendo de quem fala, você poderá ouvir mais a respeito de uma função do que de outra. Examinemos as duas então. O sistema operacional faz a gerência dos processos que são executados pela CPU. Tais processos também são chamados de programas. Para estes programas em execução, precisam encontrar-se totalmente ou uma parte dele na memória principal da máquina. Uma CPU veloz necessita de uma grande capacidade de memória para que tudo funcione corretamente. Sim, a CPU e a memória devem trabalhar juntas para assegurar agilidade nos processos. A CPU dispõe de ligação direta na memória principal, também conhecida como memória RAM, como é o caso dos registradores, que são modelos de memória embutida dentro do próprio processador. 60 Imagem 10 – Pirâmide da Hierarquia de Memória Fonte: Disponível aqui Para Tanenbaum (2016, p. 22), o sistema operacional é parecido com uma máquina estendida, “A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura de barramento) da maioria dos computadores em nível de linguagem de máquina é primitiva e complicada de programar, especialmente para entrada/saída”. Memórias são dispositivos utilizados no armazenamento e recuperação de informação. Identi�ca uma diversidade de tecnologias, capacidade, valor e desempenho. A concepção de hierarquia de memória oferece uma melhor compreensão do desempenho, valor, capacidade e desempenho das memórias. Conseguimos entender melhor esta hierarquia através de uma pirâmide. Na base da pirâmide �cam as memórias com baixo valor, grande capacidade de armazenamento e com o menor desempenho. No topo da pirâmide, �cam as memórias com baixo valor, menor capacidade de armazenamento e com o maior desempenho. A imagem 10 apresenta melhor esta concepção de hierarquia. Na imagem 10, é possível veri�car na pirâmide, que a principal função do sistema operacional é gerenciar memórias de velocidade e tamanhos diversos. A hierarquia é fundamentada na velocidade, no valor e na capacidade. No topo da pirâmide estão os registradores e a memória cache, são memóriasinternas ao processador, são memórias muito rápidas, possui capacidade limitada, tamanho reduzido e o valor excepcionalmente alto. Na parte de baixo da pirâmide, 61 https://docente.ifrn.edu.br/tadeuferreira/disciplinas/2016.1/sistemas-operacionais/Aula12.pdf está a memória RAM com características inferiores à memória secundária, entretanto, como as memórias secundárias, tudo se apaga quando o sistema é desligado. Se na memória principal e memória secundária todas as informações são apagadas ao desligar o computador, o mesmo não ocorre com os discos rígidos, que estão na parte inferior da pirâmide. Fazem parte do disco rígido as mídias ópticas que são CD, DVD e Blue Ray e a memória Flash, o pen drive. É importante evidenciar determinadas especi�cações da memória: A memória principal é mais veloz, consome mais energia, possui menor capacidade de armazenamento, tem o valor mais alto e são memórias voláteis. Nesta categoria se incluem também memória RAM, cache L1 e L2 e os registradores. A memória secundária, também conhecida como memória de massa, se comparada com a memória principal, possui o custo mais baixo, são morosas, e não voláteis. Nesta categoria também são incluídos o CD-ROM e o disco rígido. A imagem 11 apresenta a hierarquia de memória com as especi�cações de cada tipo de memória, como, velocidade, custo, capacidade, tamanho de cada tipo de memória e se são energizados ou não. 62 Imagem 11 – Pirâmide da Hierarquia de Memória com suas especi�cações Fonte: Disponível aqui À medida que você adquire um disco rígido de 1TB pelo valor X, você não adquire pelo mesmo valor uma memória RAM de 1 TB. O sistema operacional usa a memória principal e a memória secundária. O sistema operacional não tem interferência nos registradores e nem nas memórias do tipo cache L1 e L2. 63 http://taturial.blogspot.com/2012/02/diferenca-entre-as-memorias.html 09 Endereço Lógico e Físico 64 Endereço Lógico e Endereço Físico Um software em execução desencadeia uma sequência de endereços de memórias gerados pelo processador conhecidos por endereços lógicos, recebem este nome por ter a lógica do software. A partir do momento em que estes endereços são armazenados �sicamente na memória RAM, recebem o nome de endereços físicos. Geralmente, um endereço lógico não será parecido com o endereço físico da memória RAM. A CPU gera um endereço lógico enquanto o software está em execução. O endereço lógico é um endereço virtual, ele não existe �sicamente. Usa-se o endereço lógico como orientação para conectar a área da memória física. O hardware faz a conversão do endereço lógico para o endereço físico. O hardware que faz esta conversão recebe o nome de Memory Management Unit ou simplesmente, MMU. A MMU conhece muito bem o local em que o endereço lógico foi armazenado �sicamente na memória RAM. Ela conhece inúmeras técnicas para realizar esses armazenamentos. A MMU mapeia o endereço lógico para o seu endereço físico. Ele se utiliza de processos de vinculação de endereços para estabelecer os endereços físicos e lógicos semelhantes enquanto é realizada a compilação e o tempo de carregamento. Entretanto, enquanto ocorre a execução, os processos de ligação de endereço criam endereços físicos e lógicos diferentes. 65 No âmbito das redes de informática, há dois endereços principais atribuídos a um dispositivo de host: físico (MAC) e lógico (IP). Tanto o endereço MAC como o IP trabalham juntos para identi�car um dispositivo na rede. O processo de usar os endereços MAC e IP para localizar um computador é semelhante ao processo de usar o nome e o endereço de uma pessoa para enviar uma carta. O nome de uma pessoa geralmente não muda. O endereço de uma pessoa, refere-se ao local onde mora e pode ser alterado. O endereço MAC de um host não muda; ele é atribuído �sicamente à placa de rede do host e é conhecido como endereço físico. O endereço IP baseia-se no local em que o host realmente se encontra. Por meio desse endereço, é possível que um quadro determine o local a partir do qual um quadro deve ser enviado. O endereço IP, ou o endereço de rede, é conhecido como um endereço lógico por ser atribuído logicamente. Ele é atribuído a cada host por um administrador de rede com base na rede local em que o host está conectado. Os endereços MAC físico e IP lógico são necessários para que um computador se comunique em uma rede hierárquica, assim como o nome e o endereço de uma pessoa são necessários para enviar uma carta. 66 https://go.eadstock.com.br/Oz Figura 7 – O papel da MMU entre o processador e a memória Fonte: Rômulo, Carissimi e Simão (2002, p. 11). Como se Origina o Lógico e Endereço Físico O endereço físico descobre o local físico na memória. A MMU executa o endereço físico em endereço lógico equivalente. Da mesma forma, a MMU utiliza de endereço físico como endereço lógico. Não é obrigação do usuário tratar com o endereço físico. O endereço físico é conectado por seu próprio endereço lógico através do usuário. Imagina-se que é o endereço lógico que executa o programa do usuário, mas o endereço lógico é gerado pelo programa que o usuário esteja usando. O programa necessita da memória física para ser rodado. Sendo assim, o endereço lógico precisa ser estruturado primeiro para o endereço físico para depois ser utilizado. O endereço lógico é estruturado para o endereço físico utilizando o hardware Memory Management Unit (MMU). Todos os endereços lógicos criados formam um grupo de todos os endereços físicos que recebe o nome de espaço de endereço lógico. Oliveira, Carissimi, Toscani (2002, p. 10) de�nem Memória lógica e memória física como: O espaço de endereçamento lógico de um processo é formado por todos os endereços lógicos que esse processo pode gerar. Existe um espaço de endereçamento lógico por processo. Já o espaço de endereçamento físico é formado por todos os endereços aceitos pelos circuitos integrados de memória. A unidade de gerência de memória (Memory Management Unit, MMU) é o componente do hardware responsável por prover os mecanismos que serão usados pelo sistema operacional para gerenciar a memória. Entre outras coisas, é a MMU que vai mapear os endereços lógicos gerados pelos processos nos correspondentes endereços físicos que serão enviados para a memória. 67 O endereço lógico é o caminho para chegar ao endereço físico. O usuário utiliza o endereço lógico para chegar ao endereço físico na unidade de memória. Fragmentação A memória guarda, provisoriamente, um grupo de informações usado pelos processos. Estas informações são inseridas e retiradas da memória RAM pela MMU, por intermédio da CPU. No caso de uma memória que é capaz de guardar 15 posições, o processo A pede a utilização de duas posições. A MMU reservará o primeiro e o segundo espaços, as posições 1 e 2. Em seguida, outro processo, o processo B pede a utilização de quatro posições, ou seja, solicita quatro espaços na memória. A MMU reservará as posições 3, 4, 5 e 6. Agora, a memória dispõe de 9 espaços livres e 6 espaços ocupados por dois processos, A e B. O cliente fechou o processo A, o espaço 1 e 2 serão liberados pela MMU. As posições 1, 2, 7, 8, 9, 10, 11, 12, 13, 14 e 15 estarão liberadas e as posições 3, 4, 5 e 6 estarão ocupadas. A MMU tirou as informações do processo A, mas não rede�niu os lugares, mudando as posições ocupadas para os primeiros lugares da memória. Um terceiro usuário pede a realização de outro processo que precisa de quatro espaços na memória. A MMU reservará as posições 7, 8, 9 e 10 para este novo processo, visto que as posições 3, 4, 5 e 6 estão preenchidas e nas posições 1 e 2 não cabe o que foi pedido. Compreende-se que as duas primeiras posições da memória permaneceram desocupadas, ou seja, �cou um vazio no início da memória. Estes tipos de ocorrências podem agravar com as informações inseridas e retiradas da memória RAM. Este espaço vazio na memória é chamado de fragmentação. A fragmentação pode ser do tipo fragmentação externa ou fragmentação interna. A fragmentaçãoexterna acontece quando há espaços livres na memória em pequeno espaço sem serem seguidos, ou seja, quando há espaços na memória e estes não são próximos. No exemplo acima ocorreu uma fragmentação externa. A fragmentação interna acontece quando todo o espaço de um bloco de alocação de memória não é utilizado na sua totalidade. 68 Estratégias de Alocação A memória RAM aplica técnicas para manter os dados do sistema operacional e os inúmeros processos na memória. As principais técnicas para realizar estes procedimentos são: alocação contígua, alocação por segmentos e alocação paginada. Na alocação contígua, a memória é fragmentada em duas divisões. Uma divisão é para o sistema operacional. A outra divisão é para tamanhos �exíveis, são ajustáveis para se adaptar à solicitação exclusiva de cada processo do usuário. Neste tipo de alocação, a MMU tem o endereço lógico e procura salvar em uma partição. Se o espaço pedido for compatível, os dados são salvos, caso contrário, devolve a interrupção para o processador e informa que o endereço é inválido. Esta alocação é considerada fácil para ser realizada, tem como desvantagem poder ser transformada em uma fragmentação externa. Na alocação por segmentos, a memória é fracionada em espaços que recebem o nome de segmentos, eles podem ser reservados independentemente da memória física. Também pode ser transformada em uma fragmentação externa. A alocação paginada foi desenvolvida para impossibilitar a fragmentação externa e a obrigação de compactação. A alocação paginada possibilita que o endereçamento físico de um processo não seja próximo. Este tipo de alocação é atual, é utilizado pela maioria dos sistemas operacionais atuais. Neste tipo de alocação, o espaço de endereço lógico é dividido em blocos chamados de páginas, em que para o processo, esta divisão é separada em grupos que recebem o nome de páginas. Para os processos esta separação é natural. Da mesma forma, o espaço do endereço físico é separado em grupos que recebem o nome de quadros. O espaço lógico ou página será designado em um quadro, ou seja, em um espaço físico sem se importar com a posição livre na memória principal. Este tipo de relação recebe o nome de tabela de páginas. 69 Memória Virtual O uso de armazenamento externo, como, ampliação da memória principal recebe o nome de memória virtual. Quando a memória RAM não dispõe de local livre para arquivar pedidos de um processo, é utilizado algum algoritmo que retira as informações mais antigas. O algoritmo, então, escolhe algumas informações para serem salvas em outro local que não seja a memória RAM, podendo ser o disco rígido e disponibiliza o espaço que precisa para salvar o que foi requerido pelo processo. Este método recebe o nome de swapping (troca de processo). De acordo com Maziero (2019, p. 164), Para ocultar a organização complexa da memória física e simpli�car os procedimentos de alocação da memória aos processos, os sistemas de computação modernos implementam a noção de memória virtual, na qual existem dois tipos de endereços de memória distintos: endereços físicos (ou reais) são os endereços dos bytes de memória física do computador. Estes endereços são de�nidos pela quantidade de memória disponível na máquina. Endereços lógicos (ou virtuais) são os endereços de memória usados pelos processos e pelo sistema operacional e, portanto, usados pelo processador durante a execução. Estes endereços são de�nidos de acordo com o espaço de endereçamento do processador. 70 Os sistemas operacionais atuais utilizarão a memória virtual paginada. Eles irão retirar páginas da memória principal para um armazenamento externo, o que permitirá que haja mais quadros disponíveis na memória RAM. Os processadores crescem com uma velocidade absurda, isto ocorre com mais velocidade que o tamanho de armazenamento das memórias RAM. Isto faz com que mais processos necessitem de espaço na memória. A memória virtual possibilita a apropriada performance nos computadores atuais. Fonte: A autora, 2021. 71 10 Gerenciamento de Arquivos 72 Gerenciamento de Arquivos As informações que necessitam ser armazenadas por um longo período devem utilizar dispositivos de armazenamento, disco rígido e o DVD-ROM. Estas informações necessitam ser administradas de maneira e�ciente pelo sistema operacional. Estrutura de Armazenamento de Massa Os discos rígidos, os discos óticos, que são os DVD-ROM e CD-ROM, os discos de estado sólido, que são as memórias �ash e USB, são os dispositivos que oferecem uma extensa quantidade de memória secundária. É no disco rígido que a maioria dos sistemas operacionais são instalados. Há também versões que podem ser utilizadas no USB ou no CD-ROM sem precisar ser instaladas, como é o caso do Ubuntu Linux. O disco rígido é o dispositivo que possui determinados grupos de discos que rodam em alta rotação. Nos discos há partições denominadas como setores. É capaz de existir um disco rígido N partições com N sistemas operacionais. A partição chamada de Master Boot Record (MBR) tem como obrigação armazenar uma tabela de partição com os dados das outras partições, bem como o sistema operacional instalado. A MBR é a responsável por conectar a primeira partição 73 quando o computador é ligado e informar quais sistemas operacionais foram instalados. Para instalar o sistema operacional, e este funcionar da maneira correta, é essencial fazer a formatação antes. A formatação corresponde à união dos setores e o sistema operacional. Arquivos e Diretórios Maziero (2019, p. 4) de�ne arquivo como um conjunto de dados armazenados em um dispositivo não volátil, “um aplicativo acessa dados em disco através de arquivos e diretórios, sem precisar se preocupar com a estrutura real de armazenamento dos dados, que podem estar em um disquete, um disco SATA, uma máquina fotográ�ca digital conectada à porta USB, um CD ou mesmo um disco remoto, compartilhado através da rede”. Qualquer arquivo dispõe de um conjunto de características, sendo os mais usados: nome, extensão ou tipo, tamanho, datas, proprietário ou criador, permissões de acesso. Para conhecer essas características usando o sistema operacional Windows, é só clicar com o botão direito em cima de algum arquivo do seu computador e selecionar propriedades. O sistema operacional identi�ca poucos tipos de arquivos. Imagens do tipo .JPG, .GIF são identi�cadas pela maioria dos sistemas operacionais, pois são muito usadas em páginas da internet. Imagem do tipo .PSD, não é reconhecida pelo sistema operacional, portanto, imagem deste tipo só será aberta se o software Photoshop estiver instalado corretamente. 74 Os diretórios têm como função melhorar a estruturação lógica dos arquivos. O sistema operacional ocupa-se de muitos arquivos, contudo, os usuários necessitam de um jeito para juntar as informações e disponibilizá-las de uma maneira ordenada para que as próximas consultas sejam realizadas de maneira simples e rápida. Sistema de Arquivos A organização física e lógica dos arquivos e diretórios recebe o nome de sistema de arquivos. Assim de�ne Maziero (2019, p. 292): “A organização do conteúdo dos arquivos e diretórios dentro de um dispositivo físico é denominada sistema de arquivos”. O usuário pode detectar a organização lógica dos arquivos e diretórios quando tem o sistema operacional instalado. A organização lógica do Windows, como do Linux, usa de um sistema de arquivo próprio, contudo, tem como base as estratégias de alocação de arquivos em memórias de massa. Há vários sistemas de arquivos, os mais utilizados são: NTFS, FAT, HFS+, Ext2 ou Ext3 ou Ext4. As NTFS são para os usuários de Windows que possuem a versão a partir de 2000 (inclui XP, Vista, Windows 7 e Windows 8). A FAT é muito usada em Pen Drives e em versões mais antigas do Windows. A HFS+ é usada por usuários que possuem computadores da marca Apple com sistema operacional MAC OS. A Ext2 ou Ext3 ou Ext4 é usada por usuários que utilizam distribuições Linux. 75 Não se pode confundir as alocações de memória primária
Compartilhar