O material a seguir está dividido em oito partes, foi escrito por Alex De Francischi Coletta em 2003 e adaptado para a web.
Bibliografia: FREITAS, Ricador Luis de “Apostila de Sistemas Operacionais” utilizado no curso de graduação em Engenharia de Computação da Pontifícia Universidade Católica de Campinas na disciplina de Sistemas Operacionais I.
1. INTRODUÇÃO
Sistema operacional (SO): um conjunto de rotinas que gerencia os recursos de hardware e fornece facilidades ao usuário.
Funções do SO:
- Como Máquina Virtual: apresenta facilidade de operação, fornecendo uma interface entre o usuário e o hardware, ex: escrita em disco flexível e também apresenta extensão das capacidades da máquina, ex: múltiplo usuários e proteção de acesso.
- Como Gerenciador de Recursos: controla a utilização dos recursos fornecidos pelo hardware e a sua distribuição entre os programas de forma a garantir a execução correta dos programas e a alta eficiência na utilização dos recursos.
Multiprogramação: corresponde a diversos programas distintos executando em um mesmo processador. Fatores determinantes para o surgimento da multiprogramação: Enquanto fazia E/S o processador ficava ocioso, viu-se então a necessidade da multipragramação, e o surgimento de circuitos integrados viabilizou a multiprogramação.
Multiprocessamento: corresponde a diversos processadores, dentro de um mesmo sistema de computação, executando programas diversos ou cooperando na execução de um mesmo programa.
Com o surgimento dos microcomputadores, surge então o chamado “user-friendly” para S.O., que corresponde ao desenvolvimento de sistemas operacionais para serem utilizados por pessoas sem nenhum conhecimento de computação. E outro desenvolvimento foi o sistema operacional para redes de computadores, sendo dividido em:
1) Sistemas operacionais de rede: cada usuário tem conhecimento de seu próprio computador e pode acessar dados em outros computadores.
2) Sistemas operacionais distribuídos: o S.O., faz com que todos computadores da rede formem uma unidade, de forma que nenhum usuário tenha conhecimento de quantos computadores há na rede ou de em qual computador seu programa está executando.