Programação e Sistemas Operacionais - Introdução

Neste tutorial, vamos dar início aos estudos sobres os Sistemas Operacionais, onde nos aprofundaremos, ao longo de diversos artigos, sobre o que são, como funcionam, para que servem, como são feitos e outros detalhes sobres os SO's, do ponto da vista da programação.

A Programação sem o Sistema Operacional

Quando você abre sua IDE ou editor de textos favorito para começar a programar e criar o que lhe vem a mente, possivelmente você pensa que domina e comando tudo que ocorre em sua máquina, por ser um programador.

Mas as coisas não são bem assim.
Muita, muita coisa mesmo ocorre por debaixo dos panos, sem que você sequer suspeite, até ver o resultado final de seu código.

Então, antes de tentar entender o que é um Sistema Operacional, o que faz e como funciona, vamos imaginar como seria programar, um programa qualquer, sem o auxílio do Sistema Operacional.








Qual o seu processador? Que instruções ele lhe fornece e dispõe para você usar?
E a memória de seu computador? Como ela é? Como ler e escrever nela? Como os dados podem (e devem) ser lidos e escritos da mesma?

Imagine fazer um simples "Olá Mundo", na linguagem C, por exemplo.
Você saberia se "comunicar" com seu monitor? Como exibir aqueles pixels de informação na tela, de modo que apareça um texto?

E se quiser fazer uma operação matemática simples, como somar dois números que o usuário digitou?
Você vai precisar várias coisas no seu código, como ler as informações do teclado, armazenar esses dados na memória, usar a instrução do processador que permite somar os números (em sistema binário), depois mandar a informação correta, para o local correto e de uma maneira específica para ser exibido no monitor.

Se todos os programas criados precisassem se comunicar diretamente com o hardware (e seu peculiar "jeito" de se comunicar - bem complexo, diga-se de passagem), sem sombra de dúvidas nós não teríamos 0,001% dos softwares que temos hoje.

E adivinha quem facilita e torna tudo isso possível?
Sim, o sistema operacional.










Níveis de Operação: Modo Núcleo e Usuário

O sistema operacional age no chamado modo núcleo, pois ele tem acesso ao hardware.

Assim, um sistema operacional pode operar, gerenciar e comandar os hardwares necessários para o funcionamento de seu computador, como o processador, memória, dispositivos de entrada e saída (mouse, teclado, DVD, USB etc), monitor etc.

A possibilidade dos sistemas operacionais trabalharem no modo núcleo se deve ao fato de que eles foram programados para trabalhar com as instruções existentes em cada hardware.

Uma outra parte dos sistemas operacionais é o chamado modo usuário.
É nessa região do SO que costumamos abrir aplicativos que quisermos, como um jogo ou editor de texto.

No modo usuário, se você não quiser mais algum arquivo ou software, você pode muito bem apagá-lo e usar outro. Ou seja, temos um domínio e controle maior neste modo.

Já o modo núcleo, geralmente, não permite essas alterações e mudanças, pois o que foi programado ali é de extrema importância para o funcionamento correto de seu sistema operacional.
Alguns hardwares, inclusive, não permitem que seu funcionamento seja alterado.








O que é um Sistema Operacional

Podemos dizer, de uma maneira bem simplificada, que o Sistema Operacional é o programa responsável por intermediar a relação entre os usuários e o hardware.

Quando você grava um programa, você não se preocupa com as instruções de escrita e sobre o gerenciamento de sua memória, o sistema operacional faz isso pra você (e uma porção de outras coisas, que iremos aprender aos poucos).

Sistema Operacional é um tipo especial de software, que se diferencia de todos os demais, principalmente por conta de sua complexidade.
Um sistema operacional atual tem, facilmente, mais de 10 milhões de linhas de código!

Diferente de programas comuns, que constantemente recebem atualizações ou reformulações, os sistemas operacionais são mais duráveis, principalmente por não ser viável criar um sistema tão grande e complexo como um sistema operacional.

Assim, eles não surgem do nada. Eles estão sempre sendo desenvolvidos e novos códigos, ferramentas e funcionalidades estão sendo agregados, somado a eles.

Ou seja, o sistema operacional é um grande e complexo programa, que tem por objetivo se comunicar com o hardware através de uma linguagem de baixo nível e "traduzir", "falar" conosco de uma maneira bem simples, evitando assim que tenhamos que saber como funciona um processador ou memória.

Foi graças aos sistemas operacionais que os computadores se tornaram tão populares, pois não é mais necessário entender eletrônica, sistema binário ou Assembly para copiar um arquivo, abrir uma pasta ou navegar na internet. A parte complicada é feita pelo Sistema Operacional.

Funções do Sistema Operacional

Dentre as mais diversas tarefas que um sistema operacional faz a todo instante, podemos classificar em duas, a arquitetura e o gerenciamento de recursos.

Arquitetura

Alguns hardwares de nosso sistema possuem um conjunto de instruções para seu funcionamento.
Existem diversos tipos de memórias, e cada uma tem sua própria organização.
Juntando isso aos dispositivos de entrada e saída e ao barramento (dados e endereço), temos a arquitetura.

O sistema operacional é feito de modo a trabalhar junto com toda esta arquitetura, através de instruções de baixo nível muito complexas, que seriam muito complicadas de serem feitas sempre pelo programador.

Por exemplo, um comando de escrita ou de leitura em dispositivos de entrada e saída é feito através de funções que envolvem 13 parâmetros ! Essas informações envolvem endereços, espaços vazios, setores existentes em trilhas etc. E ao término da operação, mais 23 informações são retornadas.

Imagine você programar um simples "Hello, World" num arquivo de texto, e tendo que se preocupar com milhares de informações e dados técnicos do hardware?

Resumindo: essa parte da computação é bem vasta e complexa, e o sistema operacional que cuida disso, e entrega pra gente tudo de uma maneira mais simples, através de abstrações dessas complexas operações.

Gerenciamento de Recursos

Sabia que seu computador tem dispositivos para avaliar a temperatura do hardware?
E que as operações dos microprocessadores dependem de clocks (pulsos de relógios) ?

O que ocorre quando queremos gravar algo no HD?
É preciso saber o que gravar, onde gravar, se há espaço, se é um espaço contínuo ou um pedaço de memória aqui e outro ali, é preciso checar se as informações naquele local podem ser substituídas por outras ou estão protegidas.

Antes de iniciar um novo aplicativo, é preciso saber se sua memória RAM suporta, se está sendo muito ou pouco utilizada.
Certas partes de seu computador só podem ser utilizadas por determinado tempo, senão há riscos de danos ao hardware.

Antigamente, só era possível fazer uma coisa de cada vez.
Hoje é possível abrir diversos aplicativos e fazer muitas coisas ao mesmo tempo, e isso, em termos de hardware, é bem complexo e deve haver uma grande organização e sincronia.

Enfim, isso tudo são os recursos de seu computador, e a outra grande função do sistema operacional é gerenciar esses recursos, saber quando usar, como usar, quando não usar, quais existem e centenas de outras coisas.

Mas, "basicamente", um sistema operacional cuida disso, da arquitetura e do gerenciamento dos recursos, lidando diretamente com o hardware, num nível bem mais complexo e "traduzindo" isso de uma maneira bem mais simples e agradável ao usuário (através de imagens, botões, menus, telas etc).

Nenhum comentário: