Arquitetura dos Sistemas Operacionais

O sistema operacional é o software ou programa mais importante em execução no computador, o que nos permite usar e emitir comandos. Ele administra todos os recursos do computador, ou seja, o software e o hardware. É a estrutura que sustenta e administra todos os programas e partes do computador. Os sistemas operacionais possuem também uma linguagem de comandos e diversos utilitários de apoio que são usados para complementar o sistema operacional.

Classificação

MONOTAREFA

Como o próprio nome diz, o sistema operacional permite que apenas um programa (tarefa) seja executado de cada vez.

MULTITAREFA

O termo multitarefa refere-se à capacidade que um sistema operacional tem de rodar mais de um programa ao mesmo tempo.

MULTITAREFA COOPERATIVA

Executa dois ou mais programas ao mesmo tempo, mas o programa que está em primeiro plano tem controle sobre o processador. Neste caso, se este falhar, bloqueia o computador e tem que ser reiniciado.

MULTITAREFA PREEMPTIVA
É o processador que controla a execução dos programas. Desta forma, permite ao sistema operativo recuperar o controle caso um programa bloqueie. O utilizador perde os trabalhos do programa que falhou. mas os restantes programas continuam a trabalhar.
MULTITAREFA MULTITHREADING
Executa mais de uma tarefa do mesmo programa. Os programas criam threads, ou seja, tarefas distintas que executam determinadas funções dentro do mesmo programa.

Gerenciador de processos

O gerenciamento de processos é um dos conceitos fundamentais dos sistemas operacionais modernos. No gerenciamento dos processos serão definidas as propriedades dos processos em execução, e a maneira como cada um receberá o tempo de execução no processador. A principal função do gerenciador de processos é exatamente a execução do processo no processador de maneira adequada (considerando a prioridade do processo e a quantidade de processos gerenciados).

Tipos de gerenciadores de projetos

Em relação à execução dos processos, os gerenciadores podem ser separados em três categorias:


• Gerenciadores por Admissão: neste caso o gerenciador irá escolher quais processos serão selecionados para serem executados no processador. Quando um programa solicita ao sistema operacional a execução de alguma operação, é o gerenciador de processos que irá decidir o momento em que esta solicitação será atendida. Esta escolha é feita verificando-se alguns fatores, sendo que o principal fator é a Prioridade do Processo.

Não existe nenhum sistema operacional para computadores pessoais que utilize esse tipo de gerenciador de processos;

• Gerenciadores por Tempo Médio: este está presente em todos os sistemas que trabalham com Memória Virtual (descrito na Unidade 12) que temporariamente irá retirar processos da memória principal e guardá-los na memória secundária, e vice- versa. A escolha de qual processo irá sair da memória principal para a secundária é feita de acordo com o estado do processo.

Enquanto o processo está nos estados de Espera e Execução, ficará na memória principal e quando passar para o estado de Bloqueio será retirado da memória principal e será armazenado na memória secundária. Quando o processo passar do estado de Bloqueio para Espera, será enviado da memória secundária para a principal;

• Gerenciadores Despachantes: os despachantes designam os processos para serem executados pelo processador baseados em alguma alteração ocorrida no sistema, que pode ser causada por uma interrupção do relógio do processador, por um dispositivo, por uma instrução de Chamada do Sistema, ou por algum outro sinal identificável. Dessa maneira, não será nem a prioridade do processo, nem a alteração do seu estado que influenciarão na escolha feita pelo gerenciador. As execuções dos processos serão feitas de acordo com o nível de “atividade” do sistema.

Quando houver uma carga de trabalho muito grande, os processos receberão em intervalos regulares o devido tempo de execução no processador. Quando a carga de trabalho for menor, cada processo terá mais tempo para executar no processador. (O tempo de interrupção causado pelo relógio pode ser definido pelo programador do sistema operacional).

Na informática o termo algoritmo define o conjunto de instruções que irão executar uma determinada tarefa. Um algoritmo para um Gerenciador de Processos contém as instruções necessárias para que o gerenciamento seja feito de maneira correta e organizada. Atualmente os sistemas operacionais têm uma necessidade por algoritmos extremamente eficientes, devido ao maior número de programas em execução nos computadores, e da maior quantidade de recursos disponíveis.


Um algoritmo pode ser escrito definindo-se um Gerenciador Despachante, com a troca entre os processos no processador feita a partir de interrupções do relógio a cada 100ms, e a troca entre os processos ser feito por um método de rodízio. Esse tipo de algoritmo é um dos mais simples de ser feito. Os sistemas operacionais atuais necessitam de um algoritmo com maior capacidade de controle dos processos e com maior aproveitamento do processador. Pode-se planejar um algoritmo que trabalhe com prioridade de execução nos processos, ou com base no Estado de Execução deles.


Essa escolha é feita durante o desenvolvimento do Sistema Operacional e influenciará diretamente o desempenho geral do computador. A escolha é feita pensando-se no tipo de utilização que o usuário fará dos recursos computacionais e do tipo de aplicação que será executado.

Essa escolha é feita durante o desenvolvimento do Sistema Operacional e influenciará diretamente o desempenho geral do computador. A escolha é feita pensando-se no tipo de utilização que o usuário fará dos recursos computacionais e do tipo de aplicação que será executado.

Um exemplo de algoritmo avançado para gerenciamento de processos é chamado de Fila de Resposta Multi-nível. Os objetivos desse algoritmo são:


•Executar preferencialmente Processos com poucas instruções

•Executar preferencialmente Processos que irão fazer acesso a algum dispositivo;

•Definir rapidamente a natureza do processo, e gerenciá-lo adequadamente.

Nesse algoritmo cada processo tem a oportunidade de concluir suas instruções a cada instante. Caso isso não aconteça, o gerenciador irá reclassificar o processo, colocando-o em um determinado nível de controle.

Sistema de arquivos

Na prática, um sistema de arquivo é um conjunto de estruturas lógicas, ou seja, feitas diretamente via software, que permite ao sistema operacional ter acesso e controlar os dados gravados no disco.


Cada sistema operacional lida com um sistema de arquivos diferente e cada sistema de arquivos possui as suas peculiaridades, como limitações, qualidade, velocidade, gerenciamento de espaço, entre outras características. É o sistema de arquivos que define como os bytes que compõem um arquivo serão armazenados no disco e de que forma o sistema operacional terá acesso aos dados. Cada sistema operacional lida com um sistema de arquivos diferente e cada sistema de arquivos possui as suas peculiaridades, como limitações, qualidade, velocidade, gerenciamento de espaço, entre outras características. É o sistema de arquivos que define como os bytes que compõem um arquivo serão armazenados no disco e de que forma o sistema operacional terá acesso aos dados.

O constante crescimento da capacidade de armazenamento dos discos rígidos contribuiu para a variedade de sistemas de arquivos. Antes, os HDs tinham baixa capacidade de armazenamento. Hoje em dia, não é raro encontrar discos com 1 TB ou mais, mesmo em computadores simples.

Variedade de sistemas de arquivos

Cada sistema operacional exige um sistema de arquivos diferente. Além disso, a própria evolução dos dispositivos de armazenamento contribuíram para o surgimento de novos sistemas.


No universo Windows, o número de sistemas de arquivos é mais limitado. Na época do Windows 95, a Microsoft usava o sistema de arquivos FAT16. Devido às suas limitações, foi substituído pelo FAT32 que, anos depois, foi substituído pelo NTFS. Este é usado até hoje e se estabeleceu devido à flexibilidade.


Já no amplo universo Linux, onde é possível encontrar uma enorme variedade de distribuições, o leque de sistemas de arquivos é bem maior. Os mais usados são o EXT3 e o EXT4, bem como o ReiserFS. Também há o XFS e o JFS, menos conhecidos.

Diferenças entre os principais sistemas de arquivos

As primeiras versões do Windows usavam um sistema de arquivo chamado FAT16. O nome FAT deriva da sigla, em inglês, File Allocation Table. Este sistema de arquivos possui uma tabela que serve como um mapa de utilização do disco.

O numeral 16 deriva do fato de que cada posição no disco utiliza uma área variável de 16 bits. O sistema FAT16 trabalha com setores de alocação, também conhecidos como clusters. Cada cluster tem um tamanho específico, dependendo da capacidade total do disco rígido. O grande problema é que este padrãp não lidava com discos maiores que 2 GB e os clusters eram muito grandes, o que acabava ocasionando um desperdício de espaço.


Para diminuir o desperdício, foi lançada uma atualização, chamada de FAT32. Este sistema de arquivos passou a ser usado no Windows 95 até o Windows Me. Nele, o tamanho dos clusters é menor, desperdiçando menos espaço. No entanto, o padrão 32 trazia um outro problema: era muito lento. Em geral, era 6% mais lento que o sistema FAT16.


Para completar a lista de desvantagens, em discos formatados com o sistema de arquivos FAT32, não é possível ter partições maiores do que 32 GB. Para piorar a situação, o sistema é incapaz de reconhecer arquivos maiores que 4 GB em sistemas FAT32. Além disso, é totalmente inseguro. Qualquer pessoa com acesso ao disco pode ler todos os arquivos.