Conceitos
de Software
A parte lógica do computador. Software de sistema, aplicativo, programação e embarcado. Software livre × proprietário, do GNU de Stallman (1985) ao Open Source de Raymond (1998). Licenças GPL, MIT, Apache. Linguagens, paradigmas, banco de dados e a base do sistema operacional.
Sumário
Você acabou de dominar a parte física. Agora vem a parte lógica. Software é o que faz o hardware servir para alguma coisa. Aqui você entende a classificação, o universo do software livre, as linguagens de programação, os paradigmas, banco de dados e a estrutura do sistema operacional.
- p. 04O que é softwareDefinição, classificação canônica, software × dado × algoritmo
- p. 07Software de sistemaSO, drivers, utilitários, firmware
- p. 11Software aplicativo, de programação e embarcadoOffice, IDEs, smart devices
- p. 14Software livre × proprietário × outros modelosStallman, FSF, OSI, GPL, MIT, Apache, freeware, shareware
- p. 18Linguagens de programaçãoCompiladas × interpretadas, paradigmas, principais linguagens
- p. 21Algoritmos e estruturas de dadosPseudocódigo, fluxograma, Big O
- p. 24Banco de dados (introdução)SGBD, modelo relacional, SQL, NoSQL
- p. 27Sistema operacional: visão geralFunções, tipos, processos, kernel
- p. 30Mapa mental, revisão e questões comentadas10 questões fechando a aula
O que você vai aprender
Distinguir software, dado e algoritmo. Compreender as quatro grandes categorias: sistema, aplicativo, programação e embarcado.
Identificar sistema operacional, drivers, utilitários e firmware. Operar a noção de kernel, shell e camadas do SO.
Aplicar as quatro liberdades de Richard Stallman (FSF, 1985). Distinguir livre × código aberto (Open Source Initiative, 1998) × gratuito × proprietário.
Identificar GPL (e copyleft), LGPL, AGPL, MIT, BSD, Apache, Creative Commons. Compreender o efeito viral da GPL.
Distinguir compiladas, interpretadas e híbridas (bytecode, JIT). Identificar paradigmas: procedural, orientação a objetos, funcional, lógica.
Compreender pseudocódigo, fluxograma. Operar análise de complexidade (notação Big O). Diferenciar estruturas de dados primárias.
Identificar SGBD. Distinguir modelo relacional (SQL) de NoSQL (documento, chave-valor, grafo). Operar conceito de chave primária, estrangeira, normalização.
Compreender as cinco funções clássicas: gerência de processos, memória, arquivos, E/S e segurança. Distinguir multitarefa preemptiva e cooperativa, monousuário × multiusuário, batch × tempo real.
Dica do Fuffu
O ponto mais cobrado em prova é a distinção software livre × código aberto × gratuito. Decore: livre garante quatro liberdades (Stallman, 1985); código aberto é uma forma pragmática de divulgação (OSI, 1998); gratuito apenas não cobra, podendo ser fechado.
Prof. Affonsinho explica, Módulo 011 Software: a parte lógica
Definição
Software é o conjunto de instruções e dados que orientam o hardware a executar tarefas. É a camada lógica, intangível, oposta ao hardware (físico, tangível). Sem software, o hardware é metal inerte; sem hardware, software é arquivo morto. Os dois precisam um do outro.
Numa visão mais técnica, software é tudo o que pode ser representado como sequência de bits e executado, total ou parcialmente, por um processador. Inclui programas executáveis, bibliotecas, scripts, drivers, firmware (que vimos na Aula 01), bancos de dados, arquivos de configuração e, em sentido amplo, dados estruturados.
Componentes do software
- Código-fonte: texto escrito em linguagem de programação, legível por humanos. Exemplos: arquivo .c, .py, .js, .java.
- Código objeto / executável: traduzido para linguagem de máquina, legível pelo processador. Exemplos: .exe, .dll, .so.
- Dados: valores manipulados pelo programa. Texto, imagens, números, configurações.
- Documentação: manuais, diagramas, especificações.
Software, dado e algoritmo
Três conceitos próximos, mas distintos:
- Algoritmo: sequência finita e ordenada de passos para resolver um problema. Existe no abstrato, antes de qualquer linguagem (você pode escrever um algoritmo em português).
- Programa: implementação concreta de um algoritmo numa linguagem de programação.
- Software: conceito mais amplo, que inclui um ou vários programas + dados + documentação.
- Dado: matéria-prima do software. Quando processado e contextualizado, vira informação; quando agregado e interpretado, vira conhecimento.
Classificação canônica do software
A doutrina, padronizada por Roger Pressman e Ian Sommerville nos manuais de Engenharia de Software, classifica em quatro grandes grupos:
- Software de sistema: gerencia o hardware. Sistema operacional (Windows, Linux, macOS), drivers, utilitários (antivírus, gerenciador de tarefas), compiladores, montadores.
- Software aplicativo (ou de aplicação): resolve problemas do usuário final. Word, Excel, navegadores, editores de imagem, jogos, ERP, CRM.
- Software de programação (ou ferramentas de desenvolvimento): permite criar outros softwares. IDE (Visual Studio, IntelliJ, VS Code), compiladores, interpretadores, depuradores.
- Software embarcado: roda em dispositivos com função específica e fechada. Microondas, ar-condicionado, smart TV, carro, semáforo, satélite.
Algumas bancas adicionam um quinto grupo:
- Software de uso geral × de uso específico: critério ortogonal (cruza com os 4 anteriores). Word é aplicativo de uso geral; um sistema do INSS é aplicativo de uso específico.
Software como obra intelectual
No Brasil, o software é protegido pela Lei 9.609/1998 (Lei do Software), que confere ao titular direitos similares aos de obra literária, com prazo de proteção de 50 anos a partir de 1º de janeiro do ano subsequente à publicação ou criação. A patente, em regra, não se aplica ao código-fonte (a lei distingue clareza), mas pode incidir sobre uma invenção implementada por software que atenda aos requisitos da Lei 9.279/1996. Tema sensível e cobrado em provas de TI.
Bate-papo com o Seu Teoffilo
Repare numa nuance importante. Software, juridicamente, é obra intelectual (Lei 9.609/1998), regida por direitos autorais. Não se confunde com a invenção (que recebe patente, Lei 9.279/1996). Quando uma banca pergunta "qual a natureza jurídica do software no Brasil?", a resposta é direito autoral, com peculiaridades. Concursos de TI da Receita Federal, do TCU e da CGU cobram esse ponto com frequência.
Prof. Affonsinho explica, Módulo 022 Software de sistema
A camada que conversa com o hardware
O software de sistema é a camada de software mais próxima do hardware. Ele esconde a complexidade da máquina dos demais softwares, oferecendo uma interface uniforme. Sem ele, cada aplicativo precisaria saber como conversar com cada modelo específico de placa de vídeo, disco, impressora, processador.
Sistema operacional
O sistema operacional (SO) é o software de sistema mais importante. Ele:
- Inicializa a máquina depois do boot.
- Gerencia processos (programas em execução).
- Aloca memória.
- Coordena dispositivos de E/S.
- Organiza arquivos no disco.
- Aplica políticas de segurança e permissões.
- Oferece interface (CLI ou GUI) para o usuário.
Os principais sistemas operacionais em 2026:
- Windows (Microsoft, 1985): linha 11 atualmente. Mais usado em desktops corporativos.
- Linux (Linus Torvalds, 1991): kernel open source. Distribuições populares: Ubuntu, Fedora, Debian, Red Hat, Arch. Domina servidores e cresce em desktop.
- macOS (Apple, 2001): sucessor do Mac OS, baseado em UNIX (Darwin). Atual macOS 15 (Sequoia). Exclusivo de Mac.
- Android (Google, 2008): baseado em Linux. Domina smartphones globalmente.
- iOS (Apple, 2007): baseado em UNIX, derivado do macOS. Em iPhones.
- Chrome OS (Google, 2009): baseado em Linux, foco em navegador.
- Servidores: Linux (RHEL, Ubuntu Server, SUSE), Windows Server, FreeBSD.
Você verá Windows e Linux com profundidade na Aula 03.
Drivers
O driver (ou controlador de dispositivo) é o programa que permite ao SO conversar com um hardware específico. Cada modelo de placa de vídeo, impressora, scanner, mouse precisa do seu driver. Quando você liga um pendrive novo no PC, o Windows tenta encontrar o driver "genérico" (USB Mass Storage); se for um dispositivo mais específico (impressora, smartphone), é preciso instalar o driver do fabricante.
Utilitários do sistema
São programas que ajudam a operar a máquina, embora não façam parte do núcleo do SO:
- Antivírus: detecta e neutraliza pragas (Aula 11).
- Backup: copia dados para recuperação (Aula 10).
- Compactadores: ZIP, RAR, 7-Zip, gzip.
- Gerenciador de tarefas: lista processos, RAM, CPU.
- Limpadores de disco: removem arquivos temporários.
- Particionadores: organizam o disco.
- Diagnóstico: verificam saúde de hardware (memtest, SMART).
Compiladores, interpretadores, montadores
Esses são software de sistema porque traduzem entre linguagens:
- Montador (assembler): traduz assembly em linguagem de máquina.
- Compilador: traduz uma linguagem de alto nível (C, C++, Go, Rust) inteira em linguagem de máquina, gerando um executável.
- Interpretador: lê uma linguagem de alto nível (Python, Ruby, JavaScript em alguns motores) e executa linha por linha, sem gerar executável.
- Linker (ligador): junta vários arquivos objeto + bibliotecas em um executável final.
- Loader (carregador): carrega o executável na memória para execução.
Firmware
Já vimos na Aula 01. Vale lembrar que firmware é software de sistema, mas com a peculiaridade de estar gravado em chip (ROM, EEPROM, Flash). BIOS/UEFI da placa-mãe, firmware do roteador, firmware do SSD, microcódigo da CPU. É a camada mais íntima entre software e hardware.
Pegadinha da Dotôra Soffya
Atenção a duas confusões frequentes. Primeira: o antivírus é software de sistema (utilitário), não aplicativo. Bancas tentam encaixar como aplicativo porque o usuário "abre" para usar; mas a função é gerenciar segurança da máquina, sendo classificado como utilitário do sistema. Segunda: o navegador (Chrome, Firefox, Edge) é software aplicativo, não de sistema, mesmo vindo embutido no SO. Função do usuário final, classificação por categoria de uso.
Prof. Affonsinho explica, Módulo 033 Outras categorias
Software aplicativo
É o software que o usuário final usa diretamente para resolver suas demandas. As subcategorias mais comuns:
- Suíte de escritório: Microsoft 365 (Word, Excel, PowerPoint, Outlook), Google Workspace (Docs, Sheets, Slides), LibreOffice (Writer, Calc, Impress). Tema das aulas 04, 05 e 06.
- Navegador: Chrome, Firefox, Edge, Safari, Opera, Brave. Tema da aula 08.
- Cliente de e-mail: Outlook, Thunderbird, Mail (macOS), Gmail (web). Tema da aula 08.
- Comunicador: WhatsApp, Telegram, Microsoft Teams, Slack, Zoom.
- Editor de imagem: Photoshop, GIMP, Affinity Photo, Canva.
- Editor de vídeo: Premiere, DaVinci Resolve, Final Cut, Shotcut.
- Player de mídia: VLC, Windows Media Player, Spotify, YouTube Music.
- ERP (Enterprise Resource Planning): SAP, Oracle, TOTVS, Senior. Gerencia processos corporativos.
- CRM (Customer Relationship Management): Salesforce, HubSpot, Pipedrive.
- SGBD do usuário: Access, Base, MySQL Workbench (quando usado por usuário final, não desenvolvedor).
- Jogos: aplicativo de entretenimento.
Software de programação
Ferramentas para criar outros softwares. Muitas vezes confundidas com aplicativos por terem interface, mas a finalidade é desenvolvimento.
- IDE (Integrated Development Environment): Visual Studio, IntelliJ IDEA, PyCharm, Eclipse, VS Code (tecnicamente um editor avançado, mas funciona como IDE), Xcode, Android Studio.
- Editor de código: VS Code, Sublime Text, Atom (descontinuado), Notepad++, Vim, Emacs.
- Compiladores: GCC, Clang, MSVC, Rustc, Go compiler.
- Interpretadores: CPython, Node.js, Ruby MRI, PHP.
- Sistemas de controle de versão: Git, Mercurial, SVN.
- Gerenciadores de pacote: npm (Node), pip (Python), Maven (Java), Cargo (Rust), apt (Debian/Ubuntu), yum/dnf (RHEL/Fedora), Homebrew (macOS).
- Containerização: Docker, Podman, Kubernetes.
- Servidores HTTP de desenvolvimento: Apache, Nginx (em produção), Vite, Webpack (build).
Software embarcado
Roda em dispositivos com função fechada e específica. Características:
- Recursos limitados (memória, CPU, energia).
- Tempo real (responder em prazo determinado é requisito).
- Função única ou bem delimitada.
- Atualizações via firmware.
Exemplos do dia a dia: forno de microondas, ar-condicionado, máquina de lavar, smart TV, sistema do carro (ECU, central multimídia), semáforo, caixa eletrônico, drone, marcapasso, relógio digital, IoT (Internet das Coisas: lâmpadas inteligentes, fechaduras, sensores).
Software como serviço (SaaS) e modelos derivados
O modelo de distribuição mudou nos últimos 15 anos. As principais variações:
- On-premises: software instalado no servidor da própria organização.
- SaaS (Software as a Service): software hospedado pelo fornecedor, acessado via web/aplicativo, cobrado por assinatura. Microsoft 365, Salesforce, Gmail, Spotify.
- PaaS (Platform as a Service): plataforma para desenvolver software. AWS Elastic Beanstalk, Google App Engine, Heroku.
- IaaS (Infrastructure as a Service): infraestrutura virtualizada. AWS EC2, Google Compute Engine, Azure VMs.
- FaaS (Function as a Service): execução por função, pago por chamada. AWS Lambda, Google Cloud Functions, Azure Functions. Também chamado "serverless".
- BaaS (Backend as a Service): backend completo em nuvem. Firebase, Supabase, Amplify.
Você verá computação em nuvem com profundidade na Aula 12.
Dica do Raffinha
Em prova, decore a regra de ouro: software de sistema serve à máquina; software aplicativo serve ao usuário. Quando bate dúvida, pergunte "para quem ele trabalha?". O antivírus trabalha para a máquina (proteção do sistema); o Word trabalha para o usuário (digitar texto). Já a IDE trabalha para o programador (desenvolver software): cai na categoria programação.
Prof. Affonsinho explica, Módulo 044 Modelos de licenciamento
Richard Stallman e a Free Software Foundation
Em 27 de setembro de 1983, Richard Stallman, programador do MIT, anuncia o projeto GNU (acrônimo recursivo: "GNU's Not Unix"), com o objetivo de criar um sistema operacional inteiramente livre. Em 4 de outubro de 1985, funda a FSF (Free Software Foundation). Em 1989, publica a primeira versão da GNU GPL (General Public License). Esses são os marcos do movimento.
As quatro liberdades do software livre
Para a FSF, software é livre se garante quatro liberdades ao usuário:
- Liberdade 0: liberdade de executar o programa, para qualquer propósito.
- Liberdade 1: liberdade de estudar o código-fonte e adaptá-lo. Acesso ao código é pré-requisito.
- Liberdade 2: liberdade de redistribuir cópias.
- Liberdade 3: liberdade de distribuir versões modificadas. Acesso ao código é pré-requisito.
Note que a numeração começa em zero: brincadeira de programador (e prova frequentemente cobra o detalhe).
Open Source Initiative (OSI)
Em 1998, depois da liberação do código do navegador Netscape (que viraria o Mozilla Firefox), Eric Raymond, Bruce Perens e outros fundam a Open Source Initiative (OSI). A motivação foi pragmática: o termo "free software" causava confusão (free de "gratuito" ou de "livre"?) e afastava empresas. Eles cunharam "open source" e definiram dez critérios (a "Open Source Definition"). Na prática, todo software livre é open source e vice-versa, mas o discurso é diferente: a FSF foca em ética/liberdade, a OSI foca em modelo de desenvolvimento eficiente. Eric Raymond formaliza isso no clássico "The Cathedral and the Bazaar" (1999).
Free vs. gratuito (free as in speech vs. free as in beer)
A confusão clássica do termo "free" em inglês. A FSF cristalizou a explicação:
- "Free as in speech" (livre como liberdade de expressão): software livre.
- "Free as in beer" (gratuito como cerveja grátis num bar): software gratuito (freeware), que pode ser código fechado.
É possível um software ser livre mas pago (uma empresa pode vender uma distribuição Linux com suporte) e gratuito mas fechado (um freeware sem código-fonte aberto). Banca cobra esse tipo de exemplo.
Principais licenças
Bancas cobram bastante a tipologia:
- GPL (GNU General Public License, 1989): licença copyleft forte. Trabalho derivado precisa ser distribuído com a mesma licença GPL. Efeito viral: se você usa código GPL, seu código também precisa ser GPL ao distribuir. Versões: GPLv2, GPLv3.
- LGPL (Lesser GPL): copyleft fraco. Permite usar a biblioteca em software proprietário, desde que a biblioteca em si permaneça LGPL.
- AGPL (Affero GPL, 2007): GPL com cláusula extra que cobre distribuição via rede (SaaS). Se você roda software AGPL num servidor, precisa disponibilizar o código fonte aos usuários.
- MIT (1988): permissiva, simples. Pode usar para o que quiser, inclusive em software proprietário, basta manter a nota de copyright.
- BSD (2-clause, 3-clause, 4-clause): permissiva, similar à MIT.
- Apache 2.0: permissiva, com cláusula expressa de patentes.
- Mozilla Public License (MPL): copyleft de arquivo (file-level).
- Creative Commons: licenças para conteúdo (textos, imagens, música), não para código. Tem variantes (CC-BY, CC-BY-SA, CC-BY-NC, CC0).
Outros modelos
- Software proprietário: o titular reserva todos os direitos. Código fechado. Windows, Office (mesmo o 365, embora alguns componentes sejam open), Photoshop.
- Freeware: gratuito, mas fechado. AnyDesk, IrfanView, CCleaner Free.
- Shareware: experimente por um tempo, depois pague. Modelo dos anos 1990, ainda existe (WinRAR é um exemplo clássico que nunca expira).
- Trial: versão completa por tempo limitado. Photoshop com 7 dias.
- Demo: versão limitada, sem prazo (ex: jogo só com o primeiro nível).
- Adware: gratuito, sustentado por anúncios. Pode ser intrusivo demais e virar PUP/PUA.
- Open core: o núcleo é open source; recursos adicionais são pagos. Modelo do GitLab, Docker, Elastic.
- Domínio público: sem direitos autorais, qualquer um pode usar de qualquer forma. Raro em software (CC0 chega perto).
Alerta do Examinador
Memorize a seguinte lista, que aparece em quase toda prova de informática: software livre garante quatro liberdades (Stallman, FSF, 1985); é diferente de gratuito; GPL é copyleft viral; MIT, BSD e Apache são permissivas; freeware é gratuito mas fechado; shareware tem teste; SaaS cobra por assinatura. Cuidado: Linux é livre (kernel sob GPLv2), mas distribuições podem incluir software proprietário (drivers, codecs).
Prof. Affonsinho explica, Módulo 055 Linguagens de programação
Níveis de linguagem
Linguagens de programação se classificam por proximidade do hardware:
- Linguagem de máquina: sequência de zeros e uns, executada diretamente pela CPU. Específica de cada arquitetura (x86, ARM, RISC-V).
- Assembly: linguagem de baixo nível, com mnemônicos legíveis (MOV, ADD, JMP) que se traduzem 1-para-1 em instruções de máquina. Um montador traduz para máquina.
- Alto nível: abstrai detalhes da máquina, com sintaxe próxima da linguagem humana. C, C++, Java, Python, Go, Rust, JavaScript.
- 4ª geração (4GL): linguagens declarativas focadas em domínio específico. SQL, R, MATLAB, Lua.
- 5ª geração: linguagens lógicas e de IA. Prolog, Lisp.
Compiladas, interpretadas, híbridas
- Compiladas: o código-fonte vira executável antes de rodar. O compilador percorre o código todo, otimiza, gera linguagem de máquina específica do alvo. Exemplos: C, C++, Go, Rust, Fortran. Vantagem: rápido em execução. Desvantagem: precisa recompilar para outras plataformas.
- Interpretadas: o código-fonte é lido linha a linha em tempo de execução por um interpretador. Não gera executável. Exemplos: Python (CPython), Ruby, PHP, Bash, R. Vantagem: portátil, interativo. Desvantagem: mais lento.
- Híbridas (bytecode + JIT): o código compila para bytecode (linguagem intermediária), executado por uma máquina virtual. A máquina virtual usa JIT (Just-In-Time compilation) para traduzir bytecode quente em máquina nativa em tempo real. Exemplos: Java (compila para bytecode .class, roda na JVM); C# (.NET CLR); Kotlin; Scala. Combina portabilidade com performance.
Algumas linguagens têm múltiplas implementações: Python normalmente é interpretada (CPython), mas existe Jython (bytecode JVM) e PyPy (JIT). JavaScript é interpretado em motores antigos, mas hoje é JIT em motores modernos (V8 do Chrome, SpiderMonkey do Firefox).
Paradigmas de programação
Um paradigma é o estilo predominante de organização do código. Os principais:
- Procedural (estruturado): programa é sequência de procedimentos/funções. Edsger Dijkstra defendeu o paradigma em "Notes on Structured Programming" (1972). Exemplos: C, Pascal, COBOL.
- Orientação a Objetos (OO): programa é organizado em objetos que combinam dados (atributos) e comportamento (métodos). Quatro pilares: abstração, encapsulamento, herança, polimorfismo. Exemplos: Smalltalk (Alan Kay, 1972), Java, C++, C#, Python (multiparadigma), Ruby.
- Funcional: programa é composição de funções puras (sem efeito colateral). Imutabilidade, recursão. Exemplos: Lisp (1958), Haskell, Elixir, Erlang, F#. Linguagens modernas (Python, JavaScript) incorporam recursos funcionais.
- Lógico: programa é declaração de fatos e regras; o computador deduz a resposta. Exemplo: Prolog.
- Concorrente/paralelo: foco em executar múltiplas tarefas. Go (goroutines), Erlang (actors), Rust (safe concurrency).
Principais linguagens em 2026
- Python: dominante em ciência de dados, IA, automação, ensino.
- JavaScript/TypeScript: domina front-end web; também back-end via Node.
- Java: ainda forte em corporativo, banking, Android (junto com Kotlin).
- C: SO, embarcado, desempenho crítico.
- C++: jogos, sistemas, alta performance.
- C#: ecossistema Microsoft, jogos (Unity), aplicações corporativas.
- Go: cloud, microsserviços, infraestrutura.
- Rust: substituto seguro de C/C++; cresce rápido.
- SQL: banco de dados relacional.
- PHP: ainda muito presente em web (WordPress).
- Swift, Kotlin: iOS e Android nativo.
A famosa "primeira linguagem"
Para concursos, vale registrar:
- Plankalkül (Konrad Zuse, 1942-1945): primeira linguagem de alto nível, mas nunca implementada na época.
- FORTRAN (1957, IBM, John Backus): primeira linguagem de alto nível efetivamente implementada e usada em escala.
- Lisp (1958, John McCarthy): primeira linguagem funcional.
- COBOL (1959, comitê CODASYL): linguagem para negócios; ainda roda em mainframes de banco e governo.
Prof. Affonsinho explica, Módulo 066 Algoritmos
Definição
Um algoritmo é uma sequência finita, ordenada e não ambígua de instruções para resolver um problema ou executar uma tarefa. O termo deriva de al-Khwarizmi, matemático persa do século IX. Niklaus Wirth, em 1976, sintetizou: "Algoritmos + estruturas de dados = programas".
Características de um algoritmo
- Finitude: termina em número finito de passos.
- Definição: cada passo é claro e não ambíguo.
- Entrada: zero ou mais dados de entrada.
- Saída: uma ou mais saídas.
- Efetividade: passos podem ser executados em tempo finito por uma pessoa com lápis e papel (em princípio).
Formas de representação
- Pseudocódigo: linguagem livre, próxima do português, com estruturas de controle (se, enquanto, para). Independente de linguagem real.
- Fluxograma: representação gráfica com símbolos padronizados (retângulo = processo; losango = decisão; paralelogramo = E/S; oval = início/fim; seta = fluxo).
- Diagrama de Chapin (NS-diagrama): substitui o fluxograma com blocos aninhados.
- Linguagem de programação: representação executável.
Estruturas de controle
- Sequência: passos um após o outro.
- Seleção (decisão): se ... então ... senão.
- Repetição (laço): enquanto, repita, para.
Edsger Dijkstra, em "Go To Statement Considered Harmful" (1968), defendeu que qualquer algoritmo pode ser expresso usando apenas sequência, seleção e repetição, sem desvio incondicional (GOTO). Isso é o teorema da programação estruturada (Böhm e Jacopini, 1966).
Estruturas de dados básicas
- Variável: espaço nomeado de memória que guarda um valor.
- Constante: variável que não muda.
- Vetor (array): coleção de elementos do mesmo tipo, indexada.
- Matriz: vetor multidimensional.
- Lista encadeada: cada elemento aponta para o próximo.
- Pilha (stack): LIFO (último a entrar, primeiro a sair). Operações: push, pop.
- Fila (queue): FIFO (primeiro a entrar, primeiro a sair). Operações: enqueue, dequeue.
- Árvore: estrutura hierárquica. Caso especial: árvore binária.
- Grafo: vértices ligados por arestas. Pode ter direção (digrafo) e peso.
- Tabela hash: mapeamento chave-valor com função de espalhamento.
Análise de complexidade (Big O)
A notação Big O mede como o tempo (ou memória) cresce com o tamanho da entrada n. Ordens comuns, do mais rápido ao mais lento:
- O(1): constante. Acessar elemento de vetor.
- O(log n): logarítmico. Busca binária.
- O(n): linear. Percorrer um vetor.
- O(n log n): quase linear. Algoritmos eficientes de ordenação (Merge Sort, Quick Sort, Heap Sort).
- O(n²): quadrático. Algoritmos ingênuos (Bubble Sort, Insertion Sort).
- O(n³): cúbico. Multiplicação de matrizes ingênua.
- O(2ⁿ): exponencial. Problemas NP completos sem otimização.
- O(n!): fatorial. Caixeiro viajante força bruta.
Algoritmos clássicos
- Busca: linear (O(n)), binária (O(log n)).
- Ordenação: Bubble (O(n²)), Insertion (O(n²)), Selection (O(n²)), Merge (O(n log n)), Quick (média O(n log n), pior O(n²)), Heap (O(n log n)), Counting (O(n + k), não-comparativo).
- Grafo: BFS (busca em largura), DFS (busca em profundidade), Dijkstra (caminho mínimo), Bellman-Ford, A*.
- Programação dinâmica: Fibonacci memoizado, mochila, edição de string.
Bate-papo com o Seu Teoffilo
Para concursos de informática básica, foque em três pontos: a definição clássica de algoritmo (finita, ordenada, não ambígua); as três estruturas de controle (sequência, seleção, repetição); e a noção de complexidade (O(n) é melhor que O(n²)). Para concursos de TI, vai mais fundo: estruturas de dados, ordenação, busca, grafo. Mas o tronco conceitual é o mesmo.
Prof. Affonsinho explica, Módulo 077 Banco de dados
SGBD (Sistema Gerenciador de Banco de Dados)
O banco de dados é uma coleção organizada de dados relacionados. O SGBD (Database Management System, DBMS) é o software que gerencia esse banco: armazena, recupera, atualiza e protege os dados. Vantagens em relação a arquivos avulsos:
- Controle de acesso e segurança.
- Concorrência (vários usuários ao mesmo tempo).
- Integridade referencial.
- Recuperação após falha.
- Backup centralizado.
Os principais SGBDs:
- Relacionais: Oracle, Microsoft SQL Server, PostgreSQL, MySQL/MariaDB, IBM Db2, SQLite.
- NoSQL: MongoDB (documentos), Redis (chave-valor), Cassandra (colunar), Neo4j (grafo), Elasticsearch (busca).
- NewSQL/distribuídos: CockroachDB, TiDB, Google Spanner.
- Em nuvem: AWS RDS, Aurora, DynamoDB; Azure SQL; Google Cloud SQL, Bigtable, Spanner.
Modelo relacional
Proposto por Edgar F. Codd em 1970, no artigo "A Relational Model of Data for Large Shared Data Banks". Os dados são organizados em tabelas (relações), com linhas (tuplas) e colunas (atributos). Conceitos fundamentais:
- Chave primária: identifica unicamente cada linha. CPF de uma pessoa, ISBN de um livro.
- Chave estrangeira: aponta para a chave primária de outra tabela. Cria a "relação" entre tabelas.
- Índice: estrutura que acelera buscas em coluna específica.
- Normalização: processo de organizar tabelas para evitar redundância. Formas Normais 1FN, 2FN, 3FN, BCNF, 4FN.
- Integridade: referencial (chave estrangeira aponta para registro existente), de domínio (valor dentro do tipo), de entidade (chave primária não nula nem repetida).
SQL (Structured Query Language)
A SQL é a linguagem padrão para manipular bancos relacionais. Padronizada pela ISO desde 1987. Subdivide-se em:
- DDL (Data Definition Language): define estrutura. CREATE, ALTER, DROP, TRUNCATE.
- DML (Data Manipulation Language): manipula dados. SELECT, INSERT, UPDATE, DELETE.
- DCL (Data Control Language): controla acesso. GRANT, REVOKE.
- TCL (Transaction Control Language): controla transações. BEGIN, COMMIT, ROLLBACK, SAVEPOINT.
- DQL (Data Query Language): consulta. Algumas bancas separam o SELECT em DQL; outras incluem em DML.
Propriedades ACID
Bancos relacionais clássicos garantem ACID (transação atômica):
- Atomicidade: a transação acontece toda ou nenhuma.
- Consistência: leva o banco de um estado válido a outro estado válido.
- Isolamento: transações concorrentes não interferem entre si.
- Durabilidade: depois do commit, o resultado persiste mesmo após falha.
NoSQL e BASE
Bancos NoSQL (Not Only SQL) flexibilizam o modelo relacional para escalar horizontalmente. Tipos:
- Documento: MongoDB, Couchbase. Armazena documentos JSON/BSON.
- Chave-valor: Redis, DynamoDB. Estrutura simples e ultrarrápida.
- Colunar (família de colunas): Cassandra, HBase. Para grandes volumes.
- Grafo: Neo4j, ArangoDB. Para dados altamente conectados (rede social).
Em vez de ACID, muitos NoSQL adotam BASE (Basically Available, Soft state, Eventual consistency) e o Teorema CAP (Eric Brewer, 2000): Consistency, Availability, Partition tolerance. Não dá para ter os três simultaneamente; escolhe-se dois.
Prof. Affonsinho explica, Módulo 088 Sistema operacional
As cinco funções clássicas
Andrew Tanenbaum, em "Modern Operating Systems", define o SO como gerente de recursos, com cinco funções principais:
- Gerência de processos: criar, escalonar, pausar, terminar processos. Multitarefa.
- Gerência de memória: alocar e desalocar RAM, controlar paginação e memória virtual.
- Gerência de arquivos: criar, ler, escrever, organizar em diretórios, controlar permissões.
- Gerência de E/S: coordenar dispositivos via drivers, oferecer interface uniforme aos aplicativos.
- Segurança e proteção: autenticação, controle de acesso, criptografia, sandbox.
Kernel e shell
O kernel é o núcleo do SO: a parte que tem acesso direto ao hardware, executa em modo privilegiado (kernel mode, ring 0 no x86). Os aplicativos rodam em modo usuário (ring 3) e pedem serviços ao kernel via chamadas de sistema (system calls).
Há tipos de kernel:
- Monolítico: tudo dentro do kernel. Linux clássico, Windows NT (em parte).
- Microkernel: kernel mínimo; serviços rodam em modo usuário. MINIX, QNX.
- Híbrido: mistura. Windows NT moderno, macOS (XNU).
- Exokernel: pesquisa; o kernel só protege o hardware, e os aplicativos implementam abstrações.
O shell é a interface entre usuário e kernel. Pode ser CLI (Command-Line Interface: bash, zsh, PowerShell, cmd) ou GUI (Graphical User Interface: Windows Explorer, GNOME, KDE).
Processos e threads
- Processo: instância de programa em execução. Tem espaço de memória próprio, identificador (PID), recursos alocados, estado.
- Thread (linha de execução): unidade leve dentro de um processo. Compartilha memória com outras threads do mesmo processo.
- Estados: novo, pronto, executando, bloqueado (espera), encerrado.
Tipos de SO
- Monousuário × multiusuário: um ou vários usuários simultâneos.
- Monotarefa × multitarefa: uma ou várias tarefas em execução. Pode ser preemptiva (SO interrompe tarefa pra dar vez à outra) ou cooperativa (a tarefa decide quando ceder).
- Tempo real: garante resposta dentro de prazo determinado. Crítico em embarcado, aviônica, médica.
- Batch: processa lotes de tarefas sem interação. Mainframes.
- Distribuído: roda em vários computadores como se fosse um. Sistemas de cluster.
- Móvel: otimizado para dispositivos com tela pequena, bateria, sensores. Android, iOS.
Multiprogramação, multitarefa, multithreading
- Multiprogramação: vários programas na memória ao mesmo tempo, alternando o uso da CPU. Conceito clássico dos anos 1960.
- Multitarefa: vários programas em execução aparente. Praticamente o mesmo conceito do anterior, mas com foco no usuário.
- Multithreading: várias threads dentro de um mesmo processo, compartilhando memória.
- Multiprocessamento: várias CPUs físicas ou núcleos rodando simultaneamente.
Você verá Windows e Linux com profundidade na próxima aula.
Coach Jeff manda a real
Foca aqui: as cinco funções do SO (processos, memória, arquivos, E/S, segurança) caem em prova quase sempre. Treina a memorização junto com o esquema kernel-shell. Quando o examinador perguntar "qual a função do SO", responda começando por gestor de recursos, depois lista as cinco. Bate-pronto.
! Encontro com o vilão
O Estudante de Direito Arrogante está aqui. Ele leu o manual, decorou as definições e acha que entende de tudo. Em informática, ele jura que software livre é gratuito (errado), que Linux é open source mas não é livre (errado), que Java é interpretada (parcialmente errado), que MIT e GPL fazem a mesma coisa (errado).
O vilão da aula: Estudante de Direito Arrogante
Ele troca conceitos parecidos: livre × gratuito, GPL × MIT, OO × estruturado, processo × thread, ACID × BASE. Confia demais no que decorou em uma fonte só. Nas questões finais, atenção: ele tenta misturar os conceitos para fazer você marcar uma resposta plausível mas errada.
Como derrotar o Estudante Arrogante:
- Memorize as 4 liberdades de Stallman (1985, FSF) e a numeração 0, 1, 2, 3.
- Memorize que livre ≠ gratuito. Pode ser pago e livre; pode ser gratuito e fechado.
- Memorize as 4 categorias de software (sistema, aplicativo, programação, embarcado).
- Memorize as 5 funções do SO (processos, memória, arquivos, E/S, segurança).
- Memorize ACID (relacional) × BASE (NoSQL).
- Memorize as 3 estruturas de controle (sequência, seleção, repetição).
◆ Mapa mental
4 categorias
- Sistema (SO, drivers, utilitários)
- Aplicativo (Office, navegador)
- Programação (IDE, compilador)
- Embarcado (microondas, carro)
Software livre
- Stallman (FSF, 1985)
- 4 liberdades (0, 1, 2, 3)
- OSI 1998 (Raymond)
- Free ≠ gratuito
Licenças
- GPL: copyleft viral
- LGPL: copyleft fraco
- AGPL: cobre SaaS
- MIT, BSD, Apache: permissivas
- Creative Commons: conteúdo
Modelos
- Proprietário (Windows)
- Freeware (gratuito, fechado)
- Shareware (teste pago)
- SaaS, PaaS, IaaS
- Open core
Linguagens
- Máquina, assembly, alto nível
- Compiladas (C, Go, Rust)
- Interpretadas (Python, Ruby)
- Híbridas (Java, C#)
Paradigmas
- Procedural (C, Pascal)
- OO (Java, C++): 4 pilares
- Funcional (Haskell, Lisp)
- Lógico (Prolog)
Algoritmos
- Pseudocódigo, fluxograma
- 3 estruturas: sequência, seleção, repetição
- Big O: O(1), O(log n), O(n), O(n²)
- Estruturas: vetor, lista, pilha, fila, árvore, grafo
Banco de dados
- SGBD: Oracle, MySQL, PostgreSQL
- Codd 1970: relacional
- SQL: DDL, DML, DCL, TCL
- ACID × BASE (NoSQL)
Sistema operacional
- 5 funções: processo, memória, arquivo, E/S, segurança
- Kernel × shell
- Monolítico × micro × híbrido
- Multitarefa preemptiva × cooperativa
↻ Revisão relâmpago
5 minutos antes da prova, leia só isto.
- Software: parte lógica do computador. Programa + dados + documentação.
- 4 categorias: sistema, aplicativo, programação, embarcado.
- Software de sistema: SO, drivers, utilitários, compiladores, montadores, firmware.
- Aplicativo: serve ao usuário (Word, Chrome, ERP).
- Programação: serve ao desenvolvedor (IDE, Git, Docker).
- Software livre (Stallman, FSF, 1985): 4 liberdades (0=executar, 1=estudar, 2=redistribuir, 3=modificar).
- Open Source (OSI, 1998): termo pragmático. Livre ≠ gratuito.
- GPL: copyleft forte (viral). LGPL: copyleft fraco. AGPL: cobre SaaS.
- MIT, BSD, Apache: permissivas (não viral).
- Freeware: gratuito, fechado. Shareware: teste pago. SaaS: assinatura na nuvem.
- Linguagens: máquina, assembly, alto nível. Compiladas (C, Go, Rust); interpretadas (Python, PHP); híbridas (Java, C#: bytecode + JIT).
- Paradigmas: procedural, OO (4 pilares: abstração, encapsulamento, herança, polimorfismo), funcional, lógico.
- Algoritmo: finito, ordenado, não ambíguo. 3 estruturas: sequência, seleção, repetição.
- Big O: O(1) constante, O(log n) logarítmico, O(n) linear, O(n log n), O(n²) quadrático, O(2ⁿ) exponencial.
- SGBD relacional (Codd, 1970): tabelas, chave primária, chave estrangeira, normalização.
- SQL: DDL (CREATE, ALTER, DROP), DML (SELECT, INSERT, UPDATE, DELETE), DCL (GRANT, REVOKE), TCL (COMMIT, ROLLBACK).
- ACID: atomicidade, consistência, isolamento, durabilidade. BASE: NoSQL.
- SO - 5 funções: processos, memória, arquivos, E/S, segurança.
- Kernel (núcleo, modo privilegiado) × shell (interface). Monolítico × microkernel × híbrido.
- Processo = instância em execução, com memória própria. Thread = linha leve, compartilha memória do processo.
? 10 questões comentadas
As dez questões a seguir foram elaboradas para cobrir o essencial desta aula. Cada uma vem com gabarito e comentário detalhado do Prof. Affonsinho.
Sugestão de uso:
- Leia cada questão sem olhar o gabarito.
- Marque sua resposta num papel.
- Só depois, confira o gabarito e leia o comentário.
- Se errou, marque em um caderno qual conceito falhou e volte ao módulo correspondente.
Dica do Fuffu
Em prova de software, 70% das questões giram em torno de software livre × proprietário, classificação de softwares e funções do SO. Domine esses três blocos e a maioria das questões cai naturalmente.
Questão 01 · Comentada
Enunciado. Sobre a classificação clássica de software:
- A) Software de sistema é aquele usado pelo usuário final para resolver problemas pessoais.
- B) A classificação canônica divide software em: sistema (gerencia hardware: SO, drivers, utilitários), aplicativo (atende ao usuário final: Word, Chrome), programação (cria outros softwares: IDE, compilador) e embarcado (roda em dispositivos com função fechada: microondas, smart TV).
- C) Não há classificação consolidada de software.
- D) Software embarcado é o mesmo que aplicativo.
- E) IDE é classificada como software de sistema.
Gabarito: B
Prof. Affonsinho comenta
Cobra a tipologia clássica.
- A errada: essa é a descrição de aplicativo; sistema gerencia o hardware.
- B CORRETA Pressman/Sommerville: exato. As 4 categorias canônicas com seus exemplos.
- C errada: há classificação consolidada na engenharia de software (Pressman, Sommerville).
- D errada: embarcado roda em dispositivo de função fechada; aplicativo serve usuário final em PC/celular.
- E errada: IDE é software de programação: serve ao desenvolvedor para criar outros softwares.
Tese central: 4 categorias: sistema, aplicativo, programação, embarcado.
Questão 02 · Comentada
Enunciado. Sobre as quatro liberdades do software livre, definidas por Richard Stallman e a Free Software Foundation:
- A) São três liberdades: executar, modificar e redistribuir.
- B) Liberdade 0: executar para qualquer propósito; Liberdade 1: estudar e adaptar (acesso ao código-fonte); Liberdade 2: redistribuir cópias; Liberdade 3: distribuir versões modificadas.
- C) As liberdades começam na número 1 e vão até a número 4.
- D) Software livre exige que seja gratuito.
- E) A Free Software Foundation foi fundada em 1998.
Gabarito: B
Prof. Affonsinho comenta
Cobra as quatro liberdades clássicas.
- A errada: são quatro liberdades (numeradas de 0 a 3).
- B CORRETA Stallman, FSF, 1985: exato. As 4 liberdades começam em 0 (executar) e vão até 3 (modificar e distribuir).
- C errada: começam na liberdade 0, não na 1; brincadeira de programador (números começam em zero).
- D errada: livre não exige gratuito; existe software livre pago (Red Hat Enterprise Linux com suporte).
- E errada: FSF foi fundada em 1985; em 1998 surgiu a OSI (Open Source Initiative).
Tese central: 4 liberdades: 0=executar, 1=estudar/adaptar, 2=redistribuir, 3=modificar/distribuir.
Questão 03 · Comentada
Enunciado. Sobre licenças de software, é correto afirmar:
- A) GPL e MIT funcionam de forma idêntica: ambas são permissivas.
- B) A licença GPL é caracterizada como copyleft forte (viral): trabalhos derivados precisam ser distribuídos sob a mesma licença GPL. Já as licenças MIT, BSD e Apache são permissivas: permitem uso em software proprietário, exigindo apenas a manutenção do aviso de copyright.
- C) Creative Commons é uma licença para código-fonte.
- D) AGPL é menos restritiva que GPL.
- E) Software com licença MIT obriga a publicar o código-fonte de qualquer software que o utilize.
Gabarito: B
Prof. Affonsinho comenta
Cobra a tipologia de licenças.
- A errada: GPL é copyleft (viral); MIT é permissiva. Funcionam diferente.
- B CORRETA GNU GPL/MIT: exato. GPL viral, MIT/BSD/Apache permissivas. Atenção ao copyright que deve ser mantido nas permissivas.
- C errada: Creative Commons é para conteúdo (texto, imagem, música), não para código.
- D errada: AGPL é mais restritiva: cobre uso via rede (SaaS), exigindo disponibilizar código aos usuários do serviço.
- E errada: MIT é permissiva: não obriga a publicar código de software derivado. Quem obriga é a GPL.
Tese central: GPL = copyleft viral; MIT/BSD/Apache = permissivas; AGPL = GPL para serviços de rede.
Questão 04 · Comentada
Enunciado. Sobre linguagens de programação, é correto afirmar:
- A) Linguagens compiladas geram executável; interpretadas executam linha por linha; híbridas (como Java e C#) compilam para bytecode executado por máquina virtual com JIT.
- B) Python é uma linguagem compilada padrão.
- C) Java é uma linguagem totalmente interpretada, sem etapa de compilação.
- D) Assembly é uma linguagem de alto nível.
- E) Linguagens compiladas são sempre mais lentas que interpretadas.
Gabarito: A
Prof. Affonsinho comenta
Cobra a distinção entre tipos de execução.
- A CORRETA modelos de execução: exato. Compiladas (C, Go, Rust); interpretadas (Python, PHP); híbridas com bytecode + JIT (Java, C#, Kotlin).
- B errada: Python (CPython) é interpretada; existem variantes JIT (PyPy) mas a padrão é interpretada.
- C errada: Java compila para bytecode (.class), executado pela JVM com JIT. Tem etapa de compilação.
- D errada: Assembly é de baixo nível: tradução 1-para-1 com linguagem de máquina.
- E errada: compiladas são geralmente mais rápidas: o código é otimizado uma vez e executado direto pelo processador.
Tese central: Compiladas (C, Go, Rust) → executável; interpretadas (Python, PHP) → linha a linha; híbridas (Java, C#) → bytecode + JIT.
Questão 05 · Comentada
Enunciado. Sobre os paradigmas de programação:
- A) Os quatro pilares da orientação a objetos são: abstração, encapsulamento, herança e polimorfismo.
- B) Programação funcional não admite recursão.
- C) Programação procedural é o mesmo que orientação a objetos.
- D) Prolog é uma linguagem orientada a objetos.
- E) Encapsulamento significa que classes herdam comportamento umas das outras.
Gabarito: A
Prof. Affonsinho comenta
Cobra os pilares da OO.
- A CORRETA definição padrão de OO: exato. Os 4 pilares são abstração, encapsulamento, herança e polimorfismo.
- B errada: programação funcional usa recursão como forma natural de iteração.
- C errada: procedural foca em procedimentos/funções; OO foca em objetos com dados + comportamento. São paradigmas diferentes.
- D errada: Prolog é linguagem lógica, não OO.
- E errada: essa é a definição de herança. Encapsulamento é esconder detalhes internos de uma classe.
Tese central: OO = 4 pilares: abstração, encapsulamento, herança, polimorfismo.
Questão 06 · Comentada
Enunciado. Sobre algoritmos e suas representações:
- A) Pseudocódigo é uma linguagem de programação executável.
- B) Um algoritmo deve ser finito, ordenado e não ambíguo. Pode ser representado em pseudocódigo (texto livre próximo do português) ou em fluxograma (símbolos gráficos padronizados: retângulo=processo, losango=decisão, paralelogramo=E/S).
- C) Algoritmo e programa são sinônimos.
- D) Fluxograma usa apenas retângulos.
- E) Algoritmos podem ter número infinito de passos.
Gabarito: B
Prof. Affonsinho comenta
Cobra a definição clássica de algoritmo.
- A errada: pseudocódigo é uma representação livre, não executável; serve para planejar e comunicar.
- B CORRETA definição clássica: exato. Características + duas formas principais de representação.
- C errada: algoritmo é abstrato; programa é a implementação em linguagem específica. Mesmo conceito, escalas diferentes.
- D errada: fluxograma usa vários símbolos: retângulo (processo), losango (decisão), paralelogramo (E/S), oval (início/fim), seta (fluxo).
- E errada: algoritmo é por definição finito: termina em número finito de passos. Caso contrário não termina o programa.
Tese central: Algoritmo: finito, ordenado, não ambíguo. Representado em pseudocódigo ou fluxograma.
Questão 07 · Comentada
Enunciado. Sobre banco de dados e SQL:
- A) SELECT é comando DDL.
- B) Os comandos SQL classificam-se em: DDL (CREATE, ALTER, DROP, TRUNCATE - definição); DML (SELECT, INSERT, UPDATE, DELETE - manipulação); DCL (GRANT, REVOKE - controle); TCL (COMMIT, ROLLBACK, SAVEPOINT - transação).
- C) GRANT é comando TCL.
- D) Banco de dados relacional foi proposto por Tim Berners-Lee.
- E) Chave primária pode ter valor nulo.
Gabarito: B
Prof. Affonsinho comenta
Cobra a divisão dos comandos SQL.
- A errada: SELECT é DML (ou DQL para algumas bancas), não DDL.
- B CORRETA padrão SQL ISO: exato. As 4 categorias com seus comandos representativos.
- C errada: GRANT é DCL (Data Control Language), não TCL.
- D errada: modelo relacional é de Edgar F. Codd (IBM, 1970). Berners-Lee criou a Web em 1989.
- E errada: chave primária por integridade não pode ser nula nem repetida (integridade de entidade).
Tese central: DDL=definir; DML=manipular; DCL=controlar acesso; TCL=transação. Modelo relacional = Codd, 1970.
Questão 08 · Comentada
Enunciado. Sobre as funções do sistema operacional:
- A) O SO tem três funções: ligar, desligar e mostrar a tela.
- B) As cinco funções clássicas do SO, segundo Tanenbaum, são: gerência de processos, gerência de memória, gerência de arquivos, gerência de E/S e segurança/proteção.
- C) Gerência de memória não é função do SO.
- D) O SO não tem responsabilidade sobre segurança.
- E) O kernel roda em modo usuário; aplicativos rodam em modo privilegiado.
Gabarito: B
Prof. Affonsinho comenta
Cobra as funções clássicas.
- A errada: ligar é função do BIOS/UEFI + bootloader, não do SO. As 3 mencionadas são insuficientes.
- B CORRETA Tanenbaum, Modern Operating Systems: exato. As 5 funções que caem em prova federal.
- C errada: gerência de memória é uma das funções centrais do SO: aloca, desaloca, faz paginação, memória virtual.
- D errada: segurança é uma das 5 funções: autenticação, controle de acesso, criptografia.
- E errada: inversão: kernel roda em modo privilegiado (kernel mode); aplicativos rodam em modo usuário.
Tese central: 5 funções do SO: processos, memória, arquivos, E/S, segurança. Kernel = privilegiado; usuário = aplicativos.
Questão 09 · Comentada
Enunciado. Sobre processos e threads em sistemas operacionais:
- A) Processos e threads são sinônimos.
- B) Um processo é uma instância de programa em execução, com espaço de memória próprio. Uma thread (linha de execução) é uma unidade leve dentro de um processo, que compartilha a memória com as demais threads do mesmo processo.
- C) Threads não existem em sistemas operacionais modernos.
- D) Threads de um mesmo processo têm cada uma seu próprio espaço de memória isolado.
- E) Multitarefa cooperativa é mais robusta que multitarefa preemptiva.
Gabarito: B
Prof. Affonsinho comenta
Cobra a distinção fundamental.
- A errada: são conceitos diferentes: processo é instância de programa; thread é unidade de execução dentro do processo.
- B CORRETA definição padrão: exato. Processo = unidade de alocação; thread = unidade de execução; threads compartilham memória.
- C errada: threads são amplamente usadas em SOs modernos: Windows, Linux, macOS, mobile.
- D errada: inversão: threads do mesmo processo compartilham memória; é vantagem (comunicação rápida) e risco (concorrência).
- E errada: preemptiva é mais robusta: o SO controla, não depende da boa vontade da tarefa. Cooperativa é frágil (uma tarefa travada congela tudo).
Tese central: Processo = instância com memória própria; thread = unidade leve dentro do processo, compartilha memória.
Questão 10 · Comentada
Enunciado. Sobre os modelos de distribuição de software em nuvem:
- A) SaaS, PaaS e IaaS são sinônimos.
- B) SaaS (Software as a Service) entrega o software pronto via web (Microsoft 365, Salesforce). PaaS (Platform as a Service) entrega plataforma para desenvolvimento (Heroku, App Engine). IaaS (Infrastructure as a Service) entrega infraestrutura virtualizada (AWS EC2, Azure VMs). FaaS executa funções por chamada (AWS Lambda).
- C) IaaS é o nível mais alto de abstração entre os modelos de nuvem.
- D) SaaS exige instalação local do software.
- E) PaaS e IaaS são exclusivos da AWS.
Gabarito: B
Prof. Affonsinho comenta
Cobra os modelos de cloud.
- A errada: são modelos diferentes, com níveis de abstração diferentes.
- B CORRETA modelos de cloud computing: exato. SaaS (mais alto nível) → PaaS → IaaS (mais baixo nível) → FaaS (serverless).
- C errada: SaaS é o nível mais alto (software pronto); IaaS é o mais baixo (apenas infraestrutura).
- D errada: SaaS é entregue via web/aplicativo, sem instalação local complexa. É essa a vantagem central.
- E errada: todos os grandes provedores oferecem (AWS, Azure, Google Cloud, Oracle, IBM).
Tese central: SaaS (software pronto) > PaaS (plataforma) > IaaS (infraestrutura) > FaaS (função). Tudo cobrado por uso/assinatura.
Fim da aula 02
Você dominou os conceitos de software.
Sistema, aplicativo, programação, embarcado.
Stallman, FSF, GPL, MIT, Apache, SaaS.
Linguagens, paradigmas, banco de dados, SO.
Aula 02 de 15 · Informática
Próxima: Sistemas Operacionais (Windows e Linux).







