Questão de Sistemas Operacionais — Virtualização - Conceitos Gerais — CESPE / CEBRASPE 2025
- Código
- ce418293
- Banca
- CESPE / CEBRASPE
- Órgão
- EMBRAPA
- Ano
- 2025
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: letra E (ERRADO). A afirmação está incorreta porque, embora Docker e Singularity sejam exemplos de virtualização em nível de sistema operacional (contêineres), o Conda/bioconda não é uma ferramenta de virtualização, mas sim um gerenciador de pacotes e ambientes que isola dependências de software em nível de aplicação, sem criar contêineres ou virtualizar o sistema operacional. A confusão entre "gerenciador de pacotes" e "virtualização" é o erro central da assertiva.
A virtualização em nível de sistema operacional, também conhecida como virtualização de espaço de usuário ou contêineres, é uma técnica que permite executar múltiplas instâncias isoladas do espaço de usuário sobre um mesmo núcleo de sistema operacional. Cada instância, chamada de contêiner, possui seu próprio sistema de arquivos, processos, usuários e interfaces de rede, mas compartilha o kernel do sistema hospedeiro. Essa abordagem é mais leve que a virtualização completa (máquinas virtuais), pois não emula hardware nem executa um sistema operacional convidado completo — apenas isola recursos do sistema operacional já existente.
O texto de apoio sobre virtualização de sistema operacional explica exatamente essa distinção: "virtualiza-se o conjunto de recursos lógicos oferecidos pelo sistema operacional, como árvores de diretórios, descritores de arquivos, semáforos, canais de IPC e IDS de processos, usuários e grupos. Nesta abordagem, cada máquina virtual pode ser vista como uma instância distinta do mesmo sistema operacional subjacente. Esta é a abordagem comumente conhecida como servidores virtuais ou contêineres". É precisamente essa a categoria em que se enquadram Docker e Singularity.
O Docker é a ferramenta de contêineres mais difundida: permite empacotar uma aplicação e todas as suas dependências em uma imagem, que pode ser executada de forma isolada e reproduzível em qualquer ambiente que tenha o Docker instalado. O Singularity (atualmente Apptainer) é uma plataforma de contêineres projetada para computação de alto desempenho (HPC), com foco em reprodutibilidade científica e segurança em ambientes compartilhados. Ambos são, de fato, exemplos legítimos de virtualização em nível de sistema operacional.
O Conda (e sua variante bioconda, voltada para bioinformática), por outro lado, é um gerenciador de pacotes e ambientes. Ele cria ambientes isolados onde é possível instalar versões específicas de bibliotecas e programas, mas não cria contêineres nem virtualiza o sistema operacional. O Conda gerencia dependências em nível de aplicação, alterando variáveis de ambiente e instalando pacotes em diretórios próprios, mas todos os ambientes Conda compartilham o mesmo kernel e o mesmo espaço de usuário do sistema operacional — não há isolamento de processos, sistema de arquivos ou rede como ocorre em contêineres. Portanto, classificar o Conda como uma ferramenta de virtualização é um erro conceitual.
A pegadinha da banca está em agrupar três ferramentas que são frequentemente usadas juntas em bioinformática (Docker, Singularity e Conda) e atribuir a todas a característica de "virtualização em nível de sistema operacional". O candidato que conhece apenas superficialmente essas ferramentas pode ser induzido a marcar "Certo", pois todas de fato permitem criar ambientes definidos e reproduzíveis. No entanto, a reprodução de ambientes não é exclusiva da virtualização: gerenciadores de pacotes como o Conda também oferecem esse benefício, mas por mecanismos completamente diferentes. A distinção crucial é: contêineres virtualizam o sistema operacional; gerenciadores de pacotes isolam dependências de aplicação.
Para fixar o conceito, compare as duas abordagens:
Critério | Contêineres (Docker, Singularity) | Gerenciador de pacotes (Conda) |
|---|---|---|
Nível de isolamento | Sistema operacional (espaço de usuário) | Aplicação (bibliotecas e executáveis) |
Kernel | Compartilhado, mas com namespaces isolados | Compartilhado, sem isolamento de processos |
Sistema de arquivos | Próprio, isolado por camadas | Diretório de ambiente específico |
Rede | Interface de rede virtual própria | Compartilha a rede do host |
Exemplo de uso | Empacotar aplicação inteira com SO base | Instalar versões específicas de bibliotecas |
Guarde essa fronteira entre "virtualização de sistema operacional" e "gerenciamento de pacotes": é exatamente nela que esta questão se decide. A banca mistura as duas categorias para testar se o candidato sabe diferenciar o que é contêiner do que é apenas um isolador de dependências.
A assertiva afirma que "Sistemas de virtualização em nível de sistema operacional, como Docker, Singularity e Conda/bioconda, permitem a criação de ambientes computacionais definidos e reproduzíveis". O erro está em incluir o Conda/bioconda no grupo de ferramentas de virtualização em nível de sistema operacional. Docker e Singularity são, de fato, exemplos corretos dessa categoria, pois criam contêineres que isolam o espaço de usuário do sistema operacional. O Conda, porém, é um gerenciador de pacotes e ambientes que isola dependências em nível de aplicação, sem virtualizar o sistema operacional. Embora o Conda também permita criar ambientes definidos e reproduzíveis, ele não o faz por meio de virtualização — o que torna a afirmação parcialmente verdadeira, mas conceitualmente incorreta ao classificar o Conda como ferramenta de virtualização. A banca explora exatamente essa confusão entre "criar ambientes reproduzíveis" e "virtualizar o sistema operacional".
Gabarito: letra E (ERRADO).
Link permanente: /questoes/ce418293