Sistemas Operacionais: Conceitos e Mecanismos Prof. Carlos A. Maziero DINF - UFPR Catalogação na Fonte: Sistema de Bibliotecas, UFPR Biblioteca de Ciência e Tecnologia M476s Maziero, Carlos Alberto Sistemas operacionais: conceitos e mecanismos [recurso eletrônico] / Carlos Alberto Maziero. – Curitiba : DINF - UFPR, 2019. 456 p. : il.; color. ISBN: 978-85-7335-340-2. (E-book) Inclui bibliografia. 1. Sistemas operacionais (Computadores). 2. Programação de sistemas (Computação). 3. Gerenciamento de memória (Computação). 4. Segurança de sistemas. I. Universidade Federal do Paraná. II. DINF -UFPR. III. Título. CDD: 005.43 Bibliotecária: Vanusa Maciel CRB- 9/1928 SistemasOperacionais: ConceitoseMecanismos (cid:13)c CarlosAlbertoMaziero,2013-2019 ISBN:978-85-7335-340-2 Sobreoautor: CarlosA.MazieroéprofessordoDeptodeInformáticadaUniversidade FederaldoParaná (UFPR)desde2015. Anteriormente,foiprofessordaUniversidade Tecnológica Federal do Paraná (UTFPR), entre 2011 e 2015, professor da Pontifícia UniversidadeCatólicadoParaná(PUCPR),entre1998e2011,eprofessordaUniversidade Federal de Santa Catarina (UFSC), de 1996 a 1998. Formado em Engenharia Elétrica (UFSC, 1988), tem Mestrado em Engenharia Elétrica (UFSC, 1990), Doutorado em Informática (Université de Rennes I - França, 1994) e Pós-Doutorados na Università / degliStudidiMilano–Italia(2009)enoIRISA INRIARennes–França(2018). Atuaem ensino e pesquisa nas áreas de sistemas operacionais, sistemas distribuídos e segurança desistemas. Este texto está licenciado sob a Licença Attribution- NonCommercial-ShareAlike3.0UnporteddaCreativeCommons (CC). Em resumo, você deve creditar a obra da forma es- pecificada pelo autor ou licenciante (mas não de maneira que sugira que estes concedem qualquer aval a você ou ao seu uso da obra). Você não pode usar esta obra para fins comerciais. Se você alterar, transformar ou criar com base nesta obra, você poderá distribuir a obra resultante apenas sob a mesma licença,ousobumalicençasimilaràpresente. Paraverumacópiadestalicença,visite http://creativecommons.org/licenses/by-nc-sa/3.0/. Estetextofoiproduzidousandoexclusivamentesoftwarelivre: SistemaOperacional GNU/Linux(distribuiçõesFedoraeUbuntu),compiladordetexto LATEX2ε,gerenciador de referênciasBibTeX, editorgráficoInkscape, criadores de gráficosGNUPloteGraphViz / eprocessadorPS PDFGhostScript,entreoutros. Algumasfigurasdotextousamícones dehttps://www.creativetail.com edeoutrasfontes,soblicençaCreativeCommons. Versãocompiladaem28dejulhode2020. Prefácio Ossistemasoperacionaissãoelementosfundamentaisparaofuncionamentode praticamente qualquer sistema de computação, dos minúsculos sistemas embarcados etelefonescelularesaosgigantescoscentrosdeprocessamentodedadosdasgrandes empresas. Apesar da imensa diversidade de sistemas operacionais existentes, eles tentam resolver problemas de mesma natureza e seguem basicamente os mesmos princípios. Conhecer sistemas operacionais a fundo não é algo reservado a hackers, mas importanteparatodoprofissionaldecomputação,poisosmecanismosimplementados pelo sistema operacional afetam diretamente o comportamento e o desempenho das aplicações. Além disso, o sistema operacional é uma peça chave na configuração de serviçosderedeenasegurançadosistema. Existemmuitoslivrosdesistemasoperacionaisdisponíveisnomercado,quase todosmuitobons,escritosporprofissionaisreconhecidosmundialmente. Entretanto, bons livros de Sistemas Operacionais podem custar centenas de reais, o que os torna inacessíveisaumaparcelasignificativadapopulação. Estelivroseriaapenasmaisuma opção decompra naslivrarias, não fossepor um pequenodetalhe: foi concebidocomo umLivroAberto,desdeseuinício. UmLivroAberto(doinglêsOpenBook)éumlivro amplamentedisponívelnaInternetemformatodigital,semcusto. Noexterior,muitos openbooksestãotambémdisponíveisnaslivrarias,paraaquisiçãoemformatoimpresso. Eu acredito que “inclusão digital” não significa somente permitir o acesso a computadores à parcela mais pobre da população, mas também desmistificar o funcionamento dessa tecnologia e incentivar seu estudo, para fomentar as próximas gerações detécnicos, engenheirose cientistas, vindasde todasas classes sociais. Nosso paísnão podemais sedarao luxode desperdiçar pessoasinteligentes somente porque sãopobres. Prof. CarlosMaziero,Dr. Agradecimentos Este texto é fruto de alguns anos de trabalho. Embora eu o tenha redigido sozinho,elenuncateriasetornadoumarealidadesemaajudaeoapoiodemuitaspessoas, deváriasformas. Emprimeirolugar,agradeçoàminhafamília,pelasincontáveishoras emquemesubtraídeseuconvívioparamededicaraestetrabalho. Agradeçotambématodososdocenteseestudantesqueutilizaramestematerial, pelasinúmerascorreçõesesugestõesdemelhoria. Emparticular,meusagradecimentosa AlexandreKoutton,AltairSantin,AndréWosniack,AntônioBarros,AntônioGonçalves, CarlosRoland,CarlosSilla,DiogoOlsen,DorgivalGuedes,DouglasdaCosta,Fabiano Beraldo, Francisco Miamoto, Fred Maranhão, Jeferson Amend, Marcos Laureano, Paulo Resende,RafaelHamasaki,RafaelObelheiro,RichardReichardt,SilvanaRossetto,Tadeu Ribeiro Reis, Thayse Solis, Thiago Ferreira, Thiago Vieira, Urlan de Barros e Vagner Sacramento. Desejoexpressarmeumaisprofundorespeitopelosautoresdosgrandesclássicos de Sistemas Operacionais, como Andrew Tanenbaum e Abraham Silberschatz, que iluminaram meus passos nesta área e que seguem como referências inequívocas e incontornáveis. Agradeçoà PontifíciaUniversidadeCatólica doParaná,onde fuiprofessorde Sistemas Operacionais por 13 anos, pelas condições de trabalho que me permitiram dedicar-meaestaempreitada. TambémàUniversidadeTecnológicaFederaldoParaná, ondetrabalheide2011a2015,eàUFPR,ondetrabalhodesde2015,pelasmesmasrazões. Dedico os capítulos sobre segurança computacional deste livro aos colegas docentesepesquisadoresdoDepartamentodeTecnologiasdaInformaçãodaUniversi- dadede MilãoemCrema,onde estiveemum pós-doutoradonoano de2009,com uma / bolsaCAPES MEC.OscapítulossobrevirtualizaçãosãodedicadosàequipeADEPTIRI- / SA INRIA,UniversitédeRennes1-França,naqualpudepassartrêsmesesagradáveis / eprodutivosduranteoinverno2007-08,comoprofessor pesquisadorconvidado. CarlosMaziero CuritibaPR,Abrilde2019 SistemasOperacionais: ConceitoseMecanismos (cid:13)c CarlosMaziero,2019 Sumário Parte I: Introdução 1 1 Conceitosbásicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1 ObjetivosdeumSO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Abstraçãoderecursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Gerênciaderecursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Funcionalidades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Categorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 UmbrevehistóricodosSOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 EstruturadeumSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1 Elementosdosistemaoperacional . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Elementosdehardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Arquiteturadocomputador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Interrupçõeseexceções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Níveisdeprivilégio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 Chamadasdesistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3 ArquiteturasdeSOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.1 Sistemasmonolíticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Sistemasmicronúcleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 Sistemasemcamadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4 Sistemashíbridos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5 Arquiteturasavançadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Máquinasvirtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Contêineres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Sistemasexonúcleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Sistemasuninúcleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Parte II: Gestão de tarefas 39 4 Oconceitodetarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1 Objetivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2 Oconceitodetarefa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3 Agerênciadetarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Sistemasmonotarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Omonitordesistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Sistemasmultitarefas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Sistemasdetempocompartilhado . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4 Ciclodevidadastarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5 Implementaçãodetarefas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.1 Contextos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2 Trocasdecontexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3 Processos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Oconceitodeprocesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Gestãodeprocessos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Hierarquiadeprocessos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.4 Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Definiçãodethread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Modelosdethreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Programandocomthreads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.5 Usodeprocessosversusthreads . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6 Escalonamentodetarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.1 Tiposdetarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.2 Objetivosemétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3 Escalonamentopreemptivoecooperativo . . . . . . . . . . . . . . . . . . . . 72 6.4 Algoritmosdeescalonamentodetarefas. . . . . . . . . . . . . . . . . . . . . 72 First-Come,FirstServed(FCFS) . . . . . . . . . . . . . . . . . . . . . . . . . 73 Round-Robin(RR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 ShortestJobFirst(SJF). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ShortestRemainingTimeFirst(SRTF) . . . . . . . . . . . . . . . . . . . . . . 76 Escalonamentoporprioridadesfixas(PRIOc,PRIOp) . . . . . . . . . . . . . . 77 Escalonamentoporprioridadesdinâmicas(PRIOd). . . . . . . . . . . . . . . . 79 Definiçãodeprioridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Comparaçãoentreosalgoritmosapresentados. . . . . . . . . . . . . . . . . . . 82 Outrosalgoritmosdeescalonamento. . . . . . . . . . . . . . . . . . . . . . . . 82 6.5 Escalonadoresreais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 7 Tópicosemgestãodetarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 7.1 Inversãoeherançadeprioridades . . . . . . . . . . . . . . . . . . . . . . . . 86 Parte III: Interação entre tarefas 91 8 Comunicaçãoentretarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 8.1 Objetivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 8.2 Escopodacomunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.3 Aspectosdacomunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Comunicaçãodiretaouindireta . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Sincronismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Formatodeenvio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Capacidadedoscanais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Confiabilidadedoscanais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Númerodeparticipantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 9 Mecanismosdecomunicação. . . . . . . . . . . . . . . . . . . . . . . . . . . 103 9.1 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 9.2 Filasdemensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 9.3 Memóriacompartilhada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10 Coordenaçãoentretarefas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1 Oproblemadaconcorrência. . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Umaaplicaçãoconcorrente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Condiçõesdedisputa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 CondiçõesdeBernstein. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Seçõescríticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.2 Exclusãomútua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Inibiçãodeinterrupções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Asoluçãotrivial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Alternânciadeuso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 OalgoritmodePeterson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Operaçõesatômicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.3 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 11 Mecanismosdecoordenação . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 11.1 Semáforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 11.2 Mutexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 11.3 Variáveisdecondição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.4 Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 12 Problemasclássicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 / 12.1 Produtores consumidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Soluçãousandosemáforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Soluçãousandovariáveisdecondição . . . . . . . . . . . . . . . . . . . . . . . 135 / 12.2 Leitores escritores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Soluçãosimplista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Soluçãocompriorizaçãodosleitores . . . . . . . . . . . . . . . . . . . . . . . . 138 12.3 Ojantardosselvagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 12.4 Ojantardosfilósofos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 13 Impasses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 13.1 Exemplodeimpasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 13.2 Condiçõesparaimpasses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 13.3 Grafosdealocaçãoderecursos . . . . . . . . . . . . . . . . . . . . . . . . . . 150 13.4 Técnicasdetratamentodeimpasses . . . . . . . . . . . . . . . . . . . . . . . 151 Prevençãodeimpasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Impedimentodeimpasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Detecçãoeresoluçãodeimpasses. . . . . . . . . . . . . . . . . . . . . . . . . . 154 Parte IV: Gestão da memória 159 14 Conceitosbásicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 14.1 Tiposdememória. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 14.2 Amemóriadeumprocesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 14.3 Alocaçãodevariáveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Alocaçãoestática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Alocaçãoautomática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Alocaçãodinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 14.4 Atribuiçãodeendereços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 15 Hardwaredememória. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 15.1 Amemóriafísica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 15.2 Espaçodeendereçamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 15.3 Amemóriavirtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 15.4 Memóriavirtualporpartições. . . . . . . . . . . . . . . . . . . . . . . . . . . 173 15.5 Memóriavirtualporsegmentos. . . . . . . . . . . . . . . . . . . . . . . . . . 175 15.6 Memóriavirtualporpáginas . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Atabeladepáginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Flagsdestatusecontrole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Tabelasmultiníveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Cachedatabeladepáginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 15.7 Segmentosepáginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 15.8 Localidadedereferências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 15.9 Espaçodeendereçamentodeumprocesso. . . . . . . . . . . . . . . . . . . . 189 16 Alocaçãodememória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 16.1 Alocadoresdememória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 16.2 Alocaçãobásica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 16.3 Fragmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Estratégiasdealocação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Desfragmentação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Fragmentaçãointerna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 16.4 OalocadorBuddy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 16.5 OalocadorSlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 16.6 Alocaçãonoespaçodeusuário . . . . . . . . . . . . . . . . . . . . . . . . . . 200 17 Paginaçãoemdisco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 17.1 EstendendoamemóriaRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 17.2 Apaginaçãoemdisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Mecanismobásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Eficiência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Critériosdeseleção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 17.3 Algoritmosclássicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Cadeiadereferências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 AlgoritmoÓtimo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 AlgoritmoFIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 AlgoritmoLRU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 AlgoritmoRANDOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Comparaçãoentrealgoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 17.4 AproximaçõesdoalgoritmoLRU. . . . . . . . . . . . . . . . . . . . . . . . . 213 Algoritmodasegundachance . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 AlgoritmoNRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Algoritmodoenvelhecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 17.5 Conjuntodetrabalho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 17.6 AanomaliadeBelady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 17.7 Thrashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 18 Tópicosemgestãodememória. . . . . . . . . . . . . . . . . . . . . . . . . . 224 18.1 Compartilhamentodememória. . . . . . . . . . . . . . . . . . . . . . . . . . 224 18.2 Copy-on-write(COW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 18.3 Mapeamentodearquivoemmemória . . . . . . . . . . . . . . . . . . . . . . 227 / Parte V: Gestão de entrada saída 230 / 19 Hardwaredeentrada saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 19.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 19.2 Componentesdeumdispositivo . . . . . . . . . . . . . . . . . . . . . . . . . 232 19.3 Barramentosdeacesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 19.4 Interfacedeacesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 19.5 Endereçamentodeportas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 19.6 Interrupções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 / 20 Softwaredeentrada saída. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 20.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 / 20.2 Arquiteturadesoftwaredeentrada saída . . . . . . . . . . . . . . . . . . . . 244 20.3 Classesdedispositivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 20.4 Driversdedispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 20.5 Estratégiasdeinteração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Interaçãocontroladaporprograma. . . . . . . . . . . . . . . . . . . . . . . . . 248 Interaçãocontroladaporeventos. . . . . . . . . . . . . . . . . . . . . . . . . . 250 Acessodiretoàmemória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 20.6 Tratamentodeinterrupções . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 21 Discosrígidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 21.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 21.2 Estruturafísica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 21.3 Interfacedeacesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 21.4 Escalonamentodeacessos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 21.5 SistemasRAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Parte VI: Gestão de arquivos 270 22 Oconceitodearquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 22.1 Elementosbásicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 22.2 Atributoseoperações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 22.3 Formatosdearquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Sequênciadebytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274