Jack Pacheco - SOAO2020
Jack Pacheco - SOAO2020
Jack Pacheco - SOAO2020
INTEC
Sistemas Operativos
Jack Damiolix Pacheco Luciano 1065816
Facilitador
Edwin Emil Pérez Arias
Fecha de Entrega
Domingo 17 de enero del 2021
Diseño de un Sistema Operativo
Podríamos definir como diseño de sistemas al proceso de definición de la arquitectura, módulos,
interfaces y datos de un sistema. Lo mismo aplica para el diseño de un sistema operativo, el mismo
posee un proceso de aplicación de los diversos puntos que influyen en la arquitectura y composición
del mismo.
Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras,
dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos
de Sistemas Operativos que existen en la actualidad, con algunas de sus características:
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna
interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes
para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el
procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron
introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque
el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la
secuenciabilidad de la ejecución de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes
exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el
EXEC II para el UNIVAC 1107, orientado a procesamiento académico.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario,
sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar
atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son
procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son
construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores,
control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica
de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente.
Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos
(que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de
Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su
utilización. Su objetivo es tener varias tareas en la memoria principal, de manera que cada uno está
usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.
Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2,
soportan la multitarea.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario
hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta
aparecerá en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son
continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el
sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema
Operativo, principalmente en la administración de memoria principal y secundaria.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que
este conjunto de procesadores esté en un equipo o en diferentes, en este caso es transparente para
el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es aquel que
comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los
procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni
reloj, ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se
compone de otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas
Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus,
Spring, Amoeba, Taos, etc.
Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de
comunicación, con el objetivo primordial de poder compartir los diferentes recursos y la información
del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000,
pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red
más ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT
Server, UNIX, LANtastic.
Sin embargo dentro de estas características y clasificaciones hay puntos fuertes a tomar en
consideración, como la estructura mínima de un sistema operativo, dentro de las formas posibles de
estructurar el código de un sistema operativo tenemos varios diseños, como los son:
● Sistemas monolíticos: Este tipo de organización es, con diferencia, la más común. El sistema
operativo se escribe como una colección de procedimientos, cada uno de los cuales puede
llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada
procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y
resultados, y cada uno de ellos es libre de llamar a cualquier otro, si este último proporciona
un cálculo útil para el primero. Para construir el programa objeto real del sistema operativo
siguiendo este punto de vista, se compilan de forma individual los procedimientos, o los
ficheros que contienen los procedimientos, y después se enlazan en un sólo fichero objeto
con el enlazador. En términos de ocultación de la información, ésta es prácticamente nula:
cada procedimiento es visible a los demás (en contraste con una estructura con módulos o
paquetes, en la que la mayoría de la información es local a un módulo, y donde sólo los
datos señalados de forma expresa pueden ser llamados desde el exterior del módulo). Los
servicios (mediante llamadas al sistema) que proporciona el sistema operativo se solicitan
colocando los parámetros en lugares bien definidos, como los registros o la pila, para
después ejecutar una instrucción especial de trampa, a veces referida como llamada al
núcleo o llamada al supervisor.
● Modelo cliente-servidor: Una tendencia de los sistema operativos modernos es la de
trasladar el código a capas superiores, y eliminar la mayor parte posible del sistema
operativo para mantener un núcleo mínimo. El punto de vista usual es el implantar la
mayoría de las funciones del sistema operativo como procesos de usuario. Para solicitar un
servicio, como la lectura de un bloque de cierto fichero, un proceso de usuario (denominado
en este caso proceso cliente) envía la solicitud a un proceso servidor, que realiza el trabajo y
devuelve la respuesta. Dentro del mismo lo único que hace el núcleo es controlar la
comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes,
cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a
procesos, servicio a terminales o servicio a la memoria; cada parte es pequeña y controlable.
Además, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no
en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el
servidor de ficheros éste puede fallar, pero esto no afectará en general a toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso
en sistemas distribuidos (véase la figura 5.4). Si un cliente se comunica con un servidor
mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en
su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo
que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió
una respuesta.
La comunicación entre procesos es una función básica de los sistemas operativos. Los procesos
pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables
compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC.
Los procesos pueden ejecutarse en una o más computadoras conectadas a una red. Las técnicas de
IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoria compartida
y llamadas de procedimientos remotos (RPC). El método de IPC usado puede variar dependiendo del
ancho de banda y latencia (el tiempo desde el pedido de información y el comienzo del envío de la
misma) de la comunicación entre procesos, y del tipo de datos que están siendo comunicados. El
sistema operativo provee mínimamente dos primitivas, enviar y recibir, normalmente llamadas send
y receive. Asimismo, debe implementarse un enlace de comunicación entre los procesos de la
comunicación. Este enlace puede ser unidireccional o multidireccional según permita la comunicación
en solo uno o en varios sentidos.
● Síncrona o asíncrona.
● Persistente o momentánea.
● Directa o indirecta.
● Simétrica o asimétrica.
● Con uso de buffers explícito o automático.
● Envío copia del mensaje o por referencia.
● Mensajes de tamaño fijo o variable.
Gestión de la memoria
Aplicación de la memoria. La misma podría encargarse de la gestión, cálculo y procesamiento de los
paquetes de programas.
Requisitos de gestión de memoria. Para la misma existen cinco requisitos, reubicación, protección,
compartición, organización lógica y organización física.
Participacionamiento de la memoria. L a memoria principal se divide en un conjunto de particiones
de tamaño fijo durante el inicio del sistema. Cualquier proceso cuyo tamaño sea menor o igual que el
tamaño de la partición puede cargarse en cualquier partición libre, un programa puede que no se
ajuste a una partición y por ello el programador debe diseñar el programa mediante superposiciones.
Paginación de la memoria. En sistemas operativos de computadoras, los sistemas de paginación de
memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria está
dividida en trozos del mismo tamaño que las páginas llamadas marcos de página.
Segmentación de la memoria. L
a segmentación de memoria es una técnica de gestión de memoria
que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan,
generalmente, en torno a un núcleo central desde el que se bifurca a otras partes o se accede a
zonas de datos.
Administración de ficheros
Organización y acceso a los ficheros. El ordenador debe tener acceso a los ficheros creados por los
usuarios, ya sea para tomar de ellos alguna información o para grabarla. El acceso a un fichero está
íntimamente ligado a la organización de dicho fichero. La organización del fichero indica cómo están
dispuestos los registros en el soporte material con objeto de conseguir su utilización más eficiente.
Los tipos de organización de ficheros son básicamente cuatro: organización secuencial, organización
secuencial encadenada, organización secuencial indexada, y organización directa o aleatoria.
Directorios. E
s un contenedor virtual en el que se almacenan una agrupación de archivos
informáticos y otros subdirectorios, atendiendo a su contenido, a su propósito o a cualquier criterio
que decida el usuario.
Compartición de ficheros. La compartición de ficheros es el proceso por el cual una serie de ficheros
se ponen a disposición de los usuarios de una red, dándoles acceso para trabajar sobre ellos,
descargarlos o modificarlos.
Bloques y registros. S
e define como bloque a la cantidad más pequeña de datos que pueden
transferirse de una operación de E/S entre la memoria principal de un ordenador y los dispositivos
periféricos o viceversa. El tamaño del bloque o registro físico dependerá de las características del
ordenador. En la mayoría de los casos el tamaño del bloque suele ser mayor que el del registro
lógico. La adaptación consiste en empaquetar en cada bloque tantos registros lógicos como se
pueda. El empaquetamiento puede ser de tipo fuerte o débil, según que se permita o no aprovechar
el sobrante de un bloque, situando registros a caballo entre dos bloques contiguos.
Dispositivos de E/S. Se conoce como periféricos de entrada y salida a cualquier tipo de dispositivo
periférico de un computador capaz de interactuar con los elementos externos a ese sistema de forma
bidireccional, es decir, que permite tanto que sea ingresada información desde un sistema externo,
como emitir información a partir de ese sistema.
Organización del sistema de E/S. Para que un computador pueda ejecutar un programa debe ser
ubicado previamente en la memoria, junto con los datos sobre los que opera, y para ello debe existir
una unidad funcional de entrada de información capaz de escribir en la memoria desde el exterior.
Análogamente, para conocer los resultados de la ejecución de los programas, los usuarios deberán
poder leer el contenido de la memoria a través de otra unidad de salida de datos. La unidad de
Entrada/Salida (E/S) soporta estas funciones, realizando las comunicaciones del computador
(memoria) con el mundo exterior (periféricos).
Al aplicar definiciones con respecto a este concepto podríamos centrarnos en lo que conocemos
como sistemas operativos distribuidos. La idea base de los sistemas operativos distribuidos es la de
obtener sistemas mucho más rápidos que los utilizados de procesador único, Y para lograr esto
tenemos que olvidar la idea antigua de ejecutar los programas en estos procesadores y pensar en
distribuir las tareas a los procesadores libres más rápidos en cada momento.
Los sistemas operativos distribuidos desempeñan las mismas funciones que un sistema operativo
normal, pero con la diferencia de trabajar en un entorno distribuido. Su Misión principal consiste en
facilitar el acceso y la gestión de los recursos distribuidos en la red.
Dentro de sus aspectos de diseño están:
● Escalabilidad: Los sistemas distribuidos están basados en las ideas básicas de
transparencia, eficiencia, flexibilidad, escalabilidad y fiabilidad.
● Transparencia: El concepto de transparencia de un Sistema operativo distribuido va ligado a
la idea de que todo el sistema funcione de forma similar en todos los puntos de la red,
debido a esto queda como labor del sistema operativo coordinar el mecanismo que logre la
unificación de todos los sistemas y recursos totalmente transparente para el usuario o
aplicación.
● Eficiencia: Obtener sistemas mucho más rápidos que los utilizados en un procesador único.
Para el desarrollo de un sistema operativo, hay que tener en cuenta sus cuatro componentes básicos,
de manera sintetizada podemos listarlos:
● Gestión de procesos.
● Administración de memoria principal.
● Administración de ficheros.
● Gestión de los dispositivos de E/S.