Sistemas Operativos
Daniel Rúa Madrid
¿Qué es?
Es un programa que administra el hardware
de una computadora. También proporciona
las bases para los programas de aplicación
y actúa como intermediario entre el usuario
y el hardware de la computadora.
Modos de operación
Los sistemas operativos tiene dos modos de operación:
modo usuario y modo kernel. Un bit, denominado bit
de modo, se añade al hardware de la computadora para
indicar el modo actual kernel(0) o usuario(1).
Temporizador
Debemos asegurar que el sistema operativo tenga el control sobre la CPU:
Por ejemplo, debemos impedir que un programa de usuario entre en un bucle
infinito o que no llame a los servicios del sistema y nunca devuelva el control al
sistema operativo. Para alcanzar este objetivo podemos utilizar un
temporizador.
Operaciones del sistema operativo
Los sistemas operativos están controlados mediante interrupciones. Si no
hay ningún proceso que ejecutar, ningún dispositivo de E/S al que dar servicio
y ningún usuario al que responder, el sistema operativo debe permanecer
inactivo, esperando a que algo ocurra. Los sucesos casi siempre se indican
mediante la ocurrencia de una interrupción o excepción. Una excepción es una
interrupción generada por software , debida a un error o a una solicitud
específica de un programa de usuario.
Tipos de sistemas operativos
Los sistemas operativos se clasifican dependiendo de las características que presentan en su funcionamiento. Entre los tipos de sistemas operativos se encuentran:
• Monousuarios.
• Multiusuarios.
• Monotareas.
• Multitareas.
• Uniproceso.
• Multiproceso.
Componentes
Gestión de Procesos
El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de procesos:
• Crear y borrar los procesos de usuario y del sistema.
• Suspender y reanudar los procesos.
• Proporcionar mecanismos para la sincronización de procesos.
• Proporcionar mecanismos para la comunicación entre procesos.
• Proporcionar mecanismos para el tratamiento de los interbloqueos.
Gestión de Memoria
El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de memoria:• Controlar qué partes de la memoria están actualmente en uso y por parte
de quién.• Decidir qué datos y procesos (o partes de procesos) añadir o extraer de la
memoria.• Asignar y liberar la asignación de espacio de memoria según sea
necesario.
Gestión de Almacenamiento
El sistema operativo proporciona una vista lógica y uniforme al
sistema de almacenamiento de la información. Abstrae las
propiedades físicas de los dispositivos de almacenamiento y
define una unidad de almacenamiento lógico, el archivo.
Además asigna los archivos a los soportes físicos y accede a los
archivos a través de dispositivos de almacenamiento.
Gestión del sistema de archivos
El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de archivos:
• Creación y borrado de archivos.
• Creación y borrado de directorios para organizar los archivos.
• Soporte de primitivas para manipular archivos y directorios.
• Asignación de archivos a los dispositivos de almacenamiento secundario.
• Copia de seguridad de los archivos en medios de almacenamiento
estables (no volátiles).
Gestión del almacenamiento masivo
El sistema operativo es responsable de las siguientes actividades en lo que se refiere a gestión de disco:
• Gestión del espacio libre.
• Asignación del espacio de almacenamiento.
• Planificación del disco. Dado que el almacenamiento secundario se usa con frecuencia, debe emplearse de forma eficiente.
Sistemas de E/S
La gestión de los dispositivos de E/S se hace mediante el subsistema de E/S, el cual consta de varios componentes:
• Un componente de gestión de memoria que incluye almacenamiento en
búfer, gestión de caché y gestión de colas.
• Una interfaz general para controladores de dispositivo.
• Controladores para dispositivos hardware específicos.
Protección y Seguridad
Es cualquier mecanismo que controle el acceso de procesos y usuarios a los
recursos definidos por un sistema informático. ESte mecanismo debe
proporcionar los medios para la especificación de los controles que hay que
imponer y para la aplicación de dichos controles.
Servicios del Sistema Operativo
Interfaz de Usuario
Casi todos los sistemas operativos disponen de una interfaz de usuario (UI,
user interface), que puede tomar diferentes formas. Uno de los tipos existentes
es la interfaz de línea de comandos (CLI, command-line interface) que usa
comandos de texto, y por otra parte se utiliza una interfaz gráfica de usuario
(GUI, graphical user interface) compuesta por ventanas.
Ejecución de Programas
El sistema tiene que poder cargar un programa y ejecutar dicho programa.
Todo programa debe poder terminar su ejecución, de forma normal o anormal
(indicando un error).
Operaciones de E/S
Un programa en ejecución puede necesitar llevar a cabo operaciones de E/S,
dirigidas a un archivo o dispositivo de E/S. Para ciertos dispositivos es
deseable disponer de funciones especiales . Por cuestión de eficiencia y
protección, los usuarios no pueden controlar de modo directo los dispositivos
de E/S; el sistema operativo debe proporcionar medios para realizar la E/S.
Manipulación del sistema de archivos
El sistema de archivos tiene una importancia especial. Obviamente, los
programas necesitan leer y escribir en archivos y directorios. También necesita
crearlos y borrarlos usando su nombre, realizar búsquedas en un determinado
archivo o presentar la información contenida en un archivo. Algunos programas
incluyen mecanismos de gestión de permisos para conceder o denegar el
acceso a los archivos o directorios dependiendo de quien es el propietario.
Comunicaciones
Hay muchas circunstancias en las que un proceso necesita intercambiar
información con otro. Dicha comunicación puede tener lugar entre procesos
que se están ejecutando en la misma computadora o entre procesos en
computadoras diferentes conectadas por red. La comunicaciones se pueden
implementar utilizando memoria compartida, procedimiento en el que el
sistema operativo transfiere paquetes de información entre unos procesos y
otros.
Detección de errores
El sistema operativo necesita detectar constantemente los posible errores.
Estos errores pueden producirse en el hardware del procesador y de memoria,
en un dispositivo de E/So en los programas de usuario. Para cada tipo de error,
el sistema operativo debe llevar a cabo la operación apropiada para asegurar
el funcionamiento correcto y coherente.
Asignación de recursos
Cuando hay varios usuarios, o hay varios trabajos ejecutándose al mismo
tiempo, deben asignarse a cada uno de ellos los recursos necesarios. El
sistema operativo gestiona muchos tipos diferentes de recursos; algunos
pueden disponer de código de software especial que gestionen su asignación,
mientras que otros pueden tener código que gestione de forma mucho más
general su solicitud y liberación.
Kernel
¿Qué es?
Parte esencial del sistema operativo que provee los servicios más básicos del
sistema. Se encarga de gestionar los recursos como el acceso seguro al
hardware de la computadora.
Determina que programa accede a un determinado hardware si dos o más
máquinas desean utilizarlo al mismo tiempo.
El kernel también ofrece una serie de abstracciones del hardware para que los
programadores no tengan que acceder directamente al hardware, proceso que
puede ser complicado.
Estructura Kernel
El kernel se divide en una serie de interfaces y controladores de dispositivo.
El kernel proporciona las interfaces para las llamadas al sistema de archivos,
los mecanismos de planificación de la CPU, la funcionalidad de gestión de la
memoria, y otras funciones del sistema operativo, a través de las llamadas al
sistema.
Microkernels
Este método estructura el sistema operativo eliminando todos los componentes
no esenciales del kernel e implementándolos como programas del sistema y de
nivel de usuario; el resultado es un kernel más pequeño.
Normalmente los microkernels proporcionan la gestión de memoria y de los
procesos mínima, además de un mecanismo de comunicaciones.
La función principal del microkernel es proporcionar un mecanismo de
comunicaciones entre el programa cliente y los distintos servicios que se
ejecutan también en el espacio de usuario.
Módulos La mejor metodología para diseñar sistemas operativos es la que usa las técnicas de programación orientada a objetos para crear un kernel modular. El kernel enlaza un conjunto de componentes fundamentales que pueden ser:
• Clases de planificación.
• Sistemas de archivos.
• Llamadas al sistema cargables.
• Formatos ejecutables.
• Módulos STREAMS.
• Módulos Misceláneos.
• Controladores de bus y dispositivos.
Gestión de Memoria
Gestión de memoria
El propósito principal de un sistema informático es ejecutar programas.
Estos programas, junto con los datos a los que acceden, deben encontrarse en
memoria principal durante la ejecución del programa.
Para aumentar tanto el grado de utilización del procesador como su velocidad
de respuesta a los usuarios, la computadora debe ser capaz de mantener
varios procesos en memoria.
Asignación de Memoria
En un sistema operativo es indispensable que cada proceso disponga de
espacio de memoria separado. Para hacer esto, se debe determinar el rango
de direcciones legales a las que el proceso puede acceder y garantizar que
ese proceso acceda a las direcciones legales. Se utilizan dos registros, una
base y un límite. El registro base almacena la dirección de memoria física legal
más pequeña, mientras que el registro límite especifica el tamaño del rango.
Reasignación de direcciones
Para que un programa se ejecute debe ser cargado en memoria y colocado
dentro de un proceso, para luego ser asignado a la cola de entrada.
El procedimiento normal consiste en seleccionar uno de los procesos de la
cola de entrada y cargar dicho proceso en memoria. A medida que se ejecuta
el proceso, éste accede a las instrucciones y datos contenidos en la memoria.
Eventualmente, el proceso terminará su ejecución y su espacio de memoria
será declarado como disponible.
Carga Dinámica
Con la carga dinámica, una rutina no se carga hasta que se la invoca. Según
este método, el programa principal se carga en la memoria y se ejecuta.
Cuando una rutina necesita llamar a otra rutina, la rutina que realiza la
invocación comprueba primero si la otra ya sido cargada, si no es así, se carga
en memoria la rutina deseada y para que se actualice las tablas de direcciones
del programa con el fin de reflejar este cambio.
Intercambio
Un proceso debe estar en memoria para ser ejecutado. Sin embargo, los
procesos pueden ser intercambiados temporalmente, sacándolos de la
memoria y almacenándolos en un almacén de respaldo y volviéndolos a llevar
luego a memoria para continuar su ejecución.
Asignación de memoria contigua
La memoria principal debe albergar tanto el sistema operativo como los
diversos procesos de usuario. Por tanto, necesitamos asignar las distintas
partes de la memoria principal de la forma más eficiente posible.
La memoria está usualmente dividida en dos particiones: una para el sistema
operativo residente y otra para procesos de usuario.
En esta asignación contigua de memoria, cada proceso está contenido en una
única sección contigua de memoria.
Fragmentación
A medida de que se cargan procesos en memoria y se eliminan, el espacio
de memoria libre se descompone en una serie de fragmentos de pequeño
tamaño. El problema aparece cuando hay un espacio de memoria total
suficiente como para satisfacer la solicitud, pero estos espacios disponibles no
son contiguos.
Una solución consiste en la compactación. Moviendo el contenido de la
memoria con el fin de situar toda la memoria libre de forma contigua, para
formar un único bloque de gran tamaño.
Paginación
Permite que el espacio de direcciones físicas de un proceso no sea contiguo.
La paginación evita el considerable problema de encajar fragmentos de
memoria de tamaño variable en el almacén de respaldo.
La paginación implica descomponer la memoria física en una serie de
bloques de tamaño fijo denominados marcos y descomponer la memoria lógica
en bloques del mismo tamaño denominados páginas. Cuando hay que ejecutar
un proceso, sus páginas se cargan desde el almacén de respaldo en los
marcos de memoria disponible.
Segmentación
En este esquema un espacio lógico de direcciones es una colección de
segmentos y cada segmento tiene un nombre y una longitud. Las direcciones
especifican tanto el nombre del segmento como el desplazamiento dentro de
ese segmento. El usuario especifica cada dirección proporcionando dos
valores: un nombre de segmento y un desplazamiento.
Gracias!