Em qualquer sistema operativo, existem várias características essenciais que permitem ao utilizador interagir com o hardware e o software de forma eficiente e segura. Vamos explorar algumas destas características, utilizando exemplos práticos para ilustrar os conceitos.
Interface com o Utilizador
A interface com o utilizador, também conhecida como User Interface (UI), é a camada do sistema operativo que permite aos utilizadores interagirem com o computador. Existem dois tipos principais de interfaces:
Interface de Linha de Comandos (CLI)
Na CLI, os utilizadores interagem com o sistema através de comandos digitados. Esta interface é poderosa, especialmente para programadores e utilizadores avançados, permitindo uma grande flexibilidade e controlo sobre o sistema.
Exemplo: Usando a CLI para listar ficheiros num diretório
ls -l
Executar o comando acima numa consola Unix-like (como o terminal do Linux ou do macOS) irá mostrar uma lista detalhada dos ficheiros e diretórios presentes no diretório atual.
Interface Gráfica (GUI)
A GUI permite a interação através de elementos gráficos, como janelas, ícones e menus. É mais intuitiva e acessível para a maioria dos utilizadores.
Exemplo: Copiar ficheiros usando uma GUI
Um exemplo prático seria usar o Explorador de Ficheiros no Windows para arrastar e soltar ficheiros de uma pasta para outra, uma operação que pode ser feita facilmente com o rato.
Gestão de Processos
O sistema operativo deve gerir os processos que estão a ser executados, assegurando que cada aplicação recebe os recursos necessários e que o sistema permanece estável.
Escalonamento de Processos
Os algoritmos de escalonamento de processos determinam a ordem e o tempo de execução de cada processo, garantindo que todos os processos recebem uma justa oportunidade de correr.
Exemplo: Código simples de escalonamento Round-Robin
from collections import deque
class Process:
def __init__(self, id, burst_time):
self.id = id
self.burst_time = burst_time
def round_robin(processes, quantum):
queue = deque(processes)
while queue:
process = queue.popleft()
if process.burst_time <= quantum:
print(f"Processo {process.id} terminado.")
else:
process.burst_time -= quantum
queue.append(process)
print(f"Processo {process.id} executado por {quantum} unidades de tempo; {process.burst_time} restantes.")
# Exemplo de uso
processes = [Process(1, 10), Process(2, 15), Process(3, 7)]
round_robin(processes, 5)
Gestão de Memória
Um sistema operativo eficaz deve gerir eficientemente a memória do sistema, alocando e libertando memória conforme necessário para diferentes processos.
Memória Virtual
A memória virtual permite que o sistema utilize mais memória do que a fisicamente disponível no hardware, utilizando partes do disco rígido como uma extensão da RAM.
Exemplo: Uso de memória virtual em Python
import os
# Verificar o uso de memória
process = os.popen("free -m").read()
print(process)
Executar este script num ambiente Unix-like mostrará a quantidade de memória física e a memória virtual (swap) utilizada no sistema, permitindo entender como o SO gere a memória.
Sistema de Ficheiros
A organização, armazenamento e acesso a ficheiros são funções cruciais de um sistema operativo. O sistema de ficheiros define como os dados são armazenados e recuperados.
Permissões e Segurança
Os sistemas operativos modernos implementam mecanismos de permissão para controlar o acesso a ficheiros e diretórios. Isto assegura que apenas utilizadores autorizados podem aceder ou modificar dados importantes.
Exemplo: Comando chmod no Unix
chmod 755 meu_ficheiro
Este comando altera as permissões de um ficheiro, permitindo ao dono ler, escrever e executar (7
), enquanto permite aos outros utilizadores apenas ler e executar (5
).
Resumo
Neste capítulo, explorámos algumas das características essenciais de um sistema operativo: Interface com o Utilizador, Gestão de Processos, Gestão de Memória, e Sistema de Ficheiros. Cada uma destas funcionalidades é crítica para o desempenho, usabilidade e segurança do sistema.
Quiz
- Quais são as duas principais interfaces com o utilizador que podem ser encontradas num sistema operativo?
- O que faz um algoritmo de escalonamento de processos?
- Como é denominada a técnica que permite ao sistema usar mais memória do que a fisicamente disponível?
- Qual é a finalidade das permissões no sistema de ficheiros?
- Dê um exemplo de um comando usado para alterar permissões de ficheiros num sistema Unix-like.
Responder correctamente a estas perguntas ajudará a reforçar o entendimento dos conceitos discutidos neste capítulo.