Visita la versión flash
Propuestas
Visita el perfil del autor
Hablan del blog

SOM30


"Cómo hacer un Sistema Operativo en 30 días"
15/07/2010 21:13

Programación a medio nivel (LiSi)

Comunicaciones de Red
Ya sabemos por fin qué tres funcionalidades brindará el kérnel del Sistema Operativo. Los próximos días entraremos un poco más en profundidad en cada uno de éstos, pero hoy comenzaremos afrontando por alto lo que se llamará "medio nivel".

El medio nivel es el lugar donde es posible utilizar de forma básica los recursos del sistema sin necesidad de ejecutarse sobre un Sistema Informático que esté virtualizado por el Sistema Operativo. En este nivel es donde se ejecutan nativamente en el Sistema Informático los programas. De éstos, distinguimos los módulos, que son aquellos código objeto que ejecutan directamente sobre el Sistema Informático anfitrión y que, a diferencia de los programas, sobre estos el Sistema Operativo no aplicará ninguna política de estanqueidad y conectividad. El propio kérnel es un módulo, aunque vermos que existen otros tres módulos principales.

El conjunto de módulos que rodean al kérnel, junto a éste, conforman el Sistema Operativo. Generalmente los programas están interconectados usando algún espacio compartido que los provea de librerías comunes. En nuestro Sistema Operativo existe un módulo (llamado LiSi) paralelo al kérnel que proporciona esas librerías del sistema ("llamadas al sistema") que los demás programas utilizarán. El módulo LiSi permite la ejecución de otros módulos más completos con cierta independencia del Sistema Informático. Este módulo permite ejecutar programas sin que se recurra a la virtualización ya que ofrece las librerías del sistema y permite acceder a todos los controles que implementa el kérnel cumpliendo con las políticas del Sistema Operativo.

El cumplimiento de estas políticas es posible implementarse de forma sencilla gracias al propio juego de instrucciones que entiende el Sistema Informático. Por ejemplo, es posible detectar si los saltos (cuando el puntero PCero de la MMU cambia de valor) van a direcciones del Espacio de Direcciones conocidas (donde están ubicadas las librerías del sistema) en tiempo de pre-ejecución.

La programación de estos programas, aunque puede realizarse con el lenguaje de ensamblador (de bajo nivel) que habíamos diseñado, vamos a evolucionarlo un poco más para que incluyera las llamadas estándares a las librerías del sistema propias de nuestro LiSi. Como puede verse, este lenguaje de medio nivel dependerá del módulo que genera las librerías del sistema (y no directamente del kérnel) que, además, está parcialmente estandarizado, por lo que será el mismo para todos los Sistemas Operativos que lo tengan especificado de forma común.

Las tres funciones básicas y estandarizadas que implementa cualquier LiSi son:
  • Lectura de memoria: permite leer el valor de una posición de memoria.
  • Escritura en memoria: permite escribir un valor en una posición de memoria.
  • Control de memoria: permite reservar y liberar trozos de memoria.
Además de estas funciones básicas, las librería del sistema pueden incluir más. Los programas que se generen utilizando esas librerías del sistema pueden ser compatibles para cierta librería del sistema, aunque gracias a las funciones básicas, podrían ser compatibles con cualquiera, aunque sea con menor funcionalidad. Esa compatibilidad dependerá del interés que tenga el programador en ofrecerla.

También, las políticas de estanqueidad y conectividad que busca el Sistema Operativo quedan avaladas con estas tres funciones básicas, ya que se puede garantizar que un programa accederá siempre a un espacio al que tenga acceso. De todas formas, es responsabilidad del LiSi llevar un control sobre los programas para que se cumpla la estanqueidad con las mejores garantías, ya que habrá ciertos programas que necesiten compartir algunas direcciones.

Comentarios

17/07/2010 03:02
y?

Deja tu comentario


Se enviará usando la Red Social @visitante
¿Quieres responder con otra cuenta de TuEntidad.es?
Usa MonoMola o LoTienes.

Búsqueda

Calendario

- Día 1
- Día 2
- Día 3
- Día 4
- Día 5
- Día 6
- Día 7
- Día 8
- Día 9
- Día 10
- Día 11
- Día 12
- Día 13
- Día 14
- Día 15
- Día 16
- Día 17
- Día 18
- Día 19
- Día 20
- Día 21
- Día 22
- Día 23
- Día 24
- Día 25
- Día 26
- Día 27
- Día 28
- Día 29

Código

- Sistemas Informáticos
- Compilador
- GAM
- GAE
- Kérnel
- LiSi
- ViSi
- SAM
Licencia LSW

Comentan

- Día 1 (16) 8/06 02:28
- Día 29 (19) 13/03 04:10
- Día 10 (18) 23/01 22:16
- Día 3 (9) 10/12 08:55
- Día 2 (19) 10/12 08:54
- Día 7 (4) 5/11 21:29
- Día 11 (44) 25/10 01:39
- Día 4 (3) 24/09 13:45
- Día 28 (2) 6/04 04:01
- Día 26 (1) 17/07 01:21
- Día 27 (4) 29/05 14:50
- Día 8 (9) 29/05 05:35
- Día 24 (2) 18/01 05:16
- Día 17 (5) 18/01 05:10
- Día 13 (7) 6/12 18:44
- Día 15 (1) 30/08 08:53
- Día 6 (2) 25/08 02:14
- Día 5 (4) 7/04 00:50
- Día 21 (6) 26/06 21:26
- Día 18 (2) 26/06 03:09
- Día 23 (2) 22/04 13:45
- Día 25 (1) 11/03 21:34
- Día 19 (3) 19/01 17:33
- Día 14 (2) 7/01 22:06

Valid HTML 4.01 Transitional