Resumen Operativosv2

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 34

Sistemas operativos

Procesos:

Estan conformados por : codigo , datos , memoria y pila.

Tienen un PCB que son los contadores , registros , planificacion , gestion y estado
del proceso ( info del proceso)

Planificador de corto plazo : regula el multiprocesamiento


Slecciona procesos que estan preparados para ser ejecutados y los asigna a la CPU.
Se ejecuta frecuentemente

Planificador de largo palzo : regula la multiprogramacion , selecciona procesos


desde un disco ( almancemaiento dmasivo) y los carga en memria para ejecutarlos.
Se ejecuta no tan seguido , por eso puede tener mas tiempo para ver que proceso
sumar.
Equilibra entre procesos limitados por CPU ( usan poco E/S y mas CPU) y procesos
limtiados por E/S , que lo hacen bastante mas seguido.

Algunos tienen el planificador de medio plazo , eliminan procesos de la memoria ,


reduciendo la multiprogramacion y despues se vuelve a guardar en memoria
continuando la ejecucion de cuando se saco. Esto es intercambio. Puede mejorar la
mezcla de procesos porque quizas se cambio unj rqeuitisto en la memoria y se
necesita mas disponible.

Cambio de contexto : se guarda el estado de la CPU , y despeus se restaura su


estado.
El kernel es el que lo guarda y por lo tanto es tiempo despediciado , ya que no hay
trabajo util en la conmutacion.

Los procesos se identificadn con un Proces ID (PID).


Los procesos pueden generar hijos (PPID) y puede pasar lo sigueinte.
El hijo es un duplicado del proceso , usa el mismo programa y mismos datos.
El hijo carga un nuevo programa.

Con respecto a ejecucion :


el padre puede seguir ejecutandose junto al hijo o el padre espera a q el hijo
temrmina de ejecutarse.

normalmente , el padre espera a que los hijos terminen , puede ser que el padre
termine y los hijos no , ahi se hace una terminacion en cascada , ya que todos
deben terminarse.

Los procesos pueden ser independientes ( no son afectados o afectan a otros


procesos) o pueden ser cooperativos ( si afectan a otros).

Comunicacion:

Memoria compartida : El SO al principio reserva memoria para los proceso y estos la


comparten , es mas rapido que el paso de mensajes.
Los procesos se encargan de no pisarse y sincronizarse.
Permite una velocidad maxima y mejor comunicacion. Es mas rapida ya que no usa
llamadas del sistema salvo para estabvlecer las zonas de meoria al prnicpio.
despues todos los accesos se tratan como accesos a memoria rutinarios y no usan del
kernel.
Se puede usar dos tipos de buffers : no limitado , que no tiene limite para la
memoria compartida . El consumidor debe esperar a que haya algo , pero el productor
no tiene limite en poner.
Bufer limtiado : El consuimidor tiene que ver si esta vacio y el productor tiene
que ver si esta lleno.

Paso de mensajes : util para peque�os datos , ya que no existe la necesidad de


evitar conlfitctos. Es mas facil de implementar , pero usa memoria.
Tama�o fijo de mensajes : implementacion directa , si tiene un tipo variable , es
indirecta.
Send , recieve.
Debe haber un elnace de comunicacion entre ellos.
Permite comunicarse y sincornziar accions sin compartir espacio y es muy util en
entorno distrivuidos.
Los proceos a comunicarse se deben referenciar , puede ser directa o
indirectamente. directo : nombra al proceso.
indirecto: los mensajes se envian y reciben a buzones de correo o puetos . Deben
tener un buzon compartido.
El buzon puede ser propiedad del SO o del proceso.
Si es del proceso , se sabe a quien va dirigido el mensaje del buzon .
Si es del SO , el mismo debe poder disernciar a quien va que.

Simetrico , receptor y trnasimor se concoen . Asimetrico , el transimor conoce , el


receptor no necesariamente lo conoce.

Sincronizacion:
Envio con bloqueo , el proceso que envia se bloquea hasta que el receptor o buzon
recibe el mensaje.
Envio sin bloqueo , manda el mensaje y sigue.
Recepcion con lboqueo , el receptor se bloquea hasta que hay un msj disponible.
Recepcion sin bloqueo , el receptor trae un mensaje valido o uno nulo.

Las dos con bloqueo : rendezvous .

Almacenamiento en buffer: los mensajes que se pasan , estan en una cola temporal.
La cola puede no exitir ( no hay almacenamiento) , ser limitada o ilimitada.

Socket : punto terminal de una comunicacion. Tiene una aquitectura cliente


servidor.Se recibe solcitud , la acepta el servidor y despues s establece.

Servicios remotos : RPC , procedimiento remoto. los mensajes estan bien


estructurados , no son simples paquetes de datos. -Acknowledge , datagramas , etc.

RMI , invocacion a metodos remotos : una hebra puede invocar un objeto que reside
en una locacion virtual. no le di mnucha bola a esto.

Hebras:

Una hebra es una unidad de utllizacion de la CPU , tiene su ID , contador , etc.


Comaprte con otras hebras del mismo proceso el codigo , los datos y otros archivos.
No comparten la pila y registros.
Muchas hebras : mas de una tarea a la vez.
Ventaja:permite que un programa se continue ejecutnado aunq parte de este este
bloqueado = mas capacidad de rta al usuario.
Al compartir la info , la aplicacion tiene varias hebras de actividades diferentes
dentro del mismo espacio de direccion.
Asignacion de memoeria y recurso de procesos + costosa que la de hebras , ademas el
cambio de contexto de hebras es mas rapido.

KLT y ULT.
KLT : hebras de kernel , las gestiona y soporte el mismo.
Hebras de usuario : el soporte lo dea el usuario.

Modelo muchos a uno.


Un KLT a muchsos ULT , se bloquea un ULT y se blqouea la KLT
Modelo uno a uno : cada ULT tiene su KLT , mucho mmovimiento de parte del SO.
Modelo muchos a muchos.
3 KLT y 4 ULT .

Modelo de dos niveles


3KLT 4 ULT y ademas aparte otro de uno a uno.

bibliotecas de hebras:
Biblioteca en espacio de usuario : no teine soporte de del kernel , estrcturas de
datos y codigo de la bilbioteca esta en el usuario , invocar a una funcion de la
bilbioteca , es usar una funcion local y no una llamada al sistema.
Bibliteca de kernel : Codigo y estructuras en el SO . invocar algo de la
bbiblioteca de kernel = llamada al sistema. Ralentiza mucho.

Un fork puede duplciar todas las hebras o solo una hebra de un mismo proceso . Esto
depende de si hay dos fork que se diferencian de partre del SO.

Cancelacion de herbas:
asincronica , una herba pide que se termina otra , puede generar conflictos si
esta escribiendo datos o algo cuando se pide que se termine.
diferida : la herba se fija periordicamente si tiene que terminar , por lo que
termina ordenada.

Se�ales : se puede dar una se�al a todas las hebras del proceso , a una aplicable
para la se�al , a adeterminadas hebras o una herba especifica que se especializa en
recibir se�ales.

Conjunto compartidos de hebras:


Se generan hebras antes de usarse y a medida que se necesitan , se toman de este
conjunto . Se terminan y las devuelven al conjunto.
Sirve ya que es mas costoso crear hebras que agarrar una ya creada desde el
principio. Agiliza .

Se peude establecer unos datos especificos de hebras , para el caso de que solo se
quiere que una hebra tome el control de algo.

Planificador LWP , lightwiethg proces.


Es una estructura intemredia entre ULT y KLT . cada LWP es asociado a un KLT. Para
el ULT , la LWP es un procesador. si la KLT se bloquea , la LWP se bloqua tambien y
la LWP asociada al LWP tambien se bloquea.
Si no hay suficientes LWP para las ULT , las que no tienen asignado un ULT tienen
que esperar a que la LWP se termine de desbloquear para encolarse para poder
bloquearse .

Se le puede dejar a la aplicacion que administre los LWP comoc rea conveniente.
El kernel avisa sobre los sucesos a la aplicacion con suprallamdas.

Planificacion CPU
Multiprogramacion : tener continuamente muchso proceso en ejecucion para maximizar
el uso de la CPU.
Cuando un proceso se pone en espera , la CPU esta inactiva , con la
multiprogamacion se usa ese tiempo para otro proceso y mantenre varios procesos a
la vez.

Rfaga de CPU -> rafaga de E/S -> rafaga de CPU.

El planificador de corto plazo seleciona un proceso que esta en memoria preparado


para ejecutarse.

Planificacion sin desalojo o cooperativa: se asigna la cpu a un proceso y este se


mantiene en la cpu hasta que es liberado o terminado por el proceso o pasa al
estado de espera.

Planificacion apropiativa: exitencia de planificar un nuevo proceso o no.


Se debe tener en cuenta que si un proceso esta escribiendo y lo desalojamos , y el
nuevo toca algo que se va a escribir , se tiene que ver que onda ( sicnronizar).

Normalmente el kernel desaloja una vez compeltada una llamada al sistema o cuando
se transifer eun bloque de E7S antes de hace run cambio de contexto.

El SO puede desactivar las interrupciones por un determinado momento.

Despachador : manda los procesos a la CPU , son elegidos por el planificador de


corto plazo. Debe ser lo ams rapido posible.

Algoritmos de planifiacion:

FCFS : fifo
genera el efecto convoy : varios procesoss esperan a que un proceso de larga
duracion deje de usar la CPU. Es preferible dejar a los procesos mas cortos al
principio.
Es cooperativo.

SJF : shortest job first , primero el que es mas corto. es optimo


Es dificil implementarlo ya que no se sabe la duracion de la siguietjne solicitud
de CPU.
Se usa como mecanicmo se planificacion a largo plazo.
No se puede implementar en el planificador corto ,de CPU , pero se predice su valor
de sus anteriores rafas.
Genera inanicion en caso de desalojo , yha que al desalojar a uno mas chico que
venga en cualquier momento que mi proceso , si tengo uno mas largo que los demas ,
nunca va a poder ejecutarlo.

Prioridades:a cada proceso se le asigna una prioridad y se le asigna al que tiene


la mas alta.
Tambieng enera inanicion ya que podria entrar siempre uno de mayor prioridad , esto
se mitiga metiendo el envejecimiento.

Round robin :
Se asigna un cuanto de tiempo para los procesos y estos se corren ese cuanto de
tiempo. Puede ser que se libere la cPU voluntariamente si el proceso utiliza menos
del cuantum.
Desaloja los procesos que exceden el cuanto de tiempo. si hay n procesos cad
aproceso tiene 1/n de tiempo de procesador.
Si es muy largo , es muy parecido al FCFS , si es muy chico , se genera una
comparticion del procesador y da la apariencia que cada proceso tiene su
procesador.
Es conveniente que el cuanto sea grande , ya que si x ejemplo tenemos un proceso de
12 ciclos y el cuanto es de 6 y solo esta este , se genera un cambio de contexto al
pedo , ya que vuelve el mismo . Si el cuanto es de 12 , no genera cambio de
contexto al pedo.

colas multinivel:

Divide las colas de los proceso en varias colas disitntas de acuerdo a su funcion o
alguna propiedad de los procesos.
Cada cola tiene su algorimto de planifcacion. Ademas se hace una planificacion
sobre las colas ( la cola A puede tener mayor prioridad que la cola B).

Colas multinivel retroalmientadas:


Los procesos se pueden mover de cola en cola.
Por ejemplo se tiene una coal de Cuantum 8 , dsps de 16 y despues FCFS.
Un proceso entra , ejecuta sus 8 , si sobra , va a la de 16 , si sobra va a la de
FCFS . Cuando esta en la 16 , se ejecuta si la de 8 esta vacia y asi..

Planificacion multiprocesador:

En procesadores homogeneos ( son iguales).


Multiprocesamiento asimetrico . Hay un maestro y los demas son esclavos , el
maestro decide que ejecutar.
Multiprocesamientro simetrico . Los procesadores se auto planifican. Puede haber
una cola comun o cada procesador puede tener su cola privada de procesos. Igual ,
todos se fijan la cola de procesos preparados

Afinidad al procesador : cuando se ejcuta un proceso p , en el procesador P1 , P1


guarda en su cache su memoria. Entonces si p despues va al procesador P2 , la cache
guardada en P1 no sirve y se debe guardar de nuevo en cache de P2.
Por eso , se dice que p debe tener afinidad a P1.
Si el SO quiere hacer que un proceso se ejecuta en un procesador , pero no lo
garantiza , es afinidad suave.
Si hay afinidad dura , entonces no se permite que el proceso se ejecute en otro
procesador.

Equilibrador de carga: Puede ser que un procesador este a full mientras que otro no
, por lo que se equilibra la cargay se intenta distribuir equitativamente la carga
de trabajo.
Dos formas : Migracion comandada ( Una tarea epseicfica comprueba periodiamcanete
la carga en cada procesador y si encuentra desquielibrio , distribuye la carga de
los sobre cargados a los menos ocujpados o inactivos)
Migracion solicitada : Un procesador inactivo , extrae de uno ocupado una tarea que
esta en espera.
Pueden estar las dos formas al mismo tiempo.
Esto contrarresta los beneficios de la afinidad del procesador.

Multihebra simetrico:

Los procesadores simetricos dejan que varias hebras se ejecuten de forma


concurrente , ya que proporcionan varios prcoesadores fisicos.
Se puede aplicar varios procesadores logicos en vez de fisicos , esto se llama
hyperthreading o mecanismo multihera simetrico.
Se crean varios procesadores logicos sobre uno fisico. Cada procesador logico tiene
su estado de arquictrua y maneja su tratemitno de interrupciones. De l fisico se
comparte la memoria cache , lso recursos y los buses.
Es una funcionalidad proporcionada por HW , ya que da la representacion de estado
de la arquiectura de cada procesador.
Con esto , un sistema puede proporcionar dos hebras en un mismo procesador fisico (
2 logicos) y no necesariamente en dos procesadores fisicos.

PLanificacion de hebras:
El SO planifica KLT . las ULT son gestioandas por la biblioteca de hebras.
las ULT tiene ambito de contienda del proceso ( PCS) , ya que hebras de un mismo
proceso compiten por un proceso LWP.
LAs KLT tienen ambito de contienda del sistema (SCS) , ya que las hebras de kernel
compiten por el procesador.

normalmente PCS es con prioridad.

Como selecionar un algoritmo?

Modelo determinista , se toma una carga de trabajo y se prueba con todos los
algoritmos y se ve cual es el mejor.

Sincronizacion:

Condicion de cerrera: Varios procesos manipulan y entrean a los mismos datos


concurrentemente y el resultado depende del orden en que se da el acceso.

seccion critica: parte del codigo en el que el proceso peude modificar variables
comunes , actualizar tablas o escribir archivos.
Dos procesos no pueden escribir su seccion critica al mismo tiempo.
La solucion debe satisfacer : Exlusion mutua ,
Progreso ( si la seccion critica esta disponible y varios quieren ejecutarla , solo
los que no esten ejecutando las secciones restantes pueden participar en al
decision de cual entra y esta decision nos e puede posponer indefinidamente)
Espera limitada:Hay un limite para las veces que otros procesos entren en la
secicon critica despues de que un proceso hizo la solicitud y antes de que haya
sido concedida ( ... )

Dos metodos para gestionar las secions criticas.


Kernels apropiativos y no apropiativo.
El no apropiativo no tiene condiciones de carrera ya que tiene un KLT en el
procesador hasta que el mismo salga x si mismo.

Solucion de Peterson: Solucion de Software que satisface los3 requisitos.

Soluciones de HW : Semaforo : variable que se accede por las operaciones atomicas


wait y signal.
Hay semaforos contadores ( controlan el acceso a un determinado recurso formado por
un numero finito de instancias) o semaforos binarios ( mutex).

Los semaforos requieren espera activa , osea el rpoceso que quiere entrar a una
region critica ocupada ejecuta un bucle en el codigo de entrada.

La espera activa desperdicia ciclos de CPU ya que el bucle ( spinlock) permanece en


espera para adquirir el cerrojo.
Los cerrojos tienen la ventaja que no necesitan de un cambio de contexto cuando un
proceso espera para adquirir el cerrojo..

Se peude resolver de forma que cuando se para en el wait , el proceso se bloquea


asi mismo en una cola de espera para acceder al semaforo y este se reinicia cuando
se ejectura el signal ( wakeup)

La lista de espera se implementa con un campo de enlace en el PCB..


Los semaforos se deben ejecutar atomicamente.

Un semaforo con cola de espera puede hacer que dos procesos esperen indenifidamente
a que pase algo que solo puede producirse por consecuencia de una operacion de los
otros procesos. ( el suceso es un signal) . Cuando se llega a este estado , hay
interbloqueo.

Tmb puede haber inanicion ( bloqueo indefinido) si se usa LIFO para la cola del
semaforo.

Monitores: Tienen un Conjunto de operaciones definidas por el programador que


tienen exlucsion mutua dentro del monitor. contiene variables que definen el estado
de una sintancia.
Asegura que solo un proceso este activo cada vez dentro del monitor , asi el
programador no codifica explictiamente la restriccion de sincronizacion.
NO es suficientmente potente para modelar algunso esquemas de sincronizacion ,
hacen falta mecnaicmos adicionales ( variables de condicion).

transaccions atomicas - = que en gdd.

Deadlock - interbloqueo

Un conjunto de procesos esta en interbloqueo cuando todos los procesos del conjunto
esten esperando a que se produzxca un suceso que solo puede produciste como
resultado de la actividad de otro proceso del conjunto.

Condiciones para que exista un interbloqueo:


Exclusion mutua : al menos un recurso debe estar en modo no compartido.
Retencion y espera : un rpoceso debe retener al menos un recurso y esperando para
adquirir otros adicionales que estan retenidos por otros procesos.
Sin desalojo : los recursos no se puedend esalojar , solo pueden ser liberados
voluntariamente.
Espera ciruclar : el conjutno de procesos en espera debe ser tal que P1->P2->P3->P1
.. es circular.

TRatamiento de interbloqueos:
Evasion asegurnado que nunca va a entrar en interbvloqueo , previniendolo.

Deteccion y recuperacion desde el interbloqueo

Ignorar el itnerbloqueo

PRevencion:
Evitando alguna de las cuatro requisitos.

Exlucison mutua: generalmente no se puede evitar ya que la mayoria de los recursos


son no compartibles , pero un caso seria la lectura.

Retencion y esperA: se puede hacer , pidiendo que el proceso solicite todos los
recursos y se le esean asignadnos antes de ejecutarlo.( hayq ue asegurarse que lo
que solicitamos al prnicpio nos e va a cambiar , x ejemplo pedimos un archivo , lo
modificamos . Luego para laimpresora , pedimos el archivo de nuevo y la impresora ,
teniamos que habre liberado el archivo. Este pudo haberse modificado).
Otro es que permita solicitar recursos adicionales solo cuando no tenga nada
retenido. ( puede generar inanicion)

Sin Desalojo: es el mas facil de aplicarse , pero no sirve para impresoras o


unidades de cinta.

Espera ciruclar: imponer un orden de los recursos y pedir que se solicite en un


orden creciente de enumeracion.

Evasion: Para no afectar la tasa de utilziacion de dispostivos o un menor


rendimiento del sistema ( generado x prevencion) , podemos evadirlo de otra forma:

requerir informacion adicional de como vana ser solicitados los recursos.


Cada proceso declara su numero maximo de recursos que va a usar , de manera que se
conozca la secuencia para evitar el interbloqueo.

Estado seguro: se le puede asignar recursos a cada proceso en detemrinado orden sin
que se produzca Deadlock. Esto pasa si existe una secuencia segura. ( lo q reicne
dije).

Si la secuencia no existe , el sistema esta en estado inseguro.

Un estado seguro = no puede haber deadlock.


Todo interbloqueo es realizado en estado inseguro.

Pero no todo estado inseguro significa deadlock , ya que en el estado inseguro , el


SO no puede impedir que los procesos soliciten recursos de tal modo que se produzca
un interbloqueo. El comportamiento de los procesos controla el estado inseguro.

Algoritmo del banquero: es un algoritmo para EVITAR interbvloqueos.CAda proceso


debe declarar el numero maximo de isntancias de recursos que puede necesitar y no
puede exceder el numero total de recursos del sistema.
Teniendo la matriz de recursos alocados , recursos maximos y sabiendo los recursos
disponibles , se hace maximos-alocados y nos da los necesitados. Ahi se trabaja
para encontrar la secuencia segura.

Deteccion de deadlock: Puede haber deadlock , entonces se usa un algoritmo para ver
si lo hay y otro para recuperar el interbloqueo.
Un deadlock se produce solo cuando un proceso realiza una solciitud que no se puede
conceder de fomra inmediata . En caso extremo , corremos el algorimto de deteccion
siempre que pase eso.

El algoritmo de deteccion genera una gran sobrecarga del uso del procesador , por
eso se usa en intervalos mas grandes o cuando la CPU tiene baja utilizacion.

REcuperacion:Hay deadlock.
Se puede informar al operador para que haga algo de forma manual o se puede hacer
algo de forma automatica.

Se puede solucionar de dos formas : Interumpir uno o mas procesos para romper la
cadena de espera circular o desalojar algunso recursos de los procesos bloqueados.

Se puede interrumpir todos los procesos o ir viendo de a uno hasta que el ciclo se
termine.

Lo mismo sucede con el desalojo , pero se debe ver lo siguiente:


Que recursos hay que liberar?
Anulacion , normalmente conviene interrumpir el proceso y liberarlo , para intentar
llegar a un estado seguro.
Inanicion, No siempre hay que elegir a la misma victima a desalojar , sino nunca se
va a poder terminar su proceso.

Deadlock:
Es suficiente la espera circular cuando se forma un ciclo y cuando hay solo un
recurso de cada tipo.

Gestion de Memoria.

La cpu extrae instruccione sde la memoria de acuerdo con el contador del rpograma.

LA CPU solo puede acceder directamente a la memoria principal y a los registros


integrados(del procesador).

El acceso a memoria requiere muchos ciclos del reloj del procesador para poder
compeltarse , por lo que el procesador se detiene , porque no tiene los datos
requeridos para compeltar la isntruccion que se esta ejecutando.
Por eso se a�ade una memoria rapida entre la CPU y la memoria principal. La Cache.

Tmb itneresa la proteccion del SO de los psoibles accesos por aprte delso procesos
de los usuarios y tmb proteja a los usuarios de unos a otros. Esto es hecho x el
HW.

Se puede dar la proteccion del acceso a la memoria con un registro base , es decir
la memoria fisica legal y el registro limite , el tama�o del rango.

La proteccion del espacio de memoria se hace cuando el HW de la cpu compara todas


las direcciones generadas en modo usaurio con el contenido de lso registros.

Los registros base y limite solo pueden ser cargados por el SO mediante
isntrucciones en modo kernel. Asis e evita que los usaurios cambien el contenido.

Los programas estan en disco en forma de archivos ejecutbaels binarios.

Los procesos del discoq eu estan esperando a ser cargados en memoria estan en la
cola de entrada.

Se elije a uno de los rpcoeso de la cola de entrada yh se carga en memoria.


Mientras se ejecuta e proceso , este acede a las instrucciones y datos que estan en
memoria. Depsues se termina su ejecucion y la memoria queda disponible.

La reasignacion de las intrucciones yt datos a direcciones de mmeoria se hace en lo


siguientes:

Tiempo de compilacion , Tiempo de carga y tiempo de ejcucion.

Una direccion generada por la CPU es direcicon logicay la direccion que se ve en la


unidad de memorai es direccion fiscia.

Los emtodos de reasingaicon en tiempo de compilacion y tiempo de carga , genran


direcciones logicas y fisicas identicas. El de tiempo de ejecucion ahce que logica
y fisica difieran.
direccion logica = direccion virtual.

La correspondencia entre las dirs logicas y fisicas es estabelcida por el


dispositivo de HW MMU ( memory manamgnet unit).

El programa de usuario nucna ve las direcioens fisicas reales.

Espacio de direciones lgoicas , espacio de direcciones fisicas , son un conjunto de


.. dir logica . y dir fisicas.

El tmaa�o del proceso esta limtiado por el tmaa�o de la meoria fisica.

Carga dinamica : una rutina no se carga hasta que se invoca .


El programa principal se carga yt verifica si se cargaron las rutinas que se
necesitan , si no es asi , se van cargando. el cargador de montaje reubicable las
carga.

Asi , una rutina no utilizada no se carga en memoria.

El SO no se encarga de la carga dinamica , son los programas los que se


ecnargan( los usuarios que dise�aron los rpogramas). pero el SO puede ayudar al
rpogramdor dando bibltiocetasd que implemtnan la carga dinamica.

Montaje estatico : las biltiocetas de lenguaje del sistema se tratna como otro
modulo objeto y son itnegrdas por el cargador dentro de la imagen binaria del
programa.

Cada pgroama de un sistmea tiene que incluir una copia de su biblitoeca de lenguaje
dentro de la imagen ejecutable. Asi se despercicia espacio de disco como memroia
prncipal.

Montaje dinamico : se incluye un STUB en la imagen binaria para cada referencia a


una rutina de la bibltioeca , el stub es un fragmento de codigo que indica como
localziar la rutina adecuada de bitlioca en memoria o comoc argar la biltitoeca si
la rutina nos e encuentra en memoria.
Si no es asi , el programa carga en memoria la rutina. De esta forma cada vez que
se ejecutae este semgento , se ejecuta de la biblioteca y no realiza de nuevo el
montaje dinamico.
Asi todos lor pceosos que usan una detemrinada biltieoca de lenguaje solo necesitan
ejectuar uina copia del codigo de la biblitoeca.

Tambinen se puede sustiutir y reemplazar bibioltecas.

El montaje dinamico prequeire ayuda del SO , si los procesos de la memoria estan


proteigdos , entonces el SO solo puede comrpobar si la rutina se encuentra en
emmoria y es la unica que deja que muchos rpocesos accedan a la misma direcion de
memoria.

Intercambio.
Los procesos pueden ser itnercambiados temporalmente , sacandolos de la meomria y
poniendolos en un almacen de respaldo y despues vlviendolso a llevar a memoria para
continaur la ejecucion.

Cada vez que un rpcoeso termine su tiempo de carga ,s e itnercmbia por otro
proceso. Idealmente se siempre debe haber un proceso en memoria listo para
ejecutarse . ( esto en RR).
En priordidades , se peude descargar el proceso de menor piriodad y poner el de
mayor. Cuando temrine el de mayor se puede itnrcambiar d enuevo por el que se habia
sacado.
Un proceso descargado se volvera a cargar en el mismo espacio de memoria que
ocupaba antes.(n normalmente) . Esto depende del metodo de reasignacion , si es en
tiempo de compilacion o de carga , si es asi ( ya que es dificl cambiarle el lugar
de memoria).
Si es en tiempo de ejcucion se peude mover , xq la direccion fisica se calcula en
tiempo de ejcucion.

El disco de itnercambio debe proprocionar un acceso directo a las imagenes de


memoria. El Sistema tiene una cola de procesos preparados que tiene todos los
procesos cuyas imagenes de memoria se encuentren en el itnercambio o en la memoria
y esten listos para ejecutarse.
Cuando el planficiador se fija para meter un nuvo proceso , se fija si el sigueitne
proceso a ejecutar en la cola esta en memoria. Si no es asi y no hay una region de
memoria libre , el despachador intercambia el proceso a ejecutarse por otro que
esta en mmeoria.
El tiempo de cambio de contexto en los sitemas de itnercambios es alto.
La mayor parte del tiempo de itenrcmabio es el tiempo de trasnferencia.

Para intercambiar un proceso , el mismo deebe estar totlamente inactivo.


Soluciones : no descargar nucna un rpoceso que tenga E/S pendientes o usar las E/S
con buferes del sistema operativo . Con el ultimo caso la trasnfernecia entre el
bufer y la memorai del prcoeso se ahce despues de cargar de nuevo el proceso.

Asignacion de memoria continua:

Nromalmente hay 2 particiones : memoria del SO y memoria para procesos de usuario.


Cada proceso esta coneitnudo en una unica seccion contigua de memoria.

Codigo transitorio del SO : a veces cuando un dispositivo no se usa mas , queda en


memoria sus datos del controlador , es conveniente sacarlo de memoria del SO asi
queda mas para los usaurios . Esto es codigo transitorio del SO.

PArticiones de tama�o fijo : Cada particion puede contener exactamente un


proceso , asi la multigprogramacion es limitada por el numero de particiones
disponibles.
Cuando una aprticion esta libre , se slecicona un proceso de la cola de entrada y
se lo carga en la apticion. Caudnot ermian la particion esta libre.
Particiones fijas : el SO tiene una tabla de particiones de memorai que estan
disponibles y cuales estan ocupadas. Disponjible = agujero.
Llega un proceso y se busca un agujero que sea grande com para bancar al proceso..
Si se encuentra se asigna la memorai justa y mantiene el resto de la memoria
disponible para otras cosas.

El SO toma en cosndieracion los requisitos de memoria en cada proceso y la cantidad


de memorai disponible para ver a que proceso de la coald e entrada se le asigna
memoria.

Se puede ordenar la cola de entrada con algorimtos de plannificacion.


En un detrmirnado momento quedan agujeros de diversos tama�os disperso x la memoria
,. Si el agujero es muy grande para un proceso , se lo divide en dos partes ,
asignadno una parte y devolviendo la otra al conjutnod e agujeros.

Si el nuevo agujero es adyacente a otros agujeros , se combinan apra formar


agujeros mas grandes.

como elegir el espacio?


Primer ajuste : se asigna el primer agujero que sea lo suficentemente grande.
Mejor ajuste: Se asgina el agujero mas chico que tenga el tama�o suficiente. Se
explota la lsita compelta a menos que este ordenada x tama�o.
PEor ajuste: se asigna ela gujero de mayor tama�o.

primerajsute y mejro ajsute > peor ajuste.


Primer ajuste : mas rapida de implemtnar que mejor ajuste.

Fragmentacion externa : espacios chicos que no son contiguos y no se pueden llegar


a signar.
Por la regla del 50 por ciento , un tercio de la memoria puede no ser tuilizable.
Si tenemso N bloques asignados , se pierden 0,5 N bloques por l framentacion.
Fragmentacion interna : se asigna un bloque , pero el mismo es de 1KB y usamos 2
bytes nomas.

PAra solucionar la fragmentacion externa se puede aplicar la comapctacion , pero


usa muchos recursos y es caro de imlementar. Pero reordena los espacios de
memoria.
Otra solucion : paginacion y semgantacion , los espacios de memoria no son
contiguos.

Paginacion:

Esquema de gestion de memoraiq ue permite que el espacio de direcciones fisicas de


un proceso no sea ocntiugo.

Evita encajar fragmentos de memorai detama�o variable en el almacen de respaldo.

No es posible la compactacion en el amancenamiento de respaldo , ya que el acceso


es mucho mas lento.

Se descompone la memoria fisica en una serie de bloques de tama�o fijo llamadas


marcos y se descompone la memorai logica en bloques de mismo tama�o llamados
paginas.
Cuando se ejcuta un proceso , sus paginas se cargan desde el almacen de respaldo en
los marcos de memoria disponibles.
el almacen de respaldo esta divido en blques de tama�o fijo que tienen el mismo
tama�o que los marcos de memoria.
Toda direccion genrada por la CPU se divide en dos partes , numerod e pagina y
despalzamiento de pagina.
El numero de pagina es el indice para una tabla de paginas.
La tabla de paginas tiene la direcion base de cada pagina en memoria fisica.
LA direccion base decombina con el desplazamiento de pagina para definiar la
direccion de memoria fiscia que va a la memoria.

el tmaa�o de pagina esta definido por el HW .

PAginacion : no hay fragmetnacion externa , todos los marcos libres pueden ser
asignados a un proceso.
Hay fragmetnacion interna , ya que el ultimo marco puede no estar completamente
lleno

Las operaciones de E/S de disco son mas eficientes cuanto mayor sea el numero de
datos transferido.

El uisuario ve la memoria como un unico esapcio que solo tiene ese programa.

En la rpactica el programa esta disperso por toda la memoria fisica.

La diferencia es con el HW de traduccion de direcciones.


Se tiene una estructura para el SO llamda tabla de marcos , que tiene una entrada
por cada marco fisico que indica si esta libre o asignado y en caso de estar
asignado , a que pagina de que proceso o q proceso tiene asignado.

el SO tiene una copia de la tabla de paginas de cada proceso.

La mayoria de los SO tienen una tabla de paginas para cada proceso , almacnenado un
puntero a la tabla de paginas en el PCB.

De manera simple la tabla de paginas se puede implementar como un conjuntoi de


registros dedicados.
Estos registros se encesita que sea rapido modificarlos , ya que asi el proceso de
traduccion de direccions esea mas eficiente.

La carga o modificaicon de los registros de la tabla de paginas tiene instrucciones


privielgiadas , solo el SO puede cambiarlas.

Hoy en dia la tabla de paginas se mantiene en memoria principal utilizando un


registro base de tabla de paginas , para apuntar a la tabla de paginas.
Con esto se hacen dos accesos a memoria , primero a la tabla de paginas y despues
el acceso al marco. El acceso a memoria se ralentiza dividendose a la mtiad.
Por eso se usa un mecnaismo de intrcambio de memoria.
Por eso se usa una cache , la TLB.
Es una memorai asociativa de alta velocidad.
Cada entrada del TLB tiene dos partes , una clave y un valor.
Cuando llega algo a la TLB , se compara en ella hasta encontrar su cclave y asi
devuelve el valor. Esto es muy rapido.
osea tengo dir logica , comparo en la TLB si lo encuentro , OK.
Sino , tengo un fallo de pagina y rnecesito ir a memoria paraconsutlar la tabla de
paginas. y de ahi consigo el numero del marco y voy a memoria.
Si el TLB esta lleno , el SO tiene que selecionar entradas para sustituirla.
La sustisucion puede ser LRU ( leasst recently used).Algunos SO pueden hacer que
las entradas de la TLB se CABLEEN , asi esas entradas no se eliminan. ( ejemplo ,
las entradas para el codigo de kernel.)

Proteccion contra otros procesos:


Tambien la TLB tiene un identificador de espacio de direcciones (ASID) , con el
cual se fija si el proceso que pide la pagina , lo pide en su pagina y no en la de
otro proceso ( en la TLB la ASID identifica al proceso).
Si no concuerda , da fallo de pagina.
Si no se usa ASID , la tablka de TLB se deberia borrar o vaciar , para que otro
proceso no acceda a las apginas de uno que paso recien.

Proteccion en los marcos: bits asociados a cada marco.


Se pueden definir como de lectura-estrictura o solo de lectura.
Un intento de escribir una pagina de solo lectura hace una interrupcion HW al SO.

Con la apginacion se puede compartir codigo comun.

Osea varios programas pueden acceder por ejemplo al ejecutable del bloc de notas ,
pero cad aproceso tiene sus propios datos al respecto.

Estructura de la tabla de paginas

Paginacion jerarquica.

Al ser muy grande la tabla de paginas , se puede hacer una tabla de la tabla de
paginas , osea doble jerarquia , lo mismo con 3 o 4.
Esto sirve para reducir el espacio de la tabla de paginas . Pero muchas tablas de
paginas no es eficiente .

Tablas de paginas Hash.

Se usa una tabla hash de paginas , donde el valor hash es el numero de pagina
virtual.
La entrada de la tabla hash tiene una lista de elmentos que tienen como valor hash
una misma ubicacion.

Al numero de pagina se le aplica la funcion hash , despues se usa ese valor para
buscarlo en la tabla hash. Si enceuntra correspondencia en la lista que esta en la
tabla hash, se utiliza el marco de la pagina que se encuentra para formar la
direccion fisica.
Si no es correspondiente , se exploiran las siguientes entradas hasta encontrar el
correspondiente numero de pagina virtual.

Tambien esta la tabla de paginas de cluster , que es parceido a las tablas de


paginas hash , pero cada entrada de la tabla hash apunta a muchas paginas en vez de
una sola pagina.
Asi una entrada de la tabla de paginas puede mapear muchos marcos de pagina fisica.
Sirve cuando los espacios de direciones en los que las refernecias a memoria no son
contunioas y estan disperas por todo el espacio de direcciones.

Tabla de paginas invertidas.


Problema : las tablas de apgians pueden contener millones de registros y pueden
ocupar mucha memoria , por eso aparece la tabal de pagians invertida.

Tienen una entrada por cada marco de memoria.


Cada entrada tiene la direccion virtual de la pagina y tiene info sobre el proceso
que tiene la pagina.
Solo hay una unica tabla de paginas y solo tiene entradas por cada pagina de
memoria fisica.

Normalmente requiere un identificado del espacio de direcciones ASID.

Reduce la cantidad de memoria para guardar la tabla de paginas , pero aumenta el


tiempo encesario apra explorar la tabla. aunque este ordenado por la direccion
fisica , las busquedas se hacen con la direccion virtual y puede ser necesario
explorar toda la tabla para encontrar la correspondencia.

PAra aliviar esto , se puede unsar una tabla hash para limtiar la busquead a una
sola entrada de la tabla de paginas o a unas pocas entradas. Pero eso agrega una
lectura de memoria ams ( lectura de la tabla de hash y otra para la tabla de
paginas.
Igual antes se ve la TLB que el hash.
No se peude implementar la memoria compartida , porque solo hay una entrada virtual
para cada pagina fisica y una misma fisica no puede tener dos virtuales.

Segmentacion

cada segmento tiene un nomrbe y una longitud.


El usuario especifica la seegmentacion.
Los semgentos estan numerodos y se hace refenrica a ellos con un numerod e
semgento.
Normalemtne los semgentos son : codigo , varbailes globales , cumulo de memoria ,m
bitioltieocas , pilas.
tabla de segmentos: cada entrada tiene una direccion base del segmento y un limite
del segmento .
La direccion base es la direccion fisica inical del lugar donde el segmento reside
en memoria.
El limite es la longitud de l segmento.

Memoria virtual:

permite la ejecucion de prcoeos que nos e encuentrna completmante en memoria.


Los programsa pueden tener un tama�o mayor a la memoria fisica.

El programador no se preocupa por la cantidad de memoria fisica disponible.

Los marcos pueden no ser contiguos.

Espacio de direcciones virtuales de un proceso : es la forma logica de almacenrar


un proceso en la memoria.
Tiene el codigo , los datos , el cumulo , un espacio y la pila . El cumulo sube al
espacio y la pila baja al espacio.
El cumulo es para la asignacion dinamica , sube. la piula es para las sucesivas
llamdas a la funcion.
Estos espacios son espacios de direcciones dispersos. los huecos pueden rellenarse
a medda que crecen los segmentos de pila o cumulo o si se queire motnar
dinamicamente unas biblitoecas.

Tambien permite que se compartan archivos y memoria entre procesos.

Paginacion bajo demanda:


Se cargan inicalmente las paginas necesarias y se van ca rgar las paginas cuando se
solicitan en la ejecucion del programa. Las paginas que nunca accede el programa no
se cargan en memoria fisica.
ES parecido a paginacion con itnercambio , donde los procesos estan en mmeoria
secundaria.
Cuando se queire ejecutar un proceso y se intercambia para cargarlo en memoria. En
lguar de intercambiar el proceso completo se sua el itnercambiador perezoso , el
que cambia una pagina solo cuando esta es necesaria.
Intercambiador = paginador.

Cuando se tiene que cargar un proceso , el paginador hacer una estimacion de que
paginas van a ser usadas antes de bajar de nuevo el proceso.

Se sua un soprote de HW para distinguir las paginas que estan en memoria y las que
estan en disco . (bit valido - invalido).

Cuando el prgrama quiere acceder a una pagina que no esta en mmeoria , hay uan
interrupocion de fallo de pagina.

Paginacion bajo demanda pura : nunca se carga una pagina en memoria hasta que es
requerida.

localidad de referencia...

HW para paginacion bajo demanda : Tabla de paginas , memorias ecundaria.


Se tiene que poder reiniciar cualqueir instruccion despues de un fallo de pagina ,
asi cuando se trajo la pagina , la misma se puede ejecutar.

Afecta el rendimiento del sistema , ya que es mucho tiempo buscar cada pagina en
disco y traerla .
1 - servir la itnerrupcion de fallo de pagina 2- leer la pagina 3- reiniciar el
proceso.

USar el espacio de intercambio es mas rapido que el sistema de archivos porque el


espacio de itnercambio asigna bloques mayores y no se utilizan mecnaimos de
bsqueada de archivo ni metodos de asignacionj indirecta.

Copia durante escritura.


Los procesos padre e hijo pueden compartir inicalmente las mismas paginas.
Si cualquiera de los dos cambia algo , esta se copia aparte.
Normalmente se tiene un conjunto compartidao de paginas libres para satisfacer
estas solicitudes.
Estas paginas se asignan nromaelmtne con la tecnica relleno de ceros bajo
demanda , donde las paginas se llenan de ceros atnes de asignarlas , elimiando el
contenido anterior.

Tambien hay un vfork especial .

Cuando se necesita un marco libre , se puede sacar un proceso entero con sus
paginas o se pueden sustituir paginas.
Sustitucion de paginas:
Si no hay un marco libre , se localiza uno que no este siendo usado y se libera. Se
puede liberar escribiendo su contenido en el espacio de intercambio y modficando la
tabla de paginas para indicar que esa pagina ya no esta en memoria.

Si no hay un marco libre se necesitan dos accesos , una para descargar la pagian y
otra para cargar la nueva.
Esto se puede reducir poniendo un bit de modificacion . Si se modifico la pagina ,
la misma debe ser descargada , si no se modifico significa que la pagian no fue
modificada desde que se leyo y se trajo de memoria , por lo que no se tiene que
escribir ya que lo que esta en el disco es lo mismo que esta en memoria.

Este mecanicsmo de sustitucion de paginas es fundamental para la paginacion bajo


demanda.

Tambien debe haber un algoritmo de asignacion de marcos y uno de sustiucion de


paginas , esto influye mucho ya que especifica cuanto tiempo va a tardar en ir a
bsucar a memoria el SO.
Algiritmo FIFO .
Anomalia de Belady - la tasa de fallos puede icnemertarse a medida que se
incrementa el numero de marcos asignados.

Algoritmo optimo : se fija a futuro cual pagina va y saca la que se va a utilizar


mas tarde . No es aplicable ya que no sabes cual va a venir.

Algoritmo LRU : asocia a cada pagina , el instante correpondiente de uso de dicha


pagina , asi se seleciona el que menos se uso.
como se puede implementar?
Contadores: se asocia un campo de tiempo de uso en la tabla de paginas y se a�ade
un contador a la cpu.
Pila : cuando se hace referncia a una pagina , se pone de forma superior , la menos
recien va a quedar abajo. Tambien se puede usar una lista enlazada que apunta al
final y al prnicipio.

LRU y Optimo no sufren de Belady , ya que son algritmos de pila ( algoritmo para el
que pued edemostrarse que el conjunto de apgians en memoria para n amrcos es
isempre un subjocnunto de paginas que habria en memoria con n+1 marcos).

Algoritmo aproximado a LRU , usan un bit de referneica:


Algoritmo de los bits referenciados adicionales : se tiene para cada pagina un byte
de 8 bits y se va corriendo para la derecha por cada ciclo de reloj , asi 10001001
es mas grande que 00010001 , por lo que el ultimo se va a reemplazar.
Se pone un 1 cuando se usa adelante de todo en el ciclo.

Algiritmo de segunda oportunidad o de reloj , se tiene el bit de referneica en 1 y


cuando se busca reemplazarlo , se le pone en 0 y le da una segunda oportunidad ,
asi recorre las demas paginas.

Algoritmo mejorado de segunda oportunidad : se tiene el bit de refencia y el bit de


modificacion asi quedan 4 casos:
0,0 , nos e uso ni se modifico recientemente , es la que mas gana para sustituir.
0,1 , no se uso recientemente pero si se modifico , implica que se tiene que
escribir antes de sustituir.
1,0 se uso recientemente , pero nos e modifico , seguro se va a volver a usar
1,1, se uso y modifico .

Aca damos preferncia a las paginas que no han sido modificadas , para ahorrarse el
E7S de escribir.

Sustitucion de paginas basada en contador:

LFU ( least frequently used) y MFU ( most frequently used)


LFU : lse cambia la pagina que tiene el valor mas chico del contador
MFU : se cambia la pagina que tiene el valor mas grande .

No se usan mucho

Algoiritmo de bufer de paginas: no lo entendi.

Algunos programas especiales enceistan de una particion del disco para tratarla
como si fuera una matriz seucencial de bloques logicos , sin estructura de datos
propia de los sistemas de arhcivos , estos son discos sin formato. Las oepracioemns
E/S sobre ellos son E/S sin formato . Esto sigfnifica que puentea todos los
servicios del sistema de archivos. No siempre utilizan esto.

Asignacion de marcos:

Numero minimo de marcos : lo de fina la arquitectura informatica


Razon apra asignar un numero minimo de marcos : rendimiento . Cuando se hace un
fallo de pagina y se necesita reinicar la instruccion , la misma debe tener lugar
para realizarse.

Algotimo de asignacion :

Asignacion equitativa : cada proceso uno tiene un numero igual de marcos.


Asignacion proporcional : se asigna una cantidad de marcos acrode al tama�o del
proceso.

Si se incremetna la multipgramacion , deberia disminuir las paginaspara los


asignados , si decrementa, deberia aumentar las paginas

dos categorias de sustitucion de paginas :


Global : un proceso puede seleccionar un marco de todo el conjunto de marcos ,
puede reemplazar el marco de otro proceso
local : solo puede sustituir con los del proceso .

El global es el que se sua mas , ya quie tiene mayor tasa de procesamiento del
ssistema debido a que la local puede perjudicar a un proceso al no teneer a su
disposicion otras paginas de memoria menos utilizadas.

Sobrepaginacion:

Se invierte mas tiempo implementando la paginacion que ejecutando el proceso.


Esto se debe a que un proceso quizas necesita mas paginas y no tiene suficientes
marcos , va a ir reemplazando las paginas , por los fallos y apenas reemplaze , va
a necesitar la reemplazada y la va a volver a reemplazar.

Cuando los procesos estan peleando por los marcos y estan realizando las cargas y
descargas de paginas a memoria , la cola de procesos preparados se encuentra vacia
y el planificador de largo plazo ve que la utilizacion del CPU es poca , entonces
mete otro proceso , que llega y pide mas paginas y se suma uno mas a la pelea.

Esto genera un gran icnremento de fallos de pagina y baja mucho la tasa de


procesamiento del sistema baja mucho.
Una solucion que no rinde es usar la sustiucion local o basado en prioridades , ya
que de esta forma el proceso no saca paginas a otros , pero no llega a ejecutarse y
solo este sufre de sobrepaginacion.

Localidad : conjunto de paginas que se utilizan activamente de forma combinada.


La idea del modelo de localidad ( solucion a sobrepaginacion) , es que se le dan
sus marcos a un proceso como apra acomodar su localidad , ahi genera fallo para las
paginas de su localidad hasta que esten en memoria y ahi no genera mas fallos hasta
que cambie la localidad.
Si asignamos menos marcos que la localidad en un determinado momento , el proceso
entra en sobrepaginacion.

Modelo de conjunto de trabajo: si una pagina esta siendo usada de forma activa , se
encuentra dentro del conjunto de trabajo.
El SO monitoriza el conjunto de trabajo de cada proceso y asigna a ese conjunto de
trbaajo los suficentes marcos como para satisfacer los requsitios de tama�o del
conjunto de trabajo. Si hay suficientes marcos , se inicia otro proceso.
Si la suma de conjunto de trabajos de los procesos supera el numero total de marcos
diposnibles , se suspende un proceso . Las paginas de ese proceso se descargan y
los marcos se reasignan a otros procesos.
Con esto se impide la sobrepaginacion y se mantiene el grado demultiprogramacion
con el mayor valro posible . Se optimiza la tasa de utilizacion de la CPU.
Lo jodido es saber cual es el conjunto de trabajo de cada proceso..

Frecuencia de fallos de pagina:Se queire controlar la alta tasa de fallos de pagina


. Se definen limites superiores e inferiores de fallos de paginas.
Si es mayor al limtie superior , se le asigna otro marco , mientras que si es menor
al inferior , se elmina un marco .
Ya que cuando es alta , es que el proceso encesita mas marcos y si es baja , puede
que el proceso tenga demasiados marcos asignados.

Si la tasa de fallos incrementa y no hay ningun marco libre , se debe suspender un


proceso y estos marrcos se distribuyen a los que tengan mayor tasa de fallos.

Archivos mapeados en memoria

Se mapea cada bloque de disco sobre una pagina o apginas de la memoria.


El acceso al archivo se produice medirante paginacion bajo demanda , ahciendo
fallos de pagina , pero se lee el igual al tama�o de la pagina del archivo , con
eso se simplficia el acceso al archivo y la utilizacion , permitiendo que el
siestam manipule los archivos a traves de la mmeoria en lguar de hacer las llamadas
al sistema read () y write().

Las escrituras al disco pueden no ser inmediatas. Cuando el archivo se cierra ,


todos los datos mapeados en memoria se escriben en disco y se elminan de la
memoria.

E/S mapeada en mmoeria : se reserva una serie de rangos de direcciones y se mapean


esas direcciones sobre los registros de los dipsositivos.

Si la CPU usa un mecanismo de sondeo para comprobar el estado del bit de control ,
viendo si el dispositivo esta listo , es una E/S programada .
Si no sondea el bit de control , sino que recibe una interrupcion cuando el
dispositivo esta listo , entonces es dirigida por interrupciones.

Asignacion de memoria del kernel:


Tiene un conjunto compartido de memoria comaprtida que es disitnto al que se usa
para satisfacer lo de usuarios, esto es xq:
1- el kernel solciita memoria para estructuras de datos variables , algunas
inferiores a una pagina.
2-Las paginas para los procesos no tienen xq ser continuas , pero para ciertos
dispositivos de HW que interactuan directamente con la memmoria fisica , pueden
requerir que la memoria sea continua.

Gestion de memoria libre para el kernel , 2 formas:


Descomposicion binaria : buddy system , se divide la memoria en segmentos de
potencia de 2 , asi se pueden dividir los segmentos en 2 o unir dos segmentos de
potencia igual para formar uno mas grande.
Es rapida la combinacion de subsegmetnos adyacentes para formar uno mas grande
mediante la consolidacion.
La desventaja es que probablemente haga fragmentacion interna , ya que si tengo que
direccionar 65 KB , necesito un espacio de memoria de 128 KB , despedriciando mas
del 50 %.

Asignacion de franjas:
una franja es una o mas paginas fisciamente contiguas. Una cache tiene una o mas
franjas y hay una cache por cada estructura de datos de kernel distitna.
Cada cache se rellena con objetos que sena instancias de la estructura de datos que
la cache representa. Por ejemplo la cache que representa semaforos , almacena
isntancias de semaforos.
El numero de objetos de la cache depende del tama�o de la franja asociada.
Con esto no se pierde memoria por fragmentacion ya que cada tipo de estructura de
datos del kernel tiene una cache asociada y cada cache tiene una o ams franjas que
estan divididas en segmentos cuyo tama�o coicnde con el de los obejtos que
representa.
Tambien las solciitudes de memoria se pueden satisfacer rapidamente , ya que los
oobjetos se crean de antemano y cuando este se libera vuelve a la cache para que se
le vuelve a cargar otro.

Otras consideraciones..

Prepaginacion:Con la paginacion bajo demanda , hay muchos fallos de paginas al


princpio , para evitar esto , se pretende cargar en memoria de una sola vez todas
las pagians que vayan a ser encesarias , pero puede ser que algunas de las que
suponemos se van a usar , se terminan sin usar.

Tama�o de pagina:
Con un tama�o de pagina menor , se aprovecha de mejor forma la memoria y hay menos
fragmentacion interna .
Tambien con un tama�o de pagina menor , hay mejor resolucion , que permite usar
solo la memorai que sea ralmente necesaria. y asi se reduce la cantidad de
operaciones E/S y la cantidad totla de memoria asignada ( esto es xq la paginas se
asjutan con la localidad del programa que precisa ( la cantidad e paginas que posta
necesita)).

Tama�o de pagina grande : menor tiempo de E/S ya que a pesar de pasar mucha info ,
se pasa una sola vez y lo encuentra una sola vez en disco , a diferneica de mucha
veces en paginas chicas.
Tambien al haber paginas mas grandes , los tama�os de las tablas de paginas son
menores.
Se disminuyen de fallos de pagina , ya que hay menos paginas , pero de mayor
tama�o.
Alcance de TLB:incrementar tasa de aciertos = incrementar tama�o de la TLB , pero
es cara y consume mucha potencia.
el alcande es la cantidad de memorai accesible a partir del TLB y es el numero de
entrada por el tama�o de pagina , idealmente la TLB deberia almacenar el conjunto
de trabajo completo de un proceso.
Tambien si auemntnamos el tmaa�o de pagina , aumenta el alcance de la TLB , pero
hay mas fragmentacion.

Tabla de paginas invertidas:LAs tablas de paginas invertidas no tienen informacion


compelta sobre el espacio logico de direcciones de un proceso , la cual es info que
se necesita si una pagina que se haga refernecia no esta en memoria y la apginacion
bajo demanda encesita esta informacion para procesar los fallos de pagina.
Se peude guardar una tabla de pagina externa por cada proceso con esta informacion
. Estas tablas solo se consultan cuando hay un fallo de pagina y se las puede
descargar y cargar de memoria cuando sea necesario.
Esto hace que un fallo de pagina haga otro fallo de pagina para cargar la tabla de
paginas. Esto rpovoca retardo en el preocesamiento de busqueda de paginas.

Interbloqueo E/S:
.. no le encontre algo que valga la pena.

Interfaz del sistema de archivos ( FS)

El SO hace una asbtracion de las propeidaes fisicas de lso dispostiivos de


almacenamiento para definir una undiad logica de almacenamiento , esto es el
archivo.
Son mapeados por el SO sobre los dispotiivos fisicos ,que norlamente son no
volatiles.

Atributos de archivo : nombre , identificador , tipo , ubicacion , tama�o ,


protecicon , fecha ,hora e identificaciond e usuario.
Esto se almacena en la estructura de directorios , que esta en el almancemaiento
secundario. Una entrada en esta tiene un nombre de archivo y el identificaor.
Con el identificador , se peude accedr a mas info del archivo.
Operaciones : creacion , escritura , lectura , repsosicionamiento , borrado ,
truncado (poner la info en 0 bytes y liberar su espacio usado).

Tabla de archivos abiertos : tiene info sobre los archivos abiertos.. , cuando se
hace una operacion con un arhcivo , se espficia mediante un idnice a esta tabla ,
con lo que no hace falta explorar en el directorio.

Normalmente se tiene una tabla por cada proceso y una tabla global del sistema.
La tabla de cada proceso indica los archivos que abrio y los archivos apuntan a la
tabla global del sistema
La tabla global del sistema tiene : puntero de archivos , que marca la posicion
actual dentro del archivo , que es disitnto para cada proceso que este operando.
Cotnador de aperturas de archivo : cada vez que se abre se suma ,uan vez que se
cierran de aprte de todos los procesos y lelga a 0 el contador , se puede sacar de
la tabla .
UBicacion dentro del disco.
Derechos de acceso.

Algunos SO pueden bloquear el archivo , por ejenmplo un bloqueo compartido es


aprecido a un bloqueo para lectura , todos pueden ver concurrentemente , pero no
modificar.
UN bloqueo exclusivo , solo lo puede tener un proceso a la vez.
Los SO pueden dar bloqueos de archivos obligatorios o sugeridos.
Los obligatorios , el SO no deja que otro proceso entre al archivo , una vez que
uno entro. El SO garantiza la itengridad de los bloqueos.
Sugerido : es repsonabildiad del desarrollador de sofware garanzitasr que se
adquieran y liberen los distintos bloqueos.

Tipos de archivo , nombre + extension.

Estructura interna de un archivo : se ven en bloques.


Normalemnte todos los bloques no zafan de la fragmentacion interna.

Metodos de acceso:

Acceso secuencial : la info del archivo se procesa por orden , un registro y


despues el sigueinte.
Acceso directo : Un archivo esta compuesto de regitros logicos de longitud fija que
permiten leer y escribiro registros rapidamente sin orden concreto .
El metodo se basa en un modelo de archivo ques e correponde con los dspositivos de
disco , yua que los discos permiten el acceso aleatorio a cualqueir bloque de
archivo . El archivo se considra una secuencia numerada de bloques o registros.
El numero de bloque que se le da al usuario es un umero de bloque relativo , ya que
es un indice referido al comienzo del archivo.( empeiz en 0 y sigue en1 cuando en
disco esta en 123124 y sigue en 2342).

Indice : contiene putneros a los disitnso bloques . Se explora el idnice y se usa


el putnero para acceder al archivo directamente y encontrar el registro deseado.
Cuando el archivo de indice es muy grande , se usa un indice para el indice . El
indice se puede ordenar x cualqueir cosa , pero el putnero aes al archivo en
cuestion.

Estrucura de directorios:

Estrucura de almacneamiento :
Particiones , franjas , volumenes.
Cada volumen tiene un directorio de dispositivo o tabald e contenidos del volumen y
luego tiene los archivos. El directorio del dispositivo tiene la info de todos los
archivos del volumen , nomreb , ubicacion , tama�o , etc.

Directorio de unico nivel : tiene problemas ya que los archivos de mismo nombre
generarian conflicto.
Direcotrio de dos niveles , cada usuarios tiene su propio directorio de archivos
de usaurio. y antes de eso , cuando se inica un trabajo de usaurio , se explora el
MFD , master file directory , el cual esta indexado por el nombre de usuario o
numero de cuenta.
Estructura de arbol : se tiene una raiz y se va abriendo , se prohibe la
comaprticion de archivos o directorios.

Nombre de rutas absoluta : comienza en la raiz y sigue una ruta descendete hasta el
archivo espeicfiado , idnciando los nomres de los directorios que tiene la ruta.
Nombre de ruta relativo : define una ruta a partir del directorio actual.

Directorio de grafjo aciclico : Permite que los driectorios comaprtan


subdirectorios de los archivos.Se pueden encontrar componentes dos veces
Se puede mimplementar un enlace , que es un putnero a otro archivo o subdirectorio.

Directorio en forma de grafo general ..


Montaje de sistmeas de archivos :
El sistema de archivos se tien que motnar antes de estar disponible.
Al SO se le prorpciona el nombre del dispositivo y el puntod e motnaje , la
ubucacion dentro de la estructura de archivos a la que hay que conectar el sistmea
de arhcios que se esta motnando. ( por ejemplo / o /dev/).

Comparticion de archivos:

Multiples usuarios : Usuarios creadores , usuario grupo , usuario everyone , ver


como tratar al archivo segun el usuario que entre.

Sistemas de archivos remotos : transferencia mediante FTP , DFS ( sistma de


archivos distriuido) o mediante WWW . la DFS ya no se usa .
El acceso anonimo permite al usaurio transferir archivos sin tener una cuenta en el
sistema remoto.

Modelo cliente servidor:el cliente accede a los archivos del servidor . Debe haber
autenticacion sobre quien entra al servidor.

Sistemas de informacion distrubidos : permiten que los cliente-servidor sean mas


faicles de gestionar. ( DNS , Active Directory , el cual srive para uatenticas
usuarios y compartir por ejemplo impresoar). Antes se usaban dominios.

Modos de fallo : se intenta conectar a un lugar remoto y este se callo , se debe


mantenr informacion de estado tanto en el cliente como en el servidor.

Semantica de coherencia : como se peude acceder simultaneamtne a un archivos los


multiuples usuarios de sistema.
En Unix se ve todo lo que sucede a tiempo real.
Semantica de archivos comaprtidos inmutables : el archivo no peude reutilizarse y
el contenido no puede ser modificado , su contenidoe sta fijo . Pasa cuando un
archivo es declarado como compartido.

Proteccion : Se debe tener un acceso controlado al sistema.

Normalmente se hace que el acceso dependa del usuario , el esquema general es ua


lista de ontrol de acceso (ACL , acces control list) la cual especifica los nomrbes
de usuarios y lostipos de acceso que tienen cada uno.
Si un usuario intenta hacer algo que no esta autorizado , se produce una violacion
de preotccion y se denega al trbaajo de usaurio el acceso al archivo.
Es una paja el tema de la logntiud , siq ueremos que todos lo lean , se deben
agregar todos los usuarios.

Sino se puede clasificar a los usaurios en 3 grupos , Owner , Grupo y universo...

Tambien se puede asociar una contrase�a a un archivo .

Implementacion de sistemas de arhcivos ( File system).

Problemas sobre sistemas de arhcivos:


aspecto para el usuario
algorimtos y estructuras de datos que permtien mapear el logico de archivos sobre
el dispositivo fisico.

Jerarquia de niveles , los de arriba usan a los de abajo : programas de aplicacion


, sistema logico de archivos , modulo de organizacion de archivos , sistema basico
de archivos , control E/S , dispositivos.
El sistema de arhcios solo envia comandos genericos al controlador de dispositivos.
El modulo de organizacion de archivos sabe sobre losa rvhiso y sus bloques
logicos , como los bloques fisicos.
El sietma logico de archivos tiene la informacion de metadadtos , osea la
estructura del sistema de archivos excepcto los propios datos ( contenido de
archivos).
Aca se mantiene la estructura de los archivos mediante un bloque de control de
archivo (FCB). que tiene info del archivo incluyendo propeirtario , permisos uy
ubicacion del conteido del archivo..
Con este sistmea de jerarquia , seminimiza la duplicacion de codigo.

En el disco el sistema de archivos tiene info sobre como inficar al sistema


operativo .
Tiene el blqoue de control de arranque ( Master boot record) por cada volumen y
contiene info que elsistema necesita para inciar un sistema opeartivo a partir de
dicho volumen . Normalmente es el primer bloque.
Bloque de controld e volumen , tiene detalles sobre el volumen , numero de bloques
de la particion , tma�ao de lso bloques , putneros a bloques liberes , bloques de
FCB libres y punteros FCB. Esto es el superbloque.
Estructura de directorios ( Tabla maestra de archivos o en caso de unix inodos).

En memoria se puede cargar : uan tabla de montaje que tiene info sobre el volumen
motnado ,
una cache de la estrucura de direcotrios , para los directorios que se acceden mas
seguido se accedan mas rapido.
Tabla global de archivos abiertos , que tiene una copia del FCB de cad aarchivo
abierto.
Tabla de archivos abierto de cada proceso , tiene un puntero a la entrada de la
entrada global de archivoa abiertos y otra infoa dicional.

El puntero a la tabla de archivos se llama File descritpor/file handle o descriptor


de archivo.

Particiones y montaje :

puede haber discos sin formato , que se usan en los casos que no conviene usar un
sistema de archivos , como por ejemplo el espacio de itnercambio
O discos con formato , que normalmente tiene info sobre el arranque para el SO.

Sistema de archivos virtuales : no le di bola.

Implementacion de directorios :

Lista lineal : una lista lineal de nomrbes de archivos con punteros a lso bloques
de datos . Es facil de programar , pero requier emucho tiempo de eejecucion .
se tiene que explorar el directorio para asegurarse de que no haya un duplicado ,
cuando se crea un archivo.
Para localizar un arhcivo se requiere una busqueda lineal , normalmente se usa una
cache.

Tabla hash : se almacenan las entradas con una lista lineal , pero con la tabla
ahash , se toam un valor calcualdo a partir del nombre del archivo y devuelve un
puntero a la buicacion del nombre del archivo en la lista.
Reduce el tiempo de busqueda en el directorio , pero puede haber colisiones , donde
dos nombre de archivo me den el mismo puntero.
Es jodido tambien x el tama�o de la tabla hash , la funcion se calcula a partir del
tama�o de la tabla , si se agranda la tabla , se debe calcualr de nuevo la hash.
Tabla hash con desbordamiento encadanada , cada entrad apuede ser una lista
enlazada en luga de un valor individual y se peude resolver coliusiones sumando la
nueva entrada a la lista.
Igual esto es mas rapido que la lsita lineal.

Metodos de asignacion:
Asignacion contigua : cada archivo ocupa un conjunto de blqoues seguidos en disco.
Permite soportar el acceso directo como el secuencial , ya que si sabemos que
empieza en el valor B , podemos acceder al valor B+42 .
Es jodido encontrar espacio para un nuevo archivo . ( tecnicas de mejor ajsute ,
primer ajuste ).
Todos los algoritmos tienen fragmentacion externa ya que van a quedar huecos
vacios.
Se peude utilizar una compactacion para solucionarlo , pero la misma debe
realizarse cuando el sistma esta fuera de linea , osea que el sistema no tenga su
operacion normal. Ultimamente se puede hacer en linea.
Como saber cuanto va a ocupar el archivo ? es complicado ya que el archivo puede
ser mas grande de lo esperado . Una solucion es generar la isntruccion para ponerlo
y mandarle fallo , pero se conoce cuanto ocupa y se vuelve a ejecutar. No es
practico esto.
Otrosd a�aden un espacio contiguo llamado extension y asi los bloques del archivo
tienen un puntero a la extension.
Puede generar fragmentacion interna , ya que la extension puede ser mas grande de
lo encesitado.

Asignacion enlazada : cada archivo es una lista enlazada de bloques de disco . Se


tiene un putnero al primer y ultimo bloque de cada archivo.
No hay fragmentacion externa . No es necesari declarar el tama�o dela rchivo y el
mismo puede seguir creciendo.Nunca se debe compactar el disco.
solo se puede usar de manera efectiva para los archivos de aceso secuencial , ya
que para el acceso directo se debe seguir la lista hasta encontrar el que se desea.
Es poco eficiente.
Tambien cada bloque tiene un puntero , por lo que no se utiliza toda la info del
bloque para el archivo.
Se puede usar clusters , asi el puntero ocupa mucho menos. Pero puede haber
fragmentacion interna , si el cluster termina ocupando menos de lo esperado.
Tampoco es fiable , ya que si perdemos un bloque del puntero B , no podemos acceder
a B+1 ni a todos los demas B+n .
Tabla de asignacion de archivos : FAT , se tiene una tabla al prnicpio del disco de
cada volumen que tiene una entrada por cada bloque de disco y esta indexada segun
el numero de bloque.
La entrada de la tabla indexada tiene el numero de bloque siguiente del archivo.
En el directorio se tiene el nombre de archivo y el bloque de inicio.
El ultimo bloque del archivo en la tabla FAT tiene un coso especial de fin de
archivo.
FAT provoca mucho reposicionamenito de cabezales de disco , a menos que este en
cache.
Mejora el tiempo de acceso aleatorio , porque leyendo la FAT puede acceder al
bloque B+34.

Asignacion indexada:
Se agrupan lops putneros en un bl0oque indice.
Cada archivo tiene su bloque indice . La entrada I-esima del bloque idnice , apunta
al bloque I-esimo. Soporta el acceso directo. No sufre fragmentaicon interna ya qu
ese usan todos los bloques de disco.
Si sufre de fragmentacion itnerna , ya que quizas usamos un bloque indice para un
archivo que tiene 2 bloques nomas.
Que tama�o debe ocupar el bloque indice? tres formas :
Esquema enlazado : un bloque indice , ocupa un bloque , y se puede enlazar a varios
bloques indice para archivos grandes.
Indice multinuvle: Un bloque indice de primer nivel que aputana un conjunto de
blques indice de segundo nviel que aputnan a bloques de archivo , se puede ampliar
a mas niveles
Esquema combinado : bloques directors , bloques indirectos bloques doblemente
indirectos , bloques tirplemente indirectos.

Prestaciones : algunos sistmeas de archivos usan un combinado de asignaciones para


distintos tipos de arhivos.

Gestion de espacio libre :

Se peude usar un vector de bits (bitmap) . Cada bloque esta represando por un bit y
si esta elibre el bit es 1 , si esta ocupado , el bit es 0.
Es simplre y efecitvo a la hroa de localizar el priemr bloque libre del disco.
Caracteristica de HW que impone funcionalidad de SW.
Es ineficiente a menosq ues e mantetna el vector completo en memoria , lo cual en
discos grandes ocupa mucho.

lista enlazada: Se tiene un putnero al prrimer bloque lirbe y estos a los


siguientes. Es poco eficiente porque se tiene que leer cada bloque para recorrer
la lista.

Agrupamiento : Se tienen las direcciones de n bloques libres en un bloque y el


ultimo bloque aputnaa otro bloque que tiene otros n bloques libres.

Recuento : Se puede mantenr la direcion del priemr bloque libre y el numero de n


bloques libres contiguos q siguen a ese primer bloque. ( esto es cuando se asignan
lo lbieran simultaneamente varios bloques contioguos.

Eficiencia y prestaciones : eficiencia bla bla.


Prestaciones : la amyoria de las controladoras tienen una memorai local que actua
cmo ache y puede almacnear pistas compeltas al mismo tiempo.
Algunso sistmeas tienen una secion separada de memoria principal que se usa como
cahe de bufer , que se almcancenan bloques suponiendo que se va a volver a
usar.Tambien hay cache de paginas.
Cache de bufer unifciada : eevita la doble cache , situacion en que se guarda dos
veces en cache un mismo dato. Esto se debe a que la memorai virtual no se comunica
con el cache de vufer , entonces el conteindo del archivo en la cache de buffer se
tiene que copiar en la cache de paginas.
Escrituras sincornicas : se producen en el ornde en que el subsitema de discos las
recibe.
Escrituras asincroncias : los datos se almancenan en cahce y el control se devuelve
a la rutnia que hizo la invocacion .

Liberacion retardada : elmina una pagina del bufer cuando se solicita la pagina
siguiente , ya que las paginas anteriores no vovleran a a utilirzarse de nuevo
( probalbmente).
LEctura anticipada : se solicita una pagina , se lee y se almacena en cache tanto
esa pagian como varias pagina sucesivas. Asi se xtran de disco una vez y se ahorra
tiempo.

Recuperacion :
Comprobador de coherencia : compara los datos de escritura de directirios con lso
bloques de datos del disco y trata de corregir las incoherencias en el caso de un
fallo de la computadora.

Copia de seguridad y restauracion:


Backup y restore.
Hay disitnas planificaciones para Bakcup y restore , copia de archivos modificados
(incremental) , todos los archivos ( completa) , etc.
Se puede hacer una copia de seguridad completa el dia 1 y hasta el dia N copia de
los archivos modificados. con esto se reduce las cintas.

Sistemas de archivos con estructura de registro:


Los cambios a metadaos se escribne secuentalmente en un registro .

Nose mucha bola no le di.

Estructura de almacenamiento en disco

Discos magneticos: platos,pistas,sectores.


Velocidad de transferencia : velocidad con la que los datos fluyen entre la undiad
de disco y la computadora.
Tiempo de posicionamiento o tiempo de acceso aleatorio : tiempo necesario para
mover el brazo del disco hsata el cilindro deseado.
latencia rotacional : tiempo apra que el sector deseado rote hasta estar debajo del
cabzal.

Cintas magneticas : tiempo de acceso lento , puede durar mucho.

Estructura de un disco:
bloque logico : undiad mas chicas de tranferencia.

Conexion de un disco :
conectado al host : se accede por puertos de E/S locales.
conectado a la red: se accede de forma remota . es menos eficiente y da menso
velocidad . las operacioens e/S consumen ancho de banda de red.

planificacion de disco:
Tiempo de busqueda : tiempo requerido para que el brazo del disco mueva los
cabezales hasta el cilindro que tiene el sector deseado.
Latencia rotacional : tiempo adicional necesario para que el disco rote y situe el
sector deseado bajo el cabezal de disco.
Ancho de banda : numero total de bytes trasnferidos en el tiempo total trnasucrrido
entre la priemra solicitud y lka terminacion de la ultima transferencia.

Planificacion First come , first serve. Primero que lelga , priemro servido
Planificacion SSTF , shortest seek tiume first , selecicona la solcitud que tiene
el menor tiempo de busqueda respecto a la posicion actual. Puede provcoar muerte
por inanicion.
Planificacion SCAN : algoritmo del ascensor , va desde el 0 al 199 ida y vuelta.
Planificacion C-SCAN va al extremo superior y vuelve inmediatanemten al inferior.
Planificacion LOOK : va de abajo a arriba , pero cuando llega al mas grande de los
pedidos , baja ( llega a 188 y no va hasta 199 , ahi baja).
Planificacion CLOOK : va hasta el mas grande de los pedidos y despues baja al menor
pedido disponible.
PLanificacion F-SCAN : se tienen dos colas , una de los pedidos a hacerse y otra de
pedidos proximos a realizarse. Mientras la primer cola se va realizando , se suman
pedidos a la cola de proximos . Cuando termina la de hacerse , la de prximos es la
de hacerse y se implemetna una de proximos nueva.

Gestion del disco :


formateo del disco :
Se tiene el ECC , error correcting code , que cada vez que se escribe algo en el
disco , el mismos e corre comparando el valor almacenado . Si sucede esto , se
ifnroma un error blando.
La E/S de disco se realiza mediante bloques , pero la E/S del sistema de archivos
se realiza mediante clusters , asi la E/S tiene un acceso con caracrestiicas mas
seucenciales y menos aleatorias.

Bloque de arranque : normalmente la ROM toma el bloque de arranque y carga todo lo


encesario . El disco que tiene la particion de arranque es un disco de arranque o
de sistema.
El bloque de aranque els el MBR , mastere boot record.

Bloques defectuosos , cuando se detectan , noramlente se reemplazan por unos


sectores reservados .
La ECC comprueba que un sector es defectuoso.

Gestion del espacio de itnercambio :


Se usa cuando se mueve de la memoria al espacio de intercambio , para aumenar el
espacio de memoria disponible. ( ahora se itnercambian paginas y no procesos.
La gestion la hace el SO. Normalmente se sua para guardar la imagen compelta de un
proceso , el codigo y lsos egmenteos de datos.
Puede estar en el FS o en una particion de disco separda.
Si esta en el FS , puede incremetnar el tiempo de intercambio ya que realiza
multiples buqeudas durante la elctura o escritura de la imagen de un proceso. Esto
se peude mejorar ocn una cache que tiene la ubicacion de lso bloques en la mmeoria
fisica y asignado bloques fisicamente contunos para el archivo de itnercambio ,
pero igual se recorren las estructuras de datos del sistema de archivos.
Cuando es sin formato , no se almacena ningun FS nni estructrua de directorios y se
ua un gesto de alamcenamiento independiente par el esapcio de itnercmabio para
asignar y desasignar los blqoues dela particion sin formato.
Este gestor tiene algorimtos para aumetnar la velocidad.
Se peude icnremetnar la fragmentacion interna , pero no infliye mucho , ya que el
la vida de lso datos dentro del espacio de intercambio es mas corta que en el FS.
El espacio de itnercambio se reinicializa cuando arranca la compu , x lo que
cualquier framgentacion es de corta duracion . el espacio es fijo , si se queire
incremetnar ,se tiene que icnrementar la aprticion.

RAID:
Mejor fiabilidad con la redudnancia (mirroring) , mejores prestacioens con el
apralelismo ( data stripping) , distribucion de bandas a nivel de bit o bloque.
Raid 0 : tiene striping.
Raid 1 : tiene redundancia por cada disco.
Raid 0+1 : redundencia total + stripping.
con 0 +1 si falla un unico disco , la banda compelta deja de ser accesible ,
siendo accesible unicamentee la otra banda.
Con 1+0 , si falla un disco , solo ese disco deja de estar diposnible , pero su
pareja duplicada sigue operaiva , igual que los otros discos.
Raid 2 : requiere menos discos de redudnencia , se calcula con un codigo de
hamming.
Raid 3 : Paridad con entrelazado de bits. Mas barato ya que tiene 1 redundancia.
Tiene menos operacioens E/S ya que todos los discos tienen que participar en todas
la sosliciteudes.
RAID 4 : Paridad con entrelazado de bloque . No hay paralelismo entre los discos ,
cada disco es independiente.
Raid 5 : Paridad distribvuida con entrelazado de bloque , no hay un disco de
paridad , sino que se reparte entre los datos y la pardiad entre los discos . Un
bloque de paridad no puede almacenar paridad de un bloque del mismo disco.
Raid 5 : esquema de redundancia P+Q . Hay paridad doblemente distribuida en el
entrelazado de bloques . Tiene informacion redudnatne adicional que la 5.

Implementacion de un almacenamiento estable.

Fallos parciales , totals o terminaciones con exito.


Durante la reucperacion de un fallo , se examina cada pareja de bloques fisicos ,
si ambos coinciden y no hay un error , no pasa nada.
Si uno de lsob lqoues tiene un error detectable , se sustituye su contenido con el
valor del otro bloque.
Si ninugno de lso bloques tiene un error detecable , pero los bloques difieren en
cuanto a su contenido , se ssistuye el contenido del priemr bloque con el segundo.
Con esto se garantiza que cada estrictura de almacentamiento estable tenga exito de
forma completo o no provoque ningun cambio.

Almacenamiento terciario:

...

Cuestiones de rendimiento :

Velocidad ( ancho de banda ) , latencia y fiabilidad.

Sistemas de E/S

Cada dispositivo se comunica con la maquina a traves de un puerto.


Bus : conjunto de hilos junto con un protodoclo deifnido que especifica el
conjuntod e mensajes que pueden enviarse a traves de los hilos.
controladora : coleccion de componetnes electornicos que pueden controlar un puerto
, unbus o un dispositivo.
La controladora tiene uno o mas regitros para los datos y las se�ales de control.
El procesador se comunica con la controladora escribiendo estos bits.
Tambien el dispositivo puede soportar E/S mapeada en memoria , asi los registros de
control del dispositivo estan mepaados en direciones del procesador.
un puerto de E/S normalmente tiene 3 registros , registro de estado , de control ,
de entrada de datos y de salida de datos.

sondeo , cuando el host se fija el bit de ocupado del estado de la controladora ,


se encuentra en un estado des espera activa o sondeo , el cual es un bucle leyendo
una y tora vez ele stado hasta quye el bit de ocupado se desactive.
El sondeo es ineficiente ucnado se ejcuta de manera repetida par encotnrar que solo
en pocas ocasioens el dispositivo esta listo ,meintras que otras tareas que se
podrian haber ejecutado , no se hacen.
En esos casos es conveninte que al controladora HW notifique al CPU cuando el
dispositivo esta listo para el servico. El mecanismo que permite notificar los
eventos a la CPU se llama interrupcion.

Interrupcion:
La CPU comprueba su linea de solciitud de interrupcion despues de ejecutar cada
instruccion.
Cuando detecta que una controladora activo la se�al a traves de la linea , la CPU
guarda el estado actual y salta a la rutina de tratamiento de inrerupciones , la
cual determina la causa de la interrupcion y lleva a cabo el prodecimeinto
necesairo para la restauracion del estado y ejecuntra una instricion para vovler a
situar a la CPU al estado de ejcucion anterior a que se produjera la itnerrupcion.
Permite responder a un suceso asincronico.

Hay dos lineas de interrupcion , la no enmascarable , que se reserva para sucesos


como los errores de memoria no recuperables y la enmascarable , que puede ser
desactivada por la cpu antes de la ejcucion de seucencias de instrucciones cirticas
que no deben ser interrumpidas.
La interrupcion enmascarable es l que usan las controladoras.
Hay niveles de prioridades de interupciones.
El mecanismo de interrupcieons tambien se usa para gestioanr excepciones , que son
divisiones x cero , accesos a direciones protegidas o no existenes o intentos de
ejecutar instruciones privilegiadas en modo usuario.
Un fallo de pagina es una excepcion que genera una interrupcion. La interrupcion
suspende el procesoa ctual y salta a la rutina de procesamiento de fallo de apgina
dentro del kernel.
Interrupciones de SW : identifica el servicio del kernel deseado. cuando un prcoeso
ejecuta esta interrupcion , el HW de itnerrupcio guarda el estado del codigo de
usaurio , conmuta a un modo sueprvisor y realiza el despacho de la rutina del
kernel que imeplemta el servicio solicitado.

Acceso directo a memoria:


E/S programada : LA CPU comprueba el estado y se escriben datos en el registro de
al controladora byte a byte.
Para evitar sobrecargar a la CPU se peude usar el DMA , acceso directo a memoria.
El hsot describe un bloqeu de comando DMA en la memoria , el bloque tiene un
puntero al origen de la transferencia , un putnero al destinto de la trasnferencia
y un contador del numero de bytes que hay que trasnferir.
La CPU escribve la direccion de este bloque de comandos en la controladora DMA y
continua realizado otras tareas.
LA controladora DMA se ecnarga de operar el bus de memorai directamtne poniendo
direcicones en el bus para hacer tranferencias sin ayuda de la CPU.
Una vez finalizada la trasnferencia entre la controladora del dispositivo y la
controladora de la DMA , la DMA interrumpe a la CPU.
Cuando la DMA toma control del bus de memorai , impide que la CPU acceda a la
memoria principal , aunque puede seguir accediendo a los elementos de las caches.
Este proceso de ROBO DE CICLOS puede ralentizar los calculso de la CPU , pero la
descarga de transferencia de datos en la DMA , mejora el rendimiento del sistema.
Algunas arquitecturas usan un acceso directo a memoria virtual , el cual usa
direcciones virtuales que van a ser traduciadas a direcciones fisicas . el
mecnaisma DVMA ( virtrual) , puede realizar trasnferencias entre dos dispositivos
mapeados en memoria sin la itnervencion de la CPU y sin usar la Memoria prnicipal.

Interfaz de E/S de las aplicaciones.


se utiliza una interfaz para acceder a cada tipo general de dispostiivo ( interzas
es un conjutno estandarizado de funciones).
La idea es abstracion de parte del kernel y pasar las isntrucciones al subistema de
E/S , luego al controlador de dispositivos y despues a la controladora del
dispositivo en si para que se comunique con el HW.
La mayoria de los SO tienen un escape o puerta trasera que permite que una
aplicacion se comunique con el controlador de dispositivo. ( ioctl())

E/S bloqueante y no bloqueante.


bloqueante : se suspende la ejcucion de la aplicacion . Algunoas SO lo usan para
la interfaz de aplicaciones xq esl codigo es mas facil de entender que la no
bloqueante.
No bloqueante : no detiene la ejecucion de la apliacion durante el periodo de
tiempo , sino que la llamda vuelve rapidamente con un valrod e retorno que idica
cuantos bytes se transfirieron.
Una alternativa a las no bloqueantes es una llamada al sistma asincronica , que
vuelve inmediantemten sin esperar a que la operacion de E/S se compelte , asi la
aplicacion sigue ejecutando su codigo .

Dif enetre no bloqueante y asincronica : una ioperacion read no blqoueante vuelve


de una con los datos que hay disposnibles , mientras que un read asincronico
solciita una trasnferencia que se realiza de modo completo , pero que se compelta
en un isntante futuro.

Subistema de E/S del kernel.


PLanificacion de E/S.
Almacenamiento en buffer : permite una adpatcion de velocidades entre el productor
y consumidor de flujo de datos. tambine permtie la adaptacion entre dispositivos
que tengan diferetnes tama�os de transferencia de datos. Tambien soprota la
semantica de copia en la E/S de las aplicaciones.
semantica de copia : garantiza que la version de los datos escrita en el disco es
la version existnete en el momento en que la aplicacion ejecuta la lladam al
sistema , independientemente de lso cambios psoteriores que la aplicacion puede
hacer en el buffer.

almacenamiento den cache : bufer vs cache , bufer : puede almacnear la unica


ciopia existente de un elemnto de datos. cache : alamcnea en un dispositivo de
alamcenamiento mas rpaido una copia de un elmento que reside en otro lugar.

Gestion de colas y reserva de dispositivos :


Hay una cola de dispostivios , elcual es un bufer que guarda la salida dirigida a
un disopsitivo.

Tratamiento de errores : una llamda de E/S al sismte adeuvelve un bit de


informacion sobre el estado de la llamada , en el cual se indica si esta tuvo exito
o no.

Protecion E/S
Norlmamente para protegerrse de las E/S ilegales , el SO establece que las mismas
sean unicamente mediante llamdas al sistema.

Streams..blabla

Rendimiento
Cada interrupcion hace que el sistema realice un cambio de estado , realize la
rutina de interrupcion y restaure el estado.
Las E/S programdas pueden ser mas eficienes que las E/S dirigas por interrupcioens
si el numero de ciclos invertidos en las esperas activas no son excesivos.

Un canal de E/S es una CPU dedicada en las comptuadoras maifnrame , su trabajo es


descargar el trabajo de E/S de la CPU prnicipal.

Mejorar eficienca de E/S:


1- reducir numero de cambios de contexto.
2- reducir numero e veces que los datos deben copiarse en memoria meintra spasan
desde el disipositivo a la aplicacioon o vicecersa.
3- Reducir la frecuencia de interrupciones utilizando trasnferencias de gran tama�o
, controladoras intelginte sy mecnaismos de sondeo ( si puede minimizarse la espera
activa).
4-Incrementar el uso de las DMAs o canales , para descargar a la CPU de operaciones
de copia de datos.
5- Despalzar las primtivas de procesmaiento al HW , para que se ejecuten en las
controladoras de dispositivo de forma concurrente con las operaciones de la CPU y
del bus.
6- Equilibrar el rendimiento de la CPU , suistema de memorai , del bus , de la E/S
porque cualqueir sobrecarga en una de esas provoca la aparcion de tiempos muertos
en otras.
Hard link y symbolic link:

symbolic link : el borrado de un symbolic link no tiene proque afectar al archivo


original , ya qeue solo se elimna el enlace. Si lo que se elmina es la propia
entrada del archivo , se desagina el espacio del archivo , dejando el enlace
colgado.
Es costoso buscar todos los enlaces simbolicos al archivo . Otra forma es dejarlos
y cuando se queira usar , se detmrmina si el archivo del nombre indicado por el
enlace no existe .
En unix cuando se borra un archivo , se deja el tratamiento de los symbolic link al
usuario.

Con el hard link , se mantiene un numero de referencia . Cuando se a�ade una


entrada de direcotrio o un nuvo enlace , se icnreemta el contador de referencias ,
si se borra un enlace o una entrada entonces el contador se decrementa.
Cuando el constador es 0 , se puede borrar el archivo , ya que no va ahaber mas
refernecias a el.

Otras definicioens de hard link y symbolic link :

Crear un hard link a ese archivo: ser�a otra entrada en el mismo u otro directorio
que apunta al inodo del archivo en cuesti�n. Si la entrada estuviera en el mismo
directorio, tendria que tener otro nombre. (Tendriamos entonces 2 entradas de
directorios que apuntan al mismo inodo).

Crear un soft link a ese archivo: ser�a un nuevo archivo de tipo "soft link" que en
su contenido tiene la ruta del archivo al que apunta. Esto implica un nuevo inodo
para ese nuevo archivo, y obviamente una nueva entrada de directorio que apunte a
ese inodo recientemente creado.(Tendr�amos entonces 2 entradas de directorios, cada
una apuntando a un inodo distinto).

De stallings:

Modelo de procesos de cinco estados :

Nuevo - ejecutando - listo - bloqeuado - saliente.

Modelo de 5 estados:
Un proceso , uan vez que se bloqueo ,se puede suspender ( pasar al area de swap )
y queda como bloqeuado suspendido , de ahi se peude reactivar y volver al estado de
bloqueado O puede mantenerse en un estado LISTO- suspendido.
Tambien puede llegar a Listo - Suspendido desde el estado listo , ya que ahi se
suspende.
Tambien puede llegar de nuevo a Listo - suspendido.
De listo - suspendido , puede pasar a Listo , una vez que no hay mas procesos
listos en memoria.
Tambien puede ser que un proceso pase de Ejecutado a Listo-Suspendido.

Cambio de modo : cambiar de modo usuario a modo kernel , de forma que el codigo de
tratmiento de la interrupcion pueda incluir instruccions privilegiadas.

No siempre que hay un cambio de modo hay un cambio de proceso..

Productor consumidor:
Productor : bloquearse cuando al insertar el buffer , este esta lleno .
Desbloquearse cuando se extrajo un dato.
Consumidor : bloquearse cuando el bufer esta vacio . Desbloquearse cuando se
isnerto un dato.

Sin la espera circular hay una posibilidad de interbloqueo , con la espera


circular hay interbloqueo.

Memoria : particiones fijas , PArticiones dinamicas , sistema buddy ( divisiones


de 2) .
Paginacion , segmentacion .
Segmentacion : a diferencia del partincionamiento dinamico , la semgentacion de un
programa puede ocupar mas de una particion y estas particiones no encesarimanete
son contunas.

Paginacion : invisible al programador.


Segmentacion : visible al programador.

Segmentacio en memoria virtual:


Con la memorai virtual segmentada , a una estructura de datos se le puede asignar
su propio segmento y el SO puede expandir o reducir el segmento bajo demanda.
Sin un semgento que necesita expanridrse esta en la memoria principal y no hay
suficiente tama�o , el SO mueve el segmento a un area de la memoria prnicipal mayor
o enviarlo a swap.
Ayuda a la comparticion de segmentos que pueden ser utilizados pro toros procesos.
Lo habitual es que haya una tabal des semgneots por cada proceso.
debe haber un bit en la tabla de segmentos para especificar si esta en memoria o
no.

Paginacion y segmentacion combinados :


El espacio de direciones del usaurio se divie en unmeros de segmentos , segun
defina el programdor.
Cada segmento es dividoen un numero de paginas fijo , que son del tama�o de los
marcos de la memoria.
Si un segmento tinene lognitud inferior a una pagina , el semgento ocupa
unicanemtne una pagina.
Hay varias tablas de segmentos y cada tabla de dsegmento tiene su tabla de paginas.
La entrada en la tabla de semgentos tiene la longitud del segmento y un campo
base , que ahce referencia a la tabla de paginas.

Reemplazo local Remplazo


global
Asignacion fija las paginas a reemplazar son del proceso
no es posible.
Asignacio variable las paginas a reemplazar son del proceso , varia el numero de
marcos Las paginas a reemplazar es entre todos los procesos y es variable.

SCAN puede generar inanicion , si constantemente mando el mismo bloque a leer....


no avanza al ascensor , ya que SCAN favorece a las pistas mas cercanas y alos
trabajo que llegaron mas recientemente.

Scan de N pasos : divide las colas del Scan en N colas.


Divide la cola de peticiones del disco en varias colas de longitud N . En cada
mometnos e procesa solo una cola , utlizando SCAN . Mientras s esta procesando una
cola , las nuevas epticioens debe a�adir a otra cola . si hay menos de N peticiones
disponibles al final de la busqueda , todas ellas se rpocesan en la rpoxima
busqueda.
Para grandes valores de N , el rendimiento de SCAN de n passos se aproxima al
SCAN , si N = 1 , se convierte en politica FIFO.

Raid 4 , 5 y 6 tienen tecnia de acceso independeinte. Cada disco opera


independeinte de manera que puede servir en paralelo peticiones de E/S
independientes., por eso es convientene para tasas elevadas de peticiones de E/S y
poco conveniente para las que necesitan tasas elevadas de transferencia de datos.

E/S sincronica : se bloquea la aplicacion hasta que se completa la E/S.

También podría gustarte