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; 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.
A placa-mãe e as peças conectadas a ela são hardware — as partes físicas que você pode tocarUm sistema operacional é software — os programas que dizem ao hardware o que fazer
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.
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);
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.
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.
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.
A impressora envia uma interrupção de hardware ao processador.
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).
Ele executa a ISR da impressora, que faz o sistema operacional exibir uma mensagem como “Sem papel”.
Em seguida, ele restaura o estado salvo e retoma o processador de texto, para que o estudante possa continuar digitando.
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.
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.
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.
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.
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.
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
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.