College Online
0%

O que e um Sistema Operacional

Modulo 1 · Aula 1 ~15 min de leitura Nivel: Introdutorio

Video da aula estara disponivel em breve

Definicao

Um sistema operacional (SO) e um software que atua como intermediario entre o usuario e o hardware do computador. Ele gerencia os recursos de hardware — CPU, memoria, dispositivos de I/O, armazenamento — e fornece uma interface para que programas de aplicacao possam ser executados de forma eficiente e segura.

Podemos pensar no sistema operacional sob duas perspectivas complementares:

i
Maquina estendida vs. Gerenciador de recursos Essas duas visoes nao sao excludentes. Todo SO faz ambas as coisas simultaneamente. Quando voce digita ls -la no terminal, o SO esta oferecendo uma abstracao (sistema de arquivos) ao mesmo tempo que gerencia o acesso ao disco, protege a memoria de outros processos, e escalona seu shell na CPU.

Onde o SO se encaixa

A arquitetura de um sistema computacional pode ser vista em camadas:

Diagrama
+---------------------------------------------+
|         Programas de Usuario                 |
|   (browser, editor, compilador, jogos...)    |
+---------------------------------------------+
|         System Calls (API do SO)             |
+---------------------------------------------+
|         Sistema Operacional (Kernel)         |
|   [processos] [memoria] [I/O] [filesystem]  |
+---------------------------------------------+
|         Hardware                             |
|   [CPU] [RAM] [Disco] [Rede] [GPU] [USB]    |
+---------------------------------------------+

O kernel e o nucleo do sistema operacional — a parte que roda em modo privilegiado (kernel mode) e tem acesso direto ao hardware. Os programas de usuario rodam em modo usuario (user mode) e precisam fazer system calls para pedir servicos ao kernel.

System Calls

System calls sao a interface programatica entre os processos de usuario e o kernel. Quando um programa precisa ler um arquivo, criar um processo, ou alocar memoria, ele faz uma system call.

C
// Exemplo: abrindo e lendo um arquivo em C usando system calls POSIX
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main() {
    char buffer[256];

    // open() e uma system call que pede ao kernel para abrir o arquivo
    int fd = open("/etc/hostname", O_RDONLY);
    if (fd < 0) {
        perror("open");
        return 1;
    }

    // read() e outra system call: le bytes do file descriptor
    ssize_t n = read(fd, buffer, sizeof(buffer) - 1);
    buffer[n] = '\0';

    printf("Hostname: %s", buffer);

    // close() libera o file descriptor
    close(fd);
    return 0;
}
*
Na pratica Voce raramente chama system calls diretamente. A biblioteca padrao C (libc) encapsula essas chamadas em funcoes mais convenientes como fopen(), fread(), e fclose(). Mas por baixo, toda I/O passa pelas system calls do kernel.

O que o SO gerencia

Os principais subsistemas de um SO moderno sao:

  1. Gerencia de processos — criacao, destruicao, escalonamento e comunicacao entre processos
  2. Gerencia de memoria — alocacao, liberacao, protecao e memoria virtual
  3. Sistema de arquivos — organizacao, nomeacao, acesso e protecao de dados persistentes
  4. Gerencia de I/O — drivers de dispositivos, buffering, spooling
  5. Seguranca e protecao — controle de acesso, autenticacao, isolamento

Ao longo deste curso, vamos explorar cada um desses subsistemas em profundidade, com exemplos praticos em C e analise do Linux como caso de estudo principal.

Kernel mode vs. User mode

Processadores modernos implementam ao menos dois niveis de privilegio:

Essa separacao e fundamental para a protecao: um bug num programa de usuario nao deve derrubar o sistema inteiro. O kernel controla a transicao entre modos via system calls e interrupcoes.

!
Cuidado com a terminologia "Sistema operacional" as vezes se refere apenas ao kernel, e as vezes inclui todo o ecossistema (shell, utilitarios, bibliotecas). Neste curso, quando dizemos "SO" geralmente nos referimos ao kernel e seus componentes essenciais. Quando queremos falar do sistema completo, dizemos "distribuicao" (como Ubuntu, Fedora, etc.).

Resumo

Verifique seu entendimento

Qual e a principal razao para a existencia de dois modos de execucao (kernel mode e user mode) nos processadores modernos?

  • Permitir que programas rodem mais rapido em kernel mode
  • Proteger o sistema contra erros ou acoes maliciosas de programas de usuario
  • Facilitar o desenvolvimento de drivers de dispositivos
  • Reduzir o consumo de energia do processador