Buscar

SISTEMA OPERACIONAIS TEMP 1 -3 COM RESPOSTA DE EXERCICIOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Conceitos de sistemas operacionais
Apresentação
Sistemas operacionais têm a função de gerenciar o hardware do computador e garantir o seu 
correto funcionamento. Para isso, é necessário que qualquer comunicação com o hardware seja 
intermediada pelo sistema operacional.
Softwares de aplicação constantemente têm a necessidade de interagir com peças de hardware: É 
necessário abrir e salvar arquivos (acessando algum dispositivo de memória secundária, como o 
disco rígido ou um pendrive), fazer comunicação com outros computadores (por meio 
da placa de rede), tocar sons ou enviar imagens e textos para a tela. 
Os sistemas operacionais disponibilizam chamadas de sistema 
para permitir que a aplicação tenha um acesso controlado a 
esses dispositivos.
As chamadas de sistema são funções padronizadas que, ao serem chamadas por um programa, irão 
fazer com que o sistema operacional execute uma série de comandos de baixo nível, evitando que 
essa complexidade seja levada para o software que está sendo executado pelo sistema.
As chamadas de sistema são a forma do software acessar funções 
do sistema operacional, mas usuários mais experientes precisam de uma ferramenta para interagir 
com o sistema. Os interpretadores de comandos (shell) cumprem esse papel, oferecendo uma 
interface baseada em texto, na qual é possível inserir comandos para executar programas que irão 
fazer a interação com o sistema operacional.
Nesta Unidade de Aprendizagem, você vai aprender o que são chamadas de sistema, por que são 
necessárias e como é o seu processo de execução. Vai entender o funcionamento dos 
interpretadores de comandos e ser apresentado a um histórico da linguagem C e 
como sua criação está ligada à criação do sistema operacional Unix.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir características e papel do shell em sistemas operacionais.•
Compreender as chamadas de sistemas.•
Descrever o histórico da linguagem de programação C para criação do sistema operacional 
Unix.
•
Desafio
O interpretador de comandos, ou shell do sistema operacional, é um tipo de software de sistema 
embutido na maioria dos sistemas operacionais, para permitir que usuários possam enviar 
comandos e receber as respostas de uma forma legível. Utilizando o terminal, usuários com 
conhecimento mais avançado podem, por exemplo, automatizar tarefas, ou mesmo realizar várias 
ações de forma mais rápida do que se usassem aplicativos com interface gráfica.
A maioria das ferramentas de auxílio a atividades de desenvolvimento de software oferece, além 
dos programas com interfaces gráficas, utilitários de linha de comando que podem ser chamados a 
partir do shell do sistema operacional. Compiladores, ferramentas de controle de versão e clientes 
de banco de dados, por exemplo, geralmente podem ser acessados com linha de comando.
A possibilidade de aninhar comandos usando o operador | (pipe), levando a saída do programa à 
esquerda do operador para a entrada do programa à direita também traz grande poder e 
flexibilidade para usuários de interpretadores de comando. Tudo isso é particularmente importante 
ao se considerar a tendência atual de infraestrutura como código (infrastructure as code - IaC), na 
qual se deve permitir criar e configurar ambientes por meio de código e não de atividades manuais.
Você é membro de uma equipe trabalhando com a escrita de código IaC e recebe a tarefa de 
converter um passo manual, que era necessário ao instalar um sistema em um procedimento 
automático, usando o interpretador de comandos de sua escolha (como sh ou bash no Linux; no 
caso do Windows, pode ser usado o cmd ou o PowerShell). O passo manual que deve ser convertido 
é o seguinte:
a) Escrever no arquivo output.txt a data e a hora atuais, sem apagar o conteúdo que poderia existir 
anteriormente no arquivo.
b) Escrever no arquivo output.txt a pasta atual, sem apagar o conteúdo que estava presente no 
arquivo anteriormente.
c) Rodar o comando ping www.google.com (no Windows) ou ping -c 4 www.google.com (no Linux), 
escrevendo as linhas com o resultado do ping para o arquivo output.txt (dica: no Windows, essas 
linhas têm a palavra “Resposta”, e no Linux, as linhas têm o texto “64 bytes”), sem apagar o 
conteúdo que estava presente no arquivo anteriormente.
d) Escrever no arquivo “output.txt” a listagem dos arquivos existentes com a extensão “.jpg” 
atualmente na pasta (não é um problema que a linha tenha mais informação além do nome dos 
arquivos, como por exemplo, a data de criação ou seu tamanho), sem apagar o conteúdo que estava 
presente no arquivo anteriormente.
e) Dentro da pasta atual, criar uma nova pasta com o nome “jpgBackup”
f) Copiar todos os arquivos .jpg da pasta atual para a pasta “jpgBackup”
Infográfico
Sempre que é necessário interagir com o sistema operacional, as aplicações devem solicitar uma 
chamada de sistema. É por meio dessas chamadas que o sistema garante o correto funcionamento 
de suas abstrações, sem interferência entre os vários programas que podem estar sendo 
executados em um dado instante.
Para que essas chamadas funcionem, de forma geral os sistemas operacionais seguem um fluxo 
bem definido, tomando o controle da execução da aplicação, rodando a chamada de sistema em si 
e, finalmente, retornando o resultado da chamada e o controle da execução para a aplicação 
solicitante.
No Infográfico a seguir, você vai poder compreender o funcionamento interno do sistema 
operacional durante uma chamada de sistema, entendendo quais passos são seguidos e 
aprendendo o conceito de espaço de usuário e espaço de núcleo.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/2822d37b-3f83-4573-9284-565314ef623c/161942cc-c020-44b9-b236-37a7e67909b2.jpg
Conteúdo do livro
Um sistema operacional é um programa de computador que coordena e administra os recursos do 
sistema, além de estabelecer a comunicação entre o usuário e o hardware. Ele desempenha um 
papel crucial ao possibilitar a execução de programas, garantir a segurança e facilitar a interação 
com o computador.
Os usuários têm a opção de interagir com o sistema operacional por meio da interface gráfica ou do 
shell. A interface gráfica oferece uma interação visual, enquanto o shell é uma interface de linha de 
comando amplamente utilizada em sistemas baseados em Linux, especialmente no sistema 
operacional Unix. O shell permite que os usuários se comuniquem com o sistema por meio de 
comandos de texto, permitindo a execução de tarefas, o gerenciamento de recursos e a automação 
de processos de maneira eficiente.
No capítulo Conceitos de sistemas operacionais, base teórica desta Unidade de Aprendizagem, 
você explorará a importância do shell nos sistemas operacionais, compreenderá o conceito de 
chamadas de sistema e descobrirá a relevância histórica da linguagem de programação C no 
desenvolvimento do Unix. Esses conhecimentos serão fundamentais para aprofundar sua 
compreensão e se aventurar em áreas mais avançadas desse fascinante campo da ciência da 
computação.
Boa leitura.
SISTEMAS 
OPERACIONAIS
Identificação interna do documento
OBJETIVOS DE APRENDIZAGEM
 > Definir as características e o papel do shell em sistemas operacionais.
 > Compreender as chamadas de sistemas.
 > Descrever o histórico da linguagem de programação C para a criação do 
sistema operacional Unix.
Introdução
Um sistema operacional é um software que gerencia recursos e fornece uma 
interface entre o usuário e o hardware de um computador, desempenhando um 
papel fundamental ao permitir a execução de programas, garantir a segurança e 
facilitar a interação com a máquina.
Os usuários podem interagir com o sistema operacional por meio da interface 
gráfica ou por comandos de texto, independentemente do sistema operacional 
utilizado. O shell, uma interface de linha de comando amplamente adotada emsistemas baseados em Linux e essencial no sistema operacional Unix, possibilita 
aos usuários interagir com o sistema via comandos de texto, permitindo a execução 
de tarefas, o gerenciamento de recursos e a automação de processos de forma 
eficiente. Essa funcionalidade está presente em diversos sistemas operacionais, 
como o Windows, oferecendo aos usuários a flexibilidade de escolher a forma de 
interação mais adequada às suas necessidades.
Conceitos 
de sistemas 
operacionais
Marcelo da Silva dos Santos
Identificação interna do documento
Neste capítulo, você compreenderá o papel do shell em sistemas operacio-
nais, as chamadas de sistema e o histórico da linguagem de programação C no 
desenvolvimento do Unix. 
Introdução ao shell de sistema
Um componente essencial de qualquer sistema operacional é o shell de sis-
tema, que desempenha um papel fundamental na interação entre o usuário 
e o sistema. O shell de sistema é uma interface de linha de comando que 
permite ao usuário executar comandos e controlar o sistema operacional. 
Um dos exemplos mais comuns de shell de sistema é o prompt de comando 
no sistema operacional Windows e o terminal no sistema operacional Linux. 
Essas interfaces permitem que os usuários emitam comandos ao digitar 
instruções num prompt de texto.
O prompt de comando e o terminal fornecem uma ampla gama de recursos 
e funcionalidades para realizar diversas tarefas no sistema operacional. Por 
meio dessas interfaces, é possível executar programas, gerenciar arquivos e 
diretórios, manipular processos, configurar o sistema e muito mais.
Ao usar o prompt de comando no Windows, o usuário pode digitar co-
mandos como dir para listar os arquivos em um diretório, cd para mudar 
de diretório, copy para copiar arquivos, entre outros. O prompt de comando 
exibe o resultado dos comandos na mesma janela, permitindo uma interação 
rápida e eficiente com o sistema operacional.
Quando um usuário se conecta, um shell é iniciado, utilizando o 
terminal como entrada e saída-padrão. O shell apresenta um prompt, 
geralmente representado por um caractere, como o cifrão ($), indicando que 
está pronto para receber comandos do usuário (TANENBAUM; WOODHULL, 2008).
No Linux, o terminal oferece recursos semelhantes, mas com uma maior 
flexibilidade e poder. Os comandos no terminal são tipicamente baseados 
em texto e oferecem uma vasta gama de opções e argumentos. É possível 
criar scripts de shell, que são sequências de comandos em um arquivo, para 
automatizar tarefas e realizar operações complexas no sistema operacional.
O uso do prompt de comando ou do terminal requer familiaridade com os 
comandos disponíveis e sua sintaxe. Existem muitos recursos e comandos 
avançados que podem ser explorados para melhorar a produtividade e a 
eficiência no uso do sistema operacional.
Conceitos de sistemas operacionais2
Identificação interna do documento
Em resumo, o shell de sistema, representado pelo prompt de comando 
no Windows e pelo terminal no Linux, é uma interface poderosa que permite 
aos usuários interagir diretamente com o sistema operacional por meio de 
comandos de texto. É fundamental dominar o uso dessas interfaces para 
aproveitar ao máximo os recursos e funcionalidades oferecidos pelos sis-
temas operacionais.
Introdução ao prompt de comando no Windows
O prompt de comando no sistema operacional Windows é uma interface 
de linha de comando que permite aos usuários interagir diretamente com 
o sistema operacional por meio de comandos de texto. Essa ferramenta 
versátil e poderosa oferece uma variedade de recursos para executar ta-
refas, gerenciar arquivos, configurar o sistema e muito mais (TANENBAUM; 
WOODHULL, 2008).
Ao abrir o prompt de comando, o usuário é apresentado a uma janela de 
console onde pode digitar comandos. Esses comandos podem realizar uma 
ampla gama de tarefas, como listar arquivos em um diretório, navegar entre 
pastas, executar programas, criar e renomear arquivos, gerenciar serviços e 
redes, entre outras funcionalidades.
O Windows conta atualmente com duas versões de prompt: o CMD (Com-
mand Prompt) e o PowerShell. Ambas são interfaces de linha de comando 
disponíveis no sistema operacional e se diferenciam em termos de recursos 
e funcionalidades.
O CMD é a interface de linha de comando padrão do Windows, oferecendo 
um ambiente simples com comandos básicos para executar tarefas como 
navegar entre diretórios, executar programas e realizar operações de arquivo. 
Embora seja amplamente utilizado, trabalha com uma sintaxe de comando 
mais antiga e recursos limitados em comparação com o PowerShell.
Por outro lado, o PowerShell é uma interface de linha de comando avan-
çada e poderosa, baseada numa plataforma de automação da Microsoft. Ele 
proporciona recursos aprimorados, como suporte a scripts, manipulação de 
objetos e uma sintaxe mais rica. Com o PowerShell, é possível automatizar 
tarefas complexas e ter acesso a uma ampla gama de recursos e serviços 
do Windows.
Em resumo, o CMD é mais adequado para tarefas básicas e simples, en-
quanto o PowerShell é mais robusto e flexível, permitindo automação avan-
çada e oferecendo um conjunto mais amplo de recursos para administradores 
de sistema e desenvolvedores. 
Conceitos de sistemas operacionais 3
Identificação interna do documento
Ambos seguem uma sintaxe específica, em que cada comando é digitado na 
linha de comando, seguido de parâmetros e argumentos, quando necessário. 
Os comandos são interpretados pelo sistema operacional, que executa as 
ações solicitadas pelo usuário. Na Figura 1, você pode observar a execução 
do comando ping, em que é demonstrado o envio de pacotes de dados para 
os endereços IP 192.168.1.5 e 192.168.1.6, e a exibição dos dados resultantes, 
incluindo o tempo de resposta (latência), o número de pacotes perdidos e 
informações estatísticas sobre a conectividade de rede.
Figura 1. Exemplo de um comando ping num CMD do Windows.
Para facilitar a compreensão e familiarização com o prompt de comando 
no Windows, apresentaremos alguns comandos que ilustram o uso dessa 
interface de linha de comando.
 � Para iniciar, abra o menu Iniciar e pesquise por "Prompt de Comando" 
ou "cmd" e clique no resultado correspondente para abrir a janela do 
prompt de comando.
 � Na janela do prompt de comando, você verá o prompt atual, geralmente 
exibido como C:\Users\nome _ do _ usuário>. Isso indica o diretório 
atual em que você está trabalhando.
 � Digite o comando dir e pressione Enter. Isso listará os arquivos e 
diretórios no diretório atual.
 � Experimente outros comandos, como cd para mudar de diretório, mkdir 
para criar um diretório, del para excluir um arquivo, copy para copiar 
Conceitos de sistemas operacionais4
Identificação interna do documento
um arquivo, entre outros. Observe as respostas e saídas exibidas pelo 
prompt de comando.
 � Utilize comandos adicionais para explorar ainda mais recursos, como 
ipconfig para exibir informações de rede, tasklist para listar os 
processos em execução, ping para testar a conectividade de rede, 
entre outros.
 � Para criar uma pasta, utilize o comando mkdir nome _ da _ pasta e 
pressione Enter. Isso criará uma pasta no diretório atual.
 � Para exibir a data e a hora atuais, digite o comando date ou time e 
pressione Enter. Isso mostrará a data e a hora do sistema.
 � Para escrever a saída de um comando num arquivo TXT, utilize o ope-
rador de redirecionamento “>” seguido do nome do arquivo. Se você 
executar, por exemplo, o comando dir > lista _ arquivos.txt, 
será criado um arquivo chamado lista _ arquivos.txt com a lista 
de arquivos do diretório atual.
 � Se você quiser acrescentar a saída a um arquivo existente, utilize o 
operador de redirecionamento “>>”. Por exemplo, dir >> lista _ ar-
quivos.txt adicionará a lista de arquivos ao final do arquivo existente 
lista _ arquivos.txt.
Para aprofundar seu conhecimento e realizar diversas tarefas de geren-
ciamento e configuração no sistema operacional Windows, exploreesses 
comandos e recursos adicionais do prompt de comando, como taskkill 
para forçar o encerramento de um processo, netstat para exibir conexões 
ativas, findstr para pesquisar padrões em textos, entre outros. Essa inte-
ração prática permitirá que você se familiarize com os comandos básicos e 
comece a explorar os recursos avançados do prompt de comando no sistema 
operacional Windows.
Introdução ao terminal no Linux
O terminal no sistema operacional Linux é uma interface de linha de comando 
poderosa e flexível que permite aos usuários interagir diretamente com 
o sistema operacional por meio de comandos de texto. É uma ferramenta 
fundamental para administradores de sistema, desenvolvedores e usuários 
avançados que desejam ter controle total sobre o sistema operacional (TA-
NENBAUM; WOODHULL, 2008).
Ao abrir o terminal, você terá acesso a uma janela de console onde pode 
digitar comandos e receber a saída correspondente. O terminal no Linux 
Conceitos de sistemas operacionais 5
Identificação interna do documento
oferece uma ampla variedade de recursos e comandos que permitem executar 
tarefas complexas, automatizar processos e personalizar a experiência do 
usuário. No terminal, os comandos são inseridos seguindo uma sintaxe espe-
cífica. Cada comando é digitado na linha de comando, podendo ser seguido 
por opções e argumentos, conforme necessário. 
Na Figura 2, você pode observar a execução do comando tree, que exibe 
uma representação hierárquica dos diretórios e arquivos numa estrutura de 
árvore. O resultado do comando tree mostra os diretórios como nós e os 
arquivos como folhas, permitindo uma visualização organizada da estrutura 
do sistema de arquivos. Isso facilita a compreensão da organização dos dire-
tórios e a identificação dos arquivos presentes em cada nível da hierarquia.
Figura 2. Exemplo de um comando tree em terminal Linux.
No Linux, o terminal oferece uma grande variedade de comandos internos 
e externos. Os comandos internos são incorporados ao shell do sistema 
operacional, enquanto os comandos externos são programas executáveis que 
podem ser acessados pelo terminal (TANENBAUM; WOODHULL, 2008). Esses 
comandos permitem ao usuário gerenciar arquivos, diretórios, processos, 
usuários, permissões, redes e muitos outros aspectos do sistema operacional.
Para fornecer uma visão prática do terminal no Linux, a seguir apresen-
tamos uma ilustração do uso e dos recursos dessa poderosa interface de 
linha de comando.
Conceitos de sistemas operacionais6
Identificação interna do documento
 � Abra o terminal no seu sistema Linux. Você pode encontrá-lo no menu 
de aplicativos ou pressionando a combinação de teclas Ctrl + Alt + T.
 � Na janela do terminal, você verá um prompt, geralmente exibido como 
"$" ou username@hostname:~$. Esse prompt indica que você está 
pronto para digitar comandos.
 � Digite o comando ls e pressione Enter. Isso listará os arquivos e di-
retórios no diretório atual.
 � Experimente outros comandos básicos, como cd para mudar de dire-
tório, mkdir para criar um diretório, rm para excluir um arquivo, cp 
para copiar arquivos, mv para mover arquivos, entre outros. Observe 
as saídas e resultados exibidos no terminal.
 � Para criar uma pasta, utilize o comando mkdir seguido do nome dese-
jado para o diretório. Por exemplo, mkdir nova _ pasta criará uma 
pasta chamada nova _ pasta.
 � Para escrever a data e hora atuais no terminal, você pode usar o co-
mando date. Ele exibirá a data e hora do sistema no formato definido.
 � Para redirecionar a saída de um comando para um arquivo de texto no 
Linux, você pode utilizar o operador de direcionamento ">". Por exemplo, 
o comando ls > lista _ arquivos.txt criará um arquivo chamado 
lista _ arquivos.txt e gravará nele a saída do comando ls.
 � Além disso, há também o operador de direcionamento ">>", que difere 
do ">" em seu comportamento. O ">>" é usado para redirecionar a saída 
de um comando e anexá-la a um arquivo existente, sem substituir o 
conteúdo existente. Por exemplo, se você executar o comando ls >> 
lista _ arquivos.txt mais de uma vez, a saída será adicionada ao 
final do arquivo lista _ arquivos.txt sem remover o conteúdo 
anterior.
 � Você ainda pode utilizar comandos mais avançados para explorar re-
cursos adicionais, como grep para pesquisar por padrões em arquivos, 
ps para listar processos em execução, sudo para executar comandos 
com privilégios de superusuário, entre outros.
Da mesma forma como comentado na seção anterior, lembre-se de explorar 
outros comandos e suas opções para descobrir mais recursos e funcionalida-
des do terminal Linux. Com a prática e a experiência, você poderá aprofundar 
seu conhecimento e aproveitar ao máximo o terminal no Linux, tornando-se 
mais eficiente na administração e uso do sistema operacional.
Conceitos de sistemas operacionais 7
Identificação interna do documento
Conceito de chamadas de sistema e suas 
aplicações
Um sistema operacional é responsável por gerenciar os recursos do computa-
dor e permitir que os aplicativos possam utilizá-los de maneira organizada e 
controlada. Para isso, os sistemas operacionais disponibilizam uma interface 
de programação de aplicativos (API), que é uma coleção de rotinas, protocolos 
e ferramentas para a criação de aplicativos. Essa interface permite que os 
aplicativos possam solicitar serviços ao sistema operacional para acessar 
seus recursos (TANENBAUM; WOODHULL, 2008).
As chamadas de sistema (system calls) são uma forma como os aplicativos 
podem solicitar serviços ao sistema operacional. Uma chamada de sistema 
é uma solicitação feita por um aplicativo ao sistema operacional para que 
execute uma determinada tarefa, como, por exemplo, ler um arquivo ou 
escrever em um dispositivo de armazenamento (TANENBAUM, 2009). As cha-
madas de sistema são realizadas por meio de uma interrupção de software, 
que interrompe a execução normal do programa e transfere o controle para 
o sistema operacional, que então executa a tarefa solicitada.
As chamadas de sistema são classificadas de acordo com a tarefa que 
cada uma delas realiza. Eis a seguir algumas das chamadas mais comuns 
(TANENBAUM; WOODHULL, 2008):
 � Chamadas de sistema para gerenciamento de processos: permitem 
que os programas solicitem a criação, execução, término e controle 
de processos. Essas chamadas incluem operações como criação de 
processos, término de processos, obtenção de identificadores de 
processo (PID), troca de contexto entre processos, agendamento de 
processos, entre outras. 
 � Chamadas de sistema para sinais: permitem que um programa notifique 
ou seja notificado sobre eventos ou condições específicas que ocorrem 
durante a execução. Os sinais podem ser usados para interrupção de 
processos, manipulação de erros, comunicação entre processos, entre 
outras finalidades. 
 � Chamadas de sistema para gerenciamento de arquivos: fornecem aos 
programas a capacidade de criar, abrir, ler, gravar, renomear e excluir 
arquivos. Essas chamadas são essenciais para o trabalho com sistemas 
de arquivos, permitindo que os programas acessem e manipulem 
dados persistentes. 
Conceitos de sistemas operacionais8
Identificação interna do documento
 � Chamadas de sistema para gerenciamento de diretórios: permitem 
que os programas interajam com estruturas hierárquicas de diretórios, 
como navegar por diretórios, criar, renomear e excluir diretórios, entre 
outras operações. 
 � Chamadas de sistema para proteção: usadas para controlar o acesso a 
recursos do sistema operacional, como arquivos, diretórios, dispositi-
vos e outras entidades. Essas chamadas permitem que os programas 
solicitem permissões, definam permissões de acesso e verifiquem a 
autorização para realizar determinadas operações. 
 � Chamadas de sistema para gerenciamento de tempo: são funcionalida-
des disponíveis em sistemas operacionais que permitem aos programas 
obter informações sobre o tempo atual, medir durações, agendar tarefas 
e realizar outras operaçõesrelacionadas ao tempo. Essas chamadas 
de sistema são essenciais para o desenvolvimento de aplicações que 
requerem sincronização, agendamento de tarefas e manipulação de 
eventos baseados em tempo.
As chamadas de sistema desempenham um papel fundamental no fun-
cionamento dos sistemas operacionais e na interação entre os programas 
de usuário e o núcleo do sistema. Por meio das chamadas de sistema, os 
programas podem solicitar serviços e recursos do sistema operacional, como 
acesso a arquivos, manipulação de processos, gerenciamento de memória e 
comunicação entre processos (WEBER, 2012).
As chamadas de sistema permitem que os programas aproveitem os recur-
sos e as funcionalidades oferecidos pelo sistema operacional, tornando-se 
uma interface crucial para a criação de aplicativos eficientes e robustos. A 
linguagem C, com seu suporte integrado a chamadas de sistema, proporciona 
uma maneira conveniente e poderosa de utilizar essas funcionalidades, 
permitindo que os desenvolvedores aproveitem ao máximo os recursos do 
sistema operacional Unix e desenvolvam software de maneira eficiente. Na 
próxima seção, vamos conhecer um pouco mais sobre a origem da linguagem 
C e sua relação com a plataforma Unix.
A importância da linguagem C no 
desenvolvimento do Unix
O sistema Unix teve sua origem nos Laboratórios Bell, da AT&T, na década de 
1970, sendo desenvolvido por uma equipe de talentosos colaboradores. Dois 
nomes fundamentais nesse contexto são Ken Thompson e Dennis Ritchie. 
Conceitos de sistemas operacionais 9
Identificação interna do documento
Thompson, um engenheiro de software, iniciou o desenvolvimento do sistema 
Unix em 1969 como uma reimplementação do sistema operacional Multics. 
Mais tarde, em parceria com Ritchie, amplamente reconhecido como o criador 
da linguagem C, eles aprimoraram e expandiram o sistema Unix (TANENBAUM; 
WOODHULL, 2008).
Inicialmente, o Unix foi implementado em Assembly, uma linguagem de 
programação de baixo nível específica para cada arquitetura de hardware. 
A primeira versão, conhecida como Unix Versão 1, foi escrita principalmente 
em Assembly para o PDP-7, um computador da DEC (Digital Equipment Corpo-
ration). Posteriormente, o Unix foi portado para outras arquiteturas, como o 
PDP-11, e continuou sendo programado em Assembly para cada plataforma 
específica (RITCHIE, 1984).
No entanto, à medida que o desenvolvimento do Unix progredia e o sis-
tema se expandia, tornou-se evidente que o uso de Assembly tornava o 
desenvolvimento e a manutenção do código muito mais complexos e demo-
rados. Foi nesse momento que Ken Thompson e Dennis Ritchie perceberam 
a necessidade de uma linguagem de programação de alto nível que fosse 
eficiente, portável e próxima ao hardware, levando à criação da linguagem 
C (KERNIGHAN; RITCHIE, 1988). 
Desse modo, Ritchie projetou originalmente a linguagem C com o obje-
tivo específico de criar uma linguagem eficiente, expressiva e próxima ao 
hardware. A linguagem C, sucessora da linguagem B, também desenvolvida 
por Ken Thompson e Dennis Ritchie, é de alto nível, o que permite um de-
senvolvimento mais rápido e facilita a portabilidade do Unix para diferentes 
arquiteturas de hardware. 
A seguir, você pode observar um exemplo de um programa básico 
escrito na linguagem C.
#include <stdio.h> 
int main(){ 
 // Corpo do programa 
 printf(“Olá, mundo!\n”); 
 return 0; 
}
Nesse trecho de código, você pode ver a estrutura básica de um programa 
em C. O código começa com a inclusão de bibliotecas necessárias, seguido 
pela função principal main(), onde o corpo do programa é colocado. Dentro 
da função principal, você pode escrever o código que deseja executar. Neste 
exemplo, você pode observar as seguintes estruturas:
Conceitos de sistemas operacionais10
Identificação interna do documento
 � #include <stdio.h>: é uma diretiva de pré-processador que inclui a 
biblioteca de entrada e saída padrão (stdio.h), que fornece funções como 
printf e scanf para entrada e saída de dados.
 � int main() { ... }: é a função principal do programa, onde a execução 
do código começa. O tipo int indica que a função retorna um valor inteiro. 
As chaves {} delimitam o corpo da função.
 � //Corpo do programa: é um comentário, utilizado para adicionar notas 
explicativas ao código. Comentários não são executados pelo programa.
 � printf("Olá, mundo!\n");: é uma função de saída que imprime a mensa-
gem "Olá, mundo!" no console. O \n representa um caractere de nova linha, 
para que a próxima linha seja exibida abaixo.
 � return 0;: é uma instrução de retorno, em que o valor 0 indica que o pro-
grama foi executado com sucesso. O valor de retorno é retornado ao sistema 
operacional quando o programa termina.
Essa interconexão entre o Unix e a linguagem C, mediante o uso de pontei-
ros, tipos e meio de incluir código Assembly, criou um ecossistema coeso em 
que a linguagem de programação e o sistema operacional se complementavam 
perfeitamente, permitindo que os programadores do Unix aproveitassem ao 
máximo os recursos do sistema operacional.
A importância da linguagem C no desenvolvimento do Unix e na compu-
tação moderna é indiscutível. Sua combinação de expressividade, controle 
de baixo nível via escrita de código de alto nível, portabilidade e eficiência 
tornou-a uma linguagem poderosa e versátil (TANENBAUM; WOODHULL, 2008). 
A linguagem C estabeleceu os fundamentos para o desenvolvimento de sis-
temas operacionais, aplicativos e bibliotecas que impulsionaram a evolução 
da computação ao longo das décadas.
A influência da linguagem C se estendeu além do desenvolvimento 
do Unix e de sistemas operacionais relacionados. Na verdade, tal 
linguagem se tornou a base para muitas outras linguagens de programação 
modernas, como C++, C# e Objective-C. Essas linguagens, derivadas ou inspiradas 
na linguagem C, mantêm sua sintaxe e seus princípios básicos, fornecendo con-
tinuidade e familiaridade aos programadores que aprendem novas linguagens.
Em resumo, a linguagem C desempenhou um papel crucial no desenvolvi-
mento do sistema operacional Unix. A combinação do Unix com a linguagem 
C proporcionou um ambiente de programação eficiente, flexível e portátil. A 
sintaxe clara, o controle de baixo nível e a capacidade de acessar diretamente 
a memória e os recursos do sistema fizeram da linguagem C a escolha perfeita 
Conceitos de sistemas operacionais 11
Identificação interna do documento
para implementar o Unix. Ademais, a influência da linguagem C se estendeu 
além do Unix, moldando o desenvolvimento de software e estabelecendo 
uma base sólida para muitas outras linguagens de programação modernas.
Ao longo deste capítulo, exploramos de forma abrangente os principais 
temas relacionados ao shell em sistemas operacionais, as chamadas de 
sistemas e o histórico da linguagem de programação C no contexto do desen-
volvimento do sistema operacional Unix. Compreendemos as características 
fundamentais e o papel essencial desempenhado pelo shell, que atua como 
interface entre o usuário e o sistema operacional. Aprofundamos nossos 
conhecimentos nas chamadas de sistemas, entendendo sua importância 
na interação com o kernel e no acesso aos recursos do sistema. Além disso, 
mergulhamos na fascinante história da linguagem C, desde sua concepção 
pelos visionários Ken Thompson e Dennis Ritchie até seu impacto duradouro 
no desenvolvimento do Unix. Esperamos que este material tenha fornecido os 
conceitos básicos necessários para compreender esses temas e sua importân-
cia na computação moderna, capacitando os leitores a explorar e aproveitar 
plenamente o potencial desses conceitos em suas jornadas tecnológicas.
Referências 
KERNIGHAN, B. W.; RITCHIE, D. M. The C programming language. 2nd. ed. New Jersey: 
Prentice Hall, 1988.
RITCHIE, D. M. The evolution of the Unix time-sharing system. AT&T Bell Laboratories 
Technical Journal, v. 63, n. 8, 1984. Disponível em: https://ieeexplore.ieee.org/docu-
ment/6771908. Acesso em: 24maio 2023.
TANENBAUM, A. S. Sistemas operacionais modernos. 3. ed. São Paulo: Prentice Hall do 
Brasil, 2009.
TANENBAUM, A.; WOODHULL, A. Sistemas operacionais: projeto e implementação. Porto 
Alegre: Bookman, 2008.
WEBER, R. F. Fundamentos de arquitetura de computadores. 4. ed. Porto Alegre: Book-
man, 2012. v. 8.
Leituras recomendadas
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas operacionais. 4. ed. Porto 
Alegre: Bookman, 2010.
RAYMOND, E. S. The art of Unix programming. [S. l.]: Addison-Wesley Professional, 2003.
SILBERSCHATZ, A. et al. Fundamentos de sistemas operacionais. 8. ed. Rio de Janeiro: 
LTC, 2010.
STALLINGS, W. Arquitetura e organização de computadores. 8. ed. São Paulo: Pearson, 
2013.
Conceitos de sistemas operacionais12
Identificação interna do documento
Os links para sites da web fornecidos neste capítulo foram todos 
testados, e seu funcionamento foi comprovado no momento da 
publicação do material. No entanto, a rede é extremamente dinâmica; suas 
páginas estão constantemente mudando de local e conteúdo. Assim, os editores 
declaram não ter qualquer responsabilidade sobre qualidade, precisão ou 
integralidade das informações referidas em tais links.
Conceitos de sistemas operacionais 13
Identificação interna do documento
Identificação interna do documento
 
Dica do professor
A linguagem de programação C é muito poderosa e é usada para o desenvolvimento de partes de 
praticamente todos os sistemas operacionais atuais. Apesar de ser uma linguagem de alto nível, ela 
proporciona ao desenvolvedor o poder de controle em alguns aspectos de baixo nível. Seu 
desenvolvimento foi feito quase que em paralelo ao do sistema operacional Unix, cujos princípios 
deram origem a vários sistemas que usamos até hoje, como o Linux.
Nesta Dica do Professor, você verá como a criação da linguagem de programação C e do sistema 
operacional Unix estão ligadas. Você irá aprender sobre o contexto em que ambos surgiram e 
conhecer um pouco da história de um cientista que participou do projeto e do desenvolvimento da 
linguagem e do sistema operacional.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/91c1b5978702148ef1803f5ccb3386ed
Exercícios
1) Uma atividade recorrente em software de aplicação é a leitura e escrita de arquivos. A 
maioria dos programas irá, em algum momento de seu ciclo de vida, necessitar de dados que 
estão armazenados em algum dispositivo de memória secundária. Também é comum a 
necessidade de gravar dados de forma persistente.
Assinale a alternativa que descreve o fluxo seguido por uma aplicação para fazer a gravação 
ou a leitura de dados em dispositivos de memória secundária.
A) A aplicação solicita diretamente ao driver do dispositivo a leitura ou a escrita dos setores nos 
quais o arquivo se encontra.
B) A aplicação envia comandos para o driver mover sua cabeça de leitura, iniciar o processo de 
leitura e escrita e retornar os dados.
C) A aplicação envia comandos para o sistema operacional solicitar para o driver mover sua 
cabeça de leitura e iniciar o processo de leitura e escrita.
D) A aplicação grava o arquivo na memória primária e automaticamente o sistema operacional irá 
sincronizá-la com o dispositivo de memória secundária.
E) A aplicação dispara uma chamada de sistema, fornecendo ao sistema operacional informações 
sobre o arquivo que deve ser lido ou escrito.
2) A linguagem C se provou, nas últimas quatro décadas, muito eficiente para a tarefa de 
programar sistemas operacionais. Sua leveza, simplicidade e elegância não prejudicam em 
nada o seu poder de interagir com o computador em baixo nível, ainda que C seja uma 
linguagem de alto nível.
Quais das características abaixo a linguagem C tem e são interessantes para seu uso no 
desenvolvimento de sistemas operacionais?
A) Gerenciador de memória e garbage collector.
B) Ponteiros, tipos e meio de incluir código assembly.
C) Variáveis, controle de laço e controle de fluxo.
D) Blocos de execução, comando goto e máquina virtual.
E) Garbage collector, ponteiros e controle de laço.
3) Interpretadores de comando são uma ferramenta utilizada para que usuários possam enviar 
comandos para o sistema operacional. Esses comandos geralmente irão disparar chamadas 
de sistema, como por exemplo para a criação de novas pastas e arquivos e iniciar processos 
para a execução de um programa. Essa ferramenta também pode alterar configurações de 
sistema e realizar tarefas de manutenção. 
Assinale a alternativa correta em relação ao uso de interpretadores de comando.
A) São muito usados por usuários mais experientes, que conhecem os comandos, sendo mais 
ágeis do que o uso de interface gráficas.
B) São ferramentas de interface gráfica com o usuário, usando dispositivos apontadores, como o 
mouse, para efetuar as ações.
C) São simples de usar por usuários comuns e inexperientes, sendo uma boa escolha para o 
primeiro contato com computadores.
D) O uso de comandos em texto torna o trabalho mais complicado para usuários experientes, 
que preferem usar interfaces gráficas.
E) Não é possível automatizar tarefas usando interpretadores de comandos, as ferramentas de 
shell são muito primitivas.
4) O pipe, criado no terminal colocando o caractere “|” entre dois programas, cria uma conexão 
entre os processos desses programas. Ao enviar o comando “netstat | findstr https” no shell, 
o sistema criará um processo para executar o programa netstat, outro processo para 
executar o programa findstr passando o valor https como argumento. Além disso, criará um 
“arquivo virtual”, e vai redirecionar a saída do programa netstat para esse arquivo, ao mesmo 
tempo em que vai configurar esse mesmo arquivo virtual como a entrada para o comando 
findstr.
Sabendo disso, assinale a alternativa que descreve corretamente qual será a saída desse 
comando para o terminal do interpretador de comandos.
A) Todas as conexões ativas no computador.
B) Todos os arquivos que têm o texto https.
C) Lista de conexões ativas no computador que não têm a porta https.
D) Lista de conexões ativas no computador com a porta https.
E) A quantidade de conexões ativas para a porta https.
5) Cada sistema operacional disponibiliza um conjunto de bibliotecas ou APIs para que 
desenvolvedores de software criem programas que podem ser executados nesse sistema. 
Vários métodos destas APIs disparam em algum momento chamadas de sistema.
Assinale a alternativa correta sobre a execução das chamadas de sistema.
A) Aplicações e as próprias APIs rodam em espaço de usuário. Apenas as chamadas de sistema 
são executadas em espaço de núcleo.
B) As aplicações rodam em espaço de usuário, mas as APIs e as chamadas de sistema são 
executadas em espaço de núcleo.
C) Aplicações, APIs e chamadas de sistema rodam em espaço de usuário. Apenas o núcleo do 
sistema operacional roda em espaço de núcleo.
D) Aplicações e as próprias APIs rodam em espaço de núcleo. Apenas as chamadas de sistema 
são executadas em espaço de usuário.
E) As aplicações rodam em espaço de núcleo, mas as APIs e as chamadas de sistema são 
executadas em espaço de usuário.
Na prática
Com a popularização das interfaces gráficas, o caminho natural aparentava ser o fim dos terminais 
de interpretadores de comandos, afinal as interfaces baseadas em paradigmas visuais são mais 
intuitivas, não exigem que os usuários decorem comandos e lidam bem com fluxos alternativos, 
como erros ou informações opcionais. Essa previsão parece ter sido cumprida para usuários 
comuns, mas para profissionais de TI, como desenvolvedores de software e profissionais envolvidos 
na operação de sistemas (OPS), os interpretadores de comandos continuam sendo vastamente 
usados.
Neste Na Prática, você vai compreender como interpretadores de comando podem contribuir para 
agilizar o trabalho de desenvolvedores 
e profissionais da área de operação e infraestrutura,com base em exemplos reais de situações nas 
quais o uso da shell contribuiu para uma melhora no processo de desenvolvimento e entrega de 
software.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/5413cdbc-60a0-4e7b-afc1-b9e993fd0232/a1708186-6359-490c-95fa-c94fb9f07c5d.png
 
O PowerShell é uma interface de linha de comandos utilizada para instruir o computador a executar 
tarefas utilizando comandos digitados. É importante para o sistema operacional, pois torna possível 
a automatização de tarefas com um comando.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/291a61348abe371ec31d5b26b8e93ec2
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
O desenvolvimento da linguagem C*
Tradução oficial do artigo escrito por Dennis Ritchie, um dos criadores da linguagem C, 
descrevendo a história de projeto e desenvolvimento da linguagem, como foi sua evolução a partir 
de outras linguagens existentes entre as décadas de 60 e 70 e o relacionamento de benefício 
mútuo entre a criação da linguagem C e a evolução das primeiras versões do sistema operacional 
Unix. Confira.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Comandos Prompt do Windows
Leia mais sobre Comandos Prompt do Windows
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Comandos Bash (Linux)
Veja uma referência completa de comandos disponíveis em bash.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.bell-labs.com/usr/dmr/www/chistPT.html
https://www.ufsm.br/app/uploads/sites/762/2021/05/Principais-comandos-do-prompt-do-Windows-CMD.pdf
https://www.devmedia.com.br/comandos-importantes-linux/23893
Documentação oficial do PowerShell
Confira este site oficial da Microsoft com a documentação do interpretador de comandos 
Powershell. Há um tutorial para iniciantes e vários exemplos de código.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://docs.microsoft.com/pt-br/powershell/

Continue navegando