Arquitetura de Sistemas Operacionais #0
Tags: beginners, architecture, devjournal, todayilearned
Published: 2022-08-20 17:16:35

A partir deste post, eu irei destrinchar e explicar o que eu entendo do livro Arquitetura de Sistemas Operacionais do "Francies Berenger Machado" e o "Luiz de Paulo Maia". Desde o primeiro capítulo de uma forma mais geral. Resumindo de uma forma mais fácil de entender, porém, os posts seguirão o mesmo padrão dos meus posts anteriores. 

![reading](https://media.giphy.com/media/WoWm8YzFQJg5i/giphy.gif)

Neste post, irei abordar do capítulo 1.1 até o 1.3.


## O que é um SO?

Um Sistema Operacional, é nada mais nada menos que várias rotinas, que são executadas pelo processador da mesma forma que os programas. Porém, ele tem algumas diferenças, uma delas é que o SO é o responsável por possibilitar que o usuário possa usar seu computador sem ter que saber coisas como o computador e seus componentes físicos funcionem de maneira aprofundada. Assim, você pode jogar seu LoLzinho sem ter que programar a memória RAM rsrs. 

![DRAAAVEN](https://media.giphy.com/media/jvGRCV7wOiO38GYzea/giphy.gif)

Mas a grande diferença entre o SO e os demais programas, está em como ele é executado, não é como um programa que começa e termina. As rotinas do SO são constantemente chamadas, sempre que o usuário decide fazer algo que precisa de alguma rotina do SO, ela é chamada. 

Com isso explicado, hora de ver as principais funções de um SO. 

## Funções de um SO

As funções do SO são resumidas em dois tópicos, a facilidade de acesso aos recursos do sistema e o compartilhamento de recursos de forma organizada e protegida.

### Facilidade de Acesso aos Recursos do Sistema

Sempre que você usa o mouse, ou digita algo no seu teclado, ou vê algo na sua tela. Você faz isso sem se preocupar em como estabelecer uma conexão entre a CPU e cada um desses componentes, certo?

Pois bem, isso tudo é graças ao SO que faz essa conexão pra você, mas não se engane, isso não é nem um pouco simples, são inúmeras rotinas, só para o movimento do seu mouse modificar o movimento de uma setinha e mais rotinas ainda para que essa setinha aparece na tela e mais rotinas ainda para que essa seta se movimente na tela. 

Funciona da Seguinte forma: 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxvdkdtibfweemxe82gt.png)


### Compartilhamento de Recursos de Forma Organizada

E por último, mas não menos importante, o compartilhamento de recursos. Pense comigo, se o seu computador e o de outra pessoa estiverem conectados, o que aconteceria se no caminho o conteúdo da sua tela vá para a tela do seu amigo? Pois é, essa é a utilidade dessa função. 

Porém, não é só para que não haja conflito em questões de computadores conectados. Pois, essa função também permite que seu computador seja multitarefa, assim você pode curtir sua música enquanto lê esse post. 

![vibing](https://media.giphy.com/media/jpbnoe3UIa8TU8LM13/giphy.gif)

## Máquinas de Camadas

Antes da criação do SO, era necessário que qualquer programador tivesse aprofundados conhecimentos de hardware, assim tornando custoso e demorado se tornar um bom programador. Porém, assim que o SO surgiu, todo esforço se tornou muito menor, não sendo mais necessário ter um conhecimento da linguagem de máquina. 

Com isso o computador começou a ter camadas ou níveis. As mais conhecidas são a do hardware (nível 0) a camada mais baixa e a que vem logo acima, a camada do software (nível 1). Porém, o número de camadas varia de acordo com as necessidades de cada usuário. Uma das vantagens disso, é que quando o usuário está trabalhando em uma camada, ele não precisa se preocupar com as demais camadas. 

Atualmente as camadas dos computadores são feitas da seguinte forma: 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3w6e50lg9sw2253n81kc.png)