Pular para o conteúdo

Software

Ciência da Computação IGCSE · Tópico 4

Ver Slides Treinar
Videoaula para este tópico Abrir a página do vídeo
13:11

Hardware e Software

Aqui está um computador totalmente novo. Todas as partes físicas funcionam — o processador, a memória, a tela, o teclado. Ligue-o e nada acontece. Sem desktop…

Narração em inglês · legendas em inglês e 中文 que você pode alternar

4.1

Hardware e software

Um sistema computacional é composto por duas partes que trabalham juntas.

Hardware são as partes físicas (CPU, teclado); software são os programas (aplicativos, SO)
Hardware são as partes físicas; software são os programas
  • Hardware são as partes físicas do computador — as peças que você pode tocar. Exemplos: CPU, memória, teclado, tela e disco rígido.
  • Software são os programas que controlam o computador e dizem ao hardware o que fazer.

O hardware não pode fazer nada útil sozinho. O software precisa de hardware para rodar. Ambos são necessários.

Uma placa-mãe de computador com seus chips, slots e conectores
A placa-mãe e as peças conectadas a ela são hardware — as partes físicas que você pode tocar
Um sistema operacional desktop na tela
Um sistema operacional é software — os programas que dizem ao hardware o que fazer
Vocabulário Treinar
English Português
Hardware/ˈhɑːdweə/ Hardware
physical/ˈfɪzɪkl/ Físico
Software/ˈsɒftweə/ Software
programs/ˈprəʊɡræmz/ Programas
System software/ˈsɪstəm ˈsɒftweə/ Software do sistema
operating system/ˈɒpəreɪtɪŋ ˈsɪstəm/ sistema operacional
4.1

Tipos de software

Programa
Os candidatos devem ser capazes de: Notas e orientações
1 Descreva a diferença entre software de sistema e software de aplicação e forneça exemplos de cada um • Software de sistema fornece os serviços de que o computador necessita, incluindo sistema operacional e software utilitário • Software de aplicação fornece os serviços de que o usuário necessita
2 Descreva o papel e as funções básicas de um sistema operacional • Incluindo: – gerenciamento de arquivos – tratamento de interrupções – fornecimento de interface – gerenciamento de periféricos e drivers – gerenciamento de memória – gerenciamento de multitarefa – fornecimento de plataforma para execução de aplicativos – fornecimento de segurança do sistema – gerenciamento de contas de usuários
3 Entenda como hardware, firmware e um sistema operacional são necessários para executar software de aplicação • Aplicativos são executados no sistema operacional • O sistema operacional é executado no firmware • O bootloader (firmware) é executado no hardware
4 Descreva o papel e a operação de interrupções • Incluindo: – como uma interrupção é gerada – como ela é tratada usando uma rotina de serviço de interrupção – o que acontece como resultado das interrupções • Interrupções de software incluem divisão por zero e dois processos tentando acessar o mesmo local de memória • Interrupções de hardware incluem pressionar uma tecla no teclado e mover o mouse

Fonte: Programa Cambridge International

O software é dividido em dois tipos.

Uma árvore dividindo Software em software de sistema (sistema operacional, utilitários, drivers, compilador) e software de aplicação (processador de texto, planilha, banco de dados, navegador)
O software divide-se em software de sistema (faz o computador rodar) e software de aplicação (permite que o usuário realize uma tarefa)

Software de sistema

Software de sistema controla o próprio computador e fornece uma base para outros programas executarem. Exemplos:

  • sistema operacional (veja abaixo);
  • compilador e linker (ferramentas que transformam programas em uma forma que o computador pode executar);
  • driver de dispositivo — software que permite ao sistema operacional controlar um componente de hardware;
  • software utilitário — ferramentas pequenas que cuidam do computador (por exemplo, antivírus, backup, limpeza de disco).

Abaixo do sistema operacional está o firmware – software armazenado permanentemente em ROM ou flash que é executado assim que o computador é ligado. O BIOS e o bootloader são firmware: eles testam o hardware e depois carregam o sistema operacional. Assim, as camadas se empilham na ordem hardware → firmware → sistema operacional → software de aplicação, cada uma executando-se sobre a camada abaixo.

Software de aplicação

Software de aplicação permite ao usuário realizar tarefas úteis. Exemplos:

  • software de processamento de texto (escrita de documentos);
  • software de planilha (trabalho com números em uma grade);
  • sistema de gerenciamento de banco de dados (armazenamento e busca de dados);
  • navegador da web (visualização de páginas web).
Software de sistema Software de aplicação
Função executa e gerencia o computador ajuda o usuário a realizar uma tarefa
Usado por o computador (ao fundo) o usuário (diretamente)
Exemplos sistema operacional, drivers, utilitários processador de texto, navegador, jogos
Vocabulário Treinar
English Português
linker/ˈlɪŋkə/ Linker
device driver/dɪˈvaɪs ˈdraɪvə/ Driver de dispositivo
utility software/juːˈtɪlɪti ˈsɒftweə/ utilitários
firmware/ˈfɜːmweə/ firmware
bootloader/ˈbuːtləʊdə/ bootloader
Application software/ˌæplɪˈkeɪʃn ˈsɒftweə/ software de aplicação
word processing/wɜːd ˈprəʊsesɪŋ/ processamento de texto
spreadsheet/ˈspredʃiːt/ planilha eletrônica
database management system/ˈdeɪtəbeɪs ˈmænɪdʒmənt ˈsɪstəm/ sistema de gerenciamento de banco de dados
web browser/web ˈbraʊzə/ navegador web
providing a user interface/prəˈvaɪdɪŋ ə ˈjuːzə ˈɪntəfeɪs/ fornecimento de interface do usuário
user interface/ˈjuːzə ˈɪntəfeɪs/ interface do usuário
managing peripherals/ˈmænɪdʒɪŋ pəˈrɪfərəlz/ gerenciamento de periféricos
peripherals/pəˈrɪfərəlz/ periféricos
managing multitasking/ˈmænɪdʒɪŋ ˈmʌltitæskɪŋ/ gerenciamento de multitarefa
multitasking/ˈmʌltitæskɪŋ/ multitarefa
providing a platform/prəˈvaɪdɪŋ ə ˈplætfɔːm/ fornecimento de plataforma
platform/ˈplætfɔːm/ plataforma
4.1

O sistema operacional

Um sistema operacional (SO) é o principal software de sistema. Ele controla todo o computador e permite que o hardware, o software de aplicação e o usuário trabalhem juntos. Sem um SO, o computador é muito difícil de usar.

Quatro camadas empilhadas — usuário no topo, depois software de aplicação, depois sistema operacional, depois hardware na base
O sistema operacional fica entre o hardware e o software de aplicação e usuário, permitindo que trabalhem juntos

O SO tem muitas funções:

  • gerenciando arquivos — salvar, abrir, nomear, mover e excluir arquivos;
  • lidando com interrupções (veja abaixo);
  • fornecimento de interface do usuário para que o usuário controle o computador;
  • gerenciando memória — decidindo o que é mantido na RAM e onde;
  • gerenciamento de periféricos e seus drivers – controle de dispositivos como impressoras;
  • gerenciamento de multitarefa – permitir que vários programas rodem simultaneamente;
  • fornecimento de plataforma para execução de software de aplicação;
  • gerenciando segurança — contas de usuários, senhas e direitos de acesso.

Exemplo resolvido. Identifique a função do sistema operacional em cada caso: (a) um estudante salva uma redação em uma pasta chamada História; (b) um driver de impressora envia um documento para a impressora; (c) uma música continua tocando enquanto o estudante navega na internet; (d) um estudante precisa entrar em sua conta antes de usar um computador da escola.

(a) gerenciamento de arquivos; (b) gerenciamento de periféricos e seus drivers; (c) gerenciamento de multitarefa (o sistema operacional compartilha o tempo do processador e a memória entre os dois programas); (d) gerenciamento de segurança (contas de usuário e direitos de acesso). Em uma prova, cite a função e relacione-a ao exemplo dado.

4.1

Interrupções

Uma interrupção é um sinal enviado ao processador para informá-lo que algo precisa de atenção agora.

Uma interrupção pode vir de três fontes:

  • hardware — por exemplo, uma tecla é pressionada, ou uma impressora acaba de papel;
  • software — por exemplo, um programa tenta dividir por zero;
  • o usuário — por exemplo, o usuário pressiona uma tecla de “cancelar”.

Quando uma interrupção chega, o processador para o que está fazendo, salva seu local e atende (lida com) a interrupção. Quando isso estiver feito, ele volta ao que estava fazendo antes. Isso permite que o computador reaja rapidamente a eventos importantes.

Um ciclo: programa principal rodando, depois em uma interrupção a CPU salva seu estado, executa a rotina de serviço de interrupção, restaura o estado e retoma
Em uma interrupção a CPU salva seu local, executa a rotina de serviço de interrupção, depois restaura seu local e continua

As interrupções têm prioridades diferentes. O processador verifica se há interrupções ao final de cada ciclo de busca e execução. Se uma interrupção tiver prioridade maior que a da tarefa atual, o processador salva a tarefa atual e executa a rotina de serviço de interrupção (ISR) correspondente. Uma interrupção de prioridade menor espera em uma fila até que o processador esteja livre.

Exemplo resolvido. Um estudante está digitando um documento enquanto ele é impresso, e o papel da impressora acaba. Descreva como o computador lida com isso.

  1. A impressora envia uma interrupção de hardware ao processador.
  2. Ao final do ciclo atual, o processador verifica a prioridade da interrupção. Ela é maior que a da tarefa atual, então o processador salva o estado da tarefa atual (os valores em seus registradores).
  3. Ele executa a ISR da impressora, que faz o sistema operacional exibir uma mensagem como “Sem papel”.
  4. Em seguida, ele restaura o estado salvo e retoma o processador de texto, para que o estudante possa continuar digitando.
  5. Quando o papel é colocado, a impressora envia outra interrupção, e a impressão continua.
Explorar

Como a CPU trata uma interrupção

Passo a passo de uma interrupção. A CPU pausa o que está fazendo, lida com o evento urgente e continua exatamente onde parou — assim um único processador gerencia teclado, impressora e timer simultaneamente.

Vocabulário Treinar
English Português
interrupt/ˈɪntərʌpt/ interrupção
processor/ˈprəʊsesə/ processador
priorities prioridades
central processing unit/ˈsentrəl ˈprəʊsesɪŋ ˈjuːnɪt/ unidade central de processamento
programming language/ˈprəʊɡræmɪŋ ˈlæŋɡwɪdʒ/ linguagem de programação
high-level language/haɪ ˈlevl ˈlæŋɡwɪdʒ/ linguagem de alto nível
low-level language/ləʊ ˈlevl ˈlæŋɡwɪdʒ/ linguagem de baixo nível
machine code/məˈʃiːn kəʊd/ código de máquina
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ linguagem de montagem
specific/spəˈsɪfɪk/ específico
translator/trænˈsleɪtə/ tradutor
4.2

Linguagens de programação

Programa
Os candidatos devem ser capazes de: Notas e orientações
1 Explique o que se entende por uma linguagem de alto nível e uma linguagem de baixo nível, incluindo as vantagens e desvantagens de cada uma • Vantagens e desvantagens incluem: – facilidade de leitura e escrita de código, ex.: baixo nível é difícil de ler – facilidade de depuração de código – independência de máquina – manipulação direta do hardware
2 Entenda que a linguagem assembly é uma forma de linguagem de baixo nível que usa mnemônicos, e que um ensamblador é necessário para traduzir um programa em linguagem assembly em código de máquina
3 Descreva a operação de um compilador e um intérprete, incluindo como o código de alto nível é traduzido por cada um e como os erros são relatados • Um compilador traduz todo o código de uma vez antes de executá-lo, produzindo um arquivo executável • Um intérprete traduz e executa o código linha por linha • Um compilador fornece um relatório de erros para todo o código se erros forem detectados • Um intérprete interrompe a execução quando um erro é encontrado
4 Explique as vantagens e desvantagens de um compilador e um intérprete • Incluindo a compreensão de que um intérprete é usado principalmente durante o desenvolvimento de um programa e um compilador é usado para traduzir o programa final
5 Explique o papel de um IDE na escrita de código de programas e as funções comuns que IDEs fornecem • Incluindo: – editores de código – ambiente de tempo de execução – tradutores – diagnósticos de erro – autocompletar – autocorrigir – formatação automática

Fonte: Programa Cambridge International

Todos os computadores processam dados usando a unidade central de processamento (CPU). Para fazer a CPU trabalhar, pessoas escrevem programas em uma linguagem de programação. Existem dois tipos.

Linguagens de alto nível

Uma linguagem de alto nível é escrita em palavras que lembram um pouco o inglês (por exemplo, Python). Ela é:

  • fácil para pessoas lerem, escreverem e corrigirem;
  • independente do computador — o mesmo programa pode rodar em diferentes tipos de computadores.

Linguagens de baixo nível

Uma linguagem de baixo nível está próxima do que o hardware realmente usa. Inclui:

  • código de máquina – instruções escritas em binário (0s e 1s), que a CPU executa diretamente;
  • linguagem de montagem – código de máquina escrito com códigos de palavras curtas (mnemônicos) em vez de binário.

Uma linguagem de baixo nível relaciona-se ao tipo específico de CPU, por isso um programa escrito para uma CPU pode não rodar em outra. É usada quando o programador precisa de controle total do hardware ou de código muito rápido e pequeno.

Três camadas empilhadas: linguagem de alto nível no topo, depois assembly, depois código máquina na base
Linguagens de alto nível estão próximas da linguagem humana e rodam em qualquer computador; linguagens de baixo nível (ensambladora e código de máquina) estão próximas do hardware e vinculadas a um único tipo de CPU
Explorar

Laboratório de conceitos de computação

Classifique exemplos concretos pelo conceito de computação que eles demonstram.

Assistir aula
4.2

Tradutores

A CPU só pode executar código de máquina. Um programa de alto nível deve primeiro ser convertido em código de máquina. O software que faz isso é um tradutor. Existem três tipos: um compilador e um interpretador (para código de alto nível), e um montador (para código de baixo nível).

Compilador

Um compilador traduz o todo programa em código de máquina antes de ser executado. Após a tradução, o código de máquina pode ser executado várias vezes sem precisar traduzir novamente.

  • a tradução ocorre uma única vez, em sua totalidade;
  • ele fornece um relatório de erros para todo o código-fonte, com os erros de tradução detectados;
  • o programa finalizado roda rápido e não precisa do compilador para funcionar.

Interpretador

Um intérprete traduz e executa o programa linha por linha.

  • ele para no primeiro erro que encontra, o que ajuda durante os testes;
  • o programa roda mais devagar, pois é traduzido toda vez que é executado;
  • o interpretador deve estar presente toda vez que o programa for executado.

Use um compilador quando quiser compartilhar um programa finalizado rápido. Use um interpretador quando estiver escrevendo e testando um programa e quiser encontrar erros facilmente.

Exemplo resolvido — quando ocorre a execução?

Tente. Use os modelos de compilador de programa inteiro e intérprete linha por linha do currículo. Considere esta breve descrição de fonte; ela não é um programa em uma linguagem específica.

Linha Descrição da fonte
1 Uma instrução válida exibe Start
2 Uma adição incompleta está faltando um valor após o sinal de mais
3 Uma instrução válida exibe Done

A linha 2 contém um erro de tradução. O que é exibido antes desse erro ser relatado por cada tradutor? A linha 3 será executada? Explique a ordem de tradução e execução.

Rastreio do compilador. Toda a fonte é traduzida antes da execução. O erro na linha 2 faz com que a compilação falhe. Um relatório de erro é fornecido para toda a fonte. O novo programa não é executado, então nem Start nem Done são exibidos.

Rastreio do intérprete. A linha 1 é traduzida e executada, exibindo Start. O intérprete encontra o erro na linha 2 e interrompe a execução ali. A linha 3 não é alcançada, então Done não é exibido.

Esses rastreios ilustram o modelo do currículo; ferramentas reais de linguagem podem combinar abordagens. Um tradutor relata erros que consegue detectar, não todos os erros na lógica do programa.

Transferência — desenvolvimento e lançamento. Uma equipe deseja localizar erros durante testes de seções curtas. Mais tarde, clientes devem executar o programa final repetidamente sem instalar seu tradutor. Escolha um tradutor para cada etapa e explique por quê. No ambiente de desenvolvimento integrado (IDE), nomeie uma ferramenta para inserir a fonte e outra para investigar um erro relatado. Por fim, decida se uma tradução bem-sucedida prova que um total calculado está correto.

Resposta exemplificada. No modelo do currículo, um intérprete é adequado para desenvolvimento: a tradução e execução linha por linha param ao encontrar um erro, ajudando a equipe a localizá-lo. Um compilador é adequado para lançamento: a compilação bem-sucedida cria um arquivo executável que pode ser executado repetidamente sem o compilador. Fonte inalterada não precisa ser traduzida novamente para cada execução. Um editor de código insere e altera a fonte; diagnósticos de erro ajudam a localizar e explicar erros relatados; o ambiente de tempo de execução permite à equipe testar o programa. Um total incorreto ainda pode resultar de lógica defeituosa após uma tradução bem-sucedida. Teste com entradas conhecidas, compare resultados reais e esperados, e investigue o cálculo.

Montador

Um montador traduz um programa de linguagem assembly de baixo nível (escrito em mnemônicos como LDA, ADD) em código de máquina. Cada mnemônico torna-se uma instrução de máquina — uma tradução direta de um para um, diferentemente de um compilador ou intérprete, que trabalham com código de alto nível.

Compilador traduzindo todo o programa uma vez em código de máquina que roda muitas vezes, versus um interpretador traduzindo e executando linha por linha
Um compilador traduz todo o programa uma vez em código de máquina; um interpretador traduz e executa linha por linha

Exemplo resolvido. Uma equipe está escrevendo um programa. Durante o desenvolvimento, ela quer encontrar e corrigir erros rapidamente; ao distribuí-lo, quer que os clientes o executem rapidamente sem ver o código-fonte. Qual tradutor é adequado para cada etapa? Durante o desenvolvimento, use um interpretador: ele traduz e executa uma linha de cada vez e para no primeiro erro, facilitando a localização de uma falha. Para a distribuição, use um compilador: ele traduz todo o programa uma única vez para código de máquina, que então é executado rapidamente sem a presença de um tradutor, e o cliente recebe apenas o executável, em vez do código-fonte. Os dois não são rivais - indique a etapa e explique o motivo, pois “um compilador é mais rápido”, por si só, não vale pontos.

Vocabulário Treinar
English Português
compiler/kəmˈpaɪlə/ compilador
interpreter/ɪnˈtɜːprɪtə/ interpretador
integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ ambiente integrado de desenvolvimento
code editor/kəʊd ˈedɪtə/ editor de código
error diagnostics/ˈerə ˌdaɪəɡˈnɒstɪks/ diagnóstico de erros
run time environment/rʌn taɪm enˈvaɪrənmənt/ ambiente de execução
assembler/əˈsemblə/ ensamblador
auto-completion/ˈɔːtəʊ kəmˈpliːʃn/ completar automaticamente
auto-correction/ˈɔːtəʊ kəˈrekʃn/ correção automática
prettyprinting/ˈpretɪprɪntɪŋ/ formatação estética
4.2

Ambiente de desenvolvimento integrado (IDE)

Um ambiente de desenvolvimento integrado (IDE) é um software que ajuda você a escrever programas. Ele coloca muitas ferramentas úteis em um só lugar:

  • um editor de código — para digitar seu programa;
  • um ambiente de tempo de execução — para executar o programa e testá-lo;
  • um tradutor — um compilador ou interpretador para converter seu código em código de máquina;
  • diagnósticos de erro — mensagens que ajudam você a encontrar e entender erros;
  • completamento automático e correção automática — o IDE completa ou corrige o código enquanto você digita;
  • formatação estética — organizar o código de forma organizada com cores e recuos para facilitar a leitura.
Código-fonte em um editor: um IDE combina editor, depurador e ferramentas de execução em um só lugar
Código-fonte em um editor: um IDE combina editor, depurador e ferramentas de execução em um só lugar
4.2

Dicas de prova

  • Hardware é as partes físicas; software são os programas. Software de sistema roda o computador (SO, drivers, utilitários); software de aplicação executa uma tarefa para o usuário.
  • Um compilador traduz todo o programa de uma vez (o programa finalizado roda rápido, e todos os erros são relatados no final); um interpretador traduz linha por linha (ele para no primeiro erro, roda mais devagar e é necessário toda vez).
  • Linguagens de alto nível estão próximas do inglês e rodam em qualquer computador; linguagens de baixo nível (ensambladora, código de máquina) estão vinculadas a um único tipo de CPU.
  • Uma interrupção é um sinal que faz a CPU parar, salvar seu local, atender ao evento e depois continuar onde parou.
  • Aprenda os papéis do sistema operacional: gerenciamento de arquivos, memória, periféricos, multitarefa, segurança e interface do usuário.

Aulas interativas sobre este tópico

Passe por ele passo a passo, com exercícios de verificação instantânea.

Provas Anteriores

Mais tópicos em Ciência da Computação IGCSE

Entrar ou criar conta

IGCSE, A-Level & AP