92
F C JOE EPSOSIM – SIMU FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO EL OLIVEIRA DE CARVALHO ULADOR DE ESCALONAMENTO DE PR SISTEMAS OPERACIONAIS FORTALEZA 2011 ROCESSOS EM

FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

FACULDADE FARIAS BRITO

CIÊNCIA DA COMPUTAÇÃO

JOEL OLIVEIRA DE CARVALHO

EPSOSIM – SIMULADOR DE

FACULDADE FARIAS BRITO

CIÊNCIA DA COMPUTAÇÃO

JOEL OLIVEIRA DE CARVALHO

SIMULADOR DE ESCALONAMENTO DE PROCESSOS

SISTEMAS OPERACIONAIS

FORTALEZA

2011

ESCALONAMENTO DE PROCESSOS EM

Page 2: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

II

JOEL OLIVEIRA DE CARVALHO

EPSOSIM – SIMULADOR DE ESCALONAMENTO DE PROCESSOS EM

SISTEMAS OPERACIONAIS

Monografia de graduação apresentada na Faculdade Farias Brito como requisito parcial do curso de Ciência da Computação para obtenção do título de Bacharel em Ciência da Computação.

Orientado por: MSc. Sérgio Araújo Yunes

FORTALEZA

2011

Page 3: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

III

EPSOSIM – SIMULADOR DE ESCALONAMENTO DE PROCESSOS EM

SISTEMAS OPERACIONAIS

Joel Oliveira de Carvalho

PARECER _____________________

NOTA: FINAL (0 – 10): _______

Data: ____/____/_________

BANCA EXAMINADORA:

__________________________________

MSc. Sérgio Araújo Yunes

(Orientador)

___________________________________

MSc. Francisco Lúcio Gomes Guimarães

(Examinador)

___________________________________

MSc. José Helano Matos Nogueira

(Examinador)

Page 4: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

IV

Dedico este trabalho ao Deus Todo Poderoso, ao Senhor dos Exércitos

e Pai dos espírito. Ao seu Filho amado Senhor Jesus Cristo e ao

Espírito Santo a qual nos ensina e corrige. A meu pai João Ananias

que me ajudou financeiramente no começo de minha jornada. A

minha mãe Antônia pelo incentivo e apoio.

Page 5: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

V

AGRADECIMENTOS

Primeiramente, agradeço a Deus que verdadeiramente nos ama mesmo nós sendo

ingratos, pecadores, imerecível da sua misericórdia. Pois Ele não muda e está é a razão de

nós não sermos consumidos (Malaquias 6.3).

Aos meus pais João Ananias, por ter me ajudado financeiramente no início do curso e

Antônia por ter me apoiado e à minha irmã Jackeline, por ter me incentivado. A meu irmão

Jarbas por ter me ajudado. À minha prima Samilly Dantas, por ter contribuído em minhas

pesquisas.

Ao professor Sérgio Yunes, por ter me orientado, colaborado e se empenhado para a

conclusão deste trabalho. Ao Professor de metodologia científica Leonardo por ter revisado.

Aos meus amigos e colega de trabalho Marcos Rafael, Cristtiano pelos conselhos e por

ter cooperado com o meu o projeto.

Agradeço aos professores que participaram da banca, ao professor Helano Matos. E ao

professor Lúcio Guimarães por tornar este trabalho com mais qualidade, por ser um professor

muito crítico e perceptivo. Ao professor e coordenador do curso de Ciência da Computação

Ricardo Wagner pelos conselhos e pelas críticas construtivas.

Aos meus colegas e professores, todos que contribuíram direto e indiretamente para a

conclusão deste trabalho.

Page 6: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

VI

Posso todas as coisas em Cristo que me fortalece. (Filipenses 4.13)

Page 7: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

VII

RESUMO

No Brasil há uma grande carência de ferramentas de ensino-aprendizagem prática para o

ensino da disciplina de Sistemas Operacionais. Existem entre os alunos certas dificuldades em

compreender o conteúdo das disciplinas teóricas do curso de Ciência da Computação,

Engenharia da Computação e Sistemas de Informações, no qual os professores se empenham

em transmitir. Com a interface gráfica do simulador, torna mais viável para aos alunos a

visualização dos assuntos complexos e abstratos de escalonamento de processos da disciplina

de Sistemas Operacionais. Os alunos serão capazes de resolver suas atividades com mais

eficiência e tirar suas dúvidas do conceito teórico com base na observação no simulador. O

simulador EPSOsim busca de forma simples, prática e detalhada simular os algoritmos de

escalonamento de processos.

Palavras chaves: escalonamento de processos, Sistemas Operacionais, algoritmos, FIFO,

Round Robin, prioridade.

Page 8: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

VIII

ABSTRACT

In Brazil it has a great lack of tools of practical teach-learning for the education of disciplines

of Operational Systems. Difficulties in understanding the content of them exist between the

certain pupils discipline theoreticians of the course of computer science, engineering of the

computation and systems of information, in which the professors if pledge in transmitting.

With the graphical interface of the simulator, it becomes more viable for the pupils the

visualization of the complex subjects and abstract of scheduling of processes of it disciplines

of Operational Systems. The pupils will be capable to decide its activities with more

efficiency and to take off its doubts of the theoretical concept on the basis of the comment in

the simulator. The EPSOsim simulator search of form simple, practical and detailed to

simulate the algorithms of scheduling of processes.

Words keys: scheduling of processes, Operational Systems, algorithms, FIFO, Round Robin,

priority.

Page 9: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

IX

SUMÁRIO

INTRODUÇÃO ..................................................................................................................................................... 1

METODOLOGIA ................................................................................................................................................. 2

1. TEORIAS EDUCACIONAIS E FERRAMENTAS DE ENSINO-APREND IZAGEM ....................... 4

1.1 ENSINO CONTEUDISTA ...................................................................................................................... 4

1.2 TEORIA CONSTRUTIVISTA ................................................................................................................. 4

1.3 FERRAMENTAS DE AUXÍLIO AO ENSINO-APRENDIZAGEM ................................................................. 5

1.3.1 SIMULADORES ................................................................................................................................... 5

1.3.1.1 SOSIM ............................................................................................................................................... 6

1.3.1.2 SISO ................................................................................................................................................. 7

1.3.1.3 NACHOS ............................................................................................................................................ 7

1.3.1.4 MOSS ............................................................................................................................................... 8

1.3.2 SISTEMAS REAIS ................................................................................................................................ 9

1.3.2.1 MINIX .............................................................................................................................................. 9

1.3.3 LINUX .............................................................................................................................................. 10

1.3.3.1 PROJETO GNU ................................................................................................................................ 12

1.3.3.2 KERNEL LINUX ................................................................................................................................ 13

2. SISTEMAS OPERACIONAIS E O ESCALONAMENTO DE PROCESSOS .................................. 15

2.1 CONCEITOS BÁSICOS DE SISTEMAS OPERACIONAIS ......................................................................... 15

2.2 PROCESSOS ...................................................................................................................................... 18

2.2.1 PROCESSOS X THREADS .................................................................................................................... 19

2.2.2 MULTIPROGRAMAÇÃO .................................................................................................................... 20

2.2.3 BLOCO DE CONTROLE ..................................................................................................................... 21

2.3 ESCALONAMENTO DE PROCESSOS ................................................................................................... 22

2.3.1 PREEMPTIVO E NÃO-PREEPTIVO ...................................................................................................... 23

2.3.2 FUNÇÕES DO ESCALONAMENTO DE PROCESSOS .............................................................................. 24

2.3.3 CATEGORIA DE ALGORITMOS DE ESCALONAMENTO EM LOTE, INTERATIVO E TEMPO REAL. .......... 26

3. ARQUITETURA DO SIMULADOR ..................................................................................................... 28

3.1 CLASSES E OBJETOS DO SIMULADOR ............................................................................................... 28

3.2 DIAGRAMA DE CLASSES .................................................................................................................. 33

4. FUNCIONAMENTO E DESCRIÇÃO DO AMBIENTE ............. ........................................................ 35

4.1 AMBIENTE DO SIMULADOR ............................................................................................................. 35

Page 10: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

X

4.2 JANELA PRINCIPAL .......................................................................................................................... 36

4.3 JANELA CONFIGURAÇÃO DO SISTEMA ............................................................................................. 37

4.4 JANELAS DE ESCALONAMENTO DE PROCESSOS ............................................................................... 39

4.4.1 JANELA FIFO .................................................................................................................................. 43

4.4.2 JANELA SJF ..................................................................................................................................... 45

4.4.3 JANELA SRT .................................................................................................................................... 47

4.4.4 JANELA CIRCULAR .......................................................................................................................... 48

4.4.5 JANELA PRIORIDADE NÃO-PREEMPTIVO ......................................................................................... 51

4.4.6 JANELA PRIORIDADE PREEMPTIVO .................................................................................................. 53

4.4.7 JANELA CIRCULAR COM PRIORIDADES ............................................................................................ 54

4.4.8 JANELA MÚLTIPLAS FILAS .............................................................................................................. 55

4.5 JANELA DIAGRAMA DE GANTT ........................................................................................................ 57

5. CONCLUSÃO .......................................................................................................................................... 58

6. REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................................... 60

7. ANEXOS ................................................................................................................................................... 65

ANEXO I – CÓDIGO-FONTE DA JANELA CONFIGURAÇÃO DO SISTEMA ..................................................... 65

ANEXO II – CÓDIGO-FONTE DO COMPONENTE DE CORES DOS PROCESSOS .............................................. 77

Page 11: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

XI

LISTA DE FIGURAS

Figura 1 – Simulador SOsim (MAIA, 2007).................................................................. 6

Figura 2 – Simulador SISO 2.0 (PAULO, 2009) ........................................................... 7

Figura 3 – O MINIX 3 (EQUINOX, 2007) .................................................................. 10

Figura 4 – Kalango Linux (SONYMASTER, 2009) .................................................... 11

Figura 5 – Big Linux (SONYMASTER, on-line) ........................................................ 12

Figura 6 – Representação gráfica de um Kernel monolítico (DOI, 2005) ................... 13

Figura 7 – Colossus foi criado em 1941. (SARAIVA, 2009) ...................................... 16

Figura 8 – Jobs (BRANCO, on-line) ........................................................................... 16

Figura 9 – Batch e a multiprogramação (CARDOSO, 2006) ...................................... 17

Figura 10 – Monitor Residente (VAGO, 2011) ........................................................... 17

Figura 11 – Processo (GUIZZI, 2010). ........................................................................ 18

Figura 12 – Multiprogramação (MEDEIROS, 2006) ................................................... 20

Figura 13 – (PCB) - Bloco de Controle de Processo (MACHADO; MAIA, 2009). ... 21

Figura 14 – Estados de processos ................................................................................. 23

Figura 15 – Diagrama de classe do formulário de configuração do sistema. ............... 33

Figura 16 – Janela principal ......................................................................................... 37

Figura 17 – Configuração do sistema ........................................................................... 38

Figura 18 – Janela de estado de criação do processo. .................................................. 39

Figura 19 – Layout padrão usada nos escalonamentos FIFO, SJF, SRT e Round Robin

.................................................................................................................................................. 41

Figura 20 – Informações de processos ......................................................................... 42

Figura 21 – Uso da política de escalonamento FIFO com o diagrama de Gantt ......... 43

Figura 22 – Janela que simula o funcionamento do escalonamento FIFO .................. 44

Figura 23 – Exemplo da política de escalonamento SJF com o diagrama de Gantt. ... 45

Figura 24 – Janela que simula o funcionamento do escalonamento SJF ..................... 46

Figura 25 – Janela que simula o funcionamento do escalonamento SRT ..................... 47

Page 12: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

XII

Figura 26 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a

oito. ........................................................................................................................................... 49

Figura 27 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a

cinco. ........................................................................................................................................ 49

Figura 28 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a

dois. .......................................................................................................................................... 50

Figura 29 – Janela que simula o funcionamento do escalonamento Round Robin ...... 51

Figura 30 – Janela que simula o funcionamento do escalonamento não-preemptivo .. 52

Figura 31 – Janela que simula o funcionamento do escalonamento preemptivo ......... 54

Figura 32 – Janela que simula o funcionamento do escalonamento circular com

prioridade ................................................................................................................................. 55

Figura 33 – Janela que simula o funcionamento do escalonamento múltiplas filas .... 56

Figura 34 – Diagrama de Gantt do simulador EPSOsim (Escalonamento FIFO) ....... 57

Page 13: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

XIII

LISTA DE TABELAS

Tabela 1 – Escalonamento de processos e suas respectivas filas de criação. ............... 31

Tabela 2 – Lista de escalonamentos e objetos (fila de prontos) ................................... 31

Tabela 3 – Lista de escalonamentos e objetos (usadas três filas de prontos) ............... 32

Tabela 4 – Formulário do simulador EPSOsim ........................................................... 35

Page 14: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

XIV

LISTA DE ABREVIATURA E SIGLAS

CPU (Central Processing Unit) – Unidade de Processamento de Dados.

CTSS (Compatible Time-Sharing System) – Sistema Compatível de Divisão por

Tempo.

FCFS (First Come First Server) – O Primeiro a Chegar é o Primeiro a ser Servido.

FIFO (First In First Out) – Primeiro a Entrar é o Primeiro a Sair.

GNU (Gnu is Not Unix) – GNU não é Unix.

MEC – Ministério da Educação.

MOSS – (Modern Operating Systems Simulators) – Simulador Moderno de Sistemas

Operacionais.

PC (Program Counter) – Contador de Programa.

PCB (Processo Controle Block) – Bloco de Controle de Processo.

PID (Process Identification) – Identificação do Processo.

SESu – Secretaria de Ensino Superior.

SISO – Simulador de Sistema Operacional.

SJF (Shortest Job First) – Processo Mais Curto Primeiro.

SP (Stack pointer) – Ponteiro de Pilha.

SR (Status Register) – Registradores de Status.

SOsim Simulador de Sistemas Operacionais.

SuSE (Software und System-Entwicklung) – Desenvolvimento de Software e Sistema.

UFRJ – Universidade Federal do Rio de Janeiro.

VCL (Visual Component Libary) – Biblioteca de Componentes Visuais.

MMU (Memory Management Unit) – Unidade de Gerência de Memória.

UML (Unified Modelling Language) – Linguagem de Modelagem Unificada.

Page 15: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

1

INTRODUÇÃO

As Diretrizes Curriculares do Ministério da Educação (MEC) recomendam que o

assunto Sistemas Operacionais esteja presente no conjunto das disciplinas tecnológicas dos

cursos de Ciência da Computação, Engenharia de Computação, Sistemas de Informação e

Licenciatura em Computação (MEC; Diretrizes; SESu, on-line). Trata-se de uma disciplina

relevante, de extenso conteúdo e que aborda aspectos crucias do funcionamento de um

sistema de computação, dentre eles: programação concorrente, gerência de processos,

gerência de memória, gerência de arquivos, gerência de E/S e memória virtual.

Uma das formas de facilitar o processo ensino-aprendizagem consiste em realizar

atividades práticas que permitam ao aluno visualizar o conceito teórico. Dentre essas

atividades se inclui a utilização de programas simuladores. A utilização de simuladores

permite ver, associar e analisar conceitos diante de situações práticas que imitam a realidade.

Diante desse cenário, o presente trabalho propõe, a criação de um simulador como ferramenta

de apoio ao ensino da disciplina de Sistemas Operacionais e que possa ser utilizado no

contexto dos objetivos e realidade dos cursos que contemplam a disciplina.

O presente trabalho visa desenvolver um simulador como recurso de apoio didático ao

ensino do assunto escalonamento de processos da disciplina Sistemas Operacionais, buscando

agregar novos algoritmos ainda não explorados nos simuladores existentes e gerar gráficos

com informações das simulações.

Espera-se que o simulador seja capaz de representar o funcionamento do Sistema

Operacional por meio de recursos gráficos de modo a contribuir com o processo de ensino-

aprendizagem de disciplinas que abordem esse assunto. Com a implementação do simulador,

o aluno terá mais conhecimento e obterá mais experiência para fazer uma determinada

atividade em sala de aula.

Page 16: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

2

METODOLOGIA

De acordo com Perin Filho (1995), existem três estratégias para solução de problemas

são elas: a experimentação direta, a resolução analítica e a simulação de sistema. O projeto

consiste na estratégia de simulação de sistemas, na qual é desenvolvido um programa de

computador para simular um sistema real que apresentará o funcionamento dos Sistemas

Operacionais.

O desenvolvimento do simulador será norteado fundamentalmente pelos resultados

dos seguintes passos:

• Levantamento dos trabalhos existentes que visam apoiar o ensino da disciplina de

Sistemas Operacionais;

• Pesquisa junto aos professores e alunos de Sistemas Operacionais visando identificar

os aspectos, mecanismos e conceitos de Sistemas Operacionais que geram mais

dúvidas nos alunos;

O levantamento dos trabalhos existentes será feito utilizando os recursos da biblioteca

da Faculdade Farias Brito, notadamente a ferramentas de busca na internet, tal como o Google

Acadêmico. Após a descoberta dos simuladores existentes, um grupo desses será escolhido

para testes. A análise das funcionalidades, e levantamento dos pontos positivos e negativos

será verificada com a instalação e uso de cada simulador.

Após a definição das funcionalidades requeridas para o simulador, será feito um

levantamento a respeito da linguagem de programação que será usada para o desenvolvimento

do projeto. Pretende-se utilizar uma ferramenta de desenvolvimento como a ferramenta

Borland Delphi, pois esta possui bibliotecas com bastantes recursos, comparado com outras

linguagens de programação.

Page 17: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

3

Pretende-se desenvolver e modelar o simulador com o método de orientação a objeto,

visando o reuso e a facilidade de inclusão de novas funcionalidades. E será usada a ferramenta

de modelagem UML, Star UML, para o desenvolvimento do artefato diagrama de classe.

Page 18: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

4

1. TEORIAS EDUCACIONAIS E FERRAMENTAS DE ENSINO-APRENDIZAGEM

Nas seções seguintes serão abordadas algumas teorias, ferramentas de simulação e

sistemas reais que faz parte do ensino-aprendizagem dos alunos.

1.1 ENSINO CONTEUDISTA

Há cerca de duas décadas surgiu o modelo de ensino conteudista, que prepara

indivíduos passivos, no qual é transmitido ao aluno uma grande quantidade de informação por

um determinado período de tempo, sem se preocupar se realmente os alunos estão

aprendendo. Muitos alunos tentam memorizam o conteúdo que é transmitido. Logo depois, é

exigido dos alunos resultados por meio de provas escrita ou oral. Com o passar do tempo,

grande parte do que foi memorizado pelo aluno é perdido, devido à transmissão ser

momentânea e superficial (CASTRO, 2011).

Hoje em dia, grande parte dos intelectuais educadores não concorda com este padrão

de ensino. Eles pesquisam sobre as possíveis conseqüências, agregam novos conhecimentos

contra este modelo e favorecem novos meios práticos para se dissociar dessa abordagem

teórica (CASTRO, 2011).

1.2 TEORIA CONSTRUTIVISTA

O construtivismo ou sócio-construtivismo empenha-se a explicar a inteligência

humana, do modo que determine ações mútuas entre indivíduos e o meio, procurando

incentivar o conhecimento científico. O construtivismo deriva do conhecimento e da

aprendizagem das teorias da epistemologia genética de Jean Piaget, que se empenhou em

analisar a passagem do individuo que possui um conhecimento inferior para um conhecimento

superior (BALDI, 2010). O construtivismo teve também como pesquisador sócio-histórico

Lev Vygotsky, onde afirma que:

Page 19: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

5

O homem não nasce inteligente, mas também não é passivo sob a influência do meio, isto é, ele responde a estímulos externos agindo sobre eles para construir e organizar o seu próprio conhecimento, de forma cada vez mais elaborada (BALDI, 2010).

Piaget emprega dois conceitos importantíssimos no que diz respeito ao saber e ao

funcionamento da mente humana: assimilação e acomodação. Estes dois processos procuram

restaurar um equilíbrio mental perturbado pela influência de um dado incombinável, aquilo

que já se conhece, chamado de princípio de equilibração (RODRÍGUEZ, 1999).

Há duas vertentes no princípio de equilíbrio. No primeiro caso, o dado entra em

contato e é assimilado por um esquema já existente, onde se amplia. No segundo caso, o novo

dado é incompatível com o esquema já formulado e então cria novo esquema acomodando

novo conhecimento. Este novo esquema será então ampliado na medida em que o indivíduo

estabelecer relações com o meio. A teoria construtivista foi usada para solucionar muitos

problemas educacionais existentes. Os educadores se empenharam bastante neste modelo no

qual investiram muito, mas constataram resultados inferiores ao que esperavam.

(RODRÍGUEZ, 1999).

1.3 FERRAMENTAS DE AUXÍLIO AO ENSINO-APRENDIZAGEM

Na subárea da programação, existem certas dificuldades entre os alunos com relação à

implementação nos algoritmos de escalonamento de processos. Tais problemas ficam ainda

mais difíceis sem a ajuda de uma ferramenta que auxilie no ensino-aprendizagem, ou de

algum software que simule os algoritmos de escalonamento de processos.

Nas próximas seções, serão abordadas algumas ferramentas de apoio ao ensino, tais

como simuladores, os quais demonstram algumas funções dos Sistemas Operacionais, e que

estão disponíveis na internet.

1.3.1 SIMULADORES

A simulação antigamente era estigmatizada apenas como fingimento ou farsa, porém

na era da tecnologia ganhou um sentido mais positivo. Atualmente, a simulação pode ser uma

Page 20: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

6

ferramenta que ajude a compreender melhor o espectro computacional, ou seja, o

funcionamento interno de um determinado dispositivo eletrônico. Alguns simuladores de

Sistemas Operacionais serão apresentados a seguir.

1.3.1.1 SOSIM

O SOsim (Simulador de Sistemas Operacionais) foi desenvolvido por Luiz Paulo Maia

em sua tese de mestrado na Universidade Federal do Rio de Janeiro (UFRJ). O SOsim é um

software educativo que auxilia no ensino-aprendizado de professores e alunos. Ele foi

desenvolvido com o intuito de ser uma ferramenta gratuita (MAIA, 2001), está disponível no

site, na página www.training.com.br/SOsim/. Este simulador ilustra alguns conceitos da

disciplina Sistemas Operacionais, tais como multiprogramação, processos e suas mudanças de

estado, gerência do processador (escalonamento) e a gerência da memória virtual. A figura 1

ilustra um exemplo do simulador SOsim:

Figura 1 – Simulador SOsim (MAIA, 2007)

Page 21: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

7

1.3.1.2 SISO

O simulador SISO (Simulador de Sistema Operacional) é um applet disponível na web

no site http://martins.webcindario.com/jsiso/bin/index.html. O SISO simula a detecção de

deadlock e foi criado com o intuito de auxiliar no ensino-aprendizagem da disciplina a

Sistemas Operacionais. O SISO é um simulador muito prático. Seu funcionamento não exige

uma instalação, podendo ser executado diretamente pela internet. Para isso é necessário que o

computador tenha a Java Runtime Environment 1.5 ou superior (PAULO, 2009). A figura 2

ilustra um exemplo do simulador SISO 2.0:

Figura 2 – Simulador SISO 2.0 (PAULO, 2009)

1.3.1.3 NACHOS

O simulador de Sistema Operacional Nachos foi criado com o uso na linguagem C++,

usando uma abordagem de orientação a objetos. Também possui algumas partes

Page 22: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

8

desenvolvidas com o uso da linguagem C. O simulador Nachos simula uma máquina virtual

que utiliza a arquitetura MIPS (Microprocessor without Interlocked Pipeline Stages -

Microprocessador sem Estágios Interligados de Pipeline) - não confundir com MIPS (Milhões

de Instruções Por Segundo). O MIPS é utilizado em aplicações como: computadores de alto

desempenho (Silicon Graphics), sistemas embarcados, em Sistemas Operacionais portáteis,

roteadores (CISCO) e videogames (GONÇALVES, 2011).

Na implementação do Nachos foi declarada a classe “Machine, a qual possui métodos

parecidos com os do assembly MIPS, onde a cada linha de código é traduzida pelo próprio

simulador em instrução executável, e então compilado habitualmente para uma máquina alvo,

por exemplo. O Sistema Operacional Linux, normalmente utiliza o compilador g++, no qual o

código-fonte é compilado neste compilador (g++), gerando assim o código MIPS que

corresponde ao código do hardware. Para compilar é preciso à instalação de um compilador

especial diferente do compilador padrão dos Sistemas Operacionais, o compilador cruzado

(cross-compiler) (GONÇALVES, 2011).

No simulador Nachos há várias rotinas, tais como: threads e chamadas de

procedimento remoto. O Nachos foi desenvolvido por várias pessoas de diversos países, tais

como: Estados Unidos, Canadá, França e Alemanha. Thomas Anderson foi um dos criadores

do Nachos e em seu site na internet está disponível toda informação, documentação, patch e

versões (ANDERSON, 2008).

1.3.1.4 MOSS

O MOSS (Modern Operating Systems Simulators) ou simulador moderno de Sistemas

Operacionais é um pequeno simulador com uma coleção de programas desenvolvidos em

Java. Ele foi criado por Ray Ontko e Alexander Reeder, que se basearam no conceito do livro

de Andrew S. Tanenbaum (professor de Ciências da Computação da Vrije Universiteit na

Amsterdã em Holanda) com ajuda da Prentice Hall (Editora líder educacional nos EUA). O

simulador está disponível tanto para sistemas Windows como para Linux (ONTKO, 2008).

Page 23: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

9

O simulador MOSS reúne um conjunto de programas de quatro diferentes aplicativos

tais como: simulador de escalonamento, simulador de deadlock, simulador de gerência de

memória e simulador de sistema de arquivos. No programa de simulação de escalonamento o

estudante pode escrever seus próprios algoritmos de escalonamento, podendo especificar o

número de processos, a média, e o desvio padrão para calcular o tempo de I/O, o tempo de

bloqueio para cada processo e a duração da simulação (ONTKO, 2008).

O programa de simulação de deadlock apresenta uma interface gráfica que permite ao

aluno percorrer os programas que estão em execução em cada um dos processos e os

processos bloqueados, para analisar os casos de impasse e como podem ser evitados,

detectados e/ou resolvidos (ONTKO, 2008).

1.3.2 SISTEMAS REAIS

Os sistemas reais que serão apresentados na subseção a seguir possuem códigos-fonte

disponíveis na web, tornando assim possível a interação entre alunos e professores com o

Sistema Operacional. Além disso, qualquer pessoa pode alterar o código-fonte e observar seus

efeitos na prática.

1.3.2.1 MINIX

MINIX é um Sistema Operacional do tipo Unix-like (é parecido com Unix), gratuito e

com código fonte disponível na web (TANENBAUM, 2011a). Ele foi criado para uso

educacional em 1987 por Andrew S. Tanenbaum, com o objetivo de ajudar nas suas aulas de

Sistemas Operacionais. O desenvolvimento da nova versão, MINIX 3, está sendo liderado

outra vez por Andrew S. Tanenbaum. Segundo suas publicações em artigos, Tanenbaum diz

que o Sistema Operacional MINIX será mais seguro do que Linux e o Windows (AVRAM,

2009). Após algum tempo trabalhando no projeto em uma lista de discussão (TORVALDS,

1996), Linus diz o seguinte:

Como eu mencionei há um mês atrás, estou trabalhando numa versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estado em que poderá ser utilizado (embora possa não ser o que você espera), e eu estou disposto a disponibilizar o

Page 24: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

10

código-fonte para ampla distribuição. Ele está na versão 0.02... Contudo eu tive sucesso ao executar bash,gcc , gnu-make, gnu-sed,compressão etc, nele (TORVALDS, 1996).

É esperado que o MINIX versão 3, seja um Sistema Operacional altamente confiável,

livre de falhas como os aparelhos televisores, sistemas embarcados ou aplicações críticas

(sistemas de controle de tráfego aéreo, processamento de pedidos para uma cadeia de lojas de

varejo, entre outros). A figura 3 ilustra a janela do MINIX versão 3:

Figura 3 – O MINIX 3 (EQUINOX, 2007)

1.3.3 L INUX

Geralmente, os Sistemas Operacionais que usam o kernel (núcleo) Linux são tidos

como Sistema Operacional Linux. O kernel Linux foi criado pelo finlandês Linus Torvalds

(OLIVEIRA et. al., 2004). Linus inspirou-se no projeto MINIX do professor Tanenbaum.

Page 25: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

11

Como já foi descrito na subseção 1.3.2.1, o MINIX é um sistema bem simples, criado com

propósitos didáticos e bastante disseminado no meio acadêmico. Depois que Linus criou a

versão inicial do Sistema Operacional Linux, disponibilizou o MINIX em grupo de discussão

na internet, com a intenção de ser um material de estudo para acadêmicos na área da

computação, mas logo que divulgou outras pessoas entraram no projeto e contribuíram com

novas funcionalidades.

O Linux faz parte de um conjunto de softwares mais um kernel Linux, formando a

chamada distribuição. Existem várias distribuições, tais como: Red Hat, Debian, Slackware,

SuSE, Mandrake e Conectiva (TANENBAUM, 2005). As Figuras 4 e 5 ilustram duas

distribuições Linux:

Figura 4 – Kalango Linux (SONYMASTER, 2009)

Page 26: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

12

Figura 5 – Big Linux (SONYMASTER, on-line)

1.3.3.1 PROJETO GNU

GNU é um significado recursivo de (GNU Não é Unix). GNU também se refere a um

animal nativo da África, sendo ele o logotipo da empresa do projeto Free Software

Foundation (Fundação para o Software Livre), que foi criada em 1985 por Richard Smallman

(GNU, 2009). Stallman fundou o GNU com a intenção de criar um Sistema Operacional livre.

Em 1991, o sistema estava praticamente pronto, mas precisava de um núcleo. Smallman tinha

seu grupo, que estava desenvolvendo seu próprio núcleo, chamado de Hurd. Foi então que

Smallman conheceu Linus. Linus tinha desenvolvido o núcleo que Stallman tanto precisava.

O núcleo Hurd da GNU está em desenvolvimento desde 1991. O um projeto GNU reuniu

diversos programadores. Foram desenvolvidas ferramentas para o conjunto de software que

compõe o Sistema Operacional Linux. Entre as ferramentas, podem ser citados o compilador

gcc, o editor de texto emac, o editor de gráficos gimp, o ambiente de janelas gnome, etc.

(GNU, on-line).

Page 27: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

13

1.3.3.2 KERNEL L INUX

O núcleo do Linux foi dividido em duas categorias, o núcleo de desenvolvimento e o

núcleo estável. O núcleo de desenvolvimento é aquele em que os programadores podem

modificar o código, sendo por isso chamado de núcleo de experimentação. O núcleo estável é

conhecido pelos programadores como confiável. Nessa fase o núcleo já parcialmente pronto é

lançado para as comunidades da internet. Existem bugs menores para serem corrigidos nessa

parte, os quais geram os chamados realeases. A versão é determinada por três números, por

exemplo, 1.0.12. No momento em que eu estava digitando esta linha do projeto a versão do

kernel do Linux estava em 2.6.31.6.

O primeiro número indica uma troca radical do núcleo começando do zero. O segundo

número indica se a versão é de desenvolvimento ou estável. Se for par, a versão é estável,

caso contrário de desenvolvimento. O terceiro número referisse a correções de bugs menores

em um núcleo, é o chamado realease (OLIVEIRA, et. al., 2004, p. 175). A Figura 6 ilustra

um Kernel Monolítico.

Figura 6 – Representação gráfica de um Kernel monolítico (DOI, 2005)

Page 28: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

14

O núcleo é classificado de duas formas, monolítico e micronúcleo. No monolítico

estão todos os componentes que fazem parte de um único código. O micronúcleo

(microkernel) é constituído de funcionalidades reduzidas, tais como escalonador simples,

primitivas de sincronização e mecanismos de comunicação entre processos. Os outros

componentes no qual compõe um Sistema Operacional são implementados separadamente

(OLIVEIRA, et. al., 2004).

Page 29: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

15

2. SISTEMAS OPERACIONAIS E O ESCALONAMENTO DE PROCESSOS

É relevante notar que há uma demanda de recursos muito grande, que faz parte do dia-

a-dia de um usuário. Essa exigência requer que os programas respondam de forma rápido,

onde o usuário não perceba as ações do que há por trás do sistema, é frustrante para o usuário

ficar esperando a resposta de um determinado recurso no qual solicitou. Quando o usuário

solicita um recurso através de um programa, é notório que o Sistema Operacional resolva a

solicitação (apud. OLIVEIRA, et. al., 2004, p. 1). . Oliveira (2004) conceitua o Sistema

Operacional como uma camada de software colocada entre o hardware e as aplicações que

executam tarefas para o usuário.

Para um melhor entendimento sobre Sistemas Operacionais, nas subseções a seguir,

serão abordados os seguintes assuntos: origem, funções e conceito do Sistema Operacional

(gerência de processos, gerência de memória, memória virtual, sistemas de arquivos,

sincronização de arquivo, seus mecanismos que antigamente eram usados, especificamente o

funcionamento dos Jobs, além dos mecanismos que são usados atualmente. Será visto

também monitores residentes, multiprogramação, conceitos e funções de escalonamentos de

processos e os principais algoritmos de escalonamento de processos.

2.1 CONCEITOS BÁSICOS DE SISTEMAS OPERACIONAIS

Na década de 40 não existiam Sistemas Operacionais, o programador era o próprio

operador do computador, que o controlava por meio de chaves, fios e luzes de aviso. Naquela

época havia uma planilha chamada de alocação de horário, onde em certo horário o

programador executava um programa que possibilitava o controle total da máquina. Nesta

mesma década surgiram os operadores profissionais, com isso o programador deixou de

operar o computador durante a execução de um programa (OLIVEIRA et. al., 2004). A figura

7 ilustra o antigo computador Colossus da década de 1940:

Page 30: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

16

Figura 7 – Colossus foi criado em 1941. (SARAIVA, 2009)

Em consequência do surgimento dos operadores, surgiu o job, que enfileirava tarefas,

onde era compilado, executado e os dados eram lidos por meio de cartões perfurados. O Jobs

podia chamar vários programas e funcionavam por etapas: o montador era executado e

traduzia o programa de assembly para a linguagem de máquina. O programa então era ligado

às rotinas de I/O de uma biblioteca, depois de ligarem as rotinas de I/O então podia ser

carregado e executado. Caso houvesse um erro na execução, tirava-se uma cópia na listagem

do conteúdo de toda a memória principal (OLIVEIRA, et. al., 2004). A figura 8 mostra um

exemplo de Jobs:

Figura 8 – Jobs (BRANCO, on-line)

Os Jobs eram uma forma de agrupar programas em lotes, com isso surgiu a idéia de

sistema em batch. O sistema em batch era um arquivo com um conjunto de comandos

executados sequencialmente. Mesmo com o agrupamento de Jobs os programas ainda eram

Page 31: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

colocados para executar de forma manual

processamento de um sistema em

multiprogramação na seção 2.2.2:

Figura 9

Na década de 50 surgiu o monitor residente cuja

dos Jobs. Conforme Oliveira

computador. Quando um programa terminava, o monitor residente se comprometia de

carregar outro programa automaticamente e o executava. Os monitores residentes ficavam o

tempo todo na memória principal

para outro. A figura 10 ilustra um exemplo de m

Figura

colocados para executar de forma manual (OLIVEIRA, et. al., 2004). A figura 9

processamento de um sistema em batch e multiprogramação, será visto o assunto de

multiprogramação na seção 2.2.2:

– Batch e a multiprogramação (CARDOSO, 2006)

e 50 surgiu o monitor residente cuja função era automatizar a execução

et. al. (2004), a sua função era a transição dos programas no

uando um programa terminava, o monitor residente se comprometia de

carregar outro programa automaticamente e o executava. Os monitores residentes ficavam o

incipal e reduziam o tempo que se levava para transferir um

figura 10 ilustra um exemplo de monitor residente:

Figura 10 – Monitor Residente (VAGO, 2011)

17

A figura 9 compara o

rá visto o assunto de

(CARDOSO, 2006)

função era automatizar a execução

), a sua função era a transição dos programas no

uando um programa terminava, o monitor residente se comprometia de

carregar outro programa automaticamente e o executava. Os monitores residentes ficavam o

o tempo que se levava para transferir um job

Page 32: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

18

2.2 PROCESSOS

O processo é simplesmente um programa em execução, ou pode-se dizer que,

processo seja um módulo carregável e executável de maneira concorrente com outros

processos separadamente. Cada processo possui um espaço de endereçamento. O espaço de

endereço é uma lista de posições de memória que varia de zero a uma quantidade máxima de

posições onde o referente processo pode ler ou escrever. O espaço de endereçamento contém

o programa executável, os dados do programa e sua pilha (TANENBAUM, 2005).

Os processos se comunicam através de mecanismos tais como: sinais, pipes, named

piped, memória compartilhada, soquete (socket) e trocas de mensagem (SILBERSCHATZ, et.

al., 2005). Através de um processo, um programa pode alocar recursos, compartilhar dados,

trocar informação e sincronizar sua execução (GUIZZI, 2010). Os processos em sistemas

multiprogramados são executados concorrentemente, compartilhando o uso da CPU, memória

principal e dos dispositivos de E/S. O processo é dividido em três grupos, conforme a figura

11:

Figura 11 – Processo (GUIZZI, 2010).

Page 33: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

19

• Contexto de software

• Contexto de hardware

• Espaço de endereçamento.

O armazenamento do conteúdo dos registradores gerais e registradores específicos

(PC - contador de programa, SP - ponteiro de pilha e SR - registradores de status), acontecem

através do contexto de hardware (MACHADO, et. al., 2009). Um das fases mais importantes

de um processo é a mudança de contexto, isto é, onde são guardadas as informações do

contexto de software e de hardware de um determinado processo que deverá ser selecionado

para CPU. A mudança de um processo para outro acontece de maneira muito rápido,

imperceptível para o usuário, dando a ilusão de execução simultânea (TANENBAUM, 2005).

De acordo com Machado (2009), no contexto de software existem três grupos importantes:

• Identificação - PID (Process Identification – Identificação do Processo), owner

(UID – User Identification – Identificação do usuário), nome, data e hora da

criação, prioridade da execução, tempo de processador (burst time).

• Quotas - número máximo de arquivos abertos, tamanho máximo da memória

principal e secundária, número máximo de operações de E/S, tamanho máximo do

buffer, número máximo do sub-processos e threads

• Privilégios ou direito - permissões entre o próprio processo (prioridade de

execução, limitação da alocação das memórias seja ela principal, secundária e etc),

entre os demais processos (características) e entre o Sistema Operacional

(desativação do sistema, modificação de regras de segurança, criação de outros

processos privilegiados, alteração de parâmetro de configuração do sistema)

2.2.1 PROCESSOS X THREADS

Threads são semelhantes aos processos e contém seu próprio conjunto de

registradores, contador de programa e pilhas. Um thread é a unidade básica de um processo,

Page 34: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

20

vários threads concorrem entre si dentro de um processo, onde são executadas separadamente.

Tanenbaum (2005) diz que os threads podem realizar execuções múltiplas ocorrendo no

mesmo ambiente de processo com alto grau de paralelismo. No entanto, múltiplos threads são

equivalentes a múltiplos processos onde os processos são executados em paralelo em um

único computador.

Existem dois ambientes de thread, a monothread e a multithread, na monothread cada

processo comporta apenas um thread no seu espaço de endereçamento, isto é, implementado

exclusivamente com uso de múltiplos processos isolados. No ambiente multithread, um

processo pode conter diversas threads concorrendo entre si. (MACHADO; MAIA, 2009).

2.2.2 MULTIPROGRAMAÇÃO

Os primeiros sistemas de computadores, apenas um programa podia ser executado por

vez, pois nesta época não existia a idéia de multiprogramação. Na década de 60 surgiu o

conceito de multiprogramação, onde permite que vários programas concorram de forma

pseudo-paralela ao mesmo tempo. Ao contrário do monitor residente, onde executava um

programa de cada vez e permitia que o processador ficasse ocioso (OLIVEIRA, et. al., 2004,

pag. 8-9). A figura 12 ilustra um exemplo de multiprogramação:

Figura 12 – Multiprogramação (MEDEIROS, 2006)

Page 35: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

21

2.2.3 BLOCO DE CONTROLE

O Sistema Operacional implementa o processo por meio de uma estrutura de dados

localizada em seu núcleo, chamada de Bloco de Controle de Processo ou em inglês PCB

(Process Control Block). Os PCBs ficam residentes em uma área protegida da memória

principal, seu tamanho é limitado por um parâmetro do Sistema Operacional (MACHADO;

MAIA, 2009). De acordo com Machado (2009), a função do PCBs é armazenar informações

sobre o contexto de hardware e contexto de software e espaço de endereçamento referente a

cada processo, tais como:

1. PID (Process Identification) - Identificação do processo;

2. Prioridade do processo;

3. Estado do processo (criação, aptos, execução, bloqueado e finalização);

4. Localização e quantidade de memória principal usada pelo processo;

5. Ponteiros para o encadeamento dos blocos de controle dos próximos processos;

6. Informações de contabilidade (espaço de memória ocupado, tempo de

processador entre outros);

7. Identificador do processo pai;

8. Contador de programa;

9. Recursos que o processo pode ter acesso;

10. Ponteiro de pilha de processos.

A figura 13 ilustra o Bloco de Controle de Processo visto anteriormente:

Figura 13 – (PCB) - Bloco de Controle de Processo (MACHADO; MAIA, 2009).

Page 36: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

22

2.3 ESCALONAMENTO DE PROCESSOS

O escalonamento de processos ou agendador de tarefas é conceituado como sendo

uma atividade organizacional feita através da CPU ou um sistema distribuído (STALLINGS,

2004). À medida que os processos são criados é passado para o estado de pronto, a partir de

então, é necessários critérios para estabelecer a escolha do processo na qual deverá utilizar o

processador. Tais critérios para a escolha do processo são chamados de política de

escalonamento.

Maia (2009) diz que a política de escalonamento é à base da multiprogramação e

gerência de processos em Sistemas Operacionais. Um processo, no decorrer do seu

processamento passa por diferentes estados, em cargo de eventos gerados pelo Sistema

Operacional ou pelo próprio processo. De acordo com Tanenbaum (2005) resume os estados

de um processo em três estados, no qual os processos podem se encontrar em:

• Execução – o processo é alocado na CPU;

• Pronto – temporariamente parado para dar lugar a outro processo;

• Bloqueado – aguardando o término de um evento externo para que possa

continuar a execução.

Conforme Cunha (2003), para poder criar um processo são necessárias as seguintes

ações do Sistema Operacional:

• O mapa de memória do processo, com as regiões de código, dados e pilha.

• Os valores iniciais de variáveis do ambiente.

• Os valores iniciais dos registradores do processador, quando o programa for

posto em execução.

• Os canais iniciais para as entradas e saídas.

• Uma entrada numa tabela, interna ao Sistema Operacional, na qual expõe o

estado de cada processo.

Page 37: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

23

Após as ações, o novo processo está apto para a execução. Outros autores têm uma

concepção diferente com relação aos estados dos processos, como Silberchatz (2005), no qual

define os estados dos processos em cinco estados. A figura 14 ilustra cinco estados dos

processos do modelo proposto por Silberchatz (2005), mostrando o fluxo dos processos:

1. Novo ou criação: onde o processo é criado;

2. Pronto ou aptos: o processo está esperando para ser atribuído a um processador;

3. Execução (CPU): as instruções estão sendo executadas;

4. Espera ou bloqueado: o processo está esperando que ocorra algum evento;

5. Finalização/Terminado: o processo é finalizado.

2.3.1 PREEMPTIVO E NÃO-PREEPTIVO

Há dois grupos principais nos algoritmos de escalonamento, preemptiva e não-

preemptiva. O escalonamento não-preemptivo foi o primeiro a ser implementado nos sistema

multiprogramado, os processos CPU-Bound assumem todo o controle da CPU gastando todo

Bloquear

Liberar Admitir

Despachar

Fatia de tempo (preempção ou interrupção)

E/S Fila de Espera

Criação CPU Finalização

Fila de Aptos

Espera de evento

Desbloquear

Erro Crítico

Figura 14 – Estados de processos

Page 38: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

24

seu tempo de processador na CPU, em seguida é repassado para o estado de finalização. Nos

processos do tipo IO-Bound, caso não exista nenhuma instrução para que ocorra à mudança

do estado de execução para o estado de espera, o processo é também repassado para o estado

de finalização (MACHADO; MAIA, 2009).

Os algoritmos de escalonamento não-preemptivo, não é muito utilizado atualmente,

pois os processos que se localiza na fila de pronto devem esperar o processo que está em

execução até ser finalizado, tornando o tempo médio de espera muito maior comparado com

outros algoritmos preemptivo (MACHADO, et. al., 2009).

Os escalonamentos do tipo preemptivo, o processo é removido da CPU devido ter

acabado a fatia de tempo (timeslice), idéia usada principalmente no escalonamento circular,

ou por preempção por prioridade, usada nos escalonamentos por prioridade. Isso acontece

devido à chegada na fila de pronto um processo com maior prioridade do que o processo

alocado na CPU. Nos sistemas atuais é comum utilizar uma combinação de diversos

escalonamentos de processos, isto depende da necessidade do sistema.

2.3.2 FUNÇÕES DO ESCALONAMENTO DE PROCESSOS

Uma das funções mais importantes do Sistema Operacional é o scheduler

(escalonador). Diante disto, no processador, todo o compartilhamento dos processos está

sujeito a esta função, no qual difere de critérios estabelecidos na implementação. Outra função

importante é o dispatcher (despachador), que é responsável pela a troca de contexto do

processo e passar o controle que antes era da CPU para o processo. O período em que

acontece a troca de contexto é chamado de latência de dispatcher. Em sistemas onde existe a

fatia de tempo (timeslice ou quantum), o dispatcher usa um circuito chamado de temporizador

onde calcula a fatia de tempo do próximo processo (MACHADO; MAIA, 2009). Conforme

Machado (2009), as políticas de escalonamento exigem determinados critérios:

1. Manter o processador ocupado a maior parte do tempo.

Page 39: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

25

2. Balancear o uso do processador entre os processos.

3. Maximizar o sistema.

4. Oferecer tempo de resposta razoável para o usuário interativo.

O objetivo dos algoritmos de escalonamento é tratar todos os processos de forma igual

evitando o starvation (inanição), jargão na computação no qual o processo morre de fome. Os

processos ociosos ficam indefinitivamente esperando a utilização do processador

(SILBERCHATZ, et. al., 2005). Serão descritos a seguir, alguns critérios que devem ser

considerados nas políticas de escalonamento. De acordo com Machado (2009), em todos os

casos é desejável existir:

• Justiça: cada processo deve ter sua parte justa ou integra na CPU, dependendo

do tipo de cada processo.

• Aplicação da política: verificar se a política é cumprida.

• Equílibrio: todas as partes do sistema devem está ocupada.

• Turnaround: tempo gasto deste a criação do processo até sua finalização,

contabilizando o tempo em que o processo gasta na espera para a alocação de

memória, na fila de pronto, fila de espera, processamento e operações de E/S.

O objetivo das técnicas de escalonamento é justamente diminuir o tempo de

turnaround.

Segundo Machado (2009), nos sistemas em lote devem respeitar os determinados

requisitos:

• Throughput (vazão): número de processos que são executados em um espaço

de tempo, quanto maior o throughput melhor.

• Tempo de Resposta: tempo desde que é solicitada a requisição do processo, até

no instante que é exibida.

• Utilização da CPU: conservar a CPU sempre ocupada. É estabelecida uma

porcentagem em que o processador fica ocupado (0 a 100%). A utilização de

30% indica que o sistema está com a carga de processamento baixa e com a

Page 40: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

26

porcentagem de 90% indicam que está consideravelmente alta, ou seja, o

sistema está sobrecarregado.

Ainda de acordo com Machado (2009), nos sistemas interativos devem seguir os

requisitos:

• Cumprimento dos prazos: evitar perda de dados;

• Previsibilidade: evitar a degradação da qualidade em sistemas multimídias

Machado (2009), diz ainda que nos casos de sistemas em tempo real os algoritmos de

escalonamento devem priorizar os processos críticos.

2.3.3 CATEGORIA DE ALGORITMOS DE ESCALONAMENTO EM LOTE, INTERATIVO E

TEMPO REAL .

Existem determinados critérios que devem ser estabelecidos para a boa implementação

dos algoritmos de escalonamento de processos de um Sistema Operacional, isso depende de

seu ambiente em lote, interativo ou tempo real. Nos sistemas em lote, os processos são

enfileirados no estado de pronto, em seguida, o escalonador escolhe um processo para ser

alocado na CPU até usar todo seu tempo de processador e ser transferido para o estado de

finalização. Os sistemas em lote possuem um tempo de resposta muito lento, os usuários

ficam esperando exaustivamente pela resposta do programa (TANENBAUM, 2005).

Os sistemas interativos são caracterizados pela a preempção, os processos ficam

alternando entre si na utilização da CPU. Não se pode confundir o tempo de resposta com o

tempo de turnaround, o tempo de resposta equivale com o tempo decorrido até o momento

em que é apresentado os resultados nos sistemas. Na maioria das vezes, esse tempo é restrito

devido à velocidade do dispositivo de saída (MAZIERO, 2008, p. 6). Mais detalhes sobre

esses algoritmos serão vistos no capitulo 4.

Sistemas em tempo real são aqueles em que devem reagir de forma imediata em

Page 41: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

27

determinado espaço de tempo. Por exemplo, um programa player de vídeo como o Real

Player deve obter os bits do disco para converter em vídeo em um intervalo crítico de tempo,

se o cálculo que fizer for muito demorado, pode ter certos problemas nos resultados da saída,

saindo em intervalos diferentes, ou com alguma falha, ou até com o áudio soando diferente

(TANENBAUM, 2005).

Segundo Tanenbaum (2005), os sistemas em tempo real são usados em hospitais,

aeronaves, robôs e etc. A implementação desses sistemas funciona da seguinte maneira, o

programa é dividido em vários processos onde seu tempo de vida pode durar menos que um

segundo.

Page 42: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

28

3. ARQUITETURA DO SIMULADOR

Este capítulo aborda assuntos da arquitetura do simulador, suas funcionalidades com

base no modelo de Silberchatz (2005), apresentado no capítulo 2 (Sistemas Operacionais e o

escalonamento de processos). Mais adiante, neste capítulo será descrito as classes e objetos do

simulador dando ênfase na implementação do simulador e especificações de sua estrutura

interna.

3.1 CLASSES E OBJETOS DO SIMULADOR

O simulador EPSOsim usa biblioteca de classes VCL (Visual Component Library), é

uma biblioteca que tornam a estrutura do código mais organizado, diminuindo assim a

complexidade do código-fonte (PODGORETSKY ANATOLY, 2011). O simulador usa o

conceito da abstração no paradigma de orientação a objeto, ou seja, modela conceitos do

mundo real com base em um elemento, uma entidade ou um problema específico, no caso do

simulador a representação dos processos computacionais foi representada por uma instância

de objeto. Atualmente, é muito raro um Sistema Operacional usar o conceito de orientação a

objeto, sistemas que usa este conceito permitem a redução do acoplamento entre os módulos

(MACHADO; MAIA, 2009).

No simulador foi implementada a classe Tprocesso (vide anexo I), no qual é

instanciado um objeto toda vez que um usuário aciona o botão criar da janela de estado de

criação do processo (vide figura 18), onde são repassados os parâmetros necessários que

caracteriza o processo, desta forma a representação de um novo processo é criada. Veja a

linha de código abaixo, onde é instanciado um objeto e inserido na estrutura de dados fila:

FI. Push (Tprocesso. create (Ppid, Ptipo, Pcor, PTempoProc, Pprioridade));

Na classe Tprocesso foram definidos cinco atributos semelhantes ao do contexto de

software de um Sistema Operacional real. Veja os cinco atributos abaixo:

Page 43: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

29

• PID: número de identificação do processo.

• Tipo de processo: possuem os tipos CPU-Bound, I/O-Bound Disco, I/O-Bound

CD, I/O-Bound USB Flash. Apenas os tipos dos processos no escalonamento

por múltiplas filas diferem dos demais escalonamentos, abaixo os itens que o

compõe:

1. Processo de sistema CPU-Bound;

2. Processo de sistema I/O-Bound;

3. Processos Interativos CPU-Bound;

4. Processos Interativos I/O-Bound;

5. Processos Batch CPU-Bound;

6. Processos Batch I/O-Bound;

• Cor do processo: determina a cor de cada processo, no simulador existe 83

cores na versão do Delphi 2010 (vide anexo II) e 19 cores na versão Delphi 7.

• Tempo de processador: tempo de cada processo, referente ao uso da CPU.

• Prioridade: determina a prioridade de cada processo dos escalonamentos de

processos por prioridade (não-preemptivo, preemptivo e circular).

• Turnaround: tempo desde a criação até a finalização de cada processo.

Na classe TSistema (vide anexo I) foi instanciado apenas o objeto S, este objeto

contém as informações do sistema, veja abaixo:

• FatiaTempoSistema: usado para a realizar a preempção por tempo no

escalonamento circular.

• TempoDecorridoSistema: conta o tempo decorrido de um processo na CPU,

usado como um variável auxiliar da fatia de tempo.

Page 44: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

30

• TempoAcessoDisco: quantidade de tempo em que os processos do tipo IO-

Bound disco realiza entrada e saída.

• TtempoAcessoUSBFlash: quantidade de tempo em que os processos do tipo

IO-Bound USB Flash realiza entrada e saída.

• TempoAcessoCD: quantidade de tempo em que os processos do tipo IO-Bound

CD realiza a entrada e saída.

• TempoClock: relógio do escalonamento, tem o default igual a um,

representando um segundo.

• TempoThroughput: números de processos executado em um determinado

espaço de tempo.

• TempoInicialGantt: tempo inicial do diagrama de Gantt, equivale ao parâmetro

x do componente do diagrama, equivalente ao tempo em que o processo entra

na CPU.

• TempoFinalGantt: tempo final do diagrama de Gantt equivale ao parâmetro y

do componente do diagrama, equivalente ao tempo em que o processo sai na

CPU.

• UT: usada no diagrama de Gantt para fazer o somatório do tempo dos

processos em que ficou no estado de pronto.

• UTAux: variável auxiliar da unidade de tempo, também usada no diagrama de

Gantt para obter o tempo dos processos em que ficou no estado de pronto.

Na classe TDisco (vide anexo I) foi instanciada o objeto D, este objeto contém

informações dos processos IO-Bound, foram criados quatro atributos, veja os quatro baixo:

• Ocupado: verifica a CPU se está ocupada ou não.

• TempoEsperado: contador de tempo dos processos do tipo IO-Bound, usado

junto com o atributo tempoDecorrido, é atualizado de acordo com o tipo, seja

disco, CD ou USB Flash. Veja abaixo o trecho de código que atualiza este

atributo:

if (Tprocesso(FCPU.peek).tipo = 'I/O Bound - Disco ') then

Page 45: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

31

TDisco(D).StempoEsperado(TSistema(S).FtempoAce ssoDisco);

if (Tprocesso(FCPU.peek).tipo = 'I/O Bound - CD') then

TDisco(D).StempoEsperado(TSistema(S).FtempoAce ssoCD);

if (Tprocesso(FCPU.peek).tipo = 'I/O Bound – USB F lash') then

TDisco(D).StempoEsperado(TSistema(S).FtempoAces soUSBFlash);

• TempoDecorrido: Atributo contador usado para contar o tempo em que os

processos IO-Bound estão no estado de espera.

• TempoIO: tempo de I/O dos processos do tipo IO-Bound.

Foram implementadas diversas filas, na mesma estrutura de fila vista na seção 3.3.

Primeiramente, foi criado o objeto FI, da classe TQueue (fila), que representa a fila do estado

de criação. No caso dos algoritmos de escalonamento múltiplas filas e por prioridade, foram

criadas três instâncias da classe TQueue, FI1, FI2 e FI3, tendo em vista que esses algoritmos

usam três filas de prontos. Abaixo a tabela 1, descreve os escalonamentos e seus respectivos

objetos no qual representa a fila de criação (estado de criação):

Tabela 1 – Escalonamento de processos e suas respectivas filas de criação.

FIFO, SJF, SRT e Round Robin FI

Múltiplas Filas, Prioridade

Não-Preemptiva, Prioridade

Preemptiva e Circular

com prioridade

FI1

FI2

FI3

Abaixo na tabela 2 e 3, descreve os escalonamentos e seus respectivos objetos no qual

representa a fila de prontos:

Tabela 2 – Lista de escalonamentos e objetos (fila de prontos)

FIFO FAFF

SJF FASJF

Page 46: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

32

SRT FASRT

Round Robin FARR

Tabela 3 – Lista de escalonamentos e objetos (usadas três filas de prontos)

Múltiplas Filas FAPP

FARR

FAFF

Prioridade

Não-Preemptiva

FAPP1

FAPP2

FAPP3

Prioridade

Preemptiva

FAPSP1

FAPSP2

FAPSP3

Circular

com prioridade

FACP1

FACP2

FACP3

Foi instanciado o objeto FE no qual representa a fila de espera (estado de espera),

além do objeto FEAux usado como fila auxiliar para os objetos no estado de espera. Foram

criadas com o intuito de apenas ser uma fila auxiliar para coordenar os processos, representa

respectivamente o estado de execução e o I/O dos processos. E finalmente, o objeto FIN, que

representa o estado de finalização (estado de término). Neste estado os processos não são

excluídos, suas informações ficam mantidas até o início de outro escalonamento.

Page 47: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

33

3.2 DIAGRAMA DE CLASSES

No simulador EPSOsim existem quatro principais classes que são TSistema,

Tprocesso, TCPU e a TDisco. A figura 15 ilustra o diagrama de classe do simulador

EPSOsim:

Figura 15 – Diagrama de classe do formulário de configuração do sistema.

Page 48: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

34

As classes TCPU e TDisco fazem associação com a classe Tprocesso. Com isso,

vários objetos (processo) da classe Tprocesso pode usar apenas um objeto (disco) da classe

TDisco. Da mesma forma, vários objetos (processo) da classe Tprocesso podem usar apenas

um objeto (CPU) da classe TCPU. A classe TSistema é apenas uma classe externa.

Na classe TSistema foram declaradas as filas de pronto, em que cada fila pode existir

de zero a n instância de processos da classe TProcesso. Na classe TDisco uma fila (FE – Fila

de Espera) pode conter de zero a n processos. A fila FEAux faz o intermédio entre o estado de

espera e o estado de pronto. Da mesma forma, a fila FCPU serve de transição entre a fila de

pronto e a fila de espera.

Page 49: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

35

4. FUNCIONAMENTO E DESCRIÇÃO DO AMBIENTE

Neste capítulo será apresentado o ambiente do simulador, suas descrições,

funcionalidades e alguns trechos do seu desenvolvimento.

4.1 AMBIENTE DO SIMULADOR

O ambiente do simulador foi desenvolvido de acordo com o modelo de

escalonamento de processos de Silbershartz (2005) visto no capítulo 2 seção 2.3, de forma

bem detalhada comparada com os simuladores disponíveis na internet. Abaixo a tabela 4, é

descrita a lista de formulários existente no simulador EPSOsim:

Tabela 4 – Formulário do simulador EPSOsim

Formulários do Simulador EPSOsim

Form1 Janela principal

Form2 Janela de simulação do escalonamento FIFO

Form3 Janela de criação de processo

Form4 Janela de simulação do escalonamento SJF

Form5 Janela de simulação do escalonamento Round Robin

Form6 Janela de simulação do escalonamento múltiplas filas

Form7 Janela de configuração de sistema

Form8 Janela de simulação do escalonamento prioridade não-preemptivo

Form9 Janela do diagrama de Gantt

Form10 Janela de créditos

Form11 Janela de simulação do escalonamento prioridade preemptivo

Form12 Janela de simulação do escalonamento circular com prioridade

Form17 Janela de informações de processos

Page 50: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

36

Conforme mostra a tabela 4, o simulador consiste em uma janela principal, oito

janelas que simulam os escalonamentos de processos, uma janela do diagrama de Gantt,

uma janela configuração do sistema, uma janela de informações de processos, outra janela do

estado da criação dos processos. O simulador EPSOsim foi desenvolvido não como uma

demonstração real do Sistema Operacional, pois se fosse como o funcionamento real de um

Sistema Operacional, não seria possível para o usuário perceber o funcionamento, porque no

Sistema Operacional os processos são escalonados de maneira muito rápida e

imperceptível. O simulador foi desenvolvido com a intenção de transmitir para o aluno o

melhor entendimento do assunto de escalonamento de processos. Uma das idéias

para facilitar a percepção do usuário, foi à criação dos processos com cores diferentes, desta

forma dará para diferenciar um processo do outro.

4.2 JANELA PRINCIPAL

Inicialmente, foi criada a janela principal onde será o ponto inicial da aplicação. Nesta

janela o usuário pode abrir as janelas dos escalonamentos através das ilustrações com formato

de esferas coloridas ou pelo menu de escalonamento de processos, que foi dividido em dois

grupos: escalonamento de processos em lote e escalonamento de processos em sistemas

interativos. A figura 16 ilustra a janela principal:

Form18 Janela de simulação do escalonamento SRT

Page 51: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

37

Figura 16 – Janela principal

4.3 JANELA CONFIGURAÇÃO DO SISTEMA

O formulário de configuração do sistema é uma das partes mais importante do

simulador, neste formulário contém as classes principais do simulador. Veja mais detalhes do

código-fonte da configuração do sistema no anexo I. Nesta janela o usuário poderá alterar os

seis parâmetros conforme mostra a figura 17:

Page 52: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

38

Figura 17 – Configuração do sistema

1. Tempo de clock: altera o clock do sistema. Foi considerado um clock inicial

(default) razoavelmente lento, pois assim, é mais perceptivo e coerente ao usuário o

funcionamento do escalonamento.

2. Fatia de tempo: o usuário pode definir neste campo a fatia de tempo (timeslice)

usado no escalonamento Round Robin e circular com prioridade.

3. Tempo de acesso ao disco: determina o tempo do IO/Bound disco.

4. Tempo de acesso ao CD: determina o tempo do IO/Bound CD.

5. Tempo de acesso ao USB Flash: determina o tempo do IO/Bound USB Flash.

6. Tempo de IO: determina o tempo de espera dos processos de I/O.

Page 53: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

39

4.4 JANELAS DE ESCALONAMENTO DE PROCESSOS

Inicialmente, antes de começar a simulação é preciso criar os processos, podem-se

criar inicialmente nove processos para os escalonamentos FIFO, SJF, SRT e RR e vinte e sete

processos para os escalonamentos múltiplas filas e prioridades (não-preemptivo, preemptivo e

circular). Para os escalonamentos de prioridade não-preemptivo, prioridade preemptivo,

circular com prioridade e múltiplas filas, após a inicialização da simulação o usuário pode

inserir quantos processos for necessário. Ao pressionar o botão criar processo nas janelas de

escalonamento (ver a figura 18), abre-se uma janela onde é possível determinar os parâmetros

necessários para a criação do processo. A figura 18 ilustra a janela de criação de processo:

Figura 18 – Janela de estado de criação do processo.

Conforme a figura 18, o usuário pode determinar os parâmetros do processo. Exceto o

PID do processo o qual é gerado automaticamente. O componente gráfico que seleciona a

prioridade, somente aparecerá quando a janela de escalonamento de processos por prioridade

(não-preemptivo, preemptivo e circular) for acionada, neste campo o usuário poderá definir a

prioridade de 1 a 3. No campo tempo de processamento o usuário poderá definir de 1 a 100,

foi limitado devido à visualização dos componentes gráficos dos processos. O botão criar

serve para cria o processo em si. O botão close é usado para fechar a janela de criação de

processos. O botão “Del. Tudo” (deletar tudo), exclui todos os processos.

Page 54: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

40

No componente tipo de processo (vide figura 18) o usuário poderá escolher os tipos de

processo: CPU-Bound, I/O-Bound Disco, I/O-Bound CD, I/O-Bound USB Flash. Apenas os

tipos dos processos no escalonamento por múltiplas filas diferem dos demais escalonamentos,

veja abaixo:

1. Processo de sistema CPU-Bound;

2. Processo de sistema I/O-Bound;

3. Processos Interativos CPU-Bound;

4. Processos Interativos I/O-Bound;

5. Processos Batch CPU-Bound;

6. Processos Batch I/O-Bound;

A figura 19 ilustra o layout padrão usada nos escalonamentos FIFO, SJF, SRT e

Round Robin, onde contém os cinco estados criação, prontos, execução, bloqueado e

finalização:

Page 55: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

41

Conforme a figura 19, para dar início o escalonamento de processo é preciso clicar no

botão iniciar. E o botão diagrama de Gantt exibe a janela diagrama de Gantt. Com essa

funcionalidade, ficará melhor acompanhar e entender o tempo de execução de cada processo.

No botão finalizar processos, quando o processo passa para o estado de execução, logo é

transferido para o estado de finalização mesmo que o processo não tenha acabado todo seu

tempo de processamento. Quando todos os processos forem finalizados é mostrado o

diagrama de Gantt até o ponto em que foram finalizados. No botão abortar, a simulação é

interrompida e a janela referente ao escalonamento é fechada voltando para janela principal.

Figura 19 – Layout padrão usada nos escalonamentos FIFO, SJF, SRT e Round

Robin

Page 56: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

42

O botão pause e o botão play referente aos botões azuis (vide figura 19), nestes botões

o usuário poderá pausar e continuar a execução do escalonamento de processo. É possível

selecionar o intervalo de tempo do clock e do tempo de espera no componente conhecido

como “spinedit”, estes componentes estão localizados a direita do botão pause. No botão

“Inf. Processos” (Informações de processos), o usuário pode visualizar as informações dos

processos tais como: cor, alias do processo (campo processo), tipo do processo (campo tipo),

tempo de processador (campo t. burst), turnaround (campo t. execução), tempo de espera e o

estado do processo. A figura 20 ilustra a janela de Informações de processos:

Figura 20 – Informações de processos

Page 57: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

43

Nas seções seguintes, serão apresentadas as janelas em que ocorre a simulação dos

escalonamentos de processos, primeiramente será mostrado o escalonamento FIFO.

4.4.1 JANELA FIFO

O FIFO (em inglês First in First Out - Primeiro a Entrar é o Primeiro Sair) também

denominado de FCFS (em inglês First Come First Serve – o primeiro a chegar é o primeiro a

ser servido) é considerado o escalonamento mais simples de ser entendido. O FIFO funciona

da seguinte forma, quando um processo é criado no estado de criação, é inserido no final de

uma estrutura de dados fila chamada de fila de aptos ou prontos. À medida que os processos

são criados, o Sistema Operacional faz o armazenamento das informações de cada processo

no bloco de controle de processos (PCB), mais detalhes do PCB, ver na seção 2.2.3

(PIOVESANA, 2010).

Para compreender e visualizar melhor o funcionamento dos escalonamentos de

processos e obter os parâmetros para se calcular o tempo médio de espera dos processos é

necessário criar o diagrama de Gantt. A figura 21 será ilustrado o diagrama de Gantt do

escalonamento FIFO:

0000 1 2 3 4 5 6 7 8888 9 10 11 12 13 14 15151515 16 17 18 19 20202020

Tempo médio de espera:

(0+8+15) = 23/3

=7,666666666666667 u.t.

Figura 21 – Uso da política de escalonamento FIFO com o diagrama de Gantt

Page 58: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

44

Gantt é um diagrama em barra que ilustra os intervalos de tempo de uma ou mais

tarefas, tem como parâmetros para criar as barras o início e fim de cada tarefa. Para se

calcular o tempo médio de espera é preciso fazer o somatório do tempo decorrente de cada

processo em que ficou na fila de prontos e dividir pelo número de processos o resultado é

medido por unidades de tempo (u.t.). Mais detalhes do funcionamento do escalonamento

FIFO, veja na seção 4.5. A figura 22 ilustra a janela de escalonamento FIFO:

Figura 22 – Janela que simula o funcionamento do escalonamento FIFO

O FIFO é não-preemptivo, isto é, o escalonador não interrompe os processos em

execução. O processo que estiver no início da fila de pronto será selecionado e alocado na

CPU. Em seguida, o processo ficará na CPU até acabar todo seu tempo de processador (burst

time) (LEITÃO, 2010).

Page 59: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

45

4.4.2 JANELA SJF

O SJF (Shortest Job First) em português processo mais curto primeiro, este algoritmo

de escalonamento poderia ser implementado usando uma lista ordenada na ordem crescente

dos tempos de vida dos processos (OLIVEIRA et. al., 2001).

No SJF pode ocorrer o starvation (inanição), por exemplo, um processo com um

tempo de processador definido como 30, este processo fica infinitamente no estado de pronto,

pois sempre há processos no estado de pronto com um tempo de processador menor do que

30. No caso deste exemplo, se existir outro processo com um tempo de processador igual a

30, o desempate é tirado de acordo com a política FIFO. A figura 23 ilustra o diagrama de

Gantt do escalonamento SJF:

De acordo com Machado (2009), uma das vantagens do escalonamento SJF com

relação ao FIFO, é que possui um tempo médio de espera menor. Foram representados três

processos de tempo de processamento iguais para cada escalonamento FIFO e SJF,

comparando o diagrama de Gantt do escalonamento FIFO da figura 21 com o diagrama do

escalonamento SJF da figura 23, o resultado do FIFO equivale a 7.666666666666667 u.t.,

0000 1 2 3 4 5555 6 7 8 9 10 11 12121212 13 14 15 16 17 18 19 20202020

Tempo médio de espera:

(0+5+12) = 17/3 =

5,666666666666667 u.t

Figura 23 – Exemplo da política de escalonamento SJF com o diagrama de Gantt.

Page 60: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

46

enquanto do SJF equivale a 5.666666666666667 u.t.. A figura 24 a janela de escalonamento

SJF:

Figura 24 – Janela que simula o funcionamento do escalonamento SJF

Conforme a figura 24, quando inicia o escalonamento no botão iniciar, todos os

processos são transferidos do estado de criação para o estado de pronto e ordenados pelo

tempo de processamento na ordem crescente no sentido da direita para esquerda da fila de

pronto. Diante disso, será selecionado o processo de menor tempo de processamento para ser

alocado na CPU. Caso o processo for do tipo CPU-Bound, é utilizado todo o seu tempo de

processador na CPU. O usuário poderá visualizar o tempo de processador na parte inferior do

estado de execução. Utilizado todo o tempo de processador na CPU, o processo é passado

para o estado de finalização.

Page 61: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

47

No caso dos processos IO-Bound, o processo é transposto rapidamente para o final da

fila de espera no estado bloqueado. No simulador os processos são enfileirados no sentido da

esquerda para direita. Nos estado de espera, o primeiro processo da fila é escolhido para

realizar operações de entrada e saída, nesta fase o usuário poderá acompanhar o progresso

desta operação no componente processbar. Após realizar as operações de entrada e saída, o

processo é repassado novamente para o estado de pronto, no final da fila de prontos. Quando

o processo IO-Bound utilizar todo o seu tempo de processamento (burst time), o processo é

finalizado passado para o estado de término.

4.4.3 JANELA SRT

O SRT (Shortest Remaining Time) é um escalonamento que significa tempo

mais curto remanescente, este escalonamento é uma versão semelhante ao

escalonamento SJF. O que diferencia o SRT do SJF é a preempção (MACHADO;

MAIA, 2009). A figura 25 ilustra o escalonamento SRT:

Figura 25 – Janela que simula o funcionamento do escalonamento SRT

Page 62: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

48

O SRT é preemptivo, isso funciona da seguinte forma, no momento do escalonamento

ao chegar à fila de pronto um processo de menor tempo de processador do que o processo em

execução é realizado a troca dos processos destes processos. O processo que antes estava na

CPU é realocado na posição correta na fila de prontos. E o processo recém chegado é alocado

na CPU (MACHADO; MAIA, 2009).

Uma das vantagens do SRT é que os processos de menor tempo de processamento têm

um tempo de resposta superior do que processos de maior tempo de processamento, além de

possuir um throughput maior. Uma desvantagem é que pode ocorrer o starvation onde

processos de maior tempo de processamento podem nunca ser executados. Outra diferença

notória deste escalonamento está nos processos do tipo IO-Bound, após realizar as operações

de entrada e saída é repassado para a fila de pronto. Com isso, os processos na fila de pronto

são realocados na posição correta em que são reordenados pelo tempo de processador

(MACHADO; MAIA, 2009).

4.4.4 JANELA CIRCULAR

O Round Robin é uma das políticas de escalonamento mais antigas e usadas. Uma das

características dos algoritmos Round Robin é a utilização da fatia de tempo (timeslice). A

fatia de tempo é utilizada para realizar a preempção por tempo, no qual o processo é removido

da CPU pelo tempo definido da fatia de tempo (MACHADO; MAIA, 2009). De acordo com

Machado (2009), no caso da fatia de tempo tender ao infinito o escalonamento Round Robin

equivale ao escalonamento FIFO. As três as figuras a seguir, figuras 26, 27 e 28 ilustra o

diagrama de Gantt do escalonamento Round Robin, respectivamente com um quantum igual a

8, 5 e 2.

Page 63: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

49

0000 1 2 3 4 5555 6 7 8 9 10101010 11 12 13 14 15151515 16 17 18181818 19 20202020

Tempo Médio de Espera:

(0 + 5 + 10 + 10 + 8) = 33/ 3

= 11 u.t

Quantum = 5

Figura 27 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a cinco.

0000 1 2 3 4 5 6 7 8888 9 10 11 12 13 14 15151515 16 17 18 19 20202020

Tempo Médio de Espera:

(0 + 8 + 15+ 20) = 43/ 3 =

14,33333333333333 u.t

Quantum = 8

Figura 26 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a oito.

Page 64: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

50

Conforme Machado (2009), quando o quantum é muito pequeno, acontece excessivos

números de preempções por tempo, isso compromete a performance de um sistema. No

simulador o usuário pode alterar a variável fatia de tempo na janela de configuração (vide

seção 4.3). A figura 29 ilustra o escalonamento Round Robin:

0000 1 2222 3 4444 5 6666 7 8888 9 10101010 11 12121212 13 14141414 15 16161616 17 18181818 19 20202020

Tempo Médio de Espera:

(0+2+4+4+4+4+4+4+4+4) =

34/3 = 11,33333333333333

u.t

Quantum = 2

Figura 28 – Diagrama de Gantt do escalonamento Round Robin, com quantum igual a dois.

Page 65: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

51

Figura 29 – Janela que simula o funcionamento do escalonamento Round Robin

Como em todos os escalonamentos do simulador, os processos são criados e inseridos

no estado de criação. Em seguida, são transferidos para fila de pronto. Mais adiante, é

selecionado o primeiro processo da fila de pronto e é alocado na CPU. Com isso, no caso de

processos CPU-Bound, quando termina a fatia de tempo, o processo retorna para o estado de

pronto, onde é desalocado da CPU e inserido no final da fila de pronto. Desta forma, a CPU

fica livre para a entrada do próximo processo (MACHADO; MAIA, 2009).

4.4.5 JANELA PRIORIDADE NÃO-PREEMPTIVO

No escalonamento por prioridade é comum a preferência a determinados tipos de

processos com relação a outros tipos, neste tipo de escalonamento não existe o conceito de

fatia de tempo. A prioridade é determinada principalmente pelo gerenciador da CPU ou

Page 66: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

52

administrador, onde é atribuído um valor a variável de prioridade do contexto de software a

cada processo (ALMEIDA, [s.d]).

Alguns sistemas têm como o processo de maior prioridade o número zero, outros

sistemas usam o zero como sendo o processo de menor prioridade. Outros sistemas dão mais

prioridade aos processos que tem menos tempo de turnaround, processos que usa menos

memória, processos IO-Bound e etc. Estes critérios depende da implementação do algoritmo

de escalonamento de prioridade (MACHADO; MAIA, 2009).

No simulador, cada fila possui um nível de prioridade, os processos da primeira fila

tem prioridade 1, os processos da segunda fila tem prioridade 2 e os processos da terceira fila

tem prioridade 3. Os processos que possui menor número de prioridade é o que possui maior

prioridade, nos quais são os primeiros a serem executado. Quando os processos da fila de

prioridade 1 for esvaziada, o escalonador passa a escalonar os processos da fila de prioridade

2, quando a fila de prioridade 2 é esvaziada, o escalonador passa a escalonar os processos da

fila número 3. A figura 30 representa o escalonamento por prioridade não-preemptivo:

Figura 30 – Janela que simula o funcionamento do escalonamento não-preemptivo

Page 67: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

53

Uma das características que define o escalonamento não-preemptivo, é quando um

processo x está em execução e outro processo y entra na fila de pronto, no qual o processo y

tem maior prioridade do que o processo x. Com isso, não ocorre à preempção por prioridade,

o processo x continua executando até acabar o tempo de processador, isso para os processos

do tipo CPU-Bound. No caso dos processos IO-Bound o processo é despachado para a fila de

bloqueado, logo em seguida, é repassado para a fila de pronto (MACHADO; MAIA, 2009).

Neste escalonamento pode ocorrer a inanição (starvation), ou seja, o processo de

prioridade inferior corre o risco de nunca ser executado, neste caso a solução é o

envelhecimento (aging), em que aumenta o nível de prioridade do processo (MACHADO;

MAIA, 2009). O envelhecimento não foi implementado no simulador EPSOsim, mas é

possível o usuário fazer com que aconteça o envelhecimento mesmo que não possua nada que

indique o envelhecimento no simulador.

4.4.6 JANELA PRIORIDADE PREEMPTIVO

O escalonamento por prioridade preemptivo possui a preempção por prioridade, não

confundir com preempção por tempo. A diferença do escalonamento por prioridade

preempção com o escalonamento por prioridade não-preemptivo, é quando um processo x de

maior prioridade entra na fila de pronto no momento em que outro processo y de menor

prioridade utiliza a CPU, neste momento acontece à preempção por prioridade, onde o

processo y é desalocado da CPU para a entrada do processo x de maior prioridade. A figura

31 ilustra a janela de escalonamento preemptivo:

Page 68: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

54

Figura 31 – Janela que simula o funcionamento do escalonamento preemptivo

4.4.7 JANELA CIRCULAR COM PRIORIDADES

O escalonamento circular por prioridade é uma combinação do escalonamento Round

Robin com o escalonamento por prioridade, isto quer dizer que pode existir tanto a preempção

por tempo quanto a preempção por prioridade (MACHADO; MAIA, 2009). A figura 32

representa o escalonamento circular com prioridade:

Page 69: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

55

Figura 32 – Janela que simula o funcionamento do escalonamento circular com prioridade

De acordo com Machado (2009), uma das vantagens do escalonamento circular com

prioridade, é que possui um melhor equilíbrio dos processos no uso da CPU. Normalmente,

os processos do tipo IO-Bound recebem mais privilégios por intermédio do administrador de

sistema, isso para que se tenha um balanceamento mais justo.

4.4.8 JANELA MÚLTIPLAS FILAS

Os algoritmos de escalonamento de múltiplas filas é implementado usando várias filas

no estado de prontos. Cada fila de pronto é determinado por níveis ou classes de prioridade,

onde podem ser aplicados vários tipos de escalonamentos de processos, tais como: FIFO,

Round Robin, SJF, por prioridade e etc (MACHADO; MAIA, 2009).

Page 70: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

56

Uma das características deste escalonamento é que pode estabelecer vários critérios,

um dos critérios é que, se um processo for do tipo I/O-Bound, o processo passa para a fila de

maior prioridade. Caso o processo for do tipo CPU-Bound, o processo passa para a fila de

menor prioridade, depende muito da implementação do algoritmo escalonamento

(MACHADO; MAIA, 2009). A figura 33 será ilustrado o escalonamento Múltiplas Filas:

Figura 33 – Janela que simula o funcionamento do escalonamento múltiplas filas

Na janela de escalonamento de múltiplas filas do simulador foi usada três filas, onde

cada fila representa um escalonamento diferente, a primeira fila representa o escalonamento

por prioridade, a segunda fila representa o escalonamento Round Robin e a terceira fila

representa o escalonamento FIFO. À medida que a fila é totalmente esvaziada, o escalonador

desce a um nível de prioridade.

Page 71: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

57

4.5 JANELA DIAGRAMA DE GANTT

O diagrama de Gantt foi criado por Henry L. Gantt em 1917 é um tipo de gráfico em

barra usado pelos chefes de projeto para cronogramas de projeto. O diagrama de Gantt é

muito simples de criar e de entende (KIOSKEA, 2009). A figura 34 o diagrama de Gantt com

base nos mesmos valores do diagrama ilustrado na seção 4.4.1 (FIFO):

Figura 34 – Diagrama de Gantt do simulador EPSOsim (Escalonamento FIFO)

No eixo x (horizontal), indica o tempo das tarefas, seja representado por segundo,

minuto, hora, mês, dia, mês, ano e etc. No eixo y (vertical) do diagrama de Gantt, representa

as tarefas, onde no simulador são processos computacionais (KIOSKEA, 2009). No

simulador, o diagrama de Gantt registra o momento em que entra o primeiro processo na CPU

(início do escalonamento), até o último processo no qual finalizou seu tempo de processador

na CPU (final do escalonamento).

Page 72: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

58

5. CONCLUSÃO

No início desde trabalho, foi visto o relevante grau de dificuldade para se compreender

os assuntos predominantemente teóricos abordados na disciplina de Sistemas Operacionais, os

quais implicam em uma série de dificuldades para os alunos de graduação dos cursos de

computação.

Há assuntos na disciplina de Sistemas Operacionais muito importantes, porém

complexos. A gerência de processos faz parte um destes assuntos, como também o

escalonamento de processos. Diante disto, foi desenvolvido o simulador EPSOsim, o

qual demonstra o funcionamento dos escalonamentos de processos, permitindo a visualização

dos resultados dos processos em tempo de execução na tabela de informações dos processos

(vide figura 20).

Foi criado o simulador de escalonamento de processo que permite a visualização

gráfica do funcionamento dos algoritmos. O simulador possui oito algoritmos de

escalonamento que são:

� FIFO;

� SJF;

� SRT;

� Circular;

� Circular com prioridade;

� Por prioridade preemptiva;

� Por prioridade não-preemptivo;

� Múltiplas Filas.

O simulador permite a visualização do diagrama de Gantt, o qual é uma das partes

fundamentais do simulador. O diagrama de Gantt registra os processos desde o início até final

do escalonamento. Com este instrumento, os alunos terão mais facilidade em aprender sobre o

funcionamento dos escalonamentos de processos.

Page 73: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

59

A criação desta ferramenta educativa representa uma contribuição para o estudo de

algoritmos de escalonamento, em especial na disciplina Sistemas Operacionais. É possível

perceber que a ferramenta servirá para temas de futuros alunos em trabalhos acadêmicos,

monografias e dissertações. Espera-se que o simulador contribua com o processo de ensino-

aprendizagem de disciplinas que abordem algoritmos de escalonamento

Page 74: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

60

6. REFERÊNCIAS BIBLIOGRÁFICAS

ALMEIDA, Helder C. P. Princípios de Sistemas Operacionais. Disponível em:

<http://www.cefet-

to.org/~05203130/superior/I%20periodo/Aula%20introdu%e7%e3o%20a%20computa%e7%

e3o/Princ%edpios%20de%20Sistemas%20Operacionais%20-

%20Gerenciador%20de%20Processador%20e%20Processos%20-%20Final2.ppt> Acesso em

05 de Junho de 2011.

ANDERSON, Thomas. Nexos. 2008. Disponível em:

<http://www.cs.washington.edu/homes/tom/nachos/> Acesso em 21 de Novembro de 2009.

AVRAM, Abel. MINIX 3 Promises to be more secure than windows or linux. Disponível

em: <www.infoq.com/br/news/2009/05/MINIX> Acesso em 10 de Outubro de 2009.

BALDI, Sérgio Dario. Construtivismo. 2010. Disponível em

<http://www.artigos.com/artigos/humanas/educacao/construtivismo-10900/artigo/> Acesso

em: 11 Junho 2011

BRANCO, Ricardo Rubira. Sistemas Operacionais. Disponível em:

<http://www.kernelhacking.com/rodrigo/docs/OS/AulaFGP1.pdf> Acesso em 28 de

Novembro de 2009.

CARDOSO, Nogueira Paes. Sistemas Operacionais. 2006. Disponível em:

<http://algol.dcc.ufla.br/~olinda/arquivos/so%20aula%201.pdf> Acesso em 01 de Dezembro

de 2009.

CASTRO, Giselle Fernandes. Ensino conteudista versus Escola atual. Disponível em:

<http://www.apagina.pt/?aba=7&cat=69&doc=7368&mid=2> Acesso em 28 de Maio de 2011.

Page 75: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

61

CUNHA, Jose C. Estados de um processo num sistema de multiprogramação. 2003.

Disponível em: <http://www-asc.di.fct.unl.pt/~jcc/ASC2/Teoricas/a4/node10.htm>Acesso em

09 Novembro de 2010

DOI, Marcio Ken Iti. Microkernel. 2005. Disponível em:

<http://www.tiparana.com.br/articles.php?id=12> Acesso em 01 de Dezembro de 2009.

EQUINOX. MINIX 3. 2007. Disponível em:

<http://www.minix3.org/news/screendump.png> Acesso em 21 de Novembro de 2009.

FILHO, Clovis Perin. Introdução à Simulação de Sistemas. 1995. 159f. Campinas, SP:

Editora da UNICAMP.

GNU. GNU Operating System. 2009. Disponível em: <http://www.gnu.org/> Acesso em 19

de Novembro de 2009.

GONÇALVES, José Pereira Filho. Trabalho info1142. 2008. Disponível em:

<http://www.inf.ufes.br/~zegonc/material/Sistemas%20Operacionais/SO%20old/S.O/SO%20

2005/Nachos%20-%20info1142.htm> Acesso em 28 de Maio de 2011.

GUIZZI. Processo. 2010. Disponível em:

<http://www.scribd.com/doc/5565560/03PROCESSOS> Acesso em 01 Novembro de 2010.

KIOSKEA. Diagrama de GANTT. 2009. Disponível em:

<http://pt.kioskea.net/contents/projet/gantt.php3 > Acesso em 12 de Junho de 2011.

LEITÃO, Gustavo. Processos. 2010. Disponível em

<http://www.dca.ufrn.br/~guga/downloads/par/aulas/Aula3-Processos.pdf>Acesso em 28 de

Novembro de 2010.

Page 76: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

62

MACHADO, Francis Berenger, MAIA, Luiz Paulo. Um framework construtivista no

aprendizado de Sistemas Operacionais - uma proposta pedagógica com o uso do

simulador SOsim. Disponível em: <http://www.training.com.br/SOsim/sbcwei04.pdf>

Acesso em 10 de Setembro de 2009.

MAIA, Luiz Paulo, MACHADO, Francis Berenger. Laboratório SOsim - Gerência de

Processos. Disponível em: <http://www.inf.puc-rio.br/~francis/aso3ed/aso-labSOsim-cap5-

processo.pdf > Acesso em 10 de Setembro de 2009.

MAIA, Luiz Paulo. SOsim: Simulador para o ensino de Sistemas Operacionais. Tese de

Mestrado, NCE/UFRJ, mar. 2001. Disponível em:

<http://www.training.com.br/SOsim/SOsim_tese.zip> Acesso em 10 de Setembro de 2009.

MACORATTI, José Carlos. UML - Diagrama de Classes e objetos. Disponível em:

<http://www.macoratti.net/net_uml1.htm> Acesso em 29 de Maio de 2011.

RODRÍGUEZ, Miguel Ángel Martínez. l Enfoque sociocultural en el estudio del desarrollo

y la educación. Escuela Nacional de Estudios Profesionales. 1999. Campus Iztacala.

Universidad Nacional Autónoma de México. Artigo publicado na Revista Eletrônica de

Investigação Educativa. UABC. México.

MAZIERO, Carlos. Sistemas Operacionais I - Conceitos Básicos. 2008. Disponível em:

<http://www.ppgia.pucpr.br/~maziero/lib/exe/fetch.php/so:so-cap01.pdf > Acesso em 04 de

Junho de 2011.

MEC/SESu, Comissão de especialistas de ensino de computação e informática. Disponível

em: <http://www.inf.ufrgs.br/mec> Acesso em 10 de Outubro de 2009.

MEDEIROS, Raissa Dantas Freire de. Gerência de Memória. 2006. Disponível em:

<http://www.ucb.br/prg/professores/raissad/disciplinas/2006_2/SO/material/memoria/memori

a.html> Acesso em 01 de Dezembro de 2009.

Page 77: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

63

OLIVEIRA, R. S.; CARISSIMI, Alexandre da S.; TOSCANI, S. S. Sistemas Operacionais.

3. ed. Porto Alegre: Editora Sagra Luzzatto, 2004, 259p.

ONTKO, Ray. Modern Operating Systems Simulators. 2008. Disponível em:

<http://www.ontko.com/moss/> Acesso em 21 de Novembro de 2009.

PAULO, Marcus. SISO 2.0 - Simulador de Sistema Operacional (Módulo de Deadlock).

2009. Disponível em: <http://www.martins.eti.br/2009/03/siso-20-simulador-de-

sistema.html> Acesso em 01 de Dezembro de 2009.

PERIN FILHO, Clovis. Introdução à Simulação de Sistemas. Campinas, SP: UNICAMP, 1995, 159p.

PIOVESANA, Rodrigo. Processos. Disponível em:

<http://www.slideshare.net/rodrigo.piovesana/processos-3360190> Acesso em 18 de

Novembro de 2010.

PODGORETSKY ANATOLY. Object Pascal Language Guide. Disponível em:

<http://www.podgoretsky.com/ftp/Docs/Delphi/D5/oplg/oplg.pdf> Acesso em 10 de Maio de

2011.

SARAIVA, Márcio. em: Um "exame de DNA" na carreira de dois grandes cientistas para

descobrirmos o "pai" da nossa profissão. 2009. Disponível em:

<http://www.dsc.ufcg.edu.br/~pet/jornal/agosto2009/materias/carreira.html> Acesso em 28 de

Novembro de 2009.

SESu. Diretrizes curriculares para os cursos de graduação. Disponível em:

<http://portal.mec.gov.br/sesu/index.php?option=content&task=view&id=430&Itemid=420>

Acesso em 10 de Outubro de 2009.

Page 78: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

64

SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating System Concepts.

7.ed. Hoboken: Wiley. 2005.

SONYMASTER (2009). Especial - A Historia do Sistema Operacional Unix (Linux).

Disponível em:<http://forum.outerspace.terra.com.br/showthread.php?t=209016> Acesso em

28 de Novembro de 2009.

STALLINGS, William (2004). Sistemas Operacionais internas e Princípios de Design

(quinta edição internacional). Prentice Hall. ISBN 0-13-147954-7. Disponível em:

<http://pt.wikipedia.org/wiki/Escalonamento_de_processos>Acesso em 15 Novembro de

2010

TANENBAUM, Andrew, em: Sistemas Operacionais modernos. 2. ed. Rio de Janeiro:

Editora Prentice Hall. 2005.

TANENBAUM, Andrew. MINIX 3 – Download. 2011. Disponível em:

<http://www.minix3.org/download/> Acesso em 04 de Junho de 2011.

TORVALDS, Linus. Lignux, what's the matter with you people? 1996. Disponível em:

<http://groups.google.com/group/comp.os.linux.misc/msg/7781d4221fceedb2> Acesso em 21

de Novembro de 2009.

VAGO, El Rincón del. Sistemas Operativos. Disponível em:

<http://html.rincondelvago.com/sistemas-operativos_12.html> Acesso em 12 de Junho de

2011.

Page 79: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

65

7. ANEXOS

ANEXO I – CÓDIGO-FONTE DA JANELA CONFIGURAÇÃO DO SISTEMA

unit Unit7 ; interface uses Windows , Messages , SysUtils , Variants , Classes , Graphics , Controls , Forms , Dialogs , StdCtrls , Spin , Buttons , Contnrs , ExtCtrls , ComCtrls ; type TForm7 = class ( TForm) Label4 : TLabel ; BitBtn5 : TBitBtn ; BitBtn2 : TBitBtn ; Label2 : TLabel ; Label9 : TLabel ; Label10 : TLabel ; Label11 : TLabel ; Label8 : TLabel ; Label7 : TLabel ; Label1 : TLabel ; SpinEdit2 : TSpinEdit ; SpinEdit6 : TSpinEdit ; SpinEdit7 : TSpinEdit ; SpinEdit9 : TSpinEdit ; SpinEdit10 : TSpinEdit ; SpinEdit8 : TSpinEdit ; SpinEdit1 : TSpinEdit ; procedure BitBtn2Click ( Sender : TObject ); procedure BitBtn1Click ( Sender : TObject ); procedure FormCreate ( Sender : TObject ); procedure BitBtn5Click ( Sender : TObject ); function Calculate ( SMyExpression : string ; digits : Byte ): string ; // Calculate a simple expression. Supported are: R eal Numbers, parenthesis. http://www.swissdelphicenter.ch/en/showcode.php?id= 470 private { Private declarations } public { Public declarations } end ; TProcesso = class ( TInterfacedObject ) private public { ----- Atributos ----- } Fcor : Tcolor ; Fpid : integer ; FTempoProcessador : integer ; //tempo de processo FtempoExecucao : integer ; FtempoTurnaround : integer ; FtempoEsperaProcesso : integer ; Fporcentagem : integer ; Ftipo : String ; Fprioridade : integer ; { ----- Construtor ----- } constructor create ( cor : Tcolor ; pid : integer ; TempoProcessador : integer ; tempoExecucao : integer ; porcentagem : integer ; tipo : string ; prioridade : integer ; tempoTurnaround : integer ; tempoEsperaProcesso : integer ); //destructor Destroy; { ----- Fun ções e procedimetos ----- } function GTempoProcessador : integer ; procedure STempoProcessador ( valor : integer ); function Gcor : Tcolor ; procedure Scor ( valor : Tcolor );

Page 80: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

66

function Gpid : integer ; procedure Spid ( valor : integer ); function GtempoExecucao : integer ; procedure StempoExecucao ( valor : integer ); function GtempoTurnaround : integer ; procedure StempoTurnaround ( valor : integer ); function GtempoEsperaProcesso : integer ; procedure StempoEsperaProcesso ( valor : integer ); function Gporcentagem : integer ; procedure Sporcentagem ( valor : integer ); function Gtipo : String ; procedure Stipo ( valor : String ); function Gprioridade : integer ; procedure Sprioridade ( valor : integer ); { ------ Gets E Sets ------ } property cor : Tcolor read Gcor write Scor ; property pid : integer read Gpid write Spid ; property TempoProcessador : integer read GTempoProcessador write STempoProcessador ; property tempoExecucao : integer read GtempoExecucao write StempoExecucao ; property tempoTurnaround : integer read GtempoTurnaround write StempoTurnaround ; property tempoEsperaProcesso : integer read GtempoEsperaProcesso write StempoEsperaProcesso ; property porcentagem : integer read Gporcentagem write Sporcentagem ; property tipo : String read Gtipo write Stipo ; property prioridade : integer read Gprioridade write Sprioridade ; end ; TCPU = class ( TInterfacedObject ) public { ------ Atributos ------ } Focupado : integer ; FtempoDecorrido : integer ; FProcessoExecutando : Tprocesso ; { ------ Construtor ------ } constructor create ; //destructor Destroy; { ------ Fun ções e procedimentos ------ } function Gocupado : integer ; procedure Socupado ( valor : integer ); function GtempoDecorrido : integer ; procedure StempoDecorrido ( valor : integer ); function GProcessoExecutando : Tprocesso ; procedure SProcessoExecutando ( valor : Tprocesso ); { ------ Gets E Sets ------ } property ocupado : integer read Gocupado write Socupado ; property tempoDecorrido : integer read GtempoDecorrido write StempoDecorrido ; property ProcessoExecutando : Tprocesso read GProcessoExecutando write SProcessoExecutando ; procedure incrementaTempoDecorrido ; function removeProcessoExecutando : Tprocesso ; procedure insereProcessoExecutando ( processo : Tprocesso ); end ; TDisco = class ( TInterfacedObject ) public { ------ Atributos ------ } Focupado : integer ; FtempoEsperado : integer ; FtempoDecorrido : integer ; FtempoIO : integer ; FProcessoIO : Tprocesso ; { ------ Construtor ------ } constructor create ( ocupado : integer ; tempoEsperado : integer ; tempoDecorrido : integer ; tempoIO : integer );

Page 81: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

67

//destructor Destroy; { ------ Fun ções e procedimentos ------ } function Gocupado : integer ; procedure Socupado ( valor : integer ); function GtempoEsperado : integer ;

procedure StempoEsperado ( valor : integer );

function GtempoDecorrido : integer ;

procedure StempoDecorrido ( valor : integer ); function GtempoIO : integer ; procedure StempoIO ( valor : integer ); function GProcessoIO : Tprocesso ; procedure SProcessoIO ( valor : Tprocesso ); { ------ Gets E Sets ------ } property ocupado : integer read Gocupado write Socupado ; property tempoEsperado : integer read GtempoEsperado write StempoEsperado ; property tempoDecorrido : integer read GtempoDecorrido write StempoDecorrido ; property tempoIO : integer read GtempoIO write StempoIO ; end ; TSistema = class ( TInterfacedObject ) public { ------ Atributos ------ } FfatiaTempoSistema : integer ; FtempoDecorridoSistema : integer ; FtempoAcessoDisco : integer ; FtempoAcessoUSBFlash : integer ; FtempoAcessoCD : integer ; FtempoClock : integer ; FtempoThroughput : integer ; FtempoInicialGantt : integer ; FtempoFinalGantt : integer ; FtempoMedioTurnaround : integer ; FUT : integer ; FUTAux : String ; FLimitePrioridade : integer ; FCalculaUnidadeTempo : String ; { ------ Construtor ------ } constructor create ( fatiaTempoSistema : integer ; tempoDecorridoSistema : integer ; tempoAcessoDisco : integer ; tempoAcessoUSBFlash : integer ; tempoAcessoCD : integer ; tempoClock : integer ; tempoThroughput : integer ; tempoInicialGantt : integer ; tempoFinalGantt : integer ; UT: integer ; UTAux: String ; LimitePrioridade : integer ); //destructor Destroy; { ------ Fun ções e procedimentos ------ } function GfatiaTempoSistema : integer ; procedure SfatiaTempoSistema ( valor : integer ); function GtempoDecorridoSistema : integer ; procedure StempoDecorridoSistema ( valor : integer ); function GtempoAcessoDisco : integer ; procedure StempoAcessoDisco ( valor : integer ); function GtempoAcessoUSBFlash : integer ; procedure StempoAcessoUSBFlash ( valor : integer ); function GtempoAcessoCD : integer ; procedure StempoAcessoCD ( valor : integer ); function GtempoClock : integer ; procedure StempoClock ( valor : integer ); function GtempoThroughput : integer ; procedure StempoThroughput ( valor : integer ); function GtempoInicialGantt : integer ; procedure StempoInicialGantt ( valor : integer ); function GtempoFinalGantt : integer ; procedure StempoFinalGantt ( valor : integer ); function GUT: integer ; procedure SUT( valor : integer ); function GUTAux: String ; procedure SUTAux ( valor : String ); function GLimitePrioridade : integer ; procedure SLimitePrioridade ( valor : integer ); function GtempoMedioTurnaround : integer ; procedure StempoMedioTurnaround ( valor : integer );

Page 82: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

68

function GCalculaUnidadeTempo : String ; procedure SCalculaUnidadeTempo ( valor : String ); { ------ Gets E Sets ------ } property fatiaTempoSistema : integer read GfatiaTempoSistema write SfatiaTempoSistema ; property tempoDecorridoSistema : integer read GtempoDecorridoSistema write StempoDecorridoSistema ; property tempoAcessoDisco : integer read GtempoAcessoDisco write StempoAcessoDisco ; property tempoAcessoUSBFlash : integer read GtempoAcessoUSBFlash write StempoAcessoUSBFlash ; property tempoAcessoCD : integer read GtempoAcessoCD write StempoAcessoCD ; property tempoClock : integer read GtempoClock write StempoClock ; property tempoThroughput : integer read GtempoThroughput write StempoThroughput ; property tempoInicialGantt : integer read GtempoInicialGantt write StempoInicialGantt ; property tempoFinalGantt : integer read GtempoFinalGantt write StempoFinalGantt ; property UT : integer read GUT write SUT; property UTAux : String read GUTAux write SUTAux; property LimitePrioridade : integer read GLimitePrioridade write SLimitePrioridade ; property tempoMedioTurnaround : integer read GtempoMedioTurnaround write StempoMedioTurnaround ; property CalculaUnidadeTempo : String read GCalculaUnidadeTempo write SCalculaUnidadeTempo ; Protected end ; var Form7 : TForm7 ; S : TSistema ; //Objeto Sistema D : TDisco ; //Objeto Disco implementation uses Unit1 , Unit2 , Unit3 , Unit4 , Unit5 , Unit6 , Unit8 ; {$R *.dfm} {-----CONSTRUTORES-----} constructor TProcesso . create ( cor : Tcolor ; pid : integer ; TempoProcessador : integer ; tempoExecucao : integer ; porcentagem : integer ; tipo : string ; prioridade : integer ; tempoTurnaround : integer ; tempoEsperaProcesso : integer ); begin Fcor := cor ; Fpid := pid ; FTempoProcessador := TempoProcessador ; FtempoExecucao := tempoExecucao ; Fporcentagem := porcentagem ; Ftipo := tipo ; Fprioridade := prioridade ; FtempoTurnaround := tempoTurnaround ; FtempoEsperaProcesso := tempoEsperaProcesso ; end ; constructor TCPU. create ; begin ocupado := 0; tempoDecorrido := 0; end ;

Page 83: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

69

constructor TDisco . create ( ocupado : integer ; tempoEsperado : integer ; tempoDecorrido : integer ; tempoIO : integer ); begin Focupado := ocupado ; FtempoEsperado := tempoEsperado ; FtempoDecorrido := tempoDecorrido ; FtempoIO := tempoIO ; end ; constructor TSistema . create ( fatiaTempoSistema : integer ; tempoDecorridoSistema : integer ; tempoAcessoDisco : integer ; tempoAcessoUSBFlash : integer ; tempoAcessoCD : integer ; tempoClock : integer ; tempoThroughput : integer ; tempoInicialGantt : integer ; tempoFinalGantt : integer ; UT: integer ; UTAux: String ; LimitePrioridade : integer ); begin Self . FfatiaTempoSistema := fatiaTempoSistema ; Self . FtempoDecorridoSistema := tempoDecorridoSistema ; Self . FtempoAcessoDisco := tempoAcessoDisco ; Self . FtempoAcessoUSBFlash := tempoAcessoUSBFlash ; Self . FtempoAcessoCD := tempoAcessoCD ; Self . FtempoClock := tempoClock ; Self . FtempoThroughput := tempoThroughput ; Self . FtempoInicialGantt := tempoInicialGantt ; Self . FtempoFinalGantt := tempoFinalGantt ; Self . FUT := UT; Self . FUTAux := UTAux; Self . FLimitePrioridade := LimitePrioridade ; end ; {destructor TProcesso.Destroy; begin inherited Destroy; end; destructor TCPU.Destroy; begin inherited Destroy; end; destructor TDisco.Destroy; begin inherited Destroy; end; destructor TSistema.Destroy; begin inherited Destroy; end; } {**************CLASSE CPU**************} procedure TCPU. incrementaTempoDecorrido ; begin FtempoDecorrido := tempoDecorrido + 1; end ; function TCPU. removeProcessoExecutando : Tprocesso ; begin ocupado := 0; tempoDecorrido := 0; result := processoExecutando ; end ; procedure TCPU. insereProcessoExecutando ( processo : Tprocesso ); begin ocupado := 1; tempoDecorrido := 0; processoExecutando := processo ;

Page 84: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

70

end ; function TCPU. Gocupado : integer ; begin result := Self . FOcupado ; end ; procedure TCPU. Socupado ( valor : integer ); begin Self . Focupado := valor - 1; end ; function TCPU. GtempoDecorrido : integer ; begin result := Self . FtempoDecorrido ; end ; procedure TCPU. StempoDecorrido ( valor : integer ); begin Self . FtempoDecorrido := valor - 1; end ; function TCPU. GProcessoExecutando : Tprocesso ; begin result := Self . FProcessoExecutando ; end ; procedure TCPU. SProcessoExecutando ( valor : Tprocesso ); begin Self . FProcessoExecutando := valor ; end ; {*************CLASSE PROCESSO************} function TProcesso . GTempoProcessador : integer ; begin result := Self . FTempoProcessador ; end ; procedure TProcesso . STempoProcessador ( valor : integer ); begin Self . FTempoProcessador := FTempoProcessador - valor ; end ; function TProcesso . Gcor : Tcolor ; begin result := Self . Fcor ; end ; procedure TProcesso . Scor ( valor : Tcolor ); begin Self . Fcor := valor ; end ; function TProcesso . Gpid : integer ; begin result := Self . Fpid ; end ; procedure TProcesso . Spid ( valor : integer ); begin Self . Fpid := valor ; end ; function TProcesso . GtempoExecucao : integer ; begin result := Self . FtempoExecucao ; end ;

Page 85: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

71

procedure TProcesso . StempoExecucao ( valor : integer ); begin Self . FtempoExecucao := FtempoExecucao - valor ; end ; function TProcesso . GtempoTurnaround : integer ; begin result := Self . FtempoTurnaround ; end ; procedure TProcesso . StempoTurnaround ( valor : integer ); begin Self . FtempoTurnaround := Self . FtempoTurnaround + valor ; end ; function TProcesso . GtempoEsperaProcesso : integer ; begin result := Self . FtempoEsperaProcesso ; end ; procedure TProcesso . StempoEsperaProcesso ( valor : integer ); begin Self . FtempoEsperaProcesso := FtempoEsperaProcesso + valor ; end ; function TProcesso . Gporcentagem : integer ; begin result := Self . Fporcentagem ; end ; procedure TProcesso . Sporcentagem ( valor : integer ); begin Self . Fporcentagem := valor ; end ; function TProcesso . Gtipo : string ; begin result := Self . Ftipo ; end ; procedure TProcesso . Stipo ( valor : string ); begin Self . Ftipo := valor ; end ; function TProcesso . Gprioridade : integer ; begin result := Self . Fprioridade ; end ; procedure TProcesso . Sprioridade ( valor : integer ); begin Self . Fprioridade := valor ; end ; {************* CLASSE SISTEMA **************} function TSistema . GfatiaTempoSistema : integer ; begin result := Self . FfatiaTempoSistema ; end ; procedure TSistema . SfatiaTempoSistema ( valor : integer ); begin Self . FfatiaTempoSistema := valor ; end ; function TSistema . GtempoDecorridoSistema : integer ; begin result := Self . FtempoDecorridoSistema ; end ;

Page 86: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

72

procedure TSistema . StempoDecorridoSistema ( valor : integer ); begin Self . FtempoDecorridoSistema := Self . FtempoDecorridoSistema + valor ; end ; function TSistema . GtempoAcessoDisco : integer ; begin result := Self . FtempoAcessoDisco ; end ; procedure TSistema . StempoAcessoDisco ( valor : integer ); begin Self . FtempoAcessoDisco := valor ; end ; function TSistema . GtempoAcessoUSBFlash : integer ; begin result := Self . FtempoAcessoUSBFlash ; end ; procedure TSistema . StempoAcessoUSBFlash ( valor : integer ); begin Self . FtempoAcessoUSBFlash := valor ; end ; function TSistema . GtempoAcessoCD : integer ; begin result := Self . FtempoAcessoCD ; end ; procedure TSistema . StempoAcessoCD ( valor : integer ); begin Self . FtempoAcessoCD := valor ; end ; function TSistema . GtempoClock : integer ; begin result := Self . FtempoClock ; end ; procedure TSistema . StempoClock ( valor : integer ); begin Self . FtempoClock := valor ; end ; function TSistema . GtempoThroughput : integer ; begin result := Self . FtempoThroughput ; end ; procedure TSistema . StempoThroughput ( valor : integer ); begin Self . FtempoThroughput := FtempoThroughput + valor ; end ; function TSistema . GtempoInicialGantt : integer ; begin result := Self . FtempoInicialGantt ; end ; procedure TSistema . StempoInicialGantt ( valor : integer ); begin Self . FtempoInicialGantt := FtempoInicialGantt + valor ; end ; function TSistema . GtempoFinalGantt : integer ; begin result := Self . FtempoFinalGantt ;

Page 87: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

73

end ; procedure TSistema . StempoFinalGantt ( valor : integer ); begin Self . FtempoFinalGantt := FtempoFinalGantt + valor ; end ; function TSistema . GUT: integer ; begin result := Self . FUT; end ; procedure TSistema . SUT( valor : integer ); begin Self . FUT := FUT + valor ; end ; function TSistema . GUTAux: string ; begin result := Self . FUTAux; end ; procedure TSistema . SUTAux( valor : string ); begin Self . FUTAux := FUTAux + valor + '+' ; end ; function TSistema . GLimitePrioridade : integer ; begin result := Self . FLimitePrioridade ; end ; procedure TSistema . SLimitePrioridade ( valor : integer ); begin Self . FLimitePrioridade := FLimitePrioridade + valor ; end ; function TSistema . GtempoMedioTurnaround : integer ; begin result := Self . FtempoMedioTurnaround ; end ; procedure TSistema . StempoMedioTurnaround ( valor : integer ); begin Self . FtempoMedioTurnaround := FtempoMedioTurnaround + valor ; end ; function TSistema . GCalculaUnidadeTempo : string ; begin result := Self . FCalculaUnidadeTempo ; end ; procedure TSistema . SCalculaUnidadeTempo ( valor : string ); var count , i , j : integer ; VUT: string ; vUTAux: string ; begin vUTAux := Copy( valor , 1, count - 1); j := length ( Copy( valor , 1, count - 1)); count := j ; for i := 1 to j do begin VUT := Copy( vUTAux, count , 1); dec ( count ); if VUT = '+' then break ; end ; VUT := Copy( vUTAux, 1, count ); Self . FCalculaUnidadeTempo := VUT; end ;

Page 88: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

74

{********** CLASSE DISCO **********} function TDisco . Gocupado : integer ; begin result := Self . Focupado ; end ; procedure TDisco . Socupado ( valor : integer ); begin Self . Focupado := valor ; end ; function TDisco . GtempoEsperado : integer ; begin result := Self . FtempoEsperado ; end ; procedure TDisco . StempoEsperado ( valor : integer ); begin Self . FtempoEsperado := valor ; end ; function TDisco . GtempoDecorrido : integer ; begin result := Self . FtempoDecorrido ; end ; procedure TDisco . StempoDecorrido ( valor : integer ); begin Self . FtempoDecorrido := Self . FtempoDecorrido + valor ; end ; function TDisco . GtempoIO : integer ; begin result := Self . FtempoIO ; end ; procedure TDisco . StempoIO ( valor : integer ); begin FtempoIO := valor ; end ; function TDisco . GProcessoIO : Tprocesso ; begin result := Self . FProcessoIO ; end ; procedure TDisco . SProcessoIO ( valor : Tprocesso ); begin Self . FProcessoIO := valor ; end ; procedure TForm7 . BitBtn1Click ( Sender : TObject ); begin Tsistema ( S). SfatiaTempoSistema ( SpinEdit2 . Value ); Tsistema ( S). StempoClock ( SpinEdit6 . Value ); TSistema ( S). StempoAcessoDisco ( SpinEdit7 . Value ); TSistema ( S). StempoAcessoCD ( SpinEdit9 . Value ); TSistema ( S). StempoAcessoDisco ( SpinEdit10 . Value ); TDisco ( D). StempoIO ( SpinEdit8 . Value ); TSistema ( S). SLimitePrioridade ( SpinEdit1 . Value ); Form3 . SpinEdit1 . MaxValue := Form7 . SpinEdit1 . Value ; Application . MessageBox ( 'Opera 磯 Realizada com Sucesso!' , 'Aviso' , mb_Ok+mb_IconExclamation ); end ; procedure TForm7 . BitBtn2Click ( Sender : TObject );

Page 89: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

75

begin close ; end ; function TForm7 . Calculate ( SMyExpression : string ; digits : Byte ): string ; // Calculate a simple expression. Supported are: R eal Numbers, parenthesis. http://www.swissdelphicenter.ch/en/showcode.php?id= 470 var z : Char ; ipos : Integer ; function StrToReal ( chaine : string ): Real ; var r : Real ; Pos: Integer ; begin Val ( chaine , r , Pos); if Pos > 0 then Val ( Copy( chaine , 1, Pos - 1), r , Pos); Result := r ; end ; function RealToStr ( inreal : Extended ; digits : Byte ): string ; var S: string ; begin Str ( inreal : 0: digits , S); realToStr := S; end ; procedure NextChar ; var s : string ; begin if ipos > Length ( SMyExpression ) then begin z := #9 ; Exit ; end else begin s := Copy( SMyExpression , ipos , 1); z := s [ 1]; Inc ( ipos ); end ; if z = ' ' then nextchar ; end ; function Expression : Real ; var w: Real ; function Factor : Real ; var ws: string ; begin Nextchar ; if z in [ '0' .. '9' ] then begin ws := '' ; repeat ws := ws + z ; nextchar until not ( z in [ '0' .. '9' , '.' ]); Factor := StrToReal ( ws); end else if z = '(' then begin Factor := Expression ; nextchar

Page 90: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

76

end else if z = '+' then Factor := +Factor else if Z = '-' then Factor := - Factor ; end ; function Term: Real ; var W: Real ; begin W := Factor ; while Z in [ '*' , '/' ] do if z = '*' then w := w * Factor else w := w / Factor ; Term := w; end ; begin w := term ; while z in [ '+' , '-' ] do if z = '+' then w := w + term else w := w - term ; Expression := w; end ; begin ipos := 1; Result := RealToStr ( Expression , digits ); end ; procedure TForm7 . FormCreate ( Sender : TObject ); begin SpinEdit2 . Value := Tsistema ( S). GfatiaTempoSistema ; SpinEdit6 . Value := Tsistema ( S). GtempoClock ; SpinEdit7 . Value := TSistema ( S). GtempoAcessoDisco ; SpinEdit9 . Value := TSistema ( S). GtempoAcessoCD ; SpinEdit10 . Value := TSistema ( S). GtempoAcessoUSBFlash ; SpinEdit8 . Value := TDisco ( D). GtempoIO ; SpinEdit1 . Value := TSistema ( S). GLimitePrioridade ; end ; procedure TForm7 . BitBtn5Click ( Sender : TObject ); begin close ; end ; end .

Page 91: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

77

ANEXO II – CÓDIGO-FONTE DO COMPONENTE DE CORES DOS PROCESSOS

colorbox1.AddItem('clBackground',TObject(clBackground)); colorbox1.AddItem('clMaroon', TObject(clMaroon)); colorbox1.AddItem('Chocolate',TObject(clWebChocolate)); colorbox1.AddItem('Peru',TObject(clWebPeru)); colorbox1.AddItem('Ouro-Escuro (rod)',TObject(clWebDarkGoldenRod)); colorbox1.AddItem('RosyBrown',TObject(clWebRosyBrown)); colorbox1.AddItem('Azul-Royal',TObject(clWebRoyalBlue)); colorbox1.AddItem('Azul-Ardósia Médio',TObject(clWebMediumSlateBlue)); colorbox1.AddItem('clblue', TObject(TColor(clblue))); colorbox1.AddItem('Azul CornFlower',TObject(clWebCornFlowerBlue)); colorbox1.AddItem('Azul Dodger',TObject(clWebDodgerBlue)); colorbox1.AddItem('Azul-Petroleo',TObject(clActiveCaption)); colorbox1.AddItem('Céu-Azul Profundo',TObject(clWebDeepskyBlue)); colorbox1.AddItem('Azul-Celeste',TObject(clSkyBlue)); colorbox1.AddItem('Azul-Claro',TObject(ClAqua)); colorbox1.AddItem('Ciano Claro',TObject(clWebLightCyan)); colorbox1.AddItem('Azure',TObject(clWebAzure)); colorbox1.AddItem('Azul Água-Marinho',TObject(clWebAquamarine)); colorbox1.AddItem('Turquesa Pálido',TObject(clWebPaleTurquoise)); colorbox1.AddItem('Azul LightSteel',TObject(clWebLightSteelBlue)); colorbox1.AddItem('Turquesa',TObject(clWebTurquoise)); colorbox1.AddItem('Turquesa Escuro',TObject(clWebDarkTurquoise)); colorbox1.AddItem('Azul Cadet',TObject(clWebCadetBlue)); colorbox1.AddItem('Ciano Escuro',TObject(clWebDarkCyan)); colorbox1.AddItem('Água-Marinho Médio',TObject(clWebMediumAquamarine)); colorbox1.AddItem('Azul-Esverdeada (Teal)',TObject(clTeal)); colorbox1.AddItem('Verde-Mar',TObject(clWebSeaGreen)); colorbox1.AddItem('Verde-Oliva Escuro',TObject(clWebDarkOliveGreen)); colorbox1.AddItem('Verde-Floresta',TObject(clWebForestGreen)); colorbox1.AddItem('Verde',TObject(clGreen)); colorbox1.AddItem('Verde-Oliva',TObject(clOlive)); colorbox1.AddItem('Verde Oliva Monótono',TObject(clWebOliveDrab)); colorbox1.AddItem('Verde Escuro',TObject(clWebLimeGreen)); colorbox1.AddItem('Verde-Mar Médio',TObject(clWebMediumSeaGreen)); colorbox1.AddItem('Verde-Mar Light',TObject(clWebLightSeaGreen)); colorbox1.AddItem('Verde-Mar Escuro',TObject(clWebDarkSeaGreen)); colorbox1.AddItem('Verde-Claro',TObject(clWebLightGreen)); colorbox1.AddItem('Verde-Primavera Médio',TObject(clWebMediumSpringGreen)); colorbox1.AddItem('Verde-Claro',TObject(clWebLightgrey)); colorbox1.AddItem('Verde Dinheiro',TObject(clMoneyGreen)); colorbox1.AddItem('Verde-Amarelo',TObject(clWebGreenYellow)); colorbox1.AddItem('Verde-Limão',TObject(clLime)); colorbox1.AddItem('Verde-Primavera',TObject(clWebSpringGreen)); colorbox1.AddItem('Vermelho Escuro',TObject(clWebDarkRed)); colorbox1.AddItem('Violeta-Vermelho Médio',TObject(clWebMediumVioletRed)); colorbox1.AddItem('Violeta-Vermelho Pálido',TObject(clWebPaleVioletRed)); colorbox1.AddItem('Vermelho Carmesim',TObject(clWebCrimson)); colorbox1.AddItem('Firebrick',TObject(clWebFirebrick)); colorbox1.AddItem('Vermelho Indiano',TObject(clWebIndianRed)); colorbox1.AddItem('Siena',TObject(clWebSienna)); colorbox1.AddItem('Vermelho',TObject(clRed));

Page 92: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOcdn.ffb.edu.br/sites/default/files/tcc-20111-joel... · 2017. 6. 22. · ensino da disciplina de Sistemas Operacionais. Existem entre

78

colorbox1.AddItem('Laranja-Vermelho',TObject(clWebOrangeRed)); colorbox1.AddItem('Vermelho Tomate',TObject(clWebTomato)); colorbox1.AddItem('Salmão Escuro',TObject(clWebDarkSalmon)); colorbox1.AddItem('Salmão',TObject(clWebLightSalmon)); colorbox1.AddItem('Laranja-Escuro',TObject(clWebDarkOrange)); colorbox1.AddItem('Laranja',TObject(clWebOrange)); colorbox1.AddItem('Ouro',TObject(clWebGold)); colorbox1.AddItem('Amarelo',TObject(clYellow)); colorbox1.AddItem('Caqui Escuro',TObject(clWebDarkKhaki)); colorbox1.AddItem('Ouro Rod',TObject(clWebGoldenRod)); colorbox1.AddItem('Caqui',TObject(clWebKhaki)); colorbox1.AddItem('Ouro (Palerod)',TObject(clWebPaleGoldenrod)); colorbox1.AddItem('Ouro-Claro (rodYellow)',TObject(clWebLightGoldenrodYellow)); colorbox1.AddItem('Creme',TObject(clCream)); colorbox1.AddItem('LightCoral',TObject(clWebLightCoral)); colorbox1.AddItem('Rosa-Pink Profundo',TObject(clWebDeepPink)); colorbox1.AddItem('Rosa-Pink Quente',TObject(clWebHotPink)); colorbox1.AddItem('Rosa-Pink',TObject(clWebPink)); colorbox1.AddItem('Rosa-Pink Claro',TObject(clWebLightPink)); colorbox1.AddItem('Rosa Enevoado',TObject(clWebMistyRose)); colorbox1.AddItem('Magenta Escuro',TObject(clWebDarkMagenta)); colorbox1.AddItem('Purpura',TObject(clPurple)); colorbox1.AddItem('Violeta Escuro',TObject(clWebDarkViolet)); colorbox1.AddItem('Violeta Azul',TObject(clWebBlueViolet)); colorbox1.AddItem('Orquídea Escuro',TObject(clWebDarkOrchid)); colorbox1.AddItem('Orquídea Médio',TObject(clWebMediumOrchid)); colorbox1.AddItem('Orquídea',TObject(clWebOrchid)); colorbox1.AddItem('Lilás',TObject(clFuchsia)); colorbox1.AddItem('Violeta',TObject(clWebViolet)); colorbox1.AddItem('Ameixa',TObject(clWebPlum)); colorbox1.AddItem('Cardo',TObject(clWebThistle)); colorbox1.AddItem('Lavanda',TObject(clWebLavender));