Buscar

Sistema Operacional

Prévia do material em texto

Vinicius Nunes Moura
RA: 86970
Desenvolvimento de Sistema Operacional em
um Sistema Computacional no FPGA
São José dos Campos - Brasil
Setembro de 2017
Vinicius Nunes Moura
RA: 86970
Desenvolvimento de Sistema Operacional em um Sistema
Computacional no FPGA
Relatório apresentado à Universidade Fede-
ral de São Paulo como parte dos requisitos
para aprovação na disciplina de Laboratório
de Sistemas Computacionais: Sistemas Ope-
racionais.
Docente: Prof. Dr. Tiago de Oliveira
Universidade Federal de São Paulo - UNIFESP
Instituto de Ciência e Tecnologia - Campus São José dos Campos
São José dos Campos - Brasil
Setembro de 2017
Resumo
Devido à cada vez empresas, como Intel e AMD, produzirem processadores cada vez mais
rápidos e outras, como Microsoft, Apple e Google, produzindo Sistemas Operacionais
mais potentes, é importante que durante a graduação os estudantes de Engenharia de
Computação tenham um contato prático com o desenvolvimento destas estruturas.
Assim, neste artigo serão apresentadas as perspectivas e os estudo sobre gerenciamento
de processos, de memória, de sistemas de arquivos e de dispositivos de E/S do Sistema
Operacional, definindo como deve ser projetado: técnicas e algoritmos a serem utilizados,
que deverá ser emulado no Processador de arquitetura MIPS previamente desenvolvido na
sequência de Laboratórios de Sistemas Computacionais da Universidade Federal de São
Paulo.
Palavras-chaves: Sistema Operacional, FPGA, Gerenciamento, Processos, Memória,
Sistema de Arquivos, Dispositivo de Entrada, DE2-115.
3
Sumário
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Estrutura do documento . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . 9
3.1 Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3 FPGA - Field Programmable Gate Array . . . . . . . . . . . . . . . . 10
3.4 Sistema Operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4.1 Gerenciamento de Processos . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4.1.1 Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4.1.2 Estados do processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.1.3 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.1.4 Deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.2 Gerenciamento de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.3 Gerenciamento de Sistema de Arquivos . . . . . . . . . . . . . . . . . . . 16
3.4.4 Gerenciamento de Entrada/Saída . . . . . . . . . . . . . . . . . . . . . . 17
3.5 BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 DESENVOLVIMENTO DO TRABALHO . . . . . . . . . . . . . . . 19
4.1 BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 Comunicação e usabilidade . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Gerenciamento de processos . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Gerenciamento de Memória . . . . . . . . . . . . . . . . . . . . . . . . 21
4.5 Gerenciamento do Sistema de Arquivos . . . . . . . . . . . . . . . . . 21
4.6 Gerenciamento de Dispositivos de Entrada e Saída . . . . . . . . . . 21
5 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . 23
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5
1 Introdução
Após as disciplinas de Laboratório de Sistemas Computacionais: Compiladores e
Compiladores, onde se adquiriu conhecimento prático e teórico para elaboração e imple-
mentação do projeto de um compilador para linguagem C-, que trabalha no processador
produzido na disciplina de Laboratório de Sistemas Computacionais: Arquitetura e Or-
ganização de Computadores, este relatório irá apresentar o conhecimento adquirido em
Sistemas Operacionais aplicado ao desenvolvimento e a exequibilidade de um Sistema
Operacional no projeto mencionado no âmbito da disciplina de Laboratório de Sistemas
Computacionais: Sistemas Operacionais.
Um Sistema Operacional é um conjunto de programas que gerenciam recursos,
processadores, armazenamento, dispositivos de entrada e saída e dados da máquina e
seus periféricos. Ou seja, é um sistema que faz a comunicação entre o hardware e os
demais softwares (1). Assim, o Usuário utiliza um Software que demandará do Hardware
do computador, no entanto, esta interface é feita pelo Sistema Operacional, conforme
apresentado na Figura 1.
Figura 1 – Diagrama com a posição do sistema operacional no uso de um computador.
Fonte: Wikipédia (2)
Um dos principais Sistemas Operacionais utilizados no Brasil é o Microsoft Windows,
desenvolvido pela Microsoft, atualmente na versão Windows 10 para desktop. Já no universo
6 Capítulo 1. Introdução
mobile, o Android, desenvolvido pela empresa Google e baseado no núcleo Linux, que se
encontra na versão 8.0 Oreo. Ambos contam com anos de estudos e atualizações, além de
equipes gigantescas de produção, assim, o objetivo deste projeto não é o de se aproximar
aos atuais Sistemas Operacionais, mas compreender o seu funcionamento mais básico e
intrínseco, voltado para conhecer as estruturas que foram um Sistema Operacional.
1.1 Estrutura do documento
Este documento segue uma estrutura que se relaciona com o planejamento temporal
do desenvolvimento do projeto no decorrer da graduação e dos laboratórios, onde serão
apresentados os estudos sobre o gerenciamento do processador, da memória, sistema
de arquivos e de dispositivos de entrada/saída que deverá ser realizado pelo Sistema
Operacional a ser desenvolvido.
As próximas sessões apresentam os objetivos deste trabalho, a fundamentação
teórica e o desenvolvimento do trabalho e os resultados já obtidos.
7
2 Objetivos
2.1 Geral
Projeto e implementação de alguns módulos de um sistema operacional específico
para um sistema digital em lógica programável composto por processador, memória e
interface de comunicação. Este trabalho possui os seguintes objetivos gerais:
• Domínio da construção e das unidades formadoras de um Sistema Operacional;
• Definição das especificações técnicas do Sistema Operacional.
2.2 Específico
Para alcançar os objetivos gerais, derivam-se os seguintes objetivos específicos:
• Realizar o estudo e propor como deverão ser implementado o:
– Gerenciamento de Processos;
– Gerenciamento de Memória;
– Gerenciamento do Sistema de Arquivos;
– Gerenciamento dos Dispositivos de Entrada e Saída.
Note-se que este trabalho não tem como objetivo a implementação das estruturas,
que será desenvolvido nos próximos trabalhos, mas sim de realizar o estudo e levantamento
bibliográfico dos assuntos.
9
3 Fundamentação Teórica
3.1 Processador
Um processador é um circuito integrado digital que realiza operações matemáticas e
lógicas para cumprir determinada tarefa de acordo com uma série de instruções ordenadas
por um programa externo e codificadas por microcircuitos internos (3).
O processador desenvolvido no Laboratório de Sistemas Computacionais: Arquite-
tura e Organização de Computadores foi baseado na arquitetura MIPS, que é acrônimo
para Micropocessor without interlocked pipeline stages (microprocessador sem estágios
intertravados de pipeline), que é uma arquitetura de microprocessadores RISC (Reduced
Instruction Set Computer, em português, “Computador com um conjunto reduzido de
instruções”) (4), com 33 instruções diferentes.
A Tabela 1 apresenta um exemplo de intrução aritmética.
Tabela 1 – Exemplo de um formato de Instruções
Tamanho (bits) 6 5 5 5 11
Campo OPcode Reg1 Reg2Reg3 Blank
Bits 31 - 26 25 - 21 20 - 16 15 - 11 10 - 0
O projeto conta, assim, com as seguintes unidades:
• Unidade Lógica Aritmética: responsável por realizar todas as operações aritmé-
ticas e lógicas do processador;
• Unidade de Controle: responsável por gerenciar todas as outras unidades;
• Memória de Instruções: memória que contém o código a ser executado pelo
processador;
• Memória de Dados: memória para armazenamento dos dados utilizados ou gerados
pelo processador;
• Registradores: unidade com memória de acesso direto e rápido do processador.
3.2 Compilador
Um compilador é um programa de sistema que traduz um programa descrito em
uma linguagem de alto nível, no caso, a linguagem C-, para um programa equivalente em
código de máquina para um processador (5).
10 Capítulo 3. Fundamentação Teórica
O compilador foi desenvolvido para linguagem C-, sendo muito semelhante à
linguagem C, principal linguagem ensinada no Instituto de Ciência e Tecnologia da
Universidade Federal de São Paulo, facilitando sua aplicação, no entanto, com funções
a menos, como a não utilização de ponteiros, estruturas, entre outras. Para construção
do compilador se utilizou o compilador TINY para linguagem C como base. Utilizou-
se, também, o analisador léxico Flex para automatizar a construção do analisador e o
YACC-Bisson para gerar o Parser, método para o analisador sintático.
3.3 FPGA - Field Programmable Gate Array
Um FPGA, acrônimo para Field Programmable Gate Array (em português, “Arranjo
de Portas Programáveis em Campo”) é um circuito integrado projetado para que possa
ser configurado por qualquer consumidor após a fabricação (6). O modelo utilizado neste
projeto é o EP4CE115F29C7, embarcado no KIT de desenvolvimento DE2-115.
A programação foi feita na linguagem VeriLog, que é uma linguagem de descrição
de hardware (Hardware Description Language – HDL), no software Quartus Prime 16.1
desenvolvido pela Altera. A Figura 2 apresenta o Kit de desenvolvimento DE2-115, que
foi utilizado neste projeto.
Figura 2 – KIT DE2-115
Fonte: Terasic Technologies (7)
3.4. Sistema Operacional 11
3.4 Sistema Operacional
O Sistema Operacional é o conjunto de programas que gerencia recursos, pro-
cessadores, armazenamento, dispositivos de entrada e saída e dados da máquina e seus
periféricos. É o sistema responsável por fazer comunicação entre o hardware e os demais
softwares, criando uma plataforma comum a todos os programas utilizados (1).
Dentre as funções básicas de computadores de uso geral, pode-se citar:
• Definição da interface com o usuário;
• Compartilhamento de hardware entre usuários;
• Compartilhamento de dados entre usuários;
• Gerenciamento dos dispositivos de entrada e saída;
• Tratamento e recuperação de erros.
A Figura 3 apresenta todas as estruturas do projeto desenvolvido e que deverão
ser desenvolvidas, onde o Sistema Operacional realizará o controle e o gerenciamento dos
recursos.
Figura 3 – Estruturas do projeto que deverá ser desenvolvido.
Fonte: O autor
Para realizar este gerenciamento, o Sistema Operacional é dividido em quatro
partes, que serão explicados nas próximas seção:
• Gerenciamento de processos;
• Gerenciamento de memória;
• Gerenciamento de sistema de arquivo;
• Gerenciador de dispositivos de entrada/saída.
12 Capítulo 3. Fundamentação Teórica
3.4.1 Gerenciamento de Processos
Um processo consiste em um programa em execução, mas não é o mesmo que um
programa, pois programa pode ser exemplificado com o uma receita, com instruções para se
resolver um problema, enquanto um processo é como alguém seguindo a receita, ou ainda,
um processo precisa de recursos computacionais para trabalhar (memória, arquivos, tempo
de processador, entre outros), enquanto um programa não trabalha, fica passivamente
guardado em um arquivo (8).
Como em um sistema operacional vários processos requerem o processador, é
necessário compartilhar o tempo de acesso entre eles de forma que quando um processo
for parado, todas as suas informações sejam guardadas. Isto porque quando o mesmo
for reiniciado deve continuar do ponto em que parou. Para isso os sistemas operacionais
utilizam uma tabela chamada de tabela de processos, que consiste em um vetor ou lista
encadeada de estrutura para cada processo existente (9).
Um Sistema Operacional pode ser monoprogramado, onde apenas um processo é
executado por vez, do começo ao fim, ou multiprogramado, onde mais um processo pode
executar ao mesmo tempo (9). A Figura 4 apresenta um exemplo de multiprogramação
Figura 4 – Exemplo de multiprogramação.
Fonte: Romildo Martins Bezerra (10)
A multiprogramação é utiliza, pois, um processo típico passa mais tempo em espera
que processando, assim, pode-se aproveitar os tempos de espera para executar outros
processos, aproveitando melhor o tempo de processador disponível, tornando possível que
o Sistema Operacional mantenha vários processos ativos ao mesmo tempo, gerando o
Timesharing, que é a ilusão de que os processos estão sendo executados ao mesmo tempo.
O Sistema Operacional precisa decidir qual processo deverá ser utilizado pelo
processador, onde somente processos aptos a executar podem ser usados.
3.4.1.1 Escalonamento
Para que o processador não fique muito tempo sem executar tarefa alguma, os
sistemas operacionais utilizam técnicas de escalonar os processos que estão em execução
ao mesmo tempo na máquina (10).
3.4. Sistema Operacional 13
Escalonamento é a determinação da ordem em que processos alocam processos no
processador, onde o Sistema Operacional usa algum critério para escolher um processo
apto para rodas e também poder retira-los enquanto estiver rodando. O escalonamento
não-preemptivo só retira um processo do processador caso o mesmo já tenha terminado ou
entre em estado de espera, enquanto o preemptivo pode retomar o processador mesmo
contra a vontade de processo (10).
A Tabela 2 apresenta os principais algoritmos de escalonamento e suas especificações.
Tabela 2 – Principais algoritmos de escalonamento e suas especificações.
Algoritmo de Escalonamento Especificações
Round Robin • Quantum constante• Sem Prioridade
Com prioridade • Cada processo possui uma prioridade e o de maior prioridadeexecuta primeiro.
• Para evitar que os processos de maior prioridade tomem conta
do processador, a prioridade é decrementada.
Menor job primeiro
• Só conduz ao resultado ótimo quando todos os Jobs tiverem
prontos ao mesmo tempo
• Difícil estimas o tempo
• Utilização de médio ponderada
Garantido • Estimar (prometer) a um processo o tempo de sua execução ecumprir
• Necessário conhecimento dos processos executando e a serem
executados
Loteria • Distribuição de bilhetes que dão acesso ao processador• Lembra o escalonamento com prioridade, mas bilhetes são troca-
dos entre processos
Filas múltiplas • Criação de classes de prioridade alocadas em diferentes filas• Objetiva a redução de tempo de swapping
Fonte: Romildo Martins Bezerra (9)
3.4.1.2 Estados do processo
Basicamente, existem três estados em que um processo pode ser encontrar no
sistema:
• Execução: quando está sendo processado, sendo utilizado pelo processador.
• Pronto: quando aguarda uma oportunidade para executar.
• Espera/bloqueado: quando aguarda algum evento externo ou por algum recurso
para prosseguir seu processamento.
A Figura 5 apresenta o três tipos de processos, além da sua criação e destruição e
como funcionam suas ligações.
14 Capítulo 3. Fundamentação Teórica
Figura 5 – Tipos de processos encontrados no sistema operacional e suas ligações.
Fonte: Romildo Martins Bezerra (9)
Percebe-se na figura que as ligações são:
1. Processo bloqueado aguardando informações
2. Escalonador escolhe outro processo
3. Escalonador entrega ao processador
4. Entrada de dados concluídos
3.4.1.3 Threads
Sistemas operacionais modernos permitem que um único processo possua várias
linhas de controle, os threads. Isto permite, por exemplo, a um editor de texto realizar
uma verificação ortográfica ao mesmo tempo em que o usuário digitacaracteres (10).
Em uma tarefa com múltiplos threads, enquanto um thread está bloqueado e
esperando, um thread na mesma tarefa pode executar. Com isso, há cooperação entre
muitos threads no mesmo job, conferindo maior vazão e melhoria de desempenho (10).
3.4.1.4 Deadlock
É a situação em que dois ou mais processos estão esperando por um evento que só
pode ser gerado por algum dos mesmos processos em espera, impedindo de continuar as
execuções do processador, ou seja, os processos ficam bloqueados (11).
As principais formas de tratamento de Deadlock consistem em:
• Identificar;
• Prevenir;
• Recuperar.
3.4. Sistema Operacional 15
3.4.2 Gerenciamento de Memória
Alguns sistemas operacionais mais simples não trabalham com multiprogramação,
ou seja, alocam um processo na memória o executam até que seja terminado. Porém a
troca de processos entre memória e disco para sistemas multiprogramados é uma realidade.
Para este caso, em que a soma dos espaços de memória requeridos por todos os processos
é maior que a memória de dados, é necessário levar os dados não utilizados para o disco,
sendo necessário um controle através de mapa de bits (9).
Existem diversas técnicas para gerenciar memória que variam de acordo com o
hardware do processador, apresentadas a seguir (12):
Multiprogramação com Partições Fixas
A estratégia mais simples consiste em dividir a memória em n partições com valores
fixos, que podem, por exemplo, ser estabelecidas na configuração do sistema operacional.
Quando um programa chega, há duas possibilidades: ele é colocado em uma fila de entrada
da menor partição capaz de armazená-lo ou ele é colocado em uma fila de entrada única
(12).
Para partições com tamanho fixos, qualquer espaço não ocupado por um programa
é perdido e na maioria das vezes o programa a ser executado é menor do que a partição
alocada para ele, gerando a fragmentação interna (12).
Multiprogramação com Partições Variáveis
Nesse modelo, o tamanho das parições é ajustado de acordo com as necessidades
dos processos, onde os espaços livres na memória são armazenados em uma lista (12).
Permuta (Swapping)
Quando há mais processos que espaço na memória, é necessário mover temporaria-
mente processos para o disco e, obviamente, para continuar sua execução, um processo
movido para o disco deve ser trazido novamente para a memória (13).
Sempre que um processo é bloqueado, ele pode ser movido para o disco e um outro
processo trazido do disco para a sua partição em memória. O controle dos espaços livres é
gerenciado por um mapa de bits, onde para cada unidade de alocação existe um bit no
mapa de bits, que é 0 se a unidade estiver livre e 1 caso esteja ocupada (13).
Memória Virtual
A ideia básica da memória virtual é que o tamanho combinado do programa, dos
seus dados e da pilha pode exceder a quantidade de memória física disponível para ele, ou
16 Capítulo 3. Fundamentação Teórica
seja, neste caso, a simples troca, vista anteriormente, não resolveria o problema. O Sistema
Operacional, então, mantém partes do programa atualmente em uso, em forma de páginas
ou segmentos, na memória principal e o restante em disco. Essas páginas/segmentos são
"trocados"entre memória principal e secundária conforme o SO as solicita, conforme a
demanda do programa (12).
Paginação
O espaço de endereço virtual é dividido em unidades chamadas páginas. As unidades
correspondentes na memória física são chamadas molduras de página (ou quadros). As
páginas e as molduras (quadros) têm sempre exatamente o mesmo tamanho (12).
3.4.3 Gerenciamento de Sistema de Arquivos
Parte importante do uso de um computador consiste em recuperar e apresentar
informações previamente armazenadas como o próprio sistema operacional, que precisa
manter informações para uso posterior, como programas, bibliotecas e configurações.
Geralmente essas informações precisam ser armazenadas em um dispositivo não volátil,
que preserve seu conteúdo mesmo quando o computador estiver desligado. Cada arquivo é
caracterizado por um conjunto de atributos, que podem variar de acordo com o sistema
utilizado. Os atributos mais usuais são Nome, Tipo e Tamanho (14).
As aplicações e o sistema operacional usam arquivos para armazenar e recuperar
dados. O uso dos arquivos é feito através de um conjunto de operações, geralmente
implementado sob a forma de chamadas de sistema e funções de bibliotecas. As operações
básicas envolvendo arquivos são (14)
• Criação de um novo arquivo;
• Abrir para leitura ou escrita de dados em um arquivo;
• Mudar atributos;
• Eliminar o arquivo do dispositivo.
A organização dos arquivos pode ser realizada de forma (15):
• Não estruturada: Consiste em uma sequência não estruturada de bytes, onde o
sistema de alocação não impõe nenhuma estrutura lógica para os dados.
• Indexada: O arquivo consiste em um conjunto de registros
Um diretório consiste em uma estrutura de dados que contém entradas associadas
aos arquivos onde estão informações como localização física, nome, organização e demais
3.4. Sistema Operacional 17
atributos. Define como o sistema organiza logicamente os arquivos contidos em um disco
(15). Pode ser divido nos seguintes tipos:
• Nível único: Um único diretório contém todos os arquivos do disco, tornando a
implementação mais simples da estrutura de diretórios, no entanto, não permite a
criação de arquivos com o mesmo nome;
• Dois níveis: Cada usuário ou programa pode ter seu “diretório particular”, sem a
preocupação de conhecer os outros arquivos do disco;
• Em árvore: Modelo utilizado atualmente em quase todos os sistemas operacionais,
cada usuário pode criar vários níveis de diretórios (ou subdiretórios), sendo que cada
um pode conter arquivos e subdiretórios.
3.4.4 Gerenciamento de Entrada/Saída
O controle de entrada e saída de dados dos dispositivos é uma das funções principais
de um sistema operacional. A interação dos programas com o Sistema Operacional para o
acesso aos dispositivos pode ocorrer enviando e recebendo bytes de/para dispositivos de
caractere, ou realizando operações de arquivos em dispositivos de bloco (16).
Dispositivos de entrada e saída podem ser agrupados basicamente em duas categorias
(16):
• Dispositivos de caractere: Permite a transferência de sequências de caracteres nas
operações de leitura e escrita, como terminais, impressoras e teclado.
• Dispositivos de bloco: manipulam informações em bloco de tamanho fixo, como
discos rígidos ou unidades de armazenamento em memória.
A conexão entre o processador e a memória ocorre através de um barramento, mas
para evitar que o processador tenha que intermediar cada transferência de valores de/para
um dispositivo, usando o barramento, é possível usar um dispositivo de controle que
permite o acesso direto à memória pelos controladores, sem intermediação do processador.
Esse dispositivo é o controlador de DMA, acrónimo para Direct Memory Access (em
português, acesso direto à memória), assim, é possível ao Sistema Operacional iniciar a
operação do controlador DMA, indicando qual a operação deve ser realizada (leitura ou
escrita), qual endereço do dispositivo deve ser acessado e em que posição da memória e
quantos dados devem ser copiados (16).
18 Capítulo 3. Fundamentação Teórica
3.5 BIOS
A BIOS, acrônimo para Basic Input-Output System (em português, Sistema Básico
de entrada e saída), é um pequeno programa armazenado em uma memória não volátil do
processador. Assim, quando o processador é inicializado a BIOS começa suas atividades,
testando os periféricos, os dispositivos de armazenamento principal e dar início ao processo
de boot, que é a operação de passagem do sistema operacional do disco para a memória
do processador (17).
19
4 Desenvolvimento do Trabalho
4.1 BIOS
Ao se realizar a programação no Kit DE2-115, será realizado o teste de partida
para verificação e diagnóstico dos componentes do sistema. A Tabela 3 apresenta quais os
componentes testados, a sequência e como será realizado o teste.
Tabela 3 – Sequência, Componentes do Sistemae testes realizados pela BIOS
Sequência Componentes do Sistema Teste realizado
1 Display de 7 segmentos Serão apresentados em os displays a sequência de 0 a 9, acrescen-
tando uma unidade a cada 1 segundo, caso haja algum erro, o
usuário deverá mover algum switch ou pressionar um botão.
2 LEDs Todos os LEDs utilizados pelo processador serão testados, acen-
dendo um de cada vez, cada LED aceso por um segundo, caso haja
algum erro, o usuário deverá pressionar um botão.
3 Switch O usuário deverá inserir números binários através dos switches,
onde cada um representa um bit, e este número será apresentado na
forma binária nos LEDs e decimal no display de sete seguimentos,
por 10 segundos, caso haja algum erro, o usuário deverá pressionar
um botão.
4 Botões O usuário terá 10 segundos para aperta qualquer um dos quatro
botões e o respectivo número do botão deverá ser apresentado na
forma decimal no display de 7 segmentos, caso haja algum erro, o
usuário deverá mover algum switch.
Fonte: O Autor
Em seguida, deverá ser identificado os dispositivos de armazenamento principal,
para isso, o processador deverá solicitar quatro números ao usuário através dos switches,
armazenar este número em posições aleatórias da memória e realizar a leitura do mesmo,
apresentando o valor no display de sete segmentos, caso haja algum erro, o usuário deverá
apertar o botão KEY3 do KIT.
Com os testes encerrados, a BIOS deverá carregar o Sistema Operacional do disco
para a memória principal. O Sistema Operacional estará localizado nas primeiras linhas
do disco, estas, normalmente, são conhecidas como “linha zero”. Encerrado, será ativado o
processador para execução do Sistema Operacional.
4.2 Comunicação e usabilidade
Toda comunicação e usabilidade do usuário com o Sistema Operacional será reali-
zada através de um shell, utilizando os switches e botões para seleção e o display de sete
segmentos e LEDs para identificação de o que está sendo realizado.
20 Capítulo 4. Desenvolvimento do Trabalho
O usuário poderá, através do shell solicitar que o Sistema Operacional faça:
1. Criar um programa: O Sistema Operacional terá 10 algoritmos disponíveis para
serem criados, apresentados e indexados na Tabela 4, seus códigos estão no Apêndice.
Para cria-lo, o usuário deverá escolher a opção 1, pressionar o botão 0, escolher qual
é o programa com o índice da Tabela 4, ao escolher o programa, pressionar o botão
0 novamente e então informar qual o nome do programa, sendo ele um número entre
0 e 17, tamanho máximo de programas criados, não sendo permitido dois programas
com o mesmo nome. Ao pressionar o botão 0 novamente o usuário retorna para o
menu principal. Este processo pode ser repetido várias vezes, até o usuário executar
os programas.
2. Renomear um programa: Para renomear um programa, o usuário deverá escolher,
no menu principal, a opção 2 e apertar o botão 0, então deverá informar qual o
número do programa, que deverá ser um programa já criado, apertar o botão 0 e
então informar o novo nome do programa, sendo ele um número entre 0 e 17, não
sendo permitido dois programas com o mesmo nome.
3. Deletar uma programa: Para remover um programa, o usuário deverá escolher,
no menu principal, a opção 3 e apertar o botão 0, então deverá informar qual o
número do programa, que deverá ser um programa já criado, apertar o botão 0 e em
seguida o botão 1, para confirmar a exclusão ou 2, para cancelar a exclusão.
4. Executar um programa (Sem preempção): Caso o usuário deseje executar
apenas um programa criado, deverá selecionar a opção 4 no menu principal, pressionar
o botão 0, informar qual dos programas criado deseja executar e pressionar 0.
5. Executar um conjunto de programas (multitarefa com preempção): Caso
o usuário deseje executar todos os programas criados, deverá selecionar a opção 5 no
menu principal que os programas serão iniciados.
Sempre que os programas estiverem em execução, o LED vermelho, com número
respectivo ao processo, estará acesso para identificação do usuário.
4.3 Gerenciamento de processos
Caso o usuário selecione a opção 4, será realizada a monoprogramação, então não
será necessário escalonamento do processador. Na opção 5 será realizada a multiprograma-
ção, onde o algoritmo de escalonamento empregado será o Round Robin, no entanto, não
com o quantum constante, mas a quantidade de instruções executadas constante, sendo
realizadas 20 instruções por programa, para então realizar a troca de contexto.
4.4. Gerenciamento de Memória 21
Tabela 4 – Sequência, Componentes do Sistema e testes realizados pela BIOS
Sequência Componentes do Sistema
1 Identificar qual o número n da Sequência de Fibonacci.
2 Encontrar o Fatorial de um número n informado pelo usuário.
3 Realizar um algoritmo de teste, chamado Foo.
4 Inverter a sequência dos números, informados pelo usuário, de um vetor de tamanho n.
5 Identificar o maior elemento de um vetor de tamanho n, com números informados
pelo usuário.
6 Identificar o máximo divisor comum (MDC) entre dois números informados pelo
usuário.
7 Identificar o mínimo múltiplo comum (MMC) entre dois números informados
pelo usuário.
8 Encontrar o resultado da Potenciação de uma base a elevada ao expoente b, infor-
mados pelo usuário.
9 Identificar se um número informado pelo usuário é primo ou não.
10 Ordenar a sequência de n números, informados pelo usuário, através da Selection
Sort.
Fonte: O Autor
Quando um processo for encerrado ele aguardará o fim dos demais programas.
Quando um programa necessitar da entrada ou saída de um dado, esta informação
será encaminhada para o DMA e aguardará ser liberado pelo mesmo. A princípio serão
empregados apenas os conceitos de prevenir e identificar deadlocks, não se aplicando a
recuperação.
4.4 Gerenciamento de Memória
Decidiu-se utilizar a Memória Virtual com paginação para gerencia a memória.
Para isso, cada página terá 30 linhas de instruções e de dados. Será criado uma tabela
para mapeamento de onde os dados de cada programa criado estão armazenados. Não será
implementado coletor de lixo no momento.
4.5 Gerenciamento do Sistema de Arquivos
A organização dos arquivos será desenvolvida sem estruturação, ou seja, o sistema
de alocação não irá impor nenhuma estrutura lógica para os dados, logo, em nível único.
O único atributo utilizado será o nome, que será um número entre 1 e 17.
4.6 Gerenciamento de Dispositivos de Entrada e Saída
Será utilizado o DMA para que o processador não pare seu funcionamento enquanto
aguarda a entrada ou saída de um sinal. Para isso, será elaborada uma tabela informando
quais programas estão bloqueados e quais estão prontos para execução. O DMA aguardará
22 Capítulo 4. Desenvolvimento do Trabalho
a inserção dos dados faltantes informando através do LED qual é o programa que a entrada
ou saída irá, utilizando um buffer para armazenar o dado.
23
5 Considerações Finais
Com as especificações definidas neste ponto de checagem 2, o próximo passo será a
inclusão e adaptações necessárias na plataforma de hardware para o Sistema Operacional
ser executado. Será implementada a BIOS, o HD, as interrupções, temporizadores, pilhas e
a troca de contexto. Tudo isso será simulado no software Quartus e serão realizados testes
no KIT de desenvolvimento para comprovar a funcionalidade da plataforma de hardware.
O desenvolvimento deste projeto não se desenvolveu conforme esperado por conta
das muitas dúvidas que vieram da disciplina de Sistemas Operacionais teórico, além de
haver necessidade de pequenas correções no processador e no compilador desenvolvido.
Decidiu-se neste projeto utilizar as especificações mais simples para que quando
estes objetivos forem alcançados o projeto possa buscar novos conceitos e tecnologias,
evitando-se o contrário, que poderia gerar atrasos em unidades essenciais.
25
Referências
1 BARRETO, J. M. Sistema Operacional, UFSC. 2015. Citado 2 vezes nas páginas 5
e 11.
2 GOLFTHEMAN. Operating system placement-pt. 2013. Citado na página 5.
3 COUTINHO, D. Aula sobre processadoresministrada para o PRONATEC do IFRN.
Citado na página 9.
4 WIKIPéDIA. Arquitetura MIPS. 2008. Citado na página 9.
5 RICARTE, I. L. M. Introdução à compilação. 2008. Citado na página 9.
6 WIKIPEDIA. Field-programmable gate array. 2017. Citado na página 10.
7 TECHNOLOGIES, T. Terasic - DE Main Boards - Altera DE2-115 Development and
Education Board. Citado na página 10.
8 SOBRAL, M. M. Gerência de processos, IFSP. 2009. Citado na página 12.
9 BEZERRA, R. M. Conceitos de Sistemas Operacionais, CEFET/BA. 2008. Citado 4
vezes nas páginas 12, 13, 14 e 15.
10 BARCELAR, R. R. Sistemas Operacionais Abertos, Módulo 1, Gerência de Processos.
2017. Citado 3 vezes nas páginas 12, 13 e 14.
11 LEITE, A. SISTEMAS OPERACIONAIS, Deadlock. UNIVASF. 2017. Citado na
página 14.
12 OLIVERIA, R. S. de. Sistemas Operacionais Série Livros Didáticos no11. UFRGS.
2008. Citado 2 vezes nas páginas 15 e 16.
13 RICARTE, I. L. M. Programação de Sistemas: uma introdução. 2008. Citado na
página 15.
14 MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos, VI - Gerência de
Arquivos. UFPR. 2017. Citado na página 16.
15 NETO, A. de M. Ger. Citado 2 vezes nas páginas 16 e 17.
16 GUARDIA, H. C.; SENGER, H. Gerenciamento de Entrada e Saída. UAB/UFSCar.
2017. Citado na página 17.
17 COMPUTAçãO, C. de. Arquitetura de Computadores. UNICAMP. 2017. Citado na
página 18.
	Folha de rosto
	Resumo
	Sumário
	Introdução
	Estrutura do documento
	Objetivos
	Geral
	Específico
	Fundamentação Teórica
	Processador
	Compilador
	FPGA - Field Programmable Gate Array
	Sistema Operacional
	Gerenciamento de Processos
	Escalonamento
	Estados do processo
	Threads
	Deadlock
	Gerenciamento de Memória
	Gerenciamento de Sistema de Arquivos
	Gerenciamento de Entrada/Saída
	BIOS
	Desenvolvimento do Trabalho
	BIOS
	Comunicação e usabilidade
	Gerenciamento de processos
	Gerenciamento de Memória
	Gerenciamento do Sistema de Arquivos
	Gerenciamento de Dispositivos de Entrada e Saída
	Considerações Finais
	Referências

Continue navegando