- ...ficheros
- Nótese que
los sistemas de ficheros se consideran tradicionalmente como parte
del SO. Nosotros los consideraremos en cambio como ``software de
aplicación'', dado que nuestro enfoque permite que cada
aplicación utilice el suyo propio.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...escalabilidad
- Término comúnmente adoptado del
inglés escalability.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...DAMN
- Distributed Adaptable
Micro-Nucleus.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...líneas
- Esto es, el valor numérico que provoca por software
dicha interrupción
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...aplicación
- En el sentido de la definición
presentada anteriormente (incluyendo por tanto a sistemas de
ficheros, DSMs, DVMs, editores, compiladores, etc.)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...comentarios
- Nos referimos a los comentarios escritos en C,
puesto que el código fuente está redactado de forma literaria
[102]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...mantenimiento
- esto es,
bookkeeping.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...saberlo
- Naturalmente, sólo en el caso en que no les importe
esta circunstancia. Siempre existe la posibilidad de que dichas
aplicaciones controlen explícitamente el uso de recursos remotos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...(DAMN
- Distributed Adaptable
Micro-Nucleus.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...distribuido
- Puede apreciarse, no
obstante, el paralelismo con las que realiza un SO centralizado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Intel/PC
- En ellas sólo el primer
Mbyte de la memoria es capaz de recibir proyecciones de
dispositivos de E/S y sólo los primeros 16 Mbytes son capaces de
operar con acceso directo a memoria (DMA).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...homogéneos
- Esto
es, que dados dos nombres cualesquiera ambos deban presentar siempre
la misma estructura.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...volátil
- Ello no supone pérdida de eficiencia puesto que no
es preciso acceder a memoria no volátil siempre que se incrementa
dicho contador. El contador podría incrementarse n veces
sin acceder a memoria no volátil siempre que en tiempo de arranque
se incremente n veces el contador.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...página
- Concretamente, aquellos que sostienen páginas no
expulsables.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...distinto
- Esto implica que todo elemento contenido en dicho
vector deberá contener su identificador, para que sea posible
efectuar una comparación entre identificadores y averiguar qué
objeto está contenido en cada entrada.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...distribuida
- También puede implementarse de forma
centralizada, al igual que ocurre con los dos puntos siguientes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...volátil
- El gestor de memoria
distribuida (DMM) incorporado en Off también permite la
implementación de persistencia de un modo casi trivial, como ya
veremos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...DMA
- No incorporados en la implementación actual.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...SO
- Ejecutando éste fuera del
kernel.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...preinicializar
- Una de las
características del Slab incorporado en Solaris consiste en la
delegación de la inicialización de los objetos contenidos en el
Slab, de tal modo que no es preciso inicializarlos explícitamente.
El Slab realiza la inicialización de dichos objetos sólo cuando es
estrictamente necesario y libera al resto del kernel de tal
responsabilidad.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...paginar
- Esto no se
hace por razones de simplicidad en la implementación actual.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...sistema
- Una vez concluido el trabajo de la presente tesis y
el presente manuscrito, hemos visto que esta aseveración es un
error. En el apartado 5.1.1 se hablará de este
problema.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...PMM
- Physical Memory Manager
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...móviles
- En inglés, ``Migrating
threads''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...RPC
- Del inglés Remote
Procedure Call.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...PCT
- Del inglés,
Protected Control Transfer.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...modularizar
- Basta con que cada módulo empaquete su parte del
estado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...multiproceso
- Siempre, en la
implementación actual.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...E/S
- Todos, en la implementación actual.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...valores
- En realidad bastaría
con suministrar el nuevo valor, pero conceptualmente se está
reemplazando un valor antiguo con otro nuevo y el suministro
de ambos valores en la invocación de la función de conmutación
evita en ciertos casos el mantenimiento de estado en el
implementador del tipo de recurso considerado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...reducido
- Para
implementar ésto basta anotar la ocurrencia de dicha interrupción en
una máscara de interrupciones ``pendientes''. Como el nivel de
prioridad se implementa como una propiedad de Shuttle, la función de
conmutación de dicha propiedad puede mirar el conjunto de
interrupciones pendientes siempre que sea invocada (siempre que
varíe el nivel de prioridad en el transcurso de un cambio de
contexto) y contemplar los niveles de prioridad de las mismas de tal
modo que si el nuevo valor de prioridad (del shuttle) a instalar
permite el envío de interrupciones ``suspendidas'' éstas se envían
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...procesos
- Aunque debemos
recordar que Off no tiene ninguna abstracción que corresponda a
un ``proceso''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...asíncronamente
- Con respecto a la ejecución de código en el
servidor
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...cualquiera
- Además hay otros puntos
de entrada que permiten consultar y alterar el valor de las
propiedades de un shuttle.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...PCTs
- Aunque el
mecanismo empleado sea una llamada a un portal, implementada
mediante traps, la semántica corresponde a PCTs entre el usuario y
el núcleo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...excepción
- Las ``excepciones'' a que nos referimos en este
apartado son en realidad upcalls que realiza el kernel para
requerir la ayuda de la aplicación. No obstante, la percepción del
usuario es que ha ocurrido una excepción que debe tratarse para
poder proseguir con la ejecución normal. Debido a ello nos
referiremos a dichos upcalls como ``excepciones'' (percibidas por
el usuario y ``creadas'' por el kernel).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...trampolín
- código ejecutable instalado directamente
en la pila
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...disponemos
- En
efecto, aunque no lo hemos mencionado, es factible ceder el resto de
quantum en que ejecutamos al shuttle que ejecutará el manejador.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...menos
- Cuando el
kernel está compilado con soporte para espacios de direcciones.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...trampolín
- código ejecutable instalado directamente
en la pila
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...(DVM
- Distributed Virtual Memory
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...(DSM
- Distributed Shared
Memory
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...DMM
- Distributed Memory
Manager
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...expulsarse
- Aunque
existen algunos derivados de Mach que permiten que el paginador
escoja qué páginas hay que expulsar, no obstante el problema
persiste: la implementación de los espacios de direcciones está
prefijada dentro del núcleo y no es posible alterarla cuando es
necesario.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...páginas
- De aquí en adelante usaremos ``tabla de
páginas'' para referirnos a la estructura de datos empleada por el
hardware, con independencia de que ésta sea una auténtica tabla de
páginas, una TLB o una combinación de ambas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...(PFN
- Page Frame
Number.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Off
- En lo que sigue
utilizaremos Off y DAMN indistintamente, puesto que nos estaremos
siempre refiriendo al modelo del sistema propuesto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...ficheros-distribuidos
- Más correctamente, ficheros
pertenecientes al sistema de ficheros distribuido que permiten
interacciones simultaneas desde distintos nodos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...siempre
- En algunos
sistemas se obliga a las aplicaciones a emplear determinados
componentes de tal suerte que, aunque éstos estén implementados
fuera del
kernel, dichos componentes no pueden adaptarse en base a la
aplicación que los utiliza. Tales componentes son pues tan
inadaptables como si estuviesen cableados dentro del núcleo (aunque
sea más simple reemplazarlos).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Spring
- Un sistema de tiempo real que no hay que confundir con
el sistema distribuido del mismo nombre desarrollado por Sun.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...descriptores
- De igual modo que en UNIX se emplean
descriptores de fichero y en Mach se emplean derechos de acceso a
puertos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...dinámico
- dynamic binding
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...modificado
- Siempre se puede
forzar el uso de un compilador en el que sí confiamos si
forzamos un sistema de compilación bajo demanda en el momento de la
inserción del código de usuario dentro del núcleo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...(POSE
- Parallel Operating
System Extension
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Off
- Cuya implementación ya ha comenzado como parte del
trabajo futuro.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Off
- En realidad pensamos utilizar
Off++.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.