Exercicios de repaso de Sistemas Operativos Monoposto
1. Indica cales son as principais funcións do S.O. coma xestor de recursos explicando
brevemente cal é a función que cumpre en cada unha delas
O Sistema Operativo é un Software especial que se encarga de xestionar un recursos
limitados para que os poidan usar unha serie de procesos que compiten por eles. Coma eses recursos
son moi limitados (a veces temos unicamente un para compartir, coma pode ser o caso da CPU) e os
procesos que os queren usar son moitos, ten que aplicar unha serie de políticas para decidir quen
obtén o recurso e durante canto tempo o pode usar.
Eses recursos son principalmente:
• Procesador
• Memoria
• Sistema de arquivos
• Dispositivos de E/S
Para xestionar eses recursos o S.O. utiliza un procesos que controlan dalgunha forma o uso
dos mesmos. Por exemplo:
• No caso do procesador: utiliza os planificadores a longo e curto prazo. O primeiro
decide que programas se converten en procesos en execución e o segundo decide de
entre todos os procesos en execución cal é o que obtén a CPU, aplicando algún
algoritmo para escollelo (FCFS, RR, SRT, SJF, ...)
• No caso da memoria ten que repartila entre varios procesos. O que soe facer é
subdividila en porcións para asignarlle unha ou varias desas porcións a cada un dos
procesos. As dúas formas de división máis utilizadas son Paxinación e
Segmentación.
• No caso do sistema de arquivos decide como preparar o uso do disco para poder
gardar datos nel, mediante un proceso que se chama “Formateado”. Unha vez
formateado o disco cada S.O. utiliza unhas técnicas diferentes para gardar os datos
(asignación contigua, enlazada, indexada, ...) que depende do sistema de arquivos
que use.
• No caso dos dispositivos de E/S ten que xestionar o uso dos buses e como fan os
periféricos para gardar os datos en memoria ou coller os datos de memoria para
almacenalos eles. Para iso son posibles tres técnicas:
◦ E/S programada
◦ E/S con interrupcións
◦ E/S con DMA
(Explícanse nun exercicio máis adiante)
2. Explica brevemente o significado dos seguintes termos
a) Monousuario: S.O. no que unicamente accede ó sistema un usuario.
b) Multiusuario: S.O. no que varios usuarios poden acceder ó sistema e compiten polos
recursos do mesmo.
c) Monotarefa: S.O. que unicamente pode executar un proceso de cada vez. Mentres ese
non remate non podemos executar ningún outro.
d) Multitarefa: S.O. que pode executar simultaneamente varios procesos, asignándolle a
cada un deles un tempo determinado. Realmente, como unicamente hai unha CPU o que
fai e ir executando un a un e intercambiándoos cada pouco tempo de forma que ó usuario
dalle a sensación de que se executan todos xuntos.
e) Multiproceso: Computador que conta con varios procesadores, polo que o S.O. pode
executar varios procesos realmente ó mesmo tempo.
f) Sistema de tempo compartido: Sistema multitarefa onde se lle asigna a cada proceso o
mesmo tempo.
3. Indica que planificadores actúan durante a xestión do procesador e cal é a función de cada un
deles.
Planificador a longo prazo: Xerarquiza os programas converténdoos en procesos. Cando
tentamos executar un programa este planificador actúa e, se todo está correcto, converte o programa
nun proceso que se carga en memoria e se engade á cola de preparados, onde actúa o planificador a
corto prazo.
Planificador a corto prazo: Coñecese tamén coma distribuidor (ou dispatcher) e decide que
proceso dos que están na cola de preparados se vai a executar a continuación. Para iso utiliza algún
algoritmo de planificación (FCFS, SRT, SJF, RR, ...)
4. Explica todos os estados posibles dun proceso e as transicións entre eles (debuxando un
grafo e cunha breve explicación de cada estado)
• Novo: Programa que queremos executar e lle mandamos ó planificador a longo
prazo.
• Preparado: Programa admitido no sistema polo planificador a longo prazo e que está
a esperar pola CPU (ten que collelo o planificador a corto prazo e asignarlla)
• Activo: Proceso que se está a executar na CPU
• Bloqueado: Proceso que está a esperar por algunha operación de E/S e mentras esta
non remata bloquéase para non entorpecer ós outros procesos que están preparados.
Cando a operación de E/S remate activase de novo e pasa á cola de preparados.
• Morto: Proceso que xa rematou a súa execución e espera que o S.O. o libere da
memoria.
5. Indica o que significa que un algoritmo de planificación sexa expropiativo ou non
Expropiativo significa que aínda que se estea a executar un proceso podemos quitarlle a
CPU (quítalla o S.O. mediante o planificador a corto prazo) si chega un novo proceso con máis
prioridade. Non expropiativo significa que cando un proceso entra na CPU o S.O. (mediante o
planificador a corto prazo) non pode quitarlle a CPU hasta que el a deixa libre, ben porque rematou
ou porque se bloqueou a espera dunha operación de E/S.
Nuevo
admitir
Preparado Activo
Bloqueado
planificado
Muerto
suspender
eliminar
activar
eliminar
interrumpido
eliminar
6. ¿Por que hai que facer divisións na memoria no caso de usar multiprogramación? Explica
brevemente as dúas técnicas vistas en clase para facer esas dúas divisións.
Porque si temos varios procesos que queren cargarse en memoria non poden solaparse uns
por encima dos outros. Cada un ten que ter o seu espazo en memoria RAM. Para conseguir eso
dividimos a RAM en porcións para asignarllas ós procesos. As dúas técnicas máis utilizadas para a
división da RAM son:
• Paxinación: Divide a RAM en segmentos iguais entre si chamados marcos de páxina,
e os procesos dividinse en páxinas (do mesmo tamaño cos marcos). Ese tamaño é
sempre unha potencia de 2. Cando cargamos un proceso en memoria imos cargando
as súas páxinas en marcos libres e imos enchendo unha táboa chamada táboa de
páxinas onde se relacionan as páxinas e o marco no que están cargadas para que o
S.O. poida acceder a esas páxinas na memoria física usando as direccións reais de
memoria.
• Segmentación: É parecido o anterior, pero agora os trozos nos que se divide a
memoria non son todos iguais, dependen do programa. A táboa de segmentos tamén
é un pouco máis complicada xa que ten que ter en conta o tamaño do segmento para
controlar que as direccións lóxicas emitidas polo proceso non se saina fora do seu
espazo de memoria.
7. ¿Que é a fragmentación interna? ¿E a externa?
Ó usar paxinación ou segmentación divídense tanto a memoria coma os programas a
executar en pequenas porcións (chamadas páxinas ou segmentos, segundo sexa o caso). Ó executar
un proceso imos cargando na memoria as paxinas ou segmentos dese proceso baixo demanda
(cargamos unha páxina ou un segmento cando nos fai falta). Neste escenario pódense dar dous
casos:
• Que ó dividir un programa en páxinas (que deben ser todas do mesmo tamaño) algunha
páxina non quede ocupada por completo. Cando carguemos esa páxina en memoria
ocupamos un marco completo, aínda que nese marco quede entón espazo libre. Ese
espazo libre é o que se chama fragmentación interna (espazo de memoria que está sen
usar pero que está asignado a un proceso e non se pode aproveitar para outro).
• Ou podemos ter o caso de que queiramos cargar un segmento dun programa e non exista
na memoria un espazo contiguo o suficientemente grande para albergalo, aínda que si
haxa memoria libre. Iso é a fragmentación externa (cando temos espazos de memoria
libres pero ningún deles é o suficientemente grande para albergar o segmento ou páxinas
que queremos cargar).
No caso de usar segmentación non existe fragmentación interna, xa que non segmentos non
hai memoria sen usar (o tamaño dos segmento axústase ó que necesitamos, non é fixo coma en
paxinación) pero si pode haber fragmentación externa. No caso de usar paxinación pode haber
fragmentación interna e externa (no caso de ter que cargar varias páxinas dun proceso ó mesmo
tempo e que non haxa marcos libres para todas elas) pero esta última podemos controlala si usamos
algún sistema de memoria virtual que nos permita facer swapping.
8. Explica brevemente como funciona o sistema de Memoria Virtual nun Sistema Operativo.
O sistema de Memoria Virtual permite que o espacio de direccións virtuais dun proceso sexa
maior que a memoria física dispoñible. Noutras palabras, que si temos un PC con, por exemplo, 512
MB de RAM, e un proceso necesita manexar 700 MB que lle pareza que existen eses 700 MB,
aínda que non sexa así. Para iso o S.O. usa un espazo en memoria secundaria (disco duro) que pode
utilizar para “aumentar” a memoria que ven os procesos. Úsase en paxinación ou segmentación para
manter en memoria unicamente as partes dun programa que se están a usar nun momento dado. O
resto está no disco hasta que nos faga falta (aínda que para o programa parece que están todas
cargadas en memoria RAM).
Un dos sistemas de memoria virtual máis utilizados é o que se chama demanda de páxina.
Neste sistema cando un proceso se carga en memoria cárgase o mínimo para que se empeze a
executar. Cando necesita ler ou escribir un dato que está nunha páxina que non está en memoria
prodúcese un fallo de páxina que xestiona o sistema operativo e cárgase esa páxina en memoria. Ó
comezar a execución dun proceso vanse producir moitos fallos de páxina, xa que as páxinas aínda
non están cargadas, pero segundo vai pasando o tempo e imos tendo máis páxinas dese proceso en
memoria os fallos de páxina van sendo cada vez menores (o interesante é que haxa poucos, xa que ó
S.O. lévalle tempo xestionalos). A principal vantaxe deste sistema é o de non ter que cargar todo o
programa completo en memoria si unicamente imos usar unha pequena parte. Outra vantaxe de
traballar con este sistema é que si chega un novo proceso que necesita cargar varias páxinas en
memoria e non hai marcos suficientes libres (o que sería fragmentación externa) podemos xestionar
ese problema e corrixilo: buscamos páxinas doutro proceso que non se estean a usar nese momento
e poñémolas temporalmente na área de intercambio (zona do disco duro usada para a memoria
virtual) para deixar marcos libres para cargar o novo proceso. Cando máis adiante necesitemos as
páxinas que gardamos na área de intercambio faremos “swapping” para gardar outras que estén en
memoria alí e recuperar esas no espazo que liberamos.
9. Explica brevemente as técnicas que pode usar un Sistema Operativo para a xestión do
espacio de almacenamento.
Para a xestión do espazo de almacenamento hai dúas técnicas principais:
• Asignación contigua: Cada ficheiro ocupa un número de bloques contiguos no disco
duro. Si temos un ficheiro de 100 KB e o tamaño de bloque no disco é de 1 KB
entón ocupará 100 bloques consecutivos no disco. Ten a vantaxe de que é fácil de
xestionar: sabendo onde empeza un ficheiro e o tamaño que ten podemos acceder a
calquera bloque do mesmo (unicamente hai que contar). Ten a desvantaxe de que
non é moi útil, xa que os usuarios normalmente non coñecen con anterioridade o que
vai a ocupar un ficheiro, e ademais estes poden cambiar de tamaño ó modificalos,
polo que teríamos que buscar outra zona no disco con suficiente espazo libre
contiguo para almacenalo, movendo todo o contido do ficheiro á nova posición.
• Asignación non contigua: Para corrixir os problemas que presenta a asignación
contigua úsase a asignación non contigua. Existen dous métodos:
◦ Asignación enlazada: Cada ficheiro é unha lista de bloques que se poden
encontrar en calquera parte do disco (non son contiguos), e nesa lista cada bloque
de datos contén uns bytes reservados coa dirección do seguinte bloque. Dese
xeito, na entrada do directorio onde se garda a información do ficheiro so se
garda o principio e o fin do ficheiro (o resto vaise recorrendo saltando de bloque
en bloque). Ten a desvantaxe de que se se perde un bloque por accidente pérdese
o enlace ós bloques que están despois dese, co que podemos perder gran parte
dos datos dun ficheiro pola falla dun único bloque. Ademais o acceso é lento xa
que hai que recorrer os bloques de un en un hasta chegar ó que queremos.
◦ Asignación indexada: Neste sistema úsase un bloque de índices para acceder ós
bloques de datos do ficheiro. Corrixe o problema do sistema anterior: si se perde
un bloque de datos unicamente perdemos os datos dese bloque, pero os demais
bloques seguen a ser accesibles. A principal desvantaxe deste sistema é segundo
o tamaño do bloque estamos limitados no tamaño máximo do ficheiro (polos
índices que pode albergar). Para solucionar iso utilízanse técnicas de indirección
(algúns índices en lugar de apuntar a bloques de datos apuntan a outros bloques
de índices para aumentar o tamaño máximo do ficheiro).
10. Explica brevemente as técnicas que pode usar un Sistema Operativo para a xestión de E/S,
indicando as vantaxes que presenta cada unha sobre as outras (si existen)
Existen tres técnicas para realizar a xestión de E/S. Xa se explicaron noutros exercicios, polo
que aquí se vai a poñer unicamente un resumo de cada unha delas:
• E/S programada: É a CPU a encargada de todo o proceso de E/S mediante a
execución dun programa específico (de aí o nome). Cando un programa solicita un
dato a CPU ten que executar un microprograma que se encarga de consultar
repetidamente o estado do dato hasta que estea listo. Cando este listo colle o dato,
tráeo para os seus rexistros internos e logo almacénao en memoria (estamos a falar
dun exemplo de lectura de datos). Durante ese tempo a CPU está adicada á operación
de E/S e non pode facer nada máis. Coma os periféricos son moi lentos respecto á
CPU a maioría do tempo é tempo perdido, xa que a CPU está a esperar polo dato sen
poder facer nada.
• E/S con interrupcións: tenta corrixir o problema da anterior eliminando o bucle de
espera da CPU. Cando o programa quere ler un dato a CPU pídello ó periférico e, en
lugar de esperar por el sen facer outra cousa, pasa a executar outro proceso. Cando o
periférico ten o dato listo mándalle unha interrupción á CPU para avisala e entón ela
recupera o proceso inicial, colle o dato e méteo nos seus rexistros internos e logo
almacénao en memoria. Neste sistema conséguese eliminar o bucle de espera pero
segue a ser a CPU a que fai todo o traballo de E/S para meter o dato na memoria.
Para que este sistema funcione o sistema necesita contar cun PIC (Controlador de
Interrupcións Programable) que xestione as interrupcións dos periféricos, xa que a
CPU so é capaz de xestionar unha de cada vez e pódense producir varias.
• E/S con DMA: tenta quitarlle á CPU o traballo de facer a operación de E/S e gardar
o dato na memoria. Para iso necesitamos un elemento hardware chamado
controlador DMA. Cando un proceso quere realizar unha operación de E/S a CPU
mándalle ó controlador de DMA os seguintes datos:
◦ Si a operación é de lectura ou escritura (gardar en memoria ou no periférico)
◦ A dirección dentro do periférico
◦ A posición de comezo en memoria RAM onde hai que ler ou escribir
◦ O número de palabras a ler ou escribir
Unha vez que o controlador de DMA ten todos eses datos a CPU pode pasar a
executar outros procesos. Cando o periférico ten o dato listo o controlador de DMA
envíalle unha interrupción á CPU para que esta libere temporalmente o bus de
memoria. Entón o periférico realiza a operación (lee ou garda o dato na RAM).
Cando a operación termina a controlador de DMA volve a interromper á CPU para
dicirlle que xa pode recuperar o bus. Durante todo ese tempo a CPU pode executar
outros procesos, polo que neste sistema o aproveitamento de CPU é mellor.
O mellor sistema é o DMA, pero require un hardware máis complexo (controlador de DMA
e interrupcións), polo que algúns periféricos hoxe en día seguen a usar os outros sistemas, xa que
serían máis caros de fabricar usando DMA. Os dispositivos críticos de E/S (discos, DVDs, CDs, ...)
hoxe en día poden utilizar todos DMA.