Qualquer pessoa que utiliza um computador sabe que existe algo denominado “sistema operacional (SO)” e que, de alguma forma, este controla os diversos dispositivos de hardware a ele interligados. A definição clássica para sistema operacional encontrada em livros, é:
O sistema operacional é uma camada de software inserida entre o hardware e as aplicações que executam tarefas para os usuários e cujo objetivo é tornar a utilização do computador, ao mesmo tempo, mais eficiente e conveniente [Silberschatz, 2001].
Ao longo dos anos diversos sistemas operacionais foram sendo desenvolvidos, cada um com características bem marcantes. Hoje em dia temos uma gama de sistemas (Windows, Linux, BSD, Solares, Unix, etc), cada um destes sistemas possuem seus pontos fortes e fracos, não tem como desenvolver um “software” que agrade a todos ou que satisfaça todas as necessidades.
Explicarei de uma forma bem simples. O sistema operacional é um software que permite ao usuário desempenhar diversas tarefas sem ter que lidar diretamente com o hardware. No mundo Windows tenho o seguinte esquema de funcionamento:
- Sistema (Windows);
- Drivers;
- Hardware.
Vamos a um exemplo. Imagine que o usuário irá imprimir um documento, sendo assim ele envia uma solicitação para o sistema operacional (“ei, Windows eu quero imprimir um documento), neste momento o Windows procura o driver responsável por criar o interfaceamento entre o sistema e o hardware. Sendo assim podemos afirmar que o sistema não se comunica diretamente com o hardware.
Usuário → Windows → Driver → Hardware
O esquema mostra que o usuário solicita algo ao sistema neste caso Windows, por sua vez o sistema envia a solicitação para o driver do dispositivo em questão que por sua vez repassa a requisição ao hardware, que ao executar a solicitação faz o processo inverso até que o resultado final seja entregue ao usuário. Na ausência do driver essa interface entre sistema e hardware não pode ser estabelecida, resultando no não cumprimento da solicitação.
No mundo Linux o funcionamento é um pouco parecido:
Usuário → GNU/Linux → Kernel (Linux) → Hardware
Neste modelo não temos driver, mas sim o Kernel, que é o responsável por criar a interface entre sistema e hardware. Não irei me aprofundar agora, mas deixo de ante-mão que no Linux os drivers são chamados de módulos e estes são carregados pelo Kernel.
Lógico que o funcionamento do sistema é bem mais complexo do que isso, apenas passei a você leitor um conhecimento superficial. Caso queira se aprofundar realize buscas no Google pelos termos (“Arquitetura de sistemas, Funcionamento de sistemas, etc.”).