Você está na página 1de 17

Minix

AdemirAlmeidadaCostaJúnior,AlanFélixdaMota,CaioViniciusMenesesSilva

1 DepartamentodeComputação(DCOMP)–UniversidadeFederaldeSergipe(UFS)

CEP–49.100­000–SãoCristóvão–SE–Brasil

{juniorademir1993,alanfelix20,kaio271289}@gmail.com

Abstract. This article aims to describe the Minix operating system and its peculiarfeatures.Initially,abriefhistoryispresentedaboutthemotivationin whichthesystemwascreated,availableversions,featuresofthecurrentversion

(Minix3.0)anditsimprovements.Thenthemaincomponentsofanoperating

system are described: Process, MemoryManagementandFileSystem.These topicsaredescribedingeneral(foranyOS),butfocusingonaspectsofMinix.

Resumo.EsteartigotemporobjetivodescreveroSistemaOperacionalMinixe suascaracterísticaspeculiares.Inicialmente,éapresentadoumbrevehistórico sobre qual motivação o sistema foi criado, versões disponibilizadas,

característicasdaversãoatual(Minix3.0)esuasmelhorias.Emseguida,são

descritos os principais componentes de um Sistema Operacional: Processos, Gerência de Memória e Sistema deArquivos.Essestópicossãodescritosde formageral(paraqualquerSistemaOperacional),mascomfoconosaspectosdo Minix.

1.Introdução

QuandoosistemaUNIXestavanaversãoseis,seucódigofonteestavasoblicençadaAT

&T(AmericanTelephoneandTelegraph)eerafrequentementeestudado,poisocódigo

estavadisponívelparatodos,masaAT&Tpercebeuquepossuíaumprodutocomercial

valiosoeentãoquandolançouaversãosete,estapossuíaumalicençaqueproibiaocódigo

fontedeserestudadoemcursos.EntãomuitasuniversidadesdeixaramoUNIXdeladoe

ensinavamapenasateoria.Comesseensinoapenasteórico,osalunosacabamficandocom

umavisãolimitadadoquerealmenteéumsistemaoperacional,poisassuntosimportantes

acabaramsendosãonegligenciados.

Inconformado com estasituaçãoAndrewStuartTanenbaumdecidiuescreverumnovo sistemaoperacionaldozero,oqualserialcompatívelcomUNIXdopontodevistado usuário,mascompletamentediferentepordentro.Elenãousounenhumalinhadecódigo doUNIXedesenvolveuumsistemaquepodiaserusadoparaaaulaouestudoindividual.

EssesistemarecebeuonomedeMINIXefoilançadoem1987comoseucódigo­fonte

completoparaquequalquerumpudesseestudaroumodificar.OnomedoMINIXsignifica mini­UNIX porque é pequeno o suficiente para que mesmo uma pessoaquenãoseja

especialistapossaentendercomoelefunciona.Alémdavantagemdeeliminarproblemas

jurídicos,MINIXtinhaoutravantagemsobreoUNIX.Foiescritoumadécadadepoisdo

UNIXefoiestruturadodeumaformamaismodular.OutradiferençaéqueoUNIXfoi

projetado para ser eficiente, enquanto que o MINIX foiprojetadoparaserlegível.O

códigoMINIXtemmilharesdecomentáriosnomesmo.

.

1.1.HistóricoeConceitosBásicos

Alémdavantagemdeeliminarosproblemasjurídicos,MINIXtinhaoutravantagemsobre

UNIX.FoiescritoumadécadadepoisUNIXefoiestruturadodeumaformamaismodular. Porexemplo,osistemadearquivos,osdriversdedispositivodeE/S,que(comexceçãodo driverdorelógio)egerenciadordememóriafuncionacomoprogramasdousuário.Outra

diferençaéqueoMINIXfoiprojetadoparaserlegível,eparasercomaversão7do

UNIX,devidoàsuasimplicidadeeelegância.Àsvezessedizqueaversão7foiuma

melhoria não só sobre todos os seus predecessores, mastambémsobretodososseus

sucessores.ComoadventodoPOSIX,MINIXcomeçouaevoluiremdireçãoaonovo

padrão,mantendoacompatibilidadecomosprogramasexistentes.

ComoUNIX,MINIXfoiescritonalinguagemdeprogramaçãoCefoiconcebido para ser fácil e compatível com vários computadores. Inicialmente para o PCs IBM, posteriormente para várias outras plataformas. Em sintonia com a filosofia "Small is beautiful",originalmentenãosefazianecessárioousododiscorígidoparaexecutar(em

meadosdosanos1980discosrígidosaindaeramumanovidadecaro).Comoelecresceu

em termos de funcionalidade e tamanho, eventualmente chegou a um ponto que era necessário um disco rígido para PCs, mas em sintonia com a filosofia MINIX, uma

partiçãode200MegaBytesésuficiente(paraaplicaçõesembarcadas,nenhumdiscorígido

énecessário).Emcontraste,mesmopequenossistemasLinuxrequerem500MBdeespaço

emdisco,eváriosGigaBytesserãonecessáriosparainstalaraplicativoscomuns.

1.2.Principaisdistribuições

OsMinix1e2foramoriginalmentelançadoscomoferramentasdeensino.Aversão1

(1987)écompatívelcomaversão7doUNIX,havendoCercade12.000linhasdecódigo

emC,incluindoKernel,gerenciamentodememória,sistemasdearquivos.Ocódigoe

bináriosdestaverãoforamliberadosatravésdedisketscomummanualdereferência.A

versão 2 (1997) foibaseadanasegundaversãodolivrodeTanenbaum,sendoapenas

disponibilizadaparaprocessadoresx86eSolarisemarquiteturaSPARC.Alémdissofoi

adicionadoopadrãoPOSIXedistribuídoapartirdeCD­ROM.Jáaversão3tempor

objetivosetornarusávelemcomputadorescomrecursoslimitados(compacta),sistemas

embarcadoseaplicaçõesquedemandamgrandeconfiabilidade.

JuntamentecomseusalunoseprogramadoresnaUniversidadeVrijeemAmsterdã,ele produziu MINIX 3, reformulando, reestruturando e reduzindo o kernel, enfatizando a

modularidadeeconfiabilidade.OMinix3éumnovosistemaoperacionalopen­source

projetado para seraltamenteconfiável,flexíveleseguro.Estanovaversãoé,decerta forma,baseadanasanterioresmaséfundamentalmentediferenteemmuitosaspectos.Entre asnovasfuncionalidadespode­secitar:

● AdiçãodesuportearedeviaTCP/IP

● X Window System (X11 ­ desenhar e mover as janelas no dispositivo de visualizaçãoeinteraçãocomummouseeteclado.)

● Kernelreescritoereduzidoem4000linhasdecódigo

● Suportecompletoamulti­programaçãoemulti­usuário

● Driversdedispositivosexecutamcomoprocessosdeusuário

● Linguagens:cc,gcc,g++,perl,python,etc.

● Suportedeaté4GBdeRAM;

Aversão3doMinixédescritanaterceiraediçãodolivro"OperatingSystems:Designand

Implementation3ndEdition"(OSDI3)deAndrewS.TanenbaumeAlbertS.Woodhull,na

qualesteartigoébaseado

1.3.Classificação(monolítico,micronúcleoouhíbrido)

AabordagemdeMicro­núcleoconsisteemdefinirabstracçõessimplessobreohardware, com um conjunto de primitivos ou chamadas de sistema para implementar serviços mínimos do sistema operativo como gerenciamento de memória, multi­tarefas, e comunicaçãoentreprocessos.Outrosserviços,incluindoaquelesnormalmentefornecidos por umnúcleomonolíticocomorede,sãoimplementadosemprogramasdeespaçode usuário,conhecidoscomoservidores.Micro­núcleosãomaisfáceisdemanterdonúcleos monolíticos,masumgrandenúmerodechamadasdesistemasdetrocasdecontextopodem desacelerarosistemaporqueelesgeralmentegerammaisdegradaçãonaperformancedo quesimpleschamadasdefunção.

Ummicro­núcleopermiteaimplementaçãodaspartesrestantesdosistemaoperativocomo aplicativosnormaisescritosemlinguagemdealtonível,eousodediferentessistemas operativos sobre o mesmo núcleo não­modificado.Eletambémtornapossívelalternar dinamicamente entre sistemas operativos e manter mais de um deles ativos simultaneamente.OMinixéumexemplodeSOqueusaomicro­núcleo.

sistemas operativos e manter mais de um deles ativos simultaneamente. ​ ​ OMinixéumexemplodeSOqueusaomicro­núcleo.

2.Processosethreads

2.1.FuncionamentodosProcessoseThreads

Diferentemente do UNIX, cujo kernel é um programa monolítico e não dividido em módulos, o MINIX é uma coleção de processos que se comunicam entre si e com processos de usuário utilizando uma única primitiva de comunicação interprocesso a passagemdemensagem.Esseprojetoproporcionaumaestruturamaisflexívelemodular, tornandofácil,porexemplo,substituirosistemadearquivosinteiroporumcompletamente diferente,semnemmesmoprecisarrecompilarokernel.

OMINIXéestruturadoemquatrocamadas,comcadacamadaexecutandoumafunção

bemdefinida.

bemdefinida. ​ Acamadainferiorcapturatodasasinterrupçõese ​ traps

Acamadainferiorcapturatodasasinterrupçõese traps,fazoescalonamentoeforneceàs camadasmaisaltasummodelodeprocessossequenciaisindependentesquesecomunicam utilizandomensagens.Ocódigonessacamadatemduasfunçõesprincipais.Aprimeiraé capturaros trapseasinterrupções,salvarerestaurarregistradores,agendareasdemais funçõespararealmentefazeraabstraçãodeprocessooferecidaparaascamadasmaisaltas funcionarem.Asegundaégerenciaramecânicadasmensagens,verificardestinoslegais, localizarbuffersdeenvioederecebimentonamemóriafísicaecopiarbytesdoremetente para o destinatário. Essa parte da camada que lida com o nível mais baixo do gerenciamentodeinterrupçõeséescritaemlinguagemassembly.Orestodacamadae todasascamadasmaisaltassãoescritosemC.

Acamada2contémosprocessosdeE/S,umportipodedispositivo.Paradistingui­losdos

processosdeusuárionormais,iremoschamá­losdetarefas,masasdiferençasentretarefas

eprocessossãomínimas.Emmuitossistemas,astarefasdeE/Ssãochamadasdedrivers de dispositivo, utilizaremos os termos “tarefa” e “driver de dispositivo" intercambiavelmente. Uma tarefa é necessária para cadatipodedispositivo,incluindo discos,impressoras,terminais,placasderedeerelógios.SeoutrosdispositivosdeE/S estiverempresentes,tambéménecessáriaumatarefaparacadaumdeles.Umatarefa,a tarefa de sistema, é um pouco diferente, uma vez que não corresponde a qualquer dispositivodeE/S.

Acamada3contémprocessosquefornecemserviçosúteisparaosprocessosdeusuário.

Essesprocessosdeservidorexecutamemumnívelmenosprivilegiadoqueokerneleas

tarefasenãopodemacessarportasdeE/Sdiretamente.

Porfim,acamada4contémtodososprocessosdeusuárioosshelleditores,compiladorese

programas escritos pelo usuário. Um sistema em execução normalmente tem algum processoqueéiniciadoquandoosistemaéinicializadoequeexecutaeternamente.Por exemplo,um daemonéumprocessodesegundoplanoqueexecutaperiodicamenteou sempreesperaalgumevento,comoachegadadeumpacotederede.Emcertosentido,um daemonéumservidorqueéiniciadoindependentementeeexecutacomoumprocessode usuário. Entretanto, diferentemente dos servidores verdadeiros instalados em entradas privilegiadas,essesprogramasnãopodemreceberotratamentoespecialdo kernelqueos processosservidoresdememóriaedearquivosrecebem.

2.2.EstadoseTransiçõesdeProcessoeThreads

Cadaprocessoéumaentidadeindependente,temseupróprioPC,registrador,pilhae

outrosestadosinternos.Mesmoassim,precisaminteragir,secomunicaresincronizarcom outrosprocessos.PorexemploumprocessoBpodeprecisarcomoentradadeumasaída geradaporumprocessoA,nessecasoosdadosdevemsermovidosentreosprocessos,

dandoorigemaosestadosdeumprocesso.Afiguraaseguirmostraumdiagramacomos3

estadosqueumprocessopodeatingir.

1. Executando(utilizandodefatoaCPUnessemomento).

2. Pronto(executável,temporariamenteparadoparaqueoutroprocessopossaser

executado).

3. Bloqueado(incapazdeexecutaratéquealgumeventoocorra).

Paraentrarnoestadodebloqueado,transição1,algunssistemasnecessitamexecutaruma chamadadesistema ​ block ​ ou ​

Paraentrarnoestadodebloqueado,transição1,algunssistemasnecessitamexecutaruma

chamadadesistema block ou pause.NoMINIX,quandoumprocessolêum pipeouum arquivoespecial(umterminalporexemplo),enãoexistemnenhumaentradadisponível,

eleautomaticamentemudaoestadodeexecuçãoparabloqueado.Astransições2e3são

causadaspeloescalonador,quefazpartedosSO,oprocessonãosabesobreelas,asegunda transição acontece quando o escalonador decide que o processo já executou tempo suficiente,edálugaraumoutroprocesso.Jáaterceiratransiçãoocorrequandoosoutros processos jáobtiveramsuajustaparteeoprimeirodelesrecebeaCPUparaexecutar

novamente.Atransição4acontecequandoumeventoqueumprocessoestavaaguardando

ocorre.

AcamadamaisinferiordoMINIXéoescalonador,sobreeleestãoumavariedadede processos. Todo tratamento de interrupção e os detalhes de como iniciar e para os processosficamocultosnele,queébempequeno.OrestantedoSOéestruturadoemforma deprocessos,nafiguraaseguirdemonstracomoéfeitaessaestruturausadapeloMINIX.

deprocessos,nafiguraaseguirdemonstracomoéfeitaessaestruturausadapeloMINIX.

Paraimplementaromodelodeprocessos,oSOmantémumatabela(arraydeestruturas), chamada de tabela de processos, que tem como entrada um processo. No MINIX o gerenciamentodememória,dearquivoseacomunicaçãoentreprocessossãotratadospor módulosseparados,sendoassimatabelaésubdividida,ecadamódulomantémoscampos queprecisam.

queprecisam. 2.3.ExclusãoMútua(algoritmosutilizados) Quando processos

2.3.ExclusãoMútua(algoritmosutilizados)

Quando processos concorrentes compartilham dados (variáveis, estruturas de dados, arquivos), é necessário controlar o acesso a esses dados, paraobterdeterminânciade execução.Operaçõesdeatualizaçãonãopodemserfeitassimultaneamentepordiferentes processos. Tampouco operações de leitura podem ocorrer simultaneamente com atualizações,poisosdadoslidospodemestartemporariamenteinconsistentes.Ostrechos dos processos onde os dados compartilhados são acessados são denominados trechos críticos,regiõescríticasouseçõescríticas.Amaneiradeeliminarascondiçõesdecorrida deumprogramaconcorrenteésimples,bastagarantiraexclusãomútuanaexecuçãodos trechoscríticosdosprocessos.

Os processos que compõe o sistema operacional MINIX em siutilizamométodode rendez­vous com mensagens de tamanho fixo para se comunicarem. Os processos de usuáriotambémutilizamessemétodoparasecomunicaremcomcomponentesdosistema

operacional,emboraoprogramadornãovejaisso,poisrotinasdebibliotecaservemcomo

intermediáriasdaschamadasdesistema.Acomunicaçãoentreprocessosdousuáriono MINIX(enoUNIX)ocorreporintermédiode pipes,quesão,efetivamente,caixasde correio.Aúnicadiferençarealentreumsistemademensagemcomcaixasdecorreioeo mecanismodepipeséqueospipesnãopreservamoslimitesdamensagem.Emoutras palavras,seumprocessogravar10mensagensde100bytesemum pipeeoutroprocesso ler 1.000 bytes desse pipe, o leitor receberá as 10 mensagens de uniavez.Comum verdadeiro sistema de mensagens, cada operação read deve retomar apenas uma mensagem.Naturalmente,seosprocessosconcordarememsempreleregravarmensagens detamanhofixono pipeouemfinalizarcadamensagemcomumcaractereespecial(por

exemplo,umavançodelinha),nãohaveránenhumproblema.Apassagemdemensagensé

usadanormalmentenossistemasdeprogramaçãoparalela.Porexemplo,umsistemade

passagemdemensagensmuitoconhecidoéoMPI(MessagePassingInterface).Eleé

amplamenteusadoparacomputaçãocientífica

2.4.EscalonamentodeProcessos

O MINIX foi um dos primeiros sistemas do tipo UNIX baseado no projeto de um

micronúcleo. Diferentemente do UNIX, cujo kernel é um programa monolítico enão

divididoemmódulos,oMINIXéumacoleçãodeprocessosquesecomunicamentresie

comprocessosdeusuárioutilizandoumaúnicaprimitivadecomunicaçãointerprocessoa

passagemdemensagem.Esseprojetoproporcionaumaestruturamaisflexívelemodular,

tornandofácil,porexemplo,substituirosistemadearquivosinteiroporumcompletamente

diferente,semnemmesmoprecisarrecompilarokernel.

Micronúcleos têm vantagens sobre os sistemas monolíticos por serem fáceis de

compreender e manter devido a suas estruturas altamente modulares. Além disso, a

migraçãodecódigonomodonúcleoparaomodousuáriopermitequeelessejamaltamente

confiáveisporqueaquebradeumprocessonomodousuáriocausamenosprejuízodoque

a quebra de um componente do modo núcleo. A principal desvantagem que eles

apresentam é o desempenholigeiramentemenordevidoàstrocasextrasentreomodo usuárioeomodonúcleo.OMINIXéestruturadoemquatrocamadas,comcadacamada executandoumafunçãobemdefinida.

NoMINIX,ogerenciamentoderecursosestáemgrandepartenokernel(camadas1e2)e

ainterpretaçãodechamadasdesistemaestánacamada3.Servidoresadicionaistambém

podemexistirnacamada3.Emboraosservidoressejamprocessosindependentes,eles

diferemdeprocessosdeusuárioporquesãoiniciadosquandoosistemaéinicializadoe

nunca terminam enquanto o sistema está ativo. Adicionalmente, embora executemno

mesmo nível de privilégio que os processos de usuário em termos das instruções de

máquinaquelhesépermitidoexecutar,elesrecebemprioridademaisaltadeexecuçãoque

os processos de usuário. Para acomodar um novo servidor, o kernel precisa ser recompilado. O código de inicialização do kernel instala os servidores em entradas privilegiadas na tabela de processos antes de qualquer processo de usuário receber permissãoparaexecutar.

OsprocessosnoMINIXseguemomodelogeraldeprocesso.Osprocessospodemcriar

subprocessos,que,porsuavez,podemcriarmaissubprocessos,produzindoumaárvorede

processos.Defato,todososprocessosdeusuárionosistemainteirosãopartedeumaúnica

árvorecominitnaraiz.

AsduasprincipaischamadasdesistemadoMINIXparagerenciamentodeprocessossão forke exec.O forkéoúnicomeiodecriarumnovoprocesso.O execpermitecriarum processoparaexecutarumprogramaespecificado.Quandoumprogramaéexecutado,ele recebeumapartedamemóriacujotamanhoéespecificadonocabeçalhodoarquivode programa.Elemantémessaquantidadedememóriadurantetodasuaexecução,emboraa distribuiçãoentresegmentodedados,segmentodepilhaenãoutilizadopossavariarà medidaqueoprocessoexecuta.Todasasinformaçõessobreumprocessosãomantidasna tabeladeprocessos,queédivididaentreokernel,ogerenciadordememóriaeosistemade arquivos,comcadaumdessestendooscamposqueprecisa.Quandoumnovoprocesso aparece,por fork,ouumprocessoantigotermina(por exitouporumsinal),ogerenciador dememóriaprimeiroatualizasuapartenatabeladeprocessose,então,enviamensagens paraosistemadearquivoseparaokernelinformando­osparafazeromesmo.

Osistemadeinterrupçõeséoquemantémumsistemaoperacionalmultiprogramadoem funcionamento.Osprocessosbloqueiamquandofazemrequisiçõesentrada,permitindoque outrosprocessosexecutem.Quandoaentradatorna-sedisponível,oprocessoatualem execuçãoéinterrompidopelodisco,pelotecladoouporoutrohardware.Orelógiotambém gerainterrupçõesutilizadasparacertificarqueumprocessodeusuárioemexecuçãoque nãosolicitouentradaacabeabandonandoaUCP,paradaraoutroprocessosuachancede executar. É trabalho da camada mais baixa do MINIX ocultar essas interrupções, transformando-asemmensagens.Noquedizrespeitoaosprocessos(etarefas),quandoum dispositivo de E/S completa uma operaçãoeleenviaumamensagemparaoprocesso, acordando-oetornando-oexecutável.Cadavezqueumprocessoéinterrompido,sejaa partirdeumdispositivoconvencionaldeE/Souapartirdorelógio,háumaoportunidade paradeterminarqualprocessomereceumaoportunidadedeexecutar.Naturalmente,isso também deve serfeitosemprequeumprocessotermina,masemumsistemacomoo MINIX as interrupções em decorrência das operaçõesdeE/Sougeradaspelorelógio ocorremmaisfrequentementequeotérminodeumprocesso.OescalonadordoMINIX

utilizaumsistemadefilasemtrêsníveis,correspondentesàscamadas2,3e4.Dentrodos

níveisdetarefaedeservidor,osprocessosexecutamatébloquearem,masosprocessosde usuáriosãoagendadosutilizandoroundrobin.Astarefastêmaprioridademaisalta,o gerenciador de memória e o servidor de arquivos vêm em seguida e, por último, os processosdeusuário.

2.4.1.Objetivos

Oobjetivodoescalonadoréatribuirprocessosparaseremexecutadospelosprocessadores de modo a atingir parâmetros de performance, tais como tempo deresposta,vazãoe eficiênciadoprocessados.

O projeto de um escalonador adequado deve levar em conta uma série dediferentes necessidades,ouseja,oprojetodeumapolíticadeescalonamentodevecontemplaros seguintesobjetivos:

● Serjusto:Todososprocessosdevemsertratadosigualmente,tendopossibilidades idênticasdeusodoprocessador,devendoserevitadooadiamentoindefinido.

● Maximizaraprodutividade(throughput):Procurarmaximizaronúmerodetarefas processadasporunidadedetempo.

● Serprevisível:Umatarefadeveriasersempreexecutadacomaproximadamenteo mesmotempoecustocomputacional.

● Minimizarotempoderespostaparausuáriosinterativos.

● Maximizaronúmeropossíveldeusuáriointerativos.

● Minimizarasobrecarga(overhead):Recursosnãodevemserdesperdiçadosembora algum investimento em termosderecursosparaosistemapodepermitirmaior eficiência.

● Favorecer processos"bemcomportados":Processosquetenhamcomportamento adequadopoderiamreceberumserviçomelhor.

● Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub­ utilizados deveriam ser favorecidos.

● Exibir degradação previsível e progressiva em situações de intensa carga de trabalho.

Comopodeservistofacilmente,algunsdestesobjetivossãocontraditórios,poisdado queaquantidadedetempodisponíveldeprocessamento(tempodoprocessador)éfinita, assimcomoosdemaisrecursoscomputacionais,paraqueumprocessosejafavorecido outro deve ser prejudicado. O maior problema existente no projeto de algoritmos de escalonamentoestáassociadoànaturezaimprevisíveldosprocessos,poisnãoépossível prevermos se um dado processo utilizará intensamente o processador,ouseprecisará grandesquantidadesdememóriaousenecessitaránumerososacessosaosdispositivose E/S.

2.4.2.TiposdeEscalonamento

OarquivoquemanipulaoescalonamentodeprocessosnoMINIXéo proc.c,contidoem usr/src/kernel/. Nele, as funções sched e pick_proc são as responsáveis pela implementação da política de escalonamento do sistema operacional. Trata de um

escalonamento por prioridade. Os processos no MINIX são divididos em 16 (nr_sched_queues)filasdeprioridade,sendoqueaúltima(prioridade idle _q)éparaos processos em idle, não sendo, portanto, acessível aos demais processos. Algumas constantes do escalonamento de processos de definição das filas de prioridades são definidasnoarquivo/usr/src/kernel/proc.h.

Processos com maior prioridade têm menores índices de prioridade. Os processos de tarefasdo kernelsãodiferenciadosdosprocessosdousuário,recebendoumaprioridade maior (0 contra 7). Além de possuírem prioridade mais elevada, astarefasdo kernel recebemumquantum(qs)maior,paraquenãosejamfrequentementeinterrompidaspor preempção.Certosprocessosrodandoemmodousuáriotambémrecebemprioridademaior que os demais, como aqueles relativos ao gerenciamento do sistema dearquivoeao gerenciamento de memória.Processoscomigualprioridadesãocolocadosemfilas.A função enqueueéaquealocaosprocessos,chamando,paraisso,afunção sched,que determinaonde(qualfilaeemqueposição:topooufim)omesmodeveserposicionado. Emseguida,acionaafunção pick_proc,queescolheoprocessoaserexecutadodeacordo comasituaçãodasfilas.

Paraadeterminaçãodaprioridadequedeveseratribuídaaumprocesso,ouseja,emqual dasfilasdeprioridadeomesmodevesercolocado,afunção schedverificaseomesmo aindatemtempodeexecução,ouseja,seeleaindanãoconsumiutodooquantumquelheé atribuído.Casonãohaja,elerecebeumnovoquantumeumamenorprioridade(ouseja, um índice maior nas filas de prioridades). A variável que guarda o tempo restante, time_left,tambéméusadaparaindicarseoprocessodeveserposicionadonocomeçoou nofimdafila,deacordocomoparâmetroderetorno front.Casohajatemposobrando, deveirparaoiníciodafilaparaserexecutadoprimeiro.Senão,écolocadonofimdafila desuaprioridade.Nafunção pick_procoprocessonoiníciodafilademaiorprioridade (menoríndice)nãovaziaéescolhido.Trata­sedeumiteradorquecomeçapelafilade

índice0,atéquesejaencontradoumprocesso.Senãohouvernenhumdisponível,entra­se

nafiladeidle.

2.4.3.AlgoritmosdeEscalonamento

O MINIX utiliza um algoritmo de escalonamento para multiniveis. As funções responsáveis pelo escalonamento são: enqueue, dequeue, shed e pick_proc. Para a realizaçãodoescalonamento,osprocessosaseremexecutadosrecebemumaprioridade para execução. Seguindo a estrutura de camadas do MINIX,osprocessoscommaior

prioridadesãooscontidosnacamada1(modoKernel),seguidosdacamada2,3e4(modo

Usuário).Aprioridadedessesprocessoséguardadaem16filas,sendoqueosprocessos

commaiorprioridaderecebemosmenoresíndicesdeprioridade.Afiguraaseguirmostra

asfilaseosprocessosnomomentoemqueokernelcompletaainicializaçãoecomeçaa

roda:

roda:

Processoscommesmaprioridadesãocolocadosemfilaspelafunçãoenqueue.Oprocesso comoponteiro rdy_headéoprimeiroaserexecutadoenquantooprocessocomoponteiro rdy_tailéoúltimoaserexecutadonafiladeexecução.Quemdeterminaessapolíticade escalonamentoéafunçãoshed.Elaéchamadasemprequeumprocessoéadicionadoa umafila,decidindoondeeleserácolocado.

Quandoumprocessodemoramuitoparaterminarsuaexecuçãoelepodeacabarusando todooseuquantum,assimsendomovidoparaofinaldafila(recebeoponteirordy_tail)e recebendo um novo valor de quantum. No caso de um processo bloqueado que foi acordado,eleécolocadonocomeçodafiladeexecuçãoeusaoquerestoudeseuquantum antes de ter sido bloqueado. A função dequeue é chamada para tornar um processo unready.Oprocessoéprocuradonafilaprovavelmenteestaráno rdy_headequandoé encontradoosponteirossãoreajustadoseoprocessosaidacorrente.Seesseprocesso estiverrodando,afunção pick_procéchamada,umavezqueelatemafunçãodedecidir quemestárodando.

Resumindo,oalgoritmodeescalonamentoésimples:encontraafilacommaiorprioridade quenãoestejavaziaepegaoprocessodapontadafila(rdy_head).Oprocesso idleestá sempreprontoetemamenorprioridadenafila.Seasfilascomprioridadesmaisaltas estiveremvazias,oprocessoidleserárodado.

Thefirstpagemustdisplaythepapertitle,thenameandaddressoftheauthors,theabstract inEnglishand“resumo”inPortuguese(“resumos”arerequiredonlyforpaperswrittenin

Portuguese).Thetitlemustbecenteredoverthewholepage,in16pointboldfacefontand

with12pointsofspacebeforeitself.Authornamesmustbecenteredin12pointfont,bold,

allofthemdisposedinthesameline,separatedbycommasandwith12pointsofspace

afterthetitle.Addressesmustbecenteredin12pointfont,alsowith12pointsofspace

aftertheauthors’names.E­mailaddressesshouldbewrittenusingfontCourierNew,10

pointnominalsize,with6pointsofspacebeforeand6pointsofspaceafter.

Theabstractand“resumo”(ifisthecase)mustbein12pointTimesfont,indented

0.8cmonbothsides.Theword Abstract and Resumo,shouldbewritteninboldfaceand mustprecedethetext.

3.Deadlock

3.1.ConceitodeRecursoseDeadlock

3.2.CondiçõesparaaOcorrênciadeDeadlock

3.3.AsformasdeTratamentodeDeadlocks

Insomeconferences,thepapersarepublishedonCD­ROMwhileonlytheabstractis

publishedintheprintedProceedings.Inthiscase,authorsareinvitedtopreparetwofinal

versionsofthepaper.One,complete,tobepublishedontheCDandtheother,containing

onlythefirstpage,withabstractand“resumo”(forpapersinPortuguese).

4.GerênciadeMemória

Amemóriaéumrecursoimportantequedevesergerenciadocuidadosamente.Amaioria doscomputadorestêmumahierarquiadememória.Amemóriacashqueémuitorápida, volátil, porém de alto custo e pequena quantidade. A memóriaprincipal(RAM)com centenas de megabytes, também volátil, velocidade média, e a médio preço. E uma memória com centenas de gigabytes, lenta em relação as outras, mas barato e de armazenamentoemdisconão­volátil.Éotrabalhodosistemaoperacionalparacoordenar comoessasmemóriassãousados.

Apartedosistemaoperacionalquegerenciaahierarquiadememóriaégeralmente chamadodegerenciadordememória.Seutrabalhoémanterocontroledequaispartesda memóriaestãoemusoequeaspartesnãoestãoemuso,paraalocarmemóriaparaos processosquandoprecisamedesalocarquandoelassãofeitas,eparagerenciaratroca entreamemóriaprincipalediscoquandoprincipalmemóriaémuitopequenoparaconter

todososprocessos.Namaioriadossistemas,masnãoMINIX3,queestánokernel.

4.1.NecessidadesBásicasdaGerênciadeMemória

Softwareestãocrescendomuitorápido,maisdoqueamemória,porissoanecessidadeda

gerênciadememória.Nadécadade1980,haviamuitasuniversidadesqueultilizavamum

sistemadetempocompartilhadocomdezenasdeusuários(maisoumenossatisfeitos)em

umVAXde4Megabytesdememória.Hojeemdia,paraoMINIX3,amemóriamínima

necessáriaparafuncionamentoéde32MB,porémérecomendado1GB.Atendênciade

multimídiacolocaaindamaisdemandasnamemória,assimqueaboadegerênciamemória

vaisernecessária,pelomenos,atéapróximadécada.

4.2.GerenciamentodeMemória(Funcionamento)

Sistemas de gerenciamento de memória podemserdivididosemduasclassesbásicas:

aquelesquesemovemprocessoseparatrásentreamemóriaprincipalediscodurantea

execução(trocaepaginação),eaquelesquenãoofazem.

4.3.ParticionamentodeMemória

4.4.MemóriaVirtual

4.4.1.MotivaçãoparaosurgimentodasTécnicasdeMemóriaVirtual

4.4.2.MemóriaVirtualcomPaginação

4.4.3.PaginaçãoMultinível

4.4.4.Algoritmosdesubstituiçãodepáginas

4.4.5.MemóriaVirtualcomSegmentação

4.4.6.SegmentaçãoPaginada

5.SistemasdeArquivo

5.1.ConceitosBásicos

5.2.ImplementaçãodeSistemasdeArquivos

5.3.AlgoritmosdeEscalonamentodeDisco

Figureandtablecaptionsshouldbecenterediflessthanoneline(Figure1),otherwise

justifiedandindentedby0.8cmonbothmargins,asshowninFigure2.Thecaptionfont

mustbeHelvetica,10point,boldface,with6pointsofspacebeforeandaftereachcaption.

Figure 1. A typical figure Figure 2. This figure is an example of a figure

Figure 1. A typical figure

Figure 1. A typical figure Figure 2. This figure is an example of a figure caption

Figure 2. This figure is an example of a figure caption taking more than one line and justified considering margins mentioned in Section 5.

Intables,trytoavoidtheuseofcoloredorshadedbackgrounds,andavoidthick, doubled,orunnecessaryframinglines.Whenreportingempiricaldata,donotusemore decimaldigitsthanwarrantedbytheirprecisionandreproducibility.Tablecaptionmustbe

placedbeforethetable(seeTable1)andthefontusedmustalsobeHelvetica,10point,

boldface,with6pointsofspacebeforeandaftereachcaption.

Table 1. Variables to be considered on the evaluation of interaction techniques

References Tanenbaum, Andrew S. Operating Systems: Design and Implementation / Andrew S.

References

Tanenbaum, Andrew S. Operating Systems: Design and Implementation / Andrew S.

Tanenbaum,AlbertS.Woodhull.­­3rded.

Tanenbaum,AandrewS.;Wodhull,A.S.;SistemasOperacionais:ProjetoeImplementação

/AndrewS.Tanenbaum,AlbertS.Woodhull;traduçãoEdsonFurmankiewicz.­2.ed.

PortoAlegre:Bookman,2000.

Tanenbaum, Aandrew S. Sistemas Operacionais Modernos / Andrew S. Tanenbaum; traduçãoRonaldoA.L.Gonçalves,LuísA.Consularo,LucianadoAmaralTeixeira;

revisãotécnicaRaphaelY.deCamargo.­­3.ed.­­SãoPaulo:PearsonPrenticeHall,

2009.

MINIX3. Disponível em: <http://www.minix3.org/>, Acesso em:03 deDezembrode

2015.

MINIX3.Disponívelem:<http://www.inf.ufrgs.br/~johann/sisop1/minixpage/index.html>,

Acessoem03 deDezembrode2015.