Um sistema operacional possui as seguintes funções:
- gerenciamento de processos;
- gerenciamento de memória;
- sistema de arquivos;
- entrada e saída de dados.
Gerenciamento de processos.
O sistema operacional multitarefa é preparado para dar ao usuário a ilusão que o número de processos em execução simultânea no computador é maior que o número de processadores instalados. Cada processo recebe uma fatia do tempo e a alternância entre vários processos é tão rápida que o usuário pensa que sua execução é simultânea.
São utilizados algoritmos para determinar que processo será executado em determinado momento e por quanto tempo.
Os processos podem se comunicar, isto é conhecido como IPC (Inter-Process Communication). Os mecanismos geralmente utilizados são:
- sinais,
- pipes,
- named pipes,
- memória compartilhada,
- soquetes (sockets),
- semáforos,
- trocas de mensagens.
O sistema operacional, normalmente, deve possibilitar o multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes processadores. Para essa tarefa, ele deve ser reentrante e interrompível, o que significa que pode ser interrompido no meio da execução de uma tarefa.
Gerenciamento de memória.
O sistema operacional tem acesso completo à memória do sistema e deve permitir que os processos dos usuários tenham acesso seguro à memória quando o requisitam.
Vários sistemas operacionais usam memória virtual, que possui 3 funções básicas:
- Assegurar que cada processo tenha seu próprio espaço de endereçamento, começando em zero, para evitar ou resolver o problema de relocação (Tanenbaum, 1999);
- Prover proteção da memória para impedir que um processo utilize um endereço de memória que não lhe pertença;
- Possibilitar que uma aplicação utilize mais memória do que a fisicamente existente.
Sistema de arquivos.
A memória principal do computador é volátil, e seu tamanho é limitado pelo custo do hardware. Assim, os usuários necessitam de algum método para armazenar e recuperar informações de modo permanente.
Um arquivo é um conjunto de bytes, normalmente armazenado em um dispositivo periférico não volátil (p.ex., disco), que pode ser lido e gravado por um ou mais processos.
O sistema de arquivos é a estrutura que permite o gerenciamento de arquivos—criação, destruição, leitura, gravação, controle de acesso, etc.