Resumen del libro
"Desarrollo y Optimización de Componentes Software para Tareas
Administrativas de Sistemas".
El libro para empezar entra con la definicion de lo que es un sistema operativo que es un
programa que actúa como una capa entre el usuario y el hardware. esta se
encarga de gestionar y administrar todas las partes del sistema.
El sistema se puede dividir en tres partes que son:
La capa más cercana al hardware
se denomina núcleo o (KERNEL). contiene la funcionalidad básica del sistema operativo y las
estructuras de los datos necesarios.
La capa de los servicios que
ofrece el sistema operativo. Todas las tareas que el sistema operativo lleva a cabo son
ofrecidas en forma de interfaz para el desarrollo de aplicaciones.
La capa de interfaz entre el
usuario y el sistema operativo. Se encarga de proporcionar una forma de dialogo entre el usuario
y el sistema operativo.
el principal objetivo de un
sistema operativo es de proporcionar un entorno para la ejecución de
programas, de forma que estos programas sean capaces de usar los dispositivos
de los que se compone el sistema.
El sistema operativo debe
ofrecer servicios a tres niveles: al usuario, a los programas y a los
dispositivos.
Permitir la ejecución de
aplicaciones
Asignar recursos del ordenador
(CPU, memoria, ETC). A los programas
Dar acceso indirecto a los
dispositivos del ordenador y a los periféricos.
Proporcionar un sistema
organizado de almacenamiento de datos.
Comunicación interactiva con el usuario.
Todo sistema operativo necesita
proporcionar a los programas un entorno de ejecución sin interferencias sobre
otros programas que están ejecutándose a la misma vez. Por lo tanto, debe
repartir la memoria almacenada de forma que ningún programa altere el espacio
de otro programa.
En la actualidad, existen varios
tipos de memorias que el sistema operativo puede utilizar y que, en función de
su velocidad y tamaño, siguen la siguiente jerarquía:
᪰Registro de CPU del procesador.
᪰Cache
᪰Memoria RAM
᪰Memoria secundaria
una parte muy importante en un sistema es la segmentacion que se basa en la division logica de un programa en partes denominadas segmentos, donde cada uno de estas partes agrupa los elementos relacionados logicamente.
Gestión de almacenamiento.
Sistemas de archivos
El sistema operativo necesita
manejar una gran cantidad de información, para lo cual usa dispositivos de
almacenamientos secundarios. Por ellos, es necesario que siga un modelo de
gestión coherente y uniforme de la información.
El concepto básico de almacenamiento es el archivo. Un archivo es una unidad lógica que contiene información relacionada.
Entre las principales funciones
del módulo de gestión de almacenamiento, destacan:
Realizar la traducción del sistema
de direccionamiento lógico al sistema de direccionamiento físico en los dispositivos
dispositivos masivos.
Realiza transferencia e intercambio
de datos entre la memoria principal y la memoria secundaria.
Realiza tareas de mantenimiento sobre
los dispositivos de memoria secundaria: controlar el estado, la asignación de
memoria física y el espacio disponible de cada dispositivo.
Proporcionar mecanismo para proteger, compartir, recuperar y restaurar los datos almacenados en memoria secundaria.
Cuando se habla de un dispositivo
de entrada/salida, se hace referencia a cualquier elemento que no sea ni la
memoria ni el procesador.
El problema de un gestor de
dispositivos de entrada/salida radica en la existencia de múltiples tipos de
dispositivos distintos. Las principales características que definen un
dispositivo son:
Velocidad
Unidad de transferencia
Codificación de la información
protocolo de comunicación
Operaciones
Errores
Gestión
de red
Conjunto
de herramientas que permiten configurar el subsistema queda completamente
oculta bajo la interfaz que proporcionan. En la mayoría de los casos, solo
hacen falta conocimientos sobre el tipo y estructura de la red, ya que el sistema
operativo se encargará del resto.
El
subsistema de gestión de red permite que los procesos del sistema operativo
interactúen a través de un canal de comunicación con el enfoque de una red de
comunicación.
Gestión
de errores
Cuando
se ejecuta una aplicación en el sistema operativo, puede ocurrir que el proceso
realice su trabajo correctamente o bien, que se produzca algún error. En la
mayoría de los casos, un error incontrolado en un sistema puede ocasionar la
perdida de información e incluso la inestabilidad del sistema operativo si se
esta haciendo uso de recursos del mismo.
Cuando
se produce un error, el resultado es una interrupción de la ejecución normal
del programa que lo causa. A continuación, el SO otorga el control de ejecución
a la rutina adecuada para que trate el error. Todo el tratamiento de estos
errores se conoce como gestión de excepciones y existen sistemas operativos que
lo soportan y otros que no.
Las
excepciones se pueden clasificar en los siguientes tipos:
Fallos:
que pueden ser corregidos y que retoman la ejecución normal del programa
que las genero.
Traps:
que son utilizadas por los programadores para la depuración.
Aborts:
son errores graves que ocurren
cuando hay un fallo de hardware.
Gestión
de la seguridad
La seguridad
es importante en un sistema operativo, ya que se esta hablando de un software
que controla todo el sistema a nivel de hardware y de software. Sin embargo, el
concepto de seguridad es muy amplio y dependiendo del ámbito puede significar
una cosa u otra.
En términos
informáticos, se dice que la seguridad es equivalente a garantizar una serie de
propiedades. En el caso de un sistema operativo, esas propiedades se aplicarán
sobre los usuarios del mismo:
Consistencia
Servicio
Protección
Control
de acceso
Autenticación
El sistema
operativo debe encargarse de garantizar la seguridad a todos los niveles,
implementando un modelo de gestión de la seguridad centralizado, en la mayoría de
los casos apoyado por un sistema de gestión de actualizaciones que las
principales compañías ponen a disposición conforme encuentran agujeros de
seguridad en sus sistemas.
Sistemas
monolíticos
En un
sistema operativo con este tipo de arquitectura, todas las funciones se
encuentran codificadas en un único modulo. Esta compuesto de un conjunto de procedimientos,
que se pueden invocar entre ellos según la necesidad y sin restricciones. Cada procedimiento
tiene una signatura bien definida, es decir, los parámetros de entrada y el
resultado de salida son conocidos.
Hay
que tener en cuenta que este tipo de modelo no es lo mismo que un modelo sin
estructura. Realmente, existe una estructura, aunque sea muy primitiva. Todo sistema
operativo puede ejecutar en dos modos: modo núcleo (modo kernel) o modo
usuario. En un sistema monolítico, los procedimientos correspondientes a
servicios del sistema operativo (llamadas al sistema) se pueden solicitar
estableciendo los parámetros de entrada y realizando una llamada especial
(llamada al kernel) para ejecutar el procedimiento.
La llamada
especial realiza el cambio entre el modo usuario y el modo kernel y transfiere
el control de la ejecución al sistema operativo.
El sistema
operativo comprueba los parámetros de entrada y, en función de ellos, busca en
una tabla interna la referencias al procesamiento que se debe ejecutar en función
de estos parámetros. Se ejecuta y el resultado se transfiere al programa de
usuario que realizo la llamada. Por lo tanto, se vuelve a pasar al modo
usuario.
Entre
los principales inconvenientes, se encuentran:
falta
de modularidad
Dificultad
para modificaciones
Dificultad
en la detección y corrección de errores
Necesidad
de recopilación en cada cambio
Máquinas
virtuales
Las maquinas
virtuales son un tipo de arquitectura basada en microkernel. En este modelo, el
microkernel se denomina monitor de máquina virtual y se ejecuta sobre el
hardware directamente, con soporte para multiprogramación. Además, proporciona
una visión de múltiples maquinas virtuales a la capa superior. Cada maquina
virtual es una copia exacta del hardware. Esto consigue que se puedan ejecutar
varios sistemas operativos a la vez.
La idea
principal es que los procesos se ejecutan limitados por los recursos y abstracciones
que proporcionan cada maquina virtual.