0% encontró este documento útil (0 votos)
24 vistas7 páginas

Capítulo 2

Este capítulo describe los servicios y estructuras básicas de los sistemas operativos, incluyendo la interfaz de usuario, ejecución de programas, operaciones de E/S, manipulación de archivos, comunicaciones, detección de errores, asignación de recursos, protección y seguridad. También describe los tipos de llamadas al sistema, como control de procesos, administración de archivos, administración de dispositivos y mantenimiento de información.

Cargado por

Diana Rodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas7 páginas

Capítulo 2

Este capítulo describe los servicios y estructuras básicas de los sistemas operativos, incluyendo la interfaz de usuario, ejecución de programas, operaciones de E/S, manipulación de archivos, comunicaciones, detección de errores, asignación de recursos, protección y seguridad. También describe los tipos de llamadas al sistema, como control de procesos, administración de archivos, administración de dispositivos y mantenimiento de información.

Cargado por

Diana Rodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

CAPITULO 2 - ESTRUCTURAS DE SISTEMAS OPERATIVOS

Servicios de Sistema Operativo


Servicios que proporcionan funciones que resultan útiles para los usuarios:

Interfaz de Usuario. Un tipo de interfaz de usuario es la interfaz de líneas de comandos, que usa
comandos de texto y algún tipo de método para introducirlos. Es un programa que permite
introducir y editar los comandos. Otro tipo, es la interfaz de proceso por lotes, en la que los
comandos y directivas para controlar dichos comandos se introducen en archivos, y luego dichos
archivos se ejecutan.

Ejecución de Programas. El sistema tiene que poder cargar un programa en memoria y ejecutarlo.
Todo programa debe poder terminar su ejecución, de forma normal o anormal.

Operaciones de E/S. Un programa en ejecución puede necesitar llevar a cabo operaciones de E/S,
dirigidas a un archivo o aun dispositivo de E/S. Por cuestiones de eficiencia y protección el usuario
no pueden normalmente controlar de modo directo los dispositivos de E/S; por tanto, el SO debe
proporcionar medios para realizar la E/S.

Manipulación del Sistema de Archivos. Los programas necesitan leer y escribir en archivos y
directorios. También, necesitan borrarlos y crearlos usando su nombre, realizar búsquedas en un
determinado archivo o presentar la información contenido en un archivo.

Comunicaciones. Un proceso puede intercambiar información con otro. Esta comunicación, puede
tener lugar entre procesos que estén ejecutándose en la misma computadora, o entre procesos que se
ejecuten en diferentes computadoras conectadas a través de una red. Las comunicaciones pueden
implementarse utilizando memoria compartida o mediante paso de mensajes.

Detección de Errores. El SO necesita detectar continuamente los posibles errores. Pueden


producirse en el Hardware del procesador y de memoria en un dispositivo de E/S o en algunos
programas de usuario.

Servicios que proporcionan funciones que resultan útiles para garantizar la eficiencia del propio
sistema:

Asignación de Recursos. Cuando hay varios usuarios o hay trabajos ejecutándose al mismo
tiempo, deben asignarse a cada uno de ellos los recursos necesarios. Por ejemplo, para poder
determinar cuál es el mejor modo de utilizar la CPU, el SO dispone de rutinas de planificación de la
CPU.

Responsabilidad. Qué usuarios emplean qué clase de recursos de la computadora y en qué


cantidad.

Protección y Seguridad. La Protección implica asegurar que todos los accesos a los recursos del
sistema estén controlados. También, es importante garantizar la seguridad del sistema frente a
posibles intrusos. Requerir que los usuarios se autentiquen ante el sistema, usualmente mediante
una contraseña, para obtener acceso a los recursos del mismo.
Interfaz de Usuario del Sistema Operativo
Existen dos métodos fundamentales para que el usuario interactúe con el SO:

Interprete de comandos

La función principal del intérprete de comandos es obtener y ejecutar el siguiente comando


especificado por el usuario. Muchos de los comandos que se proporcionan en este nivel, se utilizan
para manipular archivos: creación, borrado, listado, impresión, copia, ejecución, etc. Estos
comandos pueden implementarse de dos formas generales.

Uno de los métodos es que el propio intérprete contiene el código que el comando tiene que
ejecutar.

El otro método, implementa la mayoría de los comandos a través de una serie de programas del
sistema. En este caso, el intérprete “no entiende” el comando, sino que simplemente lo usa para
identificar el archivo que hay que cargar en memoria y ejecutar.

Interfaces gráficas de usuario

Otra estrategia para interactuar con el SO es a través de una interfaz gráfica de usuario (GUI)
suficientemente amigable. En lugar de tener que introducir comandos directamente a través de la
línea de comandos, una GUI permite a los usuarios emplear un sistema de ventanas y menús
controlable mediante el ratón.

Tipos de Llamadas al Sistema


Las llamadas al sistema pueden agruparse de forma general en cinco categorías principales:

 Control de procesos,
 manipulación de archivos,
 manipulación de dispositivos,
 mantenimiento de información y
 comunicaciones.

Control de procesos

Un programa en ejecución debe poder interrumpir dicha ejecución de forma normal o de forma
anormal. Si se hace una llamada al sistema para terminar de forma anormal el programa
actualmente en ejecución, en ocasiones se produce un volcado a memoria y se genera un mensaje de
error.

La información de volcado se escribe en disco y un depurador puede examinar dicha información


para determinar la causa del error. En cualquier caso, tanto en las circunstancias normales como en
las anormales, el SO debe transferir el control al intérprete de comandos que realizó la invocación
del programa; el intérprete leerá entonces el siguiente comando.
Algunos sistemas permiten utilizar tarjetas de control para indicar acciones especiales de
recuperación en caso de que produzcan errores. Se trata de un comando que permite gestionar la
ejecución de un proceso. Si el programa termina anormalmente, puede definir un nivel de error.
Cuanto más severo sea el error experimentado, mayor nivel tendrá ese parámetro de error. Con este
sistema podemos combinar la terminación normal y la anormal definiendo una terminación normal
como un error de nivel 0. El intérprete de comandos o el siguiente programa pueden usar el nivel de
error para determinar automáticamente la siguiente acción que hay que llevar a cabo.

Administración de Archivos

Identificaremos diversas llamadas comunes a los sistemas que están relacionadas con la gestión de
archivos.

Crear (create) y borrar (delete) archivos. Ambas llamadas al sistema requieren que se proporcione el
nombre del archivo. Una vez que el archivo se ha creado, también necesitaremos abrirlo (open) y
utilizarlo. También tenemos que poder leerlo (read), escribir (write), o reposicionarnos
(reposistion). Por último, tenemos que poder cerrarlo (close).

Necesitamos también poder hacer éstas operaciones con directorios. Además, para cualquier
archivo o directorio, necesitamos poder determinar los valores de diversos atributos y cambiarlos si
fuera necesario.

Administración de Dispositivos

Un proceso puede necesitar varios recursos para ejecutarse: memoria principal, unidades de disco,
acceso a archivos, etc. Si los recursos están disponibles, pueden ser concedidos y el control puede
devolverse al proceso de usuario. En caso contrario, el proceso tendrá que esperar hasta que haya
suficientes recursos disponibles.

Puede pensarse a los distintos recursos controlados por el sistema como si fueran dispositivos.
Algunos son dispositivos físicos (ej. cintas), mientras que en otros puede pensarse como
dispositivos virtuales o abstractos (ej. archivos).

Mantenimiento de Información

Muchas llamadas al SO existen simplemente con el propósito de transferir información entre el SO


y el programa de usuario. Por ejemplo, la mayoría de los sistemas ofrecen una llamada al sistema
para devolver la hora (time) y la fecha (date) actuales. Otras llamadas al sistema pueden devolver
información sobre el sistema, como por ejemplo el número actual de usuarios, el número de versión
del sistema operativo, la cantidad de memoria libre o de espacio en disco, etc.

Comunicaciones

Existen dos modelos de comunicación interprocesos: el modelo de paso de mensaje y el modelo de


memoria compartida:

Modelo de Paso de Mensajes


Los procesos que se comunican intercambian mensajes entre sí para transferirse información. Los
mensajes pueden intercambiarse directa o indirectamente a través de un buzón de correo en común.
Antes de que la comunicación tenga lugar, debe abrirse una comunicación. Debe conocerse de
antemano el nombre del otro comunicador, ya sea otro proceso del sistema o un proceso de otra
computadora que esté conectado a través de la red de comunicaciones. Usualmente el proceso
receptor debe conceder permiso para que la comunicación tenga lugar, con una llamada de
aceptación de la conexión

Modelo de Memoria Compartida

Los procesos usan las llamadas al sistema shared memory créate y shared memory attach para crear
y obtener acceso a regiones de la memoria que son propiedad de otros procesos. Normalmente el
SO intenta evitar que un proceso acceda a la memoria de otro proceso. La memoria compartida
requiere que dos o más procesos acuerden eliminar esta restricción. La memoria compartida
permite efectuar la comunicación con una velocidad máxima, dado que puede realizarse a
velocidades de memoria cuando tiene lugar dentro de la misma computadora. Sin embargo, plantea
problemas en lo relativo a la protección y sincronización entre los procesos que comparten la
memoria.

Programas del Sistema


Los programas del sistema proporcionan un cómodo entorno para desarrollar y ejecutar programas.
Algunos de ellos son sólo interfaces de usuario para las llamadas al sistema. Pueden dividirse en las
siguientes categorías:

 Administración de Archivos: Estos programas crean, borran, copian, cambian de nombre,


imprimen, vuelcan, listan y también manipulan archivos y directorios
 Información de Estado
 Modificación de Archivos
 Soporte de Lenguajes de Programación
 Carga y ejecución de programas
 Comunicaciones

Además de con los programas del sistema, la mayoría de los SO se suministran con programas de
utilidad para resolver problemas comunes o realizar operaciones frecuentes. Por ejemplo,
exploradores web, procesadores y editores de texto, hojas de cálculo, sistemas de bases de datos,
compiladores, paquetes gráficos y juegos. Estos programas se conocen como utilidades del sistema
o programas de aplicación.
Estructura del Sistema Operativo
Estructura Simple

Muchos sistemas comerciales no tienen una estructura bien definida. Comienzan siendo pequeños,
simples y limitados y luego crecen más allá de su ámbito original. Ej. MS-DOS.

En MS-DOS, las interfaces y niveles de funcionalidad no están separados. Ej. Los programas de
aplicación pueden acceder a las rutinas básicas de E/S para escribir directamente en la pantalla y las
unidades de disco. Por lo tanto, esto hace que MS-DOS sea vulnerable ante programas a programas
erróneos, lo que hace que el sistema completo falle, cuando fallan los programas de usuario.

Estructura en Niveles

Concepto basado en un SO modular, no todas las funcionalidades juntas como en el caso de MS-
DOS.

Con el soporte Hardware apropiado, los SO pueden dividirse en partes más pequeñas y más
adecuadas que lo que permitía los sistemas originales MD-DOS o UNIX.

El SO se divide en una serie de capas (niveles). El nivel inferior (nivel 0), es el Hardware. El nivel
superior (nivel N) es la interfaz de usuario. Un nivel, es una implementación de un objeto abstracto
formado por una serie de datos y por las operaciones que permiten manipular dichos datos. Consta
de un conjunto de rutinas que los niveles superiores pueden invocar. A su vez, este nivel puede
invocar operaciones de niveles inferiores.

La principal ventaja es la simplicidad de construcción y depuración.

Si se encuentra un error durante la depuración de un nivel, el error tendrá que estar localizado en
dicho nivel, dado que los niveles inferiores a él ya se han depurado.

La principal dificultad con el método de niveles es la de definir apropiadamente los diferentes


niveles. Es necesario realizar una planificación cuidadosa de los niveles dado que solo pueden usar
los servicios de los niveles inferiores.

Además, este tipo de implementación tiende a ser menos eficiente que otros tipos de
implementación. Por ejemplo, cuando un programa de usuario ejecuta una operación de E/S, realiza
una llamada al sistema que será capturada por el nivel de E/S, el cual llamará al nivel de gestión de
memoria, el cual a su vez llamará al nivel de planificación de la CPU, que pasará a continuación la
llamada al Hardware. Cada nivel añade una carga de trabajo adicional a la llamada al sistema. Esto
tarda más que un sistema sin niveles.
Microkernels

Se modulariza el Kernel, lo que se denomina microkernel. Este método estructura el SO


eliminando todos los componente 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.

La función principal es proporcionar un mecanismo de comunicaciones entre el programa cliente y


los distinto servicios que se ejecutan también en el espacio de usuario. Por ejemplo, si el programa
cliente desea acceder a un archivo, debe interactuar con el servidor de archivos. El programa cliente
y el servicio nunca interactúa directamente, sino que se comunican de forma indirecta
intercambiando mensajes con el microkernel.

Otra ventaja es la facilidad para ampliar el sistema operativo. Todos los servicios nuevos, se
agregan en el espacio de usuario y en consecuencia no requiere que se modifique el kernel.

Módulos

La mejor metodología actual para diseñar sistemas operativos es la que usa más técnicas de
programación orientada a objetos para crear un Kernel modular.

En este caso, el Kernel dispone de un conjunto de componentes fundamentales y enlaza


dinámicamente los servicios adicionales, bien durante el arranque o en tiempo de ejecución.

Esto permite proporcionar servicios básicos y también permite implementar ciertas características
dinámicamente.

El resultado global es similar a un sistema de niveles, en el sentido de que cada sección del Kernel
tiene interfaces bien definidas y protegidas, pero es más flexible que un sistema de niveles, porque
cualquier modulo puede llamar a cualquier otro modulo.

Máquinas Virtuales
La idea principal es la de abstraer el Hardware de la computadora, formando varios entornos de
ejecución diferentes, creando la ilusión de que cada entorno de ejecución está operando en su propia
computadora privada. El método de máquina virtual proporciona una interfaz que es idéntica al
Hardware básico subyacente. Cada proceso dispone de una copia (virtual) de la maquina
subyacente.

La razón principal para crear una máquina virtual es la de compartir el mismo Hardware y a su vez,
a operar con entornos de ejecución diferentes.

Una de las principales dificultades son los sistemas de disco. Supongamos que la maquina física
dispone de 3 unidades de disco, pero desea dar soporte a 7 máquinas virtuales. Claramente, no se
puede asignar una unidad de disco a cada máquina virtual. La solución, consiste en proporcionar
discos virtuales, denominados minidiscos en el SO VM de IBM. El sistema implementa cada
minidisco asignando tantas pistas de los discos físicos como necesite el minidisco. Obviamente, La
suma de los tamaños de todos los minidiscos debe ser menos que el espacio de disco físicamente
disponible.
Arranque del Sistema
El procedimiento de carga del Kernel se conoce como arranque del sistema. En la mayoría de los
sistemas, una pequeña parte del código, conocida como programa de arranque o cargador del
sistema, se encarga de localizar al Kernel, lo carga en la memoria principal e inicia su ejecución.

Cuando la CPU recibe un suceso de re inicialización, el registro de instrucción se carga con una
posición de memoria predefinida y la ejecución se inicia allí. En dicha posición se encuentra el
programa inicial de arranque, que se encuentra en memoria de sólo lectura.

El programa de arranque puede realizar diversas tareas. Una de ellas, consiste en ejecutar una serie
de diagnósticos para determinar el estado de la máquina. También, puede inicializar todos los
aspectos del sistema, desde los registros de la CPU hasta los controladores de dispositivo y los
contenidos de la memoria principal.

En los sistemas operativos de gran envergadura (Windows, UNIX), el cargador de arranque se


almacena en firmware y el SO en disco. En este caso, el programa de arranque ejecuta los
diagnósticos y tiene un pequeño fragmento de código que puede leer un solo bloque de memoria y
ejecutar el código que hay en dicho bloque de arranque. El programa almacenado en el bloque de
arranque puede ser lo suficientemente complejo como para cargar el sistema operativo completo en
memoria e iniciar su ejecución.

También podría gustarte