Características Essenciais de um Sistema Operativo

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

  1. Quais são as duas principais interfaces com o utilizador que podem ser encontradas num sistema operativo?
  2. O que faz um algoritmo de escalonamento de processos?
  3. Como é denominada a técnica que permite ao sistema usar mais memória do que a fisicamente disponível?
  4. Qual é a finalidade das permissões no sistema de ficheiros?
  5. 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.

<< O Que é um Sistema Operat... Índice Funções Principais de um... >>