O que e um Sistema Operacional
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:
- Visao top-down (usuario): o SO e uma maquina estendida que esconde a complexidade do hardware e oferece abstracoes mais simples (arquivos em vez de setores de disco, processos em vez de interrupcoes de CPU).
- Visao bottom-up (sistema): o SO e um gerenciador de recursos que decide quem usa qual recurso, por quanto tempo, e em que ordem.
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:
+---------------------------------------------+
| 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.
// 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;
}
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:
- Gerencia de processos — criacao, destruicao, escalonamento e comunicacao entre processos
- Gerencia de memoria — alocacao, liberacao, protecao e memoria virtual
- Sistema de arquivos — organizacao, nomeacao, acesso e protecao de dados persistentes
- Gerencia de I/O — drivers de dispositivos, buffering, spooling
- 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:
- Kernel mode (Ring 0): acesso irrestrito ao hardware. Instrucoes privilegiadas (como desabilitar interrupcoes ou acessar registradores de I/O) so podem ser executadas neste modo.
- User mode (Ring 3): acesso restrito. Se um processo tenta executar uma instrucao privilegiada, a CPU gera uma excecao (trap) e o SO pode encerrar o processo.
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.
Resumo
- O SO e o software que gerencia hardware e fornece abstracoes para programas de usuario
- Duas visoes: maquina estendida (abstracoes) e gerenciador de recursos
- O kernel roda em modo privilegiado; programas em modo usuario
- System calls sao a ponte entre user mode e kernel mode
- Os subsistemas principais: processos, memoria, arquivos, I/O, seguranca
Verifique seu entendimento
Qual e a principal razao para a existencia de dois modos de execucao (kernel mode e user mode) nos processadores modernos?