<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Ciência da computação - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Ciência da computação - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Thu, 21 May 2026 10:00:11 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/ciencia-da-computacao/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ O que é o sistema de arquivos? Tipos de sistemas de arquivos de computador e como funcionam – explicados com exemplos ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Reza Lavarian É um pouco complicado explicar exatamente o que é um sistema de arquivos em apenas uma frase. É por isso que decidi escrever um artigo sobre isso. Este artigo pretende ser uma visão geral de alto nível sobre sistemas de arquivos. Também examinarei alguns conceitos de ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-que-e-o-sistema-de-arquivos-tipos-de-sistemas-de-arquivos-de-computador-e-como-funcionam-explicados-com-exemplos/</link>
                <guid isPermaLink="false">66fa927d9d6e9804088f0e5e</guid>
                
                    <category>
                        <![CDATA[ Ciência da computação ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 30 Sep 2024 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/pexels-photo-6571015.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/file-systems-architecture-explained/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What Is a File System? Types of Computer File Systems and How they Work – Explained with Examples</a>
      </p><p>Escrito por: Reza Lavarian</p><p>É um pouco complicado explicar exatamente o que é um sistema de arquivos em apenas uma frase.</p><p>É por isso que decidi escrever um artigo sobre isso. Este artigo pretende ser uma visão geral de alto nível sobre sistemas de arquivos. Também examinarei alguns conceitos de mais baixo nível, desde que não fique entediante. 🙂</p><h2 id="o-que-um-sistema-de-arquivos">O que é um sistema de arquivos?</h2><p>Vamos começar com uma definição simples:</p><p>Um <strong>sistema de arquivos</strong> define como os arquivos são <strong>nomeados</strong>, <strong>armazenados</strong> e <strong>recuperados</strong> em um dispositivo de armazenamento.</p><p>Toda vez que você abre um arquivo em seu computador ou dispositivo inteligente, seu sistema operacional usa seu sistema de arquivos internamente para carregá-lo do dispositivo de armazenamento.</p><p>Quando você copia, edita ou exclui um arquivo, é o sistema de arquivos que lida com isso nos bastidores.</p><p>Sempre que você faz o download de um arquivo ou acessa uma página da web na Internet, um sistema de arquivos está envolvido também.</p><p>Por exemplo, se você acessar uma página no <a href="https://www.freecodecamp.org/">freeCodeCamp</a>, seu navegador envia uma <a href="https://www.decodingweb.dev/books/decoding-web-development/http">solicitação HTTP</a> (texto em inglês) ao servidor do freeCodeCamp para buscar a página. Se o recurso solicitado for um arquivo, ele é buscado de um sistema de arquivos.</p><p>Quando as pessoas falam em sistemas de arquivos, elas podem estar se referindo a diferentes aspectos de um sistema de arquivos dependendo do contexto – é aí que as coisas começam a parecer complicadas.</p><p>Você pode acabar se perguntando: O QUE É UM SISTEMA DE ARQUIVOS AFINAL? 🤯</p><p>Este guia ajudará você a entender sistemas de arquivos em muitos contextos. Também abordarei particionamento e inicialização!</p><p>Para manter este guia gerenciável, vou me concentrar em ambientes semelhantes ao Unix ao explicar os conceitos de baixo nível ou comandos de console.</p><p>No entanto, esses conceitos permanecem relevantes para outros ambientes e sistemas de arquivos.</p><h3 id="por-que-precisamos-de-um-sistema-de-arquivos-afinal-de-contas">Por que precisamos de um sistema de arquivos, afinal de contas?</h3><p>Bem, sem um sistema de arquivos, o dispositivo de armazenamento conteria um grande bloco de dados armazenados consecutivamente. O sistema operacional não seria capaz de distingui-los.</p><p>O termo sistema de arquivos vem dos antigos sistemas de gerenciamento de dados baseados em papel, onde mantínhamos documentos como arquivos e os colocávamos em diretórios.</p><p>Imagine uma sala com pilhas de papéis espalhados por todo o lugar.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/pexels-photo-6571015-1.jpg" class="kg-image" alt="pexels-photo-6571015-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/pexels-photo-6571015-1.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/pexels-photo-6571015-1.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/pexels-photo-6571015-1.jpg 1600w" sizes="(min-width: 720px) 720px" width="1600" height="1066" loading="lazy"></figure><p>Um dispositivo de armazenamento sem um sistema de arquivos estaria na mesma situação – e seria um dispositivo eletrônico inútil.</p><p>No entanto, um sistema de arquivos muda tudo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/pexels-photo-6571015-2.jpg" class="kg-image" alt="pexels-photo-6571015-2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/pexels-photo-6571015-2.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/pexels-photo-6571015-2.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/pexels-photo-6571015-2.jpg 1600w" sizes="(min-width: 720px) 720px" width="1600" height="1066" loading="lazy"></figure><p>Um sistema de arquivos não é apenas uma função de contagem, no entanto.</p><p>Gerenciamento de espaço, metadados, criptografia de dados, controle de acesso a arquivos e integridade dos dados também são responsabilidades do sistema de arquivos.</p><h2 id="tudo-come-a-com-o-particionamento">Tudo começa com o particionamento</h2><p>Os dispositivos de armazenamento devem ser <strong>particionados</strong> e <strong>formatados</strong> antes de serem usados pela primeira vez.</p><p>O que é particionamento?</p><p>Particionamento é a divisão de um dispositivo de armazenamento em várias <em>regiões lógicas</em> para que possam ser gerenciadas separadamente como se fossem dispositivos de armazenamento separados.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/partitions.jpg" class="kg-image" alt="partitions" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/partitions.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/partitions.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/partitions.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/partitions.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="700" loading="lazy"></figure><p>Geralmente, fazemos o particionamento com uma ferramenta de gerenciamento de disco fornecida pelos sistemas operacionais ou com uma ferramenta de linha de comando fornecida pelo <em>firmware </em>do sistema (explicarei o que é <em>firmware</em> mais tarde).</p><p>Um dispositivo de armazenamento deve ter, pelo menos, uma partição – ou mais de uma, se necessário.</p><p>Por que devemos dividir os dispositivos de armazenamento em várias partições, afinal?</p><p>A razão é que não queremos gerenciar todo o espaço de armazenamento como uma única unidade e para um único propósito.</p><p>É semelhante ao modo como particionamos nosso espaço de trabalho, para separar (e isolar) salas de reunião, salas de conferência e várias equipes.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/office-space.jpeg" class="kg-image" alt="office-space" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/office-space.jpeg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/office-space.jpeg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/office-space.jpeg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/office-space.jpeg 2247w" sizes="(min-width: 720px) 720px" width="2247" height="1500" loading="lazy"></figure><p>Por exemplo, uma instalação básica do Linux tem três partições: uma partição dedicada ao sistema operacional, uma para os arquivos dos usuários e uma partição de <em>swap </em>opcional.</p><p>Uma partição de <em>swap </em>funciona como uma extensão da RAM quando a RAM fica sem espaço.</p><p>Por exemplo, o sistema operacional pode mover um trecho de dados (temporariamente) da RAM para a partição de <em>swap</em> para liberar algum espaço na RAM.</p><p>Os sistemas operacionais continuamente utilizam várias técnicas de <a href="https://www.decodingweb.dev/books/processing-fundamentals/operating-systems-and-memory-management">gerenciamento de memória</a> (texto em inglês) para garantir que cada processo tenha espaço de memória suficiente para funcionar.</p><p>Os sistemas de arquivos no Windows e do Mac têm um layout semelhante, mas não usam uma partição de <em>swap </em>dedicada; Em vez disso, eles gerenciam a troca dentro da partição onde você instalou seu sistema operacional.</p><p>Em um computador com várias partições, você pode instalar vários sistemas operacionais e, quando quiser, escolher um sistema operacional diferente para inicializar seu sistema.</p><p>As utilidades de recuperação e diagnóstico residem em partições dedicadas também.</p><p>Por exemplo, para inicializar um MacBook no modo de recuperação, você precisa segurar <code>Command + R</code> assim que reiniciar (ou ligar) seu MacBook. Fazendo isso, você instrui o <em>firmware </em>do sistema a inicializar com uma partição que contém o programa de recuperação.</p><p>O particionamento não é apenas uma maneira de instalar diversos sistemas operacionais e ferramentas, no entanto. Ele também nos ajuda a manter os arquivos críticos do sistema separados dos arquivos comuns.</p><p>De volta ao exemplo do escritório, ter um <em>call center</em> e uma equipe técnica em uma área comum prejudicaria a produtividade das duas equipes, pois cada equipe tem suas próprias necessidades para ser eficiente.</p><p>Por exemplo, a equipe técnica apreciaria um ambiente mais silencioso.</p><p>Alguns sistemas operacionais, como o Windows, atribuem uma letra de unidade (A, B, C ou D) às partições. Por exemplo, a <em>partição primária</em> no Windows (na qual o Windows está instalado) é conhecida como <strong>C</strong>:, ou <strong>unidade C</strong>.</p><p>Em sistemas operacionais semelhantes ao Unix, no entanto, as partições aparecem como diretórios comuns sob o diretório raiz – abordaremos isso mais tarde.</p><p>Na próxima seção, vamos nos aprofundar no particionamento e conhecer dois conceitos que mudarão sua perspectiva sobre sistemas de arquivos: <strong><em>firmware </em>do sistema</strong> e <strong><em>boot</em></strong>.</p><p>Está pronto?</p><p>Vamos lá! 🏊‍♂️</p><h2 id="esquemas-de-particionamento-firmware-de-sistema-e-boot">Esquemas de particionamento, <em>firmware</em> de sistema e <em>boot</em></h2><p>Ao particionar um dispositivo de armazenamento, temos dois métodos de particionamento (ou esquemas 🙄) para escolher:</p><ul><li><strong>Esquema Master Boot Record (MBR)</strong></li><li><strong>Esquema GUID Partition Table (GPT)</strong></li></ul><p>Independentemente do esquema de particionamento que você escolher, os primeiros blocos no dispositivo de armazenamento sempre conterão dados críticos sobre suas partições.</p><p>O <em>firmware</em> do sistema usa essas estruturas de dados para inicializar o sistema operacional em uma partição.</p><p>Espere, mas o que é <em>firmware</em> do sistema, você pode perguntar.</p><p>Aqui está uma explicação:</p><p>Um <em>firmware </em>é um software de baixo nível embutido em dispositivos eletrônicos para operar o dispositivo ou iniciar outro programa para fazer isso.</p><p>O <em>firmware</em> existe em computadores, periféricos (teclados, mouses e impressoras) ou até mesmo em eletrodomésticos e eletrônicos.</p><p>Nos computadores, o <em>firmware</em> fornece uma interface padrão para um <em>software</em> complexo como o sistema operacional fazer a inicialização e trabalhar com os componentes de <em>hardware</em>.</p><p>No entanto, em sistemas mais simples como uma impressora, o <em>firmware</em> é o sistema operacional. O menu que você usa na sua impressora é a interface do <em>firmware</em> dela.</p><p>Os fabricantes de <em>hardware</em> fazem <em>firmware</em> com base em duas especificações:</p><ul><li><strong><em>Basic Input/Output</em> (BIOS)</strong></li><li><strong><em>Unified Extensible Firmware Interface</em> (UEFI)</strong></li></ul><p><em>Firmwares</em> – baseados em BIOS ou UEFI – residem em uma <em>memória não volátil</em>, como uma ROM <em>flash</em> anexada à placa-mãe.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/02/5794340306_caef1e6960_b.jpg" class="kg-image" alt="Image" width="600" height="400" loading="lazy"><figcaption><em><a href="https://www.flickr.com/photos/computerhotline/5794340306">CC BY 2.0</a> BIOS, por <a href="https://www.flickr.com/photos/computerhotline/">Thomas Bresson</a>, licenciado pela <a href="https://creativecommons.org/licenses/by/2.0/">Creative Commons</a></em></figcaption></figure><p>Quando você pressiona o botão de energia do seu computador, o <em>firmware</em> é o primeiro programa a ser executado.</p><p>A missão do <em>firmware</em> (entre outras coisas) é inicializar o computador, executar o sistema operacional e passar o controle do sistema inteiro para ele.</p><p>Um <em>firmware</em> também executa ambientes anteriores ao sistema operacional (com suporte de rede), como ferramentas de recuperação ou diagnósticas, ou até mesmo um <em>shell</em> para executar comandos baseados em texto.</p><p>As primeiras telas que você vê antes de o logotipo do Windows aparecer são a saída do <em>firmware </em>do seu computador, verificando a integridade dos componentes de hardware e da memória.</p><p>A verificação inicial é confirmada com um bip (geralmente, em PCs), indicando que está tudo certo para prosseguir.</p><h2 id="particionamento-mbr-e-firmware-baseado-em-bios">Particionamento MBR e <em>firmware</em> baseado em BIOS</h2><p>O esquema de particionamento MBR faz parte das especificações do BIOS e é usado por <em>firmware</em> baseado em BIOS.</p><p>Em discos particionados com MBR, o primeiro setor no dispositivo de armazenamento contém dados essenciais para inicializar o sistema.</p><p>Esse setor é chamado de MBR.</p><p>O MBR contém as seguintes informações:</p><ul><li>O carregador de <em>boot </em>(em português, inicialização), que é um <strong>programa simples</strong> (em código de máquina) para iniciar a primeira etapa do processo de <em>boot</em></li><li>Uma <strong>tabela de partição</strong>, que contém informações sobre suas partições.</li></ul><p>O <em>firmware</em> baseado em BIOS inicializa o sistema de maneira diferente do firmware baseado em UEFI.</p><p>Veja como funciona:</p><p>Uma vez que o sistema é ligado, o <em>firmware</em> do BIOS começa e carrega o programa de carregamento de <em>boot</em> (contido no MBR) na memória. Uma vez que o programa está na memória, a CPU começa a executá-lo.</p><p>Ter o carregador de <em>boot </em>e a tabela de partição em um local predefinido como o MBR permite que o BIOS inicialize o sistema sem precisar lidar com qualquer arquivo.</p><p>Se você está curioso sobre como a CPU executa as instruções que residem na memória, você pode ler este guia amigável para iniciantes e divertido <a href="https://www.decodingweb.dev/books/processing-fundamentals/how-cpu-works">sobre como a CPU funciona</a> (texto em inglês).</p><p>O código do carregador de <em>boot</em> no MBR ocupa entre 434 bytes a 446 bytes do espaço do MBR (de um total de 512b). Além disso, 64 bytes são alocados para a tabela de partição, que pode conter informações de até quatro partições.</p><p>446 bytes não é suficiente para acomodar muito código, no entanto. Dito isso, carregadores de <em>boot </em>sofisticados como o <em>GRUB 2</em> no Linux dividem sua funcionalidade em partes ou etapas.</p><p>A menor parte do código, conhecida como <em>carregador de boot de primeira etapa</em>, é armazenada no MBR. É geralmente um programa simples, que não requer muito espaço.</p><p>A responsabilidade do carregador de <em>boot </em>de primeira etapa é iniciar as próximas etapas (mais complicadas) do processo de <em>boot</em>.</p><p>Imediatamente após o MBR e antes da primeira partição começar, há um pequeno espaço, cerca de 1MB, chamado de <strong><em>gap </em>do MBR</strong>.</p><p>O <em>gap </em>do MBR pode ser usado para colocar outra parte do programa de carregamento de <em>boot</em>, se necessário.</p><p>O <em>stage 1.5 </em>permite que os próximos estágios do GRUB compreendam o conceito de arquivos, em vez de carregar instruções brutas do dispositivo de armazenamento (como o carregador de <em>boot </em>de primeiro estágio).</p><p>O carregador de <em>boot </em>de segundo estágio, que agora é capaz de trabalhar com arquivos, pode carregar o arquivo do carregador de <em>boot </em>do sistema operacional para inicializar o respectivo sistema operacional.</p><p>É quando o logotipo do sistema operacional aparece...</p><p>Aqui está o layout de um dispositivo de armazenamento com partição MBR:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/mbr-partition.jpg" class="kg-image" alt="mbr-partition" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/mbr-partition.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/mbr-partition.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/mbr-partition.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/mbr-partition.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="800" loading="lazy"></figure><p>VIsto por dentro, o conteúdo do MBR teria esta aparência:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/mbr.jpg" class="kg-image" alt="mbr" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/mbr.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/mbr.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/mbr.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/mbr.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="800" loading="lazy"></figure><p>Embora o MBR seja simples e amplamente suportado, ele tem algumas limitações 😑.</p><p>A estrutura de dados do MBR limita o número de partições a apenas <em>quatro partições primárias</em>.</p><p>Uma solução comum é fazer uma partição <em>estendida</em> ao lado das partições primárias, desde que o número total de partições não exceda quatro.</p><p>Uma partição estendida pode ser dividida em várias <em>partições lógicas</em>. Fazer partições estendidas é diferente em cada sistema operacional. Neste guia rápido, <a href="https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/configure-more-than-four-partitions-on-a-biosmbr-based-hard-disk?view=windows-11">a Microsoft explica como deve ser feito no Windows</a> (texto em inglês).</p><p>Ao fazer uma partição, você pode escolher entre primária e estendida.</p><p>Depois que isso é resolvido, encontramos a segunda limitação.</p><p>Cada partição pode ter no máximo <strong>2TB</strong> 🙄.</p><p>Espere, tem mais!</p><p>O conteúdo do setor MBR não tem <em>back-up</em> 😱, o que significa que, se o MBR for corrompido por alguma razão inesperada, teremos que encontrar uma maneira de reciclar aquele pedaço inútil de <em>hardware</em>.</p><p>É aqui que o particionamento GPT se destaca 😎.</p><h2 id="particionamento-gpt-e-firmware-baseado-em-uefi">Particionamento GPT e <em>firmware</em> baseado em UEFI</h2><p>O esquema de particionamento <strong>GPT</strong> é mais sofisticado que o MBR e não possui as limitações do MBR.</p><p>Por exemplo, você pode ter tantas partições quantas seu sistema operacional permitir.</p><p>Cada partição pode ter o tamanho do maior dispositivo de armazenamento disponível no mercado – na verdade, muito mais.</p><p>O GPT está gradualmente substituindo o MBR, embora o MBR ainda seja amplamente suportado em PCs antigos e novos.</p><p>Como mencionado anteriormente, o GPT é uma parte da especificação UEFI, que está substituindo o bom e velho BIOS.</p><p>Isso significa que o <em>firmware</em> baseado em UEFI usa um dispositivo de armazenamento particionado com GPT para manejar o processo de <em>boot</em>.</p><p>Muitos <em>hardwares</em> e sistemas operacionais agora suportam UEFI e usam o esquema GPT para particionar dispositivos de armazenamento.</p><p>No esquema de particionamento GPT, o primeiro setor do dispositivo de armazenamento é reservado por razões de compatibilidade com sistemas baseados em BIOS. O motivo é que alguns sistemas ainda podem usar um <em>firmware</em> baseado em BIOS, mas têm um dispositivo de armazenamento particionado com GPT.</p><p>Este setor é chamado de <strong>MBR protetivo</strong> (é aqui que o carregador de <em>boot</em> de primeiro estágio residiria em um disco particionado com MBR).</p><p>Depois desse primeiro setor, são armazenadas as estruturas de dados GPT, incluindo o <strong>cabeçalho GPT</strong> e as <strong>entradas de partição</strong>.</p><p>É feito o <em>back-up</em> das entradas GPT e o cabeçalho GPT no final do dispositivo de armazenamento, para que possam ser recuperados se a cópia principal for corrompida.</p><p>Esse <em>back-up</em> é chamado de <strong>GPT Secundário.</strong></p><p>O layout de um dispositivo de armazenamento particionado com GPT se parece com isso:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/GUID_Partition_Table_Scheme.svg" class="kg-image" alt="GUID_Partition_Table_Scheme" width="400" height="550" loading="lazy"><figcaption><strong><a href="https://commons.wikimedia.org/wiki/File:GUID_Partition_Table_Scheme.svg">CC BY-SA 2.5</a> – Esquema da Tabela de Partição GUID,</strong> por <a href="https://en.wikipedia.org/wiki/User:Kbolino">Kbolino</a>, Licenciado sob a <a href="https://creativecommons.org/licenses/by-sa/2.5/">Creative Commons</a></figcaption></figure><p>No GPT, todos os serviços de <em>boot</em> (carregadores de <em>boot</em>, gerenciadores de <em>boot</em>, ambientes anteriores ao sistema operacional e <em>shells</em>) vivem em uma partição dedicada chamada <strong>partição de sistema EFI (ESP)</strong>, que o <em>firmware</em> UEFI pode usar.</p><p>A ESP até tem seu próprio sistema de arquivos, que é uma versão específica do <strong>FAT</strong>. No Linux, a ESP reside no caminho <code>/sys/firmware/efi</code>.</p><p>Se esse caminho não puder ser encontrado em seu sistema, então seu <em>firmware </em>é provavelmente baseado em BIOS.</p><p>Para verificar, você pode tentar mudar o diretório para o ponto de montagem do ESP, assim:</p><pre><code>cd /sys/firmware/efi
</code></pre><p>O firmware baseado em UEFI assume que o dispositivo de armazenamento está particionado com GPT e procura o ESP na tabela de partições GPT.</p><p>Uma vez encontrada a partição EFI, ele procura o carregador de <em>boot </em>configurado – geralmente, um arquivo com a terminação <code>.efi</code>.</p><p>O <em>firmware </em>baseado em UEFI obtém a configuração de <em>boot </em>de <strong>NVRAM</strong> (uma RAM não volátil).</p><p>A NVRAM contém as configurações de <em>boot </em>e os caminhos para os arquivos do carregador de <em>boot </em>do sistema operacional.</p><p>O <em>firmware </em>UEFI também pode fazer um <em>boot </em>no estilo BIOS (para inicializar o sistema a partir de um disco MBR) se configurado adequadamente.</p><p>Você pode usar o comando <code>parted</code> no Linux para ver qual esquema de particionamento é usado para um dispositivo de armazenamento.</p><pre><code>sudo parted -l
</code></pre><p>A saída seria algo assim:</p><pre><code>Model: Virtio Block Device (virtblk)
Disk /dev/vda: 172GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
14      1049kB  5243kB  4194kB                     bios_grub
15      5243kB  116MB   111MB   fat32              msftdata
 1      116MB   172GB   172GB   ext4
</code></pre><p>Com base na saída acima, o ID do dispositivo de armazenamento é <code>/dev/vda</code> com uma capacidade de 172GB. O dispositivo de armazenamento está particionado com base no GPT e possui três partições; a segunda e a terceira partições estão formatadas com base nos sistemas de arquivos FAT32 e EXT4, respectivamente.</p><p>Vamos confirmar isso com o comando <code>dmidecode</code> da seguinte maneira:</p><pre><code>sudo dmidecode -t 0
</code></pre><p>A saída seria:</p><pre><code># dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

...
</code></pre><p>✅ Confirmado!</p><h2 id="formatando-parti-es">Formatando partições</h2><p>Quando o particionamento é concluído, as partições devem ser <strong>formatadas</strong>.</p><p>A maioria dos sistemas operacionais permite que você formate uma partição com base em um conjunto de sistemas de arquivos.</p><p>Por exemplo, se você estiver formatando uma partição no Windows, você pode escolher entre os sistemas de arquivos <strong>FAT32</strong>, <strong>NTFS</strong> e <strong>exFAT</strong>.</p><p>A formatação envolve a criação de várias <strong>estruturas de dados</strong> e metadados usados para gerenciar arquivos dentro de uma partição.</p><p>Essas estruturas de dados são um aspecto de um sistema de arquivos.</p><p>Vamos usar o sistema de arquivos NTFS como exemplo.</p><p>Quando você formata uma partição para NTFS, o processo de formatação coloca as principais estruturas de dados do NTFS e a <strong>Tabela Mestra de Arquivos (MFT)</strong> na partição.</p><p>Certo, vamos voltar aos sistemas de arquivos com nosso novo entendimento sobre particionamento, formatação e <em>boot</em>.</p><h2 id="como-come-ou-como-est-indo">Como começou, como está indo</h2><p>Um sistema de arquivos é um conjunto de estruturas de dados, interfaces, abstrações e APIs que trabalham juntos para gerenciar qualquer tipo de arquivo em qualquer tipo de dispositivo de armazenamento, de maneira consistente.</p><p>Cada sistema operacional usa um sistema de arquivos particular para gerenciar os arquivos.</p><p>Nos primeiros dias, a Microsoft usava <strong>FAT</strong> (FAT12, FAT16 e FAT32) na família <strong>MS-DOS</strong> e <strong>Windows 9x</strong>.</p><p>A partir do Windows <strong>NT 3.1</strong>, a Microsoft desenvolveu o <strong>New Technology File System (NTFS)</strong>, que possuía muitas vantagens sobre o FAT32, como suporte a arquivos maiores, permissão de nomes de arquivos mais longos, criptografia de dados, gerenciamento de acesso, <em>journaling</em>, e muito mais.</p><p>O NTFS tem sido o sistema de arquivos padrão da família Windows NT (2000, XP, Vista, 7, 10, etc.) desde então.</p><p>No entanto, NTFS não é adequado para ambientes que não sejam Windows 🤷🏻.</p><p>Por exemplo, você pode <strong>apenas ler</strong> o conteúdo de um dispositivo de armazenamento formatado em NTFS (como memória <em>flash</em>) em um Mac OS, mas você não poderá escrever nada nele – a menos que você instale um <a href="https://www.howtogeek.com/236055/how-to-write-to-ntfs-drives-on-a-mac/">driver NTFS com suporte a gravação</a> (texto em inglês).</p><p>Você pode simplesmente usar o sistema de arquivos <strong>exFat</strong>, em vez disso.</p><p><strong>Extended File Allocation Table (exFAT)</strong> é uma versão mais leve do NTFS criada pela Microsoft em 2006.</p><p>O exFAT foi projetado para dispositivos removíveis de alta capacidade, como discos rígidos externos, pen drives e cartões de memória.</p><p>O exFAT é o sistema de arquivos padrão usado pelos cartões <strong>SDXC</strong>.</p><p>Diferentemente do NTFS, o exFAT possui suporte para <strong>leitura e gravação</strong> em ambientes que não sejam Windows também, incluindo Mac OS — tornando-o o melhor sistema de arquivos multiplataforma para dispositivos de armazenamento removíveis de alta capacidade.</p><p>Basicamente, se você tem um disco removível que deseja usar no Windows, Mac e Linux, você precisa formatá-lo para exFAT.</p><p>A Apple também desenvolveu e usou vários sistemas de arquivos ao longo dos anos, incluindo <strong>Hierarchical File System (HFS)</strong>, <strong>HFS+</strong> e, recentemente, <strong>Apple File System (APFS)</strong>.</p><p>Assim como o NTFS, o APFS é um sistema de arquivos com <em>journaling</em> e tem sido usado desde o lançamento do <strong>OS X High Sierra</strong> em 2017.</p><p>O que ocorre, porém, com os sistemas de arquivos nas distribuições Linux?</p><p>A família de sistemas de arquivos <strong>Extended File System (ext)</strong> foi criada para o kernel do Linux – o núcleo do sistema operacional Linux.</p><p>A primeira versão do <strong>ext</strong> foi lançada em 1991, mas logo foi substituída pelo <strong>segundo sistema de arquivos estendido (ext2)</strong> em 1993.</p><p>Nos anos 2000, o <strong>terceiro sistema de arquivos estendido (ext3)</strong> e o <strong>quarto sistema de arquivos estendido (ext4)</strong> foram desenvolvidos para o Linux com capacidade de <em>journaling</em>.</p><p>O <strong>ext4</strong> é agora o sistema de arquivos padrão em muitas distribuições Linux, incluindo <a href="https://pt.wikipedia.org/wiki/Debian">Debian</a> e <a href="https://pt.wikipedia.org/wiki/Ubuntu_(sistema_operacional)">Ubuntu</a>.</p><p>Você pode usar o comando <code>findmnt</code> no Linux para listar suas partições formatadas em ext4:</p><pre><code>findmnt -lo source,target,fstype,used -t ext4
</code></pre><p>A saída seria algo assim:</p><pre><code>SOURCE    TARGET FSTYPE  USED
/dev/vda1 /      ext4    3.6G
</code></pre><h2 id="arquitetura-de-sistemas-de-arquivos">Arquitetura de sistemas de arquivos</h2><p>Um sistema de arquivos instalado em um sistema operacional consiste em três camadas:</p><ul><li><strong>Sistema de arquivos físico</strong></li><li><strong>Sistema de arquivos virtual</strong></li><li><strong>Sistema de arquivos lógico</strong></li></ul><p>Essas camadas podem ser implementadas como abstrações independentes ou fortemente acopladas.</p><p>Quando as pessoas falam sobre sistemas de arquivos, elas se referem a uma dessas camadas ou a todas as três como uma unidade.</p><p>Embora essas camadas sejam diferentes entre os sistemas operacionais, o conceito é o mesmo.</p><p>A camada física é a implementação concreta de um sistema de arquivos. Ela é responsável pelo armazenamento e recuperação de dados e gerenciamento de espaço no dispositivo de armazenamento (ou mais precisamente: partições).</p><p>O sistema de arquivos físico interage com o hardware de armazenamento por meio de <a href="https://www.decodingweb.dev/books/processing-fundamentals/how-a-computer-program-works#device-drivers">drivers de dispositivos</a> (texto em inglês).</p><p>A próxima camada é o sistema de arquivos virtual ou <strong>VFS</strong>.</p><p>O sistema de arquivos virtual fornece uma <strong>visão consistente</strong> de vários sistemas de arquivos montados no mesmo sistema operacional.</p><p>Então, isso significa que um sistema operacional pode usar vários sistemas de arquivos ao mesmo tempo?</p><p>A resposta é: sim!</p><p>É comum que um meio de armazenamento removível tenha um sistema de arquivos diferente do computador.</p><p>Por exemplo, no Windows (que usa NTFS como sistema de arquivos principal), uma memória <em>flash </em>pode ter sido formatada para exFAT ou FAT32.</p><p>Dito isso, o sistema operacional deve fornecer uma <strong>interface unificada</strong> entre programas de computador (exploradores de arquivos e outros aplicativos que trabalham com arquivos) e os diferentes sistemas de arquivos montados (como NTFS, APFS, ext4, FAT32, exFAT e UDF).</p><p>Esta camada conveniente entre o usuário (você) e os sistemas de arquivos subjacentes é fornecida pelo VFS.</p><p>Um VFS define um <em>contrato</em> que todos os sistemas de arquivos físicos devem implementar para serem suportados por esse sistema operacional.</p><p>No entanto, essa conformidade não está embutida no núcleo do sistema de arquivos, o que significa que o código-fonte de um sistema de arquivos não inclui suporte para o VFS de todos os sistemas operacionais.</p><p>Em vez disso, ele usa um <strong>driver de sistema de arquivos</strong> para aderir às regras do VFS de cada sistema de arquivos. Um driver é um programa que permite que um <em>software </em>se comunique com outro <em>software</em> ou <em>hardware</em>.</p><p>Embora o VFS seja responsável por fornecer uma interface padrão entre programas e diversos sistemas de arquivos, programas de computador não interagem diretamente com o VFS.</p><p>Em vez disso, eles usam uma API unificada entre programas e o VFS.</p><p>Consegue adivinhar o que é?</p><p>Sim, estamos falando do <strong>sistema de arquivos lógico</strong>.</p><p>O sistema de arquivos lógico é a parte visível ao usuário de um sistema de arquivos, que fornece uma API para permitir que programas de usuários realizem várias operações de arquivos, como <code>OPEN</code>, <code>READ</code> e <code>WRITE</code>, sem precisar lidar com nenhum <em>hardware </em>de armazenamento.</p><p>Por outro lado, o VFS fornece uma ponte entre a camada lógica (com a qual os programas interagem) e um conjunto da camada física de vários sistemas de arquivos.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/filesystem-1.jpg" class="kg-image" alt="filesystem-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/filesystem-1.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/filesystem-1.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/filesystem-1.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/filesystem-1.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="1137" loading="lazy"><figcaption><em>Uma arquitetura de alto nível das camadas do sistema de arquivos</em></figcaption></figure><h3 id="o-que-significa-montar-um-sistema-de-arquivos">O que significa montar um sistema de arquivos?</h3><p>Em sistemas do tipo Unix, o VFS atribui um <strong>ID do dispositivo</strong> (por exemplo, <code>dev/disk1s1</code>) a cada partição ou dispositivo de armazenamento removível.</p><p>Depois, ele cria uma <strong>árvore de diretórios virtual</strong> e coloca o conteúdo de cada dispositivo nessa árvore de diretórios como diretórios separados.</p><p>O ato de atribuir um diretório a um dispositivo de armazenamento (sob a árvore de diretórios raiz) é chamado de <strong>montagem</strong>. O diretório atribuído é chamado de <strong>ponto de montagem</strong>.</p><p>Dito isso, em um sistema operacional semelhante ao Unix, todas as partições e dispositivos de armazenamento removíveis aparecem como se fossem diretórios sob o diretório raiz.</p><p>Por exemplo, no Linux, os pontos de montagem para um dispositivo removível (como um cartão de memória), geralmente estão sob o diretório <code>/media</code>.</p><p>Uma vez que uma memória <em>flash </em>é conectada ao sistema e, consequentemente, <em>montada automaticamente</em> no ponto de montagem padrão (<code>/media</code>, nesse caso), seu conteúdo estaria disponível sob o diretório <code>/media</code>.</p><p>No entanto, há momentos em que você precisa montar um sistema de arquivos manualmente.</p><p>No Linux, isso é feito assim:</p><pre><code>mount /dev/disk1s1 /media/usb
</code></pre><p>No comando acima, o primeiro parâmetro é o ID do dispositivo (<code>/dev/disk1s1</code>), e o segundo parâmetro (<code>/media/usb</code>) é o ponto de montagem.</p><p>Observe que o ponto de montagem já deve existir como um diretório.</p><p>Se não existir, ele deve ser criado primeiro:</p><pre><code>mkdir -p /media/usb
mount /dev/disk1s1 /media/usb
</code></pre><p>Se o diretório do ponto de montagem já contiver arquivos, esses arquivos serão ocultados enquanto o dispositivo estiver montado.</p><h2 id="metadados-de-arquivos">Metadados de arquivos</h2><p>Metadados de arquivo são uma estrutura de dados que contém <strong>dados sobre um arquivo</strong>, como:</p><ul><li>Tamanho do arquivo</li><li><em>Timestamps</em>, como data de criação, última data de acesso e data de modificação</li><li>O proprietário do arquivo</li><li>O modo do arquivo (quem pode fazer o que com o arquivo)</li><li>Que blocos na partição estão alocados ao arquivo</li><li>e muito mais</li></ul><p>No entanto, os metadados não são armazenados com o conteúdo do arquivo. Em vez disso, eles são armazenados em um local diferente no disco – mas associados ao arquivo.</p><p>Em sistemas do tipo Unix, os metadados estão na forma de estruturas de dados, chamadas de <strong>inode</strong>.</p><p>Inodes são identificados por um número único chamado <em>número de inode.</em></p><p>Inodes estão associados a arquivos em uma tabela chamada <em>tabelas de inodes</em>.</p><p>Cada arquivo no dispositivo de armazenamento tem um inode, que contém informações sobre ele, como a hora em que foi criado, modificado etc.</p><p>O inode também inclui o endereço dos blocos alocados ao arquivo; por outro lado, onde exatamente ele está localizado no dispositivo de armazenamento.</p><p>Em um inode ext4, o endereço dos blocos alocados é armazenado como um conjunto de estruturas de dados chamadas <strong><em>extents</em></strong> (dentro do inode).</p><p>Cada <em>extent</em> contém o endereço do <em>primeiro bloco de dados</em> alocado ao arquivo e o número de <em>blocos contínuos</em> que o arquivo ocupou.</p><p>Sempre que você abre um arquivo no Linux, seu nome é primeiro resolvido para um número de inode.</p><p>Com o número de inode, o sistema de arquivos busca o respectivo inode na tabela de inodes.</p><p>Uma vez que o inode é buscado, o sistema de arquivos começa a compor o arquivo dos blocos de dados registrados no inode.</p><p>Você pode usar o comando <code>df</code> com o parâmetro <code>-i</code> no Linux para ver os inodes (total, usados e livres) em suas partições:</p><pre><code>df -i
</code></pre><p>A saída seria assim:</p><pre><code>udev           4116100    378 4115722    1% /dev
tmpfs          4118422    528 4117894    1% /run
/dev/vda1      6451200 175101 6276099    3% /
</code></pre><p>Como você pode ver, a partição <code>/dev/vda1</code> tem um número total de 6.451.200 inodes, dos quais 3% foram usados (175.101 inodes).</p><p>Para ver os inodes associados aos arquivos em um diretório, você pode usar o comando <code>ls</code> com os parâmetros <code>-il</code>.</p><pre><code>ls -li
</code></pre><p>A saída seria:</p><pre><code>1303834 -rw-r--r--  1 root www-data  2502 Jul  8  2019 wp-links-opml.php
1303835 -rw-r--r--  1 root www-data  3306 Jul  8  2019 wp-load.php
1303836 -rw-r--r--  1 root www-data 39551 Jul  8  2019 wp-login.php
1303837 -rw-r--r--  1 root www-data  8403 Jul  8  2019 wp-mail.php
1303838 -rw-r--r--  1 root www-data 18962 Jul  8  2019 wp-settings.php
</code></pre><p>O número de inodes em uma partição é decidido quando você formata uma partição. Dito isso, enquanto você tiver espaço livre e inodes não utilizados, você pode armazenar arquivos no seu dispositivo de armazenamento.</p><p>É improvável que um sistema operacional Linux pessoal fique sem inodes. No entanto, serviços empresariais que lidam com um grande número de arquivos (como servidores de e-mail) precisam gerenciar sua cota de inodes de maneira inteligente.</p><p>No NTFS, os metadados são armazenados de maneira diferente.</p><p>O NTFS mantém informações de arquivos em uma estrutura de dados chamada <strong><a href="https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table">Tabela Mestra de Arquivos (MFT)</a></strong> (texto em inglês).</p><p>Cada arquivo tem, pelo menos, uma entrada na MFT, que contém tudo sobre ele, incluindo sua localização no dispositivo de armazenamento – semelhante à tabela de inodes.</p><p>Na maioria dos sistemas operacionais, você pode obter metadados através da interface gráfica do usuário.</p><p>Por exemplo, ao clicar com o botão direito do mouse em um arquivo no Mac OS e selecionar <strong>Obter Informações</strong> (Propriedades, no Windows), uma janela aparece com informações sobre o arquivo. Essas informações são obtidas dos metadados respectivos do arquivo.</p><h2 id="gerenciamento-de-espa-o">Gerenciamento de espaço</h2><p>Dispositivos de armazenamento são divididos em blocos de tamanho fixo chamados <strong>setores</strong>.</p><p>Um setor é a <strong>unidade mínima de armazenamento</strong> em um dispositivo de armazenamento e varia entre 512 bytes e 4096 bytes (formatação avançada).</p><p>No entanto, sistemas de arquivos usam um conceito de alto nível como unidade de armazenamento, chamados <strong>blocos</strong>.</p><p>Blocos são uma abstração sobre setores físicos; cada bloco geralmente consiste em diversos setores.</p><p>Dependendo do tamanho do arquivo, o sistema de arquivos aloca um ou mais blocos para cada arquivo.</p><p>Falando sobre gerenciamento de espaço, o sistema de arquivos está ciente de todos os blocos <em>usados</em> e <em>não usados</em> nas partições, para que ele possa alocar espaço para novos arquivos ou buscar os existentes quando solicitado.</p><p>A unidade de armazenamento mais básica em partições formatadas em ext4 é o bloco. No entanto, os blocos contíguos são agrupados em <strong>grupos de blocos</strong> para facilitar a gestão.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/block-group.jpg" class="kg-image" alt="block-group" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/block-group.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/block-group.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/block-group.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/block-group.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="876" loading="lazy"><figcaption><em>A disposição de um grupo de blocos dentro de uma partição ext4</em></figcaption></figure><p>Cada grupo de blocos tem suas próprias estruturas de dados e blocos de dados.</p><p>Aqui estão as estruturas de dados que um grupo de blocos pode conter:</p><ul><li><strong>Superbloco:</strong> um repositório de metadados, que contém metadados sobre todo o sistema de arquivos, como o número total de blocos no sistema de arquivos, total de blocos em grupos de blocos, inodes e mais. Nem todos os grupos de blocos contêm o superbloco, no entanto. Um certo número de grupos de blocos armazena uma cópia do superbloco como <em>back-up</em>.</li><li><strong>Descritores de grupo:</strong> os descritores de grupo também contêm informações contábeis para cada grupo de blocos.</li><li><strong>Bitmap de inodes:</strong> cada grupo de blocos tem sua própria cota de inodes para armazenar arquivos. Um bitmap de blocos é uma estrutura de dados usada para identificar inodes <em>usados</em> e <em>não usados</em> dentro do grupo de blocos. <code>1</code> denota objetos de inode usados e <code>0</code> denota objetos de inode não usados.</li><li><strong>Bitmap de blocos:</strong> uma estrutura de dados usada para identificar blocos de dados usados e não usados dentro do grupo de blocos. <code>1</code> denota blocos de dados usados e <code>0</code> denota blocos de dados não usados.</li><li><strong>Tabela de inodes:</strong> uma estrutura de dados que define a relação de arquivos e seus inodes. O número de inodes armazenados nesta área está relacionado ao tamanho do bloco usado pelo sistema de arquivos.</li><li><strong>Blocos de dados:</strong> esta é a zona dentro do grupo de blocos onde os conteúdos dos arquivos são armazenados.</li></ul><p>O sistema de arquivos ext4 dá um passo adiante (comparado ao ext3) e organiza grupos de blocos em um grupo maior chamado <em>grupos de blocos flex</em>.</p><p>As estruturas de dados de cada grupo de blocos, incluindo o bitmap de blocos, bitmap de inodes e tabela de inodes, são <em>concatenadas</em> e armazenadas no <em>primeiro grupo de blocos</em> dentro de cada grupo de blocos flex.</p><p>Ter todas as estruturas de dados concatenadas em um grupo de blocos (o primeiro) libera mais blocos de dados contíguos nos outros grupos de blocos dentro de cada grupo de blocos flex.</p><p>Esses conceitos podem ser confusos, mas você não precisa dominar cada detalhe. Isso é só para ilustrar a profundidade dos sistemas de arquivos.</p><p>A disposição do primeiro grupo de blocos é assim:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/block-group-detail.jpg" class="kg-image" alt="block-group-detail" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/block-group-detail.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/block-group-detail.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/block-group-detail.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/block-group-detail.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="485" loading="lazy"><figcaption><em>A disposição do primeiro bloco em um grupo de blocos flex do ext4</em></figcaption></figure><p>Quando um arquivo está sendo escrito em um disco, ele é escrito em um ou mais blocos dentro de um grupo de blocos.</p><p>Gerenciar arquivos no nível do grupo de blocos melhora significativamente o desempenho do sistema de arquivos, em oposição a organizar arquivos como uma única unidade.</p><h3 id="tamanho-x-tamanho-no-disco">Tamanho x tamanho no disco</h3><p>Você já notou que seu explorador de arquivos exibe dois tamanhos diferentes para cada arquivo: <strong>tamanho</strong> e <strong>tamanho no disco</strong>?</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/disksize-1.jpg" class="kg-image" alt="disksize-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/disksize-1.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/disksize-1.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/disksize-1.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/disksize-1.jpg 2220w" sizes="(min-width: 720px) 720px" width="2220" height="1137" loading="lazy"><figcaption><em>Tamanho e tamanho no disco</em></figcaption></figure><p></p><p>Por que <code>tamanho</code> e <code>tamanho no disco</code> são ligeiramente diferentes, você pode perguntar?</p><p>Aqui está uma explicação:</p><p>Já sabemos que, dependendo do tamanho do arquivo, um ou mais blocos são alocados para um arquivo.</p><p>Um bloco é o espaço mínimo que pode ser alocado para um arquivo. Isso significa que o espaço restante de um bloco parcialmente preenchido não pode ser usado por outro arquivo. Esta é a regra!</p><p>Como o tamanho do arquivo <em>não é um múltiplo inteiro de blocos</em>, o último bloco pode estar parcialmente usado, e o espaço restante permaneceria não utilizado – ou seria preenchido com zeros.</p><p>Assim, "tamanho" é basicamente o tamanho real do arquivo, enquanto "tamanho no disco" é o espaço que ele ocupa, mesmo que não esteja usando tudo.</p><pre><code>du -b "some-file.txt"
</code></pre><p>A saída seria algo assim:</p><pre><code>623 icon-link.svg
</code></pre><p>Para verificar o tamanho no disco, use:</p><pre><code>du -B 1 "icon-link.svg"
</code></pre><p>Isso resultará em:</p><pre><code>4096    icon-link.svg
</code></pre><p>Com base na saída, o bloco alocado é de cerca de 4kb, enquanto o tamanho real do arquivo é de 623 bytes. Isso significa que cada bloco de tamanho neste sistema operacional é de 4kb.</p><h3 id="o-que-fragmenta-o-de-disco">O que é fragmentação de disco?</h3><p>Com o tempo, novos arquivos são gravados no disco, arquivos existentes aumentam, diminuem ou são deletados.</p><p>Essas mudanças frequentes no meio de armazenamento deixam muitos pequenos espaços vazios (lacunas) entre os arquivos. Essas lacunas ocorrem pelo mesmo motivo pelo qual o tamanho do arquivo e o tamanho do arquivo no disco são diferentes. Alguns arquivos não preencherão o bloco inteiro, e muito espaço será desperdiçado. Com o tempo, não haverá blocos consequentes suficientes para armazenar novos arquivos.</p><p>É então que novos arquivos precisam ser armazenados como fragmentos.</p><p>A <strong>fragmentação de arquivos</strong> ocorre quando um arquivo é armazenado como fragmentos no dispositivo de armazenamento porque o sistema de arquivos não consegue encontrar blocos contíguos suficientes para armazenar o arquivo inteiro em uma sequência.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/disk_image-1.jpg" class="kg-image" alt="disk_image-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/disk_image-1.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/disk_image-1.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/disk_image-1.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/disk_image-1.jpg 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1024" loading="lazy"><figcaption><em>Um exemplo de arquivo fragmentado e não fragmentado</em></figcaption></figure><p>Vamos deixar mais claro com um exemplo.</p><p>Imagine que você tem um documento do Word chamado <code>meuarquivo.docx</code>.</p><p><code>meuarquivo.docx</code> é inicialmente armazenado em alguns blocos contíguos no disco. Vamos dizer que é assim que os blocos são nomeados: <code>LBA250</code>, <code>LBA251</code> e <code>LBA252</code>.</p><p>Agora, se você adicionar mais conteúdo a <code>meuarquivo.docx</code> e salvá-lo, ele precisará ocupar mais blocos no meio de armazenamento.</p><p>Como <code>meuarquivo.docx</code> está atualmente armazenado em <code>LBA250</code>, <code>LBA251</code> e <code>LBA252</code>, o novo conteúdo deveria, de preferência, ficar dentro de <code>LBA253</code> e assim por diante - dependendo de quantos mais blocos são necessários para acomodar as novas mudanças.</p><p>Agora, imagine que <code>LBA253</code> já esteja ocupado por outro arquivo (talvez seja o primeiro bloco de outro arquivo). Nesse caso, o novo conteúdo de <code>meuarquivo.docx</code> precisa ser armazenado em blocos diferentes em outro lugar no disco, por exemplo, <code>LBA312</code> e <code>LBA313</code>.</p><p><code>meuarquivo.docx</code> ficou fragmentado 💔.</p><p>A fragmentação de arquivo coloca uma sobrecarga no sistema de arquivos, pois, toda vez que um arquivo fragmentado é solicitado por um programa de usuário, o sistema de arquivos precisa coletar cada pedaço do arquivo de várias localizações no disco.</p><p>Essa sobrecarga também se aplica ao salvar o arquivo de volta no disco.</p><p>A fragmentação também pode ocorrer quando um arquivo é gravado no disco pela primeira vez, provavelmente porque o arquivo é grande e não há muitos blocos contínuos deixados na partição.</p><p>A fragmentação é uma das razões pelas quais alguns sistemas operacionais ficam lentos à medida que o sistema de arquivos envelhece.</p><h3 id="devemos-nos-preocupar-com-a-fragmenta-o-atualmente">Devemos nos preocupar com a fragmentação atualmente?</h3><p>A resposta curta é: não mais!</p><p>Os sistemas de arquivos modernos usam algoritmos inteligentes para evitar (ou detectar precocemente) a fragmentação tanto quanto possível.</p><p>O Ext4 também faz uma espécie de <strong>pré-alocação</strong>, que envolve reservar blocos para um arquivo antes que eles sejam realmente necessários – garantindo que o arquivo não seja fragmentado se crescer ao longo do tempo.</p><p>O número de <em>blocos pré-alocados</em> é definido no <em>campo de comprimento</em> da extensão do arquivo de seu objeto inode.</p><p>Além disso, o Ext4 usa uma técnica de alocação chamada <strong>alocação atrasada</strong>.</p><p>A ideia é que, ao invés de gravar nos blocos de dados um de cada vez durante uma gravação, as solicitações de alocação são acumuladas em um buffer e são gravadas no disco de uma vez só.</p><p>Não precisar chamar o <em>alocador de blocos</em> do sistema de arquivos em cada solicitação de gravação ajuda o sistema de arquivos a fazer melhores escolhas ao distribuir o espaço disponível. Por exemplo, ao colocar arquivos grandes afastados dos arquivos menores.</p><p>Imagine que um arquivo pequeno esteja localizado entre dois arquivos grandes. Agora, se o arquivo pequeno for excluído, ele deixa um pequeno espaço entre os dois arquivos.</p><p>Distribuir os arquivos dessa maneira deixa lacunas suficientes entre os blocos de dados, o que ajuda o sistema de arquivos a gerenciar (e evitar) a fragmentação mais facilmente.</p><p>A alocação atrasada reduz ativamente a fragmentação e aumenta o desempenho.</p><h2 id="diret-rios">Diretórios</h2><p>Um diretório (ou pasta, no Windows) é um arquivo especial usado como um <strong>contêiner lógico</strong> para agrupar arquivos e diretórios dentro de um sistema de arquivos.</p><p>No NTFS e no Ext4, diretórios e arquivos são tratados da mesma maneira. Dito isso, diretórios são apenas arquivos que têm seu próprio inode (no Ext4) ou entrada MFT (no NTFS).</p><p>O inode ou entrada MFT de um diretório contém informações sobre esse diretório, bem como uma coleção de entradas apontando para os arquivos "sob" esse diretório.</p><p>Os arquivos não estão literalmente contidos dentro do diretório, mas estão associados ao diretório de tal maneira que aparecem como filhos do diretório em um nível superior, como em um programa de explorador de arquivos.</p><p>Essas entradas são chamadas de <strong>entradas de diretório</strong>. As entradas de diretório contêm nomes de arquivos mapeados para suas entradas inode/MFT.</p><p>Além das entradas de diretório, há mais duas entradas, a entrada <code>.</code>, que aponta para o próprio diretório, e a entrada <code>..</code>, que aponta para o diretório pai deste diretório.</p><p>No Linux, você pode usar o comando <code>ls</code> em um diretório para ver as entradas do diretório com seus números de inode associados:</p><pre><code>ls -lai
</code></pre><pre><code class="language-md">63756 drwxr-xr-x 14 root root   4096 Dec  1 17:24 .
     2 drwxr-xr-x 19 root root   4096 Dec  1 17:06 ..
 81132 drwxr-xr-x  2 root root   4096 Feb 18 06:25 backups
 81020 drwxr-xr-x 14 root root   4096 Dec  2 07:01 cache
 81146 drwxrwxrwt  2 root root   4096 Oct 16 21:43 crash
 80913 drwxr-xr-x 46 root root   4096 Dec  1 22:14 lib

 ...
</code></pre><h2 id="regras-para-nomea-o-de-arquivos">Regras para nomeação de arquivos</h2><p>Alguns sistemas de arquivos impõem limitações sobre nomes de arquivos.</p><p>A limitação pode estar no <strong>comprimento do nome do arquivo</strong> ou na <strong>sensibilidade de maiúsculas e minúsculas no nome do arquivo</strong>.</p><p>Por exemplo, em sistemas de arquivos NTFS (Windows) e APFS (Mac), <code>MeuArquivo</code> e <code>meuarquivo</code> referem-se ao mesmo arquivo, enquanto no ext4 (Linux), eles apontam para arquivos diferentes.</p><p>Por que isso importa, você pode perguntar.</p><p>Imagine que você está criando uma página da web em seu computador com Windows. A página da web contém o logotipo da sua empresa, que é um arquivo PNG, assim:</p><pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Produtos - Seu Site&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;!--ALGUM CONTEÚDO--&gt;
        &lt;img src="img/logo.png"&gt;
        &lt;!--MAIS CONTEÚDO--&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>Se o nome real do arquivo for <code>Logo.png</code> (note o <strong>L</strong> maiúsculo), você ainda pode ver a imagem quando abre sua página da web no navegador (em seu computador com Windows).</p><p>No entanto, uma vez que você o implante em um servidor Linux e visualize-o ao vivo, verá uma imagem quebrada.</p><p>Por quê?</p><p>Porque no Linux (sistema de arquivos ext4) <code>logo.png</code> e <code>Logo.png</code> apontam para dois arquivos diferentes.</p><p>Portanto, lembre-se disso ao desenvolver no Windows e implantar em um servidor Linux.</p><h2 id="regras-para-tamanho-de-arquivo">Regras para tamanho de arquivo</h2><p>Um aspecto importante dos sistemas de arquivos é o <strong>tamanho máximo de arquivo</strong> que eles suportam.</p><p>Um sistema de arquivos antigo como o <strong>FAT32</strong> (usado pelo MS-DOS +7.1, família Windows 9x e memórias <em>flash</em>) não pode armazenar arquivos maiores que 4 GB, enquanto seu sucessor, o <strong>NTFS</strong> permite tamanhos de arquivo de até <strong>16 EB</strong> (1000 TB).</p><p>Como o NTFS, o exFAT também permite um tamanho de arquivo de 16 EB. Isso torna o exFAT uma opção ideal para armazenar objetos de dados massivos, como arquivos de vídeo.</p><p>Praticamente, não há limitação no tamanho do arquivo nos sistemas de arquivos exFAT e NTFS.</p><p>O ext4 do Linux e o APFS da Apple suportam arquivos de até <strong>16 TiB</strong> e <strong>8 EiB</strong> respectivamente.</p><h2 id="programas-gerenciadores-de-arquivos">Programas gerenciadores de arquivos</h2><p>Como você sabe, a camada lógica do sistema de arquivos fornece uma API para permitir que aplicações do usuário realizem operações de arquivo, como operações de <code>leitura</code>, <code>escrita</code>, <code>exclusão</code> e <code>execução</code>.</p><p>A API do sistema de arquivos é um mecanismo de baixo nível, projetado para programas de computador, ambientes de tempo de execução e <em>shells</em> – ela não é projetada para uso diário.</p><p>Dito isso, os sistemas operacionais fornecem utilitários convenientes de gerenciamento de arquivos prontos para o uso diário de gerenciamento de arquivos.</p><p>Por exemplo, o <strong>Explorador de Arquivos</strong> no Windows, o <strong>Finder</strong> no Mac OS e o <strong>Nautilus</strong> no Ubuntu são exemplos de programas gerenciadores de arquivos.</p><p>Esses utilitários usam a API do sistema de arquivos lógico por trás dos panos.</p><p>Além dessas ferramentas GUI, os sistemas operacionais também expõem as APIs do sistema de arquivos através das interfaces de linha de comando, como Prompt de Comando no Windows e Terminal no Mac e Linux.</p><p>Essas interfaces baseadas em texto ajudam os usuários a realizar todos os tipos de operações de arquivo como comandos de texto – como fizemos nos exemplos anteriores.</p><h2 id="gerenciamento-de-acesso-a-arquivos">Gerenciamento de acesso a arquivos</h2><p>Nem todos devem ser capazes de remover ou modificar um arquivo que não possuem ou não estão autorizados a fazê-lo.</p><p>Sistemas de arquivos modernos fornecem mecanismos para controlar o acesso e as capacidades dos usuários em relação aos arquivos.</p><p>Os dados relativos às permissões do usuário e à propriedade dos arquivos são armazenados em uma estrutura de dados chamada Lista de Controle de Acesso (ACL) no Windows ou Entradas de Controle de Acesso (ACE) em sistemas operacionais do tipo Unix (Linux e Mac OS).</p><p>Esse recurso também está disponível na CLI (Prompt de comando ou Terminal), onde um usuário pode alterar a propriedade dos arquivos ou limitar as permissões de cada arquivo diretamente na interface de linha de comando.</p><p>Por exemplo, um proprietário de arquivo (no Linux ou Mac) pode configurar um arquivo para estar disponível ao público, assim:</p><pre><code>chmod 777 meuarquivo.txt
</code></pre><p><code>777</code> significa que todos podem realizar todas as operações (leitura, escrita, execução) em <code>meuarquivo.txt</code>. Note que este é apenas um exemplo. Você não deve definir a permissão de um arquivo para <code>777</code>.</p><h2 id="mantendo-a-integridade-dos-dados">Mantendo a integridade dos dados</h2><p>Digamos que você esteja trabalhando em sua tese há um mês. Um dia, você abre o arquivo, faz algumas alterações e o salva.</p><p>Depois de salvar o arquivo, seu programa de processador de texto envia uma solicitação de "escrita" para a API do sistema de arquivos (o sistema de arquivos lógico).</p><p>A solicitação acaba sendo passada para a camada física para armazenar o arquivo em vários blocos.</p><p>O que acontece, porém, se o sistema travar enquanto a versão anterior do arquivo está sendo substituída pela nova versão?</p><p>Em sistemas de arquivos mais antigos (como FAT32 ou ext2), os dados seriam corrompidos porque foram parcialmente escritos no disco.</p><p>Isso é menos provável de acontecer com sistemas de arquivos modernos, pois eles usam uma técnica chamada <strong><em>journaling</em></strong>.</p><p>Os sistemas de arquivos com <em>journaling</em> registram cada operação que está prestes a acontecer na camada física, mas que ainda não aconteceu.</p><p>O objetivo principal é manter o controle das alterações que ainda não foram comprometidas fisicamente com o sistema de arquivos.</p><p>O <em>journal</em> é uma alocação especial no disco onde cada tentativa de escrita é primeiro armazenada como uma <strong>transação</strong>.</p><p>Em caso de falha do sistema, o sistema de arquivos detectará a transação incompleta e a cancelará como se nunca tivesse acontecido.</p><p>Dito isso, o novo conteúdo (que estava sendo escrito) ainda pode ser perdido, mas os dados existentes permaneceriam intactos.</p><p>Sistemas de arquivos modernos, como NTFS, APFS e ext4 (até mesmo o ext3), usam <em>journaling </em>para evitar dados corrompidos em caso de falha do sistema.</p><h2 id="sistemas-de-arquivos-de-banco-de-dados">Sistemas de arquivos de banco de dados</h2><p>Sistemas de arquivos típicos organizam arquivos como árvores de diretórios.</p><p>Para acessar um arquivo, você navega até o respectivo diretório e pronto.</p><pre><code>cd /music/country/highwayman
</code></pre><p>No entanto, em um sistema de arquivos de banco de dados, não há conceito de caminhos e diretórios.</p><p>O sistema de arquivos de banco de dados é um <strong>sistema facetado</strong> que agrupa arquivos com base em vários <em>atributos</em> e <em>dimensões</em>.</p><p>Por exemplo, arquivos MP3 podem ser listados por artista, gênero, ano de lançamento e álbum – ao mesmo tempo!</p><p>Um sistema de arquivos de banco de dados é mais como uma aplicação de alto nível para ajudá-lo a organizar e acessar seus arquivos de maneira mais fácil e eficiente. No entanto, você não poderá acessar os arquivos brutos fora dessa aplicação.</p><p>Um sistema de arquivos de banco de dados não pode substituir um sistema de arquivos típico, no entanto. É apenas uma abstração de alto nível para facilitar a gestão de arquivos em alguns sistemas.</p><p>O aplicativo <strong>iTunes</strong> no Mac OS é um bom exemplo de um sistema de arquivos de banco de dados.</p><h2 id="concluindo">Concluindo</h2><p>Uau! Você chegou até o fim do artigo – o que significa que agora sabe muito mais sobre sistemas de arquivos. Tenho certeza, porém, de que este não será o fim de seus estudos sobre sistemas de arquivos.</p><p>Então, mais uma vez – podemos descrever o que é um sistema de arquivos e como ele funciona em uma frase?</p><p>Não podemos! 😁</p><p>Vamos terminar este artigo, contudo, com a descrição breve que usei no começo:</p><p>Um <strong>sistema de arquivos</strong> define como arquivos são <strong>nomeados</strong>, <strong>armazenados</strong> e <strong>recuperados</strong> do dispositivo de armazenamento.</p><p>Certo, acho que isso encerra este artigo.</p><p>Se você gosta de guias mais abrangentes como este, visite o site do autor, <a href="https://www.decodingweb.dev/">decodingweb. dev</a> e siga o autor no <a href="https://twitter.com/lavary_">Twitter</a> porque, além do freeCodeCamp, esses são os canais que o autor usa para compartilhar suas descobertas diárias.</p><p>Agradecemos a leitura! Aproveite o aprendizado! 😃</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O que é a notação Big Ômega? ]]>
                </title>
                <description>
                    <![CDATA[ Semelhante à notação big O [/portuguese/news/o-que-e-a-notacao-big-o-complexidade-de-tempo-e-de-espaco/], a função big Ômega (Ω) é usada em ciência da computação para descrever o desempenho ou complexidade de um algoritmo. Se um tempo de execução é Ω(f(n)), então, para um n suficientemente grande, o tempo de execução é de, pelo menos, k⋅f(n) para alguma ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-que-e-a-notacao-big-omega/</link>
                <guid isPermaLink="false">64ff0661c4bdc9102ef6f03d</guid>
                
                    <category>
                        <![CDATA[ Ciência da computação ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 11 Sep 2023 12:44:20 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/09/5f9c9e37740569d1a4ca3bf6.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/big-omega-notation/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What is Big Omega Notation?</a>
      </p><p>Semelhante à notação <a href="https://www.freecodecamp.org/portuguese/news/o-que-e-a-notacao-big-o-complexidade-de-tempo-e-de-espaco/">big O</a>, a função big Ômega (Ω) é usada em ciência da computação para descrever o desempenho ou complexidade de um algoritmo.</p><p>Se um tempo de execução é Ω(f(n)), então, para um n suficientemente grande, o tempo de execução é de, pelo menos, k⋅f(n) para alguma constante k. Aqui está como pensamos no tempo de execução que é Ω(f(n)):</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/09/c02e6916d15bacae7a936381af8c6e5a0068f4fd.png" class="kg-image" alt="c02e6916d15bacae7a936381af8c6e5a0068f4fd" width="361" height="172" loading="lazy"><figcaption>Running time = "tempo de execução"</figcaption></figure><p><br>Dizemos que o tempo de execução é "big-Ω de f(n)". Usamos a notação big-Ω para <strong>limites inferiores assintóticos</strong>, já que ela limita o crescimento do tempo de execução desde embaixo para tamanhos de entrada grandes o suficiente.</p><h3 id="diferen-a-entre-big-o-e-big-"><strong><strong><strong>Dif</strong>erença entre <strong>Big O </strong>e<strong> Big Ω</strong></strong></strong></h3><p>A diferença entre a notação Big O e a notação Big Ω é o fato de que a Big O é usada para descrever o pior caso de tempo de execução para um algoritmo. A notação Big Ω, por sua vez, é usada para descrever o melhor caso de tempo de execução desse algoritmo fornecido.</p><h4 id="mais-informa-es-"><strong><strong>Mais informações<strong>:</strong></strong></strong></h4><ul><li><a href="https://pt.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/big-big-omega-notation">Notação Big-Ω (Big Ômega)</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ UEFI x BIOS: Qual é a diferença? ]]>
                </title>
                <description>
                    <![CDATA[ É possível que você já tenha ouvido falar nas siglas BIOS e UEFI em algum lugar, especialmente ao tentar mudar de sistema operacional ou ao brincar com overclocking. Também é possível que você saiba o que querem dizer essa siglas (Unified Extensible Firmware Interface e Basic Input/Output System, respectivamente). Mas ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/uefi-x-bios-qual-e-a-diferenca/</link>
                <guid isPermaLink="false">61e6de173ca86504f628fc84</guid>
                
                    <category>
                        <![CDATA[ Ciência da computação ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 18 Jan 2022 21:50:44 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/AMIBIOS_ROM-Chip_1992.jfif.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/uefi-vs-bios/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">UEFI vs BIOS: What's the Difference?</a>
      </p><p>É possível que você já tenha ouvido falar nas siglas BIOS e UEFI em algum lugar, especialmente ao tentar mudar de sistema operacional ou ao brincar com overclocking.</p><p>Também é possível que você saiba o que querem dizer essa siglas (Unified Extensible Firmware Interface e Basic Input/Output System, respectivamente). Mas você já se perguntou como elas são usadas em um sistema computacional?</p><p>Vamos desmistificar esses termos e seus significados agora.</p><h2 id="procedimento-de-boot"><strong>Procedimento de boot</strong></h2><p>Em primeiro lugar, sei que estamos desviando do assunto, mas prometo que isso vai ajudar com alguns conceitos mais tarde.</p><p>Como é feito o boot no computador? Vamos ver isso passo a passo:</p><ol><li>Você pressiona o botão de ligar/desligar do seu laptop ou desktop.</li><li>A CPU inicia, mas precisa de algumas instruções para funcionar (lembre-se: a CPU sempre precisa fazer algo). Como a memória principal está vazia neste momento, a CPU se restringe às instruções de carregamento do chip do firmware da placa-mãe e começa a executar essas instruções.</li><li>O código do firmware faz um Power On Self Test (POST, ou autoteste de inicialização), inicializa o hardware restante, detecta os periféricos conectados (mouse, keyboard, pen drive etc.) e verifica se todos os dispositivos conectados estão funcionando bem. Você pode se lembrar de ouvir um 'bipe' que os desktops normalmente usavam quando o POST tinha êxito.</li><li>Por fim, o código do firmware analisa todos os dispositivos de armazenamento e procura por um carregador de boot (geralmente localizado no primeiro setor de uma unidade de disco). Se o carregador de boot é encontrado, o firmware entrega a ele o controle do computador.</li></ol><p>Não precisamos saber mais sobre esse tópico para fins deste artigo. Se estiver interessado, no entanto, siga lendo (do contrário, pode passar para a próxima seção).</p><ol><li>Agora que o carregador de boot está carregado, sua tarefa é carregar o resto do sistema operacional. O GRUB é um desses carregadores de boot. Ele é capaz de carregar sistemas operacionais do tipo UNIX e de carregar em sequência o SO Windows. O carregador de boot está disponível somente no primeiro setor de uma unidade de disco, que tem 512 bytes. Dada a complexidade dos sistemas operacionais modernos, alguns desses carregadores de boot tendem a fazer carregamento em diversos estágios, onde o carregador de boot principal carrega o carregador de boot do segundo estágio em um ambiente no qual ele não está restrito aos 512 bytes.</li><li>O carregador de boot em seguida carrega o <a href="https://pt.wikipedia.org/wiki/N%C3%BAcleo_(sistema_operacional)">kernel</a> na memória. Sistemas operacionais do tipo UNIX, então, rodam o processo <code>init</code> (o processo principal, a partir do qual os outros processos são derivados/executados) e finalmente inicializa os <a href="https://pt.wikipedia.org/wiki/N%C3%ADvel_de_execu%C3%A7%C3%A3o">níveis de execução</a>.</li><li>No Windows, o <code>wininit.exe</code> é carregado junto de alguns processos, como o <code>services.exe</code>, para o controle de serviços, o <code>lsass.exe</code>, para a segurança local e a autoridade (semelhante aos níveis de execução) e o <code>lsm.exe</code>, para o gerenciamento da sessão local.</li><li>Depois de tudo isso, e após alguns outros drivers serem inicializados, a Interface Gráfica de Usuário (GUI) é carregada e você visualiza a tela de login.</li></ol><p>Essa foi uma visão bastante geral do processo de boot. Se estiver interessado em sistemas operacionais, eu recomendo que leia mais sobre o assunto em <a href="https://wiki.osdev.org/Expanded_Main_Page">osdev.net</a> (em inglês).</p><p>Bem, agora, vamos voltar ao nosso tópico original.</p><h2 id="bios-"><strong><strong>BIOS:</strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Bios-configuracion-orden-arranque.png" class="kg-image" alt="Bios-configuracion-orden-arranque" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/01/Bios-configuracion-orden-arranque.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/01/Bios-configuracion-orden-arranque.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/01/Bios-configuracion-orden-arranque.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Bios-configuracion-orden-arranque.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1269" loading="lazy"></figure><p>BIOS significa Basic Input/Output System, o firmware de que falamos acima, na parte sobre o procedimento de boot.</p><p>Ele é armazenado em uma EPROM (Erasable Programmable Read-Only Memory), o que permite ao fabricante lançar as atualizações com facilidade.</p><p>Ele fornece muitas funções auxiliares que permitem a leitura dos setores de boot das unidades de armazenamento conectadas e imprimir coisas na tela. Você pode acessar o BIOS durante as fases iniciais do procedimento de boot pressionando, normalmente, <code>del</code>, <code>F2</code> ou <code>F10</code>.</p><h2 id="uefi-"><strong><strong>UEFI:</strong></strong></h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/08/uefi_1270.png" class="kg-image" alt="uefi_1270" width="600" height="400" loading="lazy"><figcaption>ASUS UEFI&nbsp;</figcaption></figure><p>UEFI significa Unified Extensible Firmware Interface. Ela faz o mesmo trabalho que o BIOS, mas com uma diferença básica: ela armazena todos os dados sobre inicialização e início em um arquivo .efi, em vez de armazená-las no firmware.</p><p>Esse arquivo .efi é armazenado em uma partição especial chamada EFI System Partition (ESP) no disco rígido. Essa partição ESP também contém o carregador de boot.</p><p>A UEFI foi projetada para vencer as várias limitações do antigo BIOS, incluindo:</p><ol><li>A UEFI da suporte a tamanhos de unidade de até 9 zetabytes, enquanto o BIOS dá suporte a apenas 2,2 terabytes.</li><li>A UEFI fornece tempo de inicialização mais rápido.</li><li>A UEFI tem suporte a unidades discreto, enquanto o BIOS tem o suporte a unidades armazenado em sua ROM. Desse modo, atualizar o firmware do BIOS é um pouco difícil.</li><li>A UEFI oferece segurança, por exemplo, com o "Secure Boot", que evita que o computador faça boot a partir de aplicações não autorizadas/não assinadas. Isso ajuda a evitar os rootkits, mas também dificulta o boot dual, já que trata o outro SO como uma aplicação não assinada. No momento, apenas o Windows e o Ubuntu são SOs assinados (fique à vontade para informar o autor caso ele esteja errado).</li><li>A UEFI roda em modo de 32 ou de 64 bits, enquanto o BIOS roda em modo de 16 bits. Por isso, a UEFI &nbsp;consegue fornecer uma GUI (de navegação com o mouse), diferente do BIOS, que somente permite a navegação com o teclado.</li></ol><h2 id="voc-pode-n-o-precisar-da-uefi"><strong>Você pode não precisar da <strong>UEFI</strong></strong></h2><p>Apesar de todos os computadores modernos já virem equipados com a UEFI por padrão, há motivos para os quais você escolheria o BIOS em vez da UEFI. São eles:</p><ol><li>Se você é um iniciante e não se importa com brincar com qualquer tipo de firmware, o BIOS é para você.</li><li>Se você tem menos de 2 TB por disco rígido ou partição, pode utilizar o BIOS.</li><li>O BIOS permite rodar vários sistemas operacionais sem alterar configurações. Isso pode ser um problema de segurança sob a ótica moderna, mas, ao menos, não incomoda o usuário.</li><li>O BIOS fornece informações do sistema ao sistema operacional. Assim, se o seu SO estiver rodando em modo de 16 bits, ele não precisa escrever código para interagir com o hardware, podendo usar métodos fornecidos diretamente pelo BIOS. Do contrário, se o SO estiver em modo de 32 ou de 64 bits, será preciso fornecer suas próprias sub-rotinas para interagir com o hardware.</li><li>Se você é alguém que prefere um teclado e UI baseada em texto em vez da navegação com o mouse em uma GUI, o BIOS é para você.</li></ol><p>O UEFI leva em conta essas limitações e provê um modo legado. Nele, você pode executar tudo como se estivesse em um firmware do BIOS. Lembre-se, porém, que a Intel anunciou que deixaria de dar suporte ao BIOS tradicional desde 2020.</p><h2 id="conclus-o"><strong><strong>Conclus</strong>ão</strong></h2><p>Este artigo deu uma visão geral sobre as diferenças entre BIOS e UEFI. Ele também dá sugestões sobre quando usar um ou outro e sobre como essas situações de uso diferem.</p><p>Se tiver perguntas, o autor se encontra disponível no <a href="https://twitter.com/vaibhav_kandwal">Twitter</a>. Obrigado por sua leitura.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
