You are on page 1of 22

Sistemas operativos

Presentación de unidad
La acción más pequeña es mejor que la intención más grande.

Un sistema operativo es un software más importante que se ejecuta dentro de un dispositivo


electrónico, ya que es el que nos permite dar órdenes para que alguna acción en concreto
pueda ejecutarse dentro de nuestro dispositivo electrónico.

A través de esta unidad conoceremos a detalle la definición, objetivos, conceptos


fundamentales y estructura de un sistema operativo, así como la importancia y el rol que
desempeña en el funcionamiento de una computadora.

Objetivo de unidad
Identificar los conceptos básicos de un sistema operativo con la intención de ubicar sus
principales fundamentos.

¡Bienvenidos a esta unidad!

1.1 Fundamentos de los sistemas operativos


Un sistema operativo actúa como un intermediario entre el usuario de una computadora y
el hardware de la misma. El propósito de un sistema operativo es proporcionar un entorno
en el que el usuario pueda ejecutar programas de una manera práctica y eficiente.

Un sistema operativo es software que gestiona el hardware de la computadora. El hardware


debe proporcionar los mecanismos apropiados para asegurar el correcto funcionamiento
del sistema informático e impedir que los programas de usuario interfieran con el apropiado
funcionamiento del sistema.

Internamente, los sistemas operativos varían enormemente en lo que se refiere a su


configuración, dado que están organizados según muchas líneas diferentes. El diseño de un
nuevo sistema operativo es una tarea de gran envergadura. Es fundamental que los objetivos
del sistema estén bien definidos antes de comenzar el diseño. Estos objetivos constituyen la
base para elegir entre los distintos algoritmos y estrategias.

Dado que un sistema operativo es un software grande y complejo, debe crearse pieza por
pieza. Cada una de estas piezas debe ser una parte perfectamente perfilada del sistema,
estando sus entradas, salidas y funciones cuidadosamente definidas. (Silberschatz, Galvin,
& Gagne, 2006,
1.2 Definición de sistema operativo
Un sistema operativo 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 un
intermediario entre el usuario y el hardware de la computadora. Un aspecto sorprendente
de los sistemas operativos es la gran variedad de formas en que llevan a cabo estas tareas.
Los sistemas operativos para main- frame están diseñados principalmente para optimizar el
uso del hardware. Los sistemas operativos de las computadoras personales (PC) soportan
desde complejos juegos hasta aplicaciones de negocios. Los sistemas operativos para las
computadoras de mano están diseñados para proporcionar un entorno en el que el usuario
pueda interactuar fácilmente con la computadora para ejecutar programas. Por tanto,
algunos sistemas operativos se diseñan para ser prácticos, otros para ser eficientes y otros
para ser ambas cosas. (Silberschatz,Galvin, & Gagne, 2006, p.3)

1.3 Objetivos del sistema operativo

Figura 1. Características principales de los Sistemas Operativos. (UNAM, 2017)

Un SO actúa como interfaz entre la máquina y los programas de aplicaciones o el propio


usuario. También se encarga de gestionar los recursos del sistema informático para obtener
un uso óptimo de ellos. A continuación, se tratarán las funciones del SO desde ambos
puntos de vista, así como las características que debe presentar para mantener una
capacidad de evolución adecuada.

El SO ofrece servicios en las áreas descritas a continuación:


Da clic en cada uno de los títulos para obtener más información.

• Creación de programas

Da una gran variedad de servicios, como los editores y depuradores (debuggers), para
ayudar en la creación de programas. Con frecuencia estos servicios aparecen como
programas de utilidad que no forman realmente parte del sistema, pero son accesibles
a través de él.

• Ejecución de programas

Para ejecutar un programa es necesario realizar un cierto número de tareas. Las


instrucciones y datos deben cargarse en la memoria principal, y los archivos y dispositivos
de E/S inicializarse y prepararse otros recursos. El SO administra todas estas tareas por el
usuario.

• Acceso a los dispositivos de E/S

Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o señales


de control para su funcionamiento. El SO, ayudado por los manejadores o drivers de
dispositivo, tiene en cuenta estos detalles, de modo que el programador pueda pensar en
forma de lecturas y escrituras simples desde o hacia el dispositivo.

• Acceso controlado a los archivos

El SO se ocupa del formato de los archivos y del medio de almacenamiento, y en sistemas


de varios usuarios trabajando simultáneamente brinda los mecanismos para controlar que
el acceso a los archivos se lleve a cabo de una manera correcta

• Acceso al sistema

En un sistema compartido o público el SO controla el acceso al sistema como un todo y a


sus recursos específicos. Las funciones de acceso deben brindar protección a los recursos y
a los datos ante usuarios no autorizados y resolver conflictos en la propiedad de los
recursos.

• Detección y respuesta a errores

Cuando un sistema informático está en funcionamiento pueden producirse varios errores,


ante lo cual el SO debe dar una respuesta que elimine la condición de error con el menor
impacto sobre las aplicaciones en ejecución.

• Contabilidad

Un SO debe recoger estadísticas de utilización de los diversos recursos.

• Administrador de recursos
El SO es responsable de la gestión de los recursos de la máquina y mediante su
administración posee el control sobre las funciones básicas de la misma; por ello, no es nada
más que un programa, pero su diferencia clave es el propósito que tiene. El sistema
operativo dirige al procesador en el empleo de otros recursos del sistema y en el control del
tiempo de ejecución de los programas de usuario. (UNAM, 2017)

Figura 2. Recursos administrados por el S.O. (Red Martinez & Castillo Ron, 2001)

1.4 Conceptos fundamentales de los sistemas operativos


La interfaz entre el S. O. y los programas del usuario se define como el conjunto de
“instrucciones ampliadas” [23, Tanenbaum] que proporciona el S. O. y son las “llamadas al
sistema” las cuáles crean, eliminan y utilizan objetos del software controlados por el S. O..
Los más importantes son procesos y archivos:

Da clic en cada uno de los títulos para obtener más información.

Procesos:

- Es el concepto central de todos los S. O.

- Es básicamente un programa en ejecución.


- Consta del programa ejecutable, sus datos y pila, contador y otros registros, además de la
información necesaria para ejecutar el programa.

- La información de control relacionada con los procesos se almacena en la tabla de


procesos:

• Posee un arreglo de estructuras, una por cada proceso existente en ese momento.
• Es administrada por el S. O.

- Un proceso (suspendido) consta de:

• Un espacio de dirección.
• Los datos pertinentes de la tabla de procesos.

- Un proceso puede crear procesos hijo y estos nuevos procesos hijo, conformando un árbol
de procesos.

Archivos:

• Una de las funciones principales del S. O. es brindar independencia de dispositivo.


• Muchos S. O. soportan el concepto de directorio como una forma de agrupar
archivos.
• Los directorios se estructuran jerárquicamente, por lo que a cada archivo le
corresponde una ruta de acceso.
• Existen distintos esquemas de seguridad de archivos en los distintos S. O.

Llamadas al sistema:

- Permiten a los programas comunicarse con el S. O. y solicitarle servicios.

- A cada llamada le corresponde un procedimiento:

• Pone los parámetros de la llamada en un lugar específico para luego ejecutar una
instrucción tipo “trap” de llamada a procedimiento protegido para iniciar el S. O.
• Luego de “trap” el S. O. recupera el control, examina los parámetros y si son válidos
ejecuta el trabajo solicitado.
• Luego de terminar, el S. O. coloca un código de estado en un registro indicando si
tuvo éxito o fracaso y ejecuta una instrucción del tipo “return from trap” para
regresar el control al procedimiento.

El procedimiento regresa al programa llamador con un código de estado como un valor de


función; dentro de los parámetros pueden regresar valores adicionales. (Red Martinez &
Castillo Ron, 2001, p. 8).
1.5 Estructura de los sistemas operativos
A continuación, se analizan cinco estructuras que han sido llevadas a la práctica en los SO:

Da clic en cada uno de los títulos para obtener más información.

Sistemas monolíticos
La estructura monolítica es la más utilizada en los SO. En general, es posible decir que dentro
de esta estructura de sistema no hay una estructura definida. En otras palabras, cuando el SO
es creado se escribe como una colección de procesos que cumplen con diversas funciones,
donde cada uno de ellos puede ser llamado por el sistema cuando sea necesario.

Para ayudar a identificar cada proceso, estos son generados con una interfaz perfectamente
determinada que recibe una serie de valores-parámetro bien definidos y entrega un resultado
o salida única. Adicionalmente, estos procesos pueden llamar a otros procesos de su
secuencia de instrucciones cuando sea necesario, lo que los vuelve complementarios.

Cuando un SO es creado con estructura monolítica, su programa objeto procesa y compila


todos los procedimientos de forma individual para, posteriormente, de acuerdo a las
instrucciones contenidas en cada procedimiento, llamar a los procedimientos
complementarios y realizar el enlace entre ellos, generando un fichero objeto único. Por otro
lado, los procedimientos contenidos en la estructura monolítica pueden ver a todos los demás
procedimientos, lo que permite un alto grado de trasparencia en la información, en
comparación con otras estructuras, como la modular o por paquetes, donde cada módulo o
paquete contiene su propia información y no es posible ver la de otros, a menos que sea
solicitada por un procedimiento dentro de ellos (en cuyo caso sólo se podrá visualizar la
información de entrada del procedimiento).

Pese a lo anterior, los sistemas monolíticos cuentan con una estructura a nivel básico; esto se
puede observar cuando los servicios o llamadas al sistema son realizados. Al ocurrir lo
anterior, los parámetros necesarios para la ejecución del servicio son colocados en la pila y
posteriormente se ejecuta una instrucción denominada TRAP, que realiza un cambio de
modo, al pasar de modo usuario a modo núcleo y transferir el control al sistema operativo
para que efectúe la operación. Así, el sistema operativo obtiene los parámetros y determina
la llamada al sistema o servicio que debe ejecutar. Posteriormente, utiliza el número de
llamada al sistema como un valor de índice para almacenar dicha llamada en una tabla de
registro de llamadas al sistema, y como parámetro para un apuntador que lo asocia al
procedimiento que ejecuta esa llamada.

De modo general, se puede resumir la estructura monolítica de la siguiente manera:


Figura 3. Estructura monolítica (UNAM, 2017)

Por cada llamada realizada al sistema, en el modelo monolítico debe existir un


procedimiento de servicio encargado de atenderla. Los procedimientos auxiliares o de
utilidad reúnen la información necesaria para la correcta ejecución del procedimiento de
servicio; por ejemplo, obtener datos de los programas ejecutados por el usuario.

Esta división de los procedimientos en tres capas se muestra en la figura siguiente:

Figura 4. Modelo de estructura simple para un sistema monolítico. (UNAM, 2017)


Sistemas estructurados en capas

Como su nombre lo indica, consiste en la organización de las diversas funciones del sistema
en una estructura jerárquica de capas, construidas a partir de una capa base encargada de la
administración del procesador. El primer sistema operativo (SO) conocido con esta estructura
fue construido por E. W. Dijkstra y sus estudiantes, en 1968, el THE (Technische Hogescholl
Eindhoven), en los Países Bajos.

El sistema de Dijkstra era relativamente sencillo: procesaba la información por lotes para un
ordenador holandés, el Electrologica X8, con una capacidad de 32 Kb de memoria de 27 bits.

La siguiente figura describe las seis capas del sistema THE. La capa 0 era encargada de
administrar al procesador, efectuando la conmutación de procesos conforme se realizaban las
interrupciones o expiraba el tiempo asociado a cada proceso (timer). Por encima de la capa
0 se ejecutaba una serie de procesos secuenciales independientes, que podían ser
programados en cualquier momento sin importar el número de procesos que se estuvieran
operando en ese momento, lo que permitía hacer una programación múltiple de procesos en
el procesador.

Figura 5. Capas del sistema (UNAM, 2017)

Ahora veamos cómo funcionaba cada una de estas capas:


Figura 6. Funcionamiento de capas (UNAM, 2017)

Máquina virtual
El concepto de máquina virtual se utiliza mucho actualmente en un contexto diferente: la ejecución
de programas MS-DOS antiguos en un Pentium u otra CPU Intel de 32 bits. Al diseñar el Pentium y
su software, tanto Intel como Microsoft se percataron de que podría haber una gran demanda de
gente queriendo ejecutar su software antiguo sobre el hardware nuevo. Por ese motivo, Intel
incluyó un modo 8086 virtual en el Pentium. Así, la máquina actúa como un 8086 (idéntico a un 8088
desde el punto de vista del software), con el direccionamiento de 16 bits con un límite de 1 MB.

Exokernels
Los exokernels o exonúcleos son sistemas creados con fines de investigación científica en el Instituto
Tecnológico de Massachusetts, con el objetivo de crear una capa de software para sistemas
virtuales. Están situados en la capa más baja de los sistemas operativos, ejecutándose en modo de
núcleo, y su función principal es administrar y asignar recursos para los sistemas que dan soporte a
las máquinas virtuales. Éstas tienen la capacidad de ejecutar de forma independiente su propio
sistema operativo, como lo hacen los procesadores Icore de Intel y la VM/370, limitados por los
recursos asignados por el exokernel.

Modelo cliente-servidor

Al paso del tiempo, observando las ventajas de mover procesos y códigos de programación
a modelos de capas, se han generado sistemas cliente-servidor. Estos consisten en ir quitando
procesos ejecutados en modo núcleo y pasarlos a las capas superiores del sistema, dejando
un modo de ejecución (microkernel) con solamente los procesos esenciales para el
funcionamiento base del sistema. La intención de este modelo es destinar la mayor parte de
los recursos del sistema operativo en la ejecución de los procesos de usuario.

En el esquema cliente-servidor, los procesos de usuario (denominados procesos de cliente en


este esquema) envían una solicitud a un proceso servidor, que al recibirla ejecuta las tareas
solicitadas, regresando el resultado al proceso cliente.

Figura 7. Funcionamiento de capas (UNAM, 2017)

Como se observa en la figura anterior, la función del núcleo se reduce a la administración


de la comunicación entre los procesos cliente y servidor, dividiendo el sistema en partes, las
cuales se encargan de una fase específica que realiza el sistema, como el servicio de
procesos, terminal de procesos y proceso de archivos. Por otro lado, la división del sistema
permite tener un sistema con estructura modular más pequeña y manejable, con la ventaja
de que, al ser ejecutados los procesos en modo usuario, no se tiene acceso directo al
hardware, lo que previene fallas en el mismo.

Asimismo, los sistemas desarrollados con el esquema cliente-servidor presentan mayor


adaptabilidad para ser empleados con un esquema de sistemas distribuidos, donde diversos
ordenadores proveen de distintos servicios, evitando concentrarlos en uno solo. Con este
esquema distribuido, los usuarios pueden emplear diversas peticiones de servicios a la vez,
atendidas en varios equipos; el resultado es un tiempo de respuesta menor.

1.6 Hardware
Los principales aspectos del hardware, de importancia para los S. O., son los siguientes [7,
Deitel]:

Da clic en cada uno de los títulos para obtener más información.

Compaginación del almacenamiento

• Objetivo: acelerar el acceso al almacenamiento primario (bancos de memoria).


• Generalmente, mientras cualquiera de las localidades de un banco de almacenamiento
primario, está siendo accedida, ninguna otra referencia puede estar en curso.
• La compaginación del almacenamiento coloca localidades de memoria adyacentes en
diferentes bancos de almacenamiento, para permitir varias referencias al mismo tiempo.

Registro de relocalización

• Permite relocalizar de forma dinámica los programas.


• La dirección base de un programa en la memoria principal se sitúa en el registro de
relocalización.
• El contenido del registro de relocalización se añade a cada dirección desarrollada
por un programa en ejecución.
• Permite al programa residir en localizaciones diferentes a aquellas para las cuales
fue traducido.

Interrupciones y escrutinio

• Interrupciones: permiten a una unidad obtener la inmediata atención de otra, de


manera que la primera pueda informar de un cambio de estado:
o Permite salvar el “estado” de la unidad interrumpida antes de procesar la
interrupción.
• Escrutinio: técnica que permite que una unidad verifique el estado de otra unidad de
funcionamiento independiente.
Utilización del “buffer”

• Un “buffer” es un área de almacenamiento primario destinada a contener datos


durante transferencias de e / s.
• Cuando concluye la transferencia los datos pueden ser accedidos por el procesador.
• Esquema de “entradas de buffer simple”:
o El canal deposita datos en el buffer.
o El procesador procesa estos datos. El canal deposita nuevos datos, etc.No
puede haber simultaneidad entre operaciones de colocar datos en el buffer y
procesarlos: Afecta el performance.
• Esquema de “entradas de buffer doble”:
o Permite la sobreposición de operaciones de e/s con el procesamiento: Mejora
el performance.
o Mientras el canal deposita datos en un buffer el procesador puede estar
procesando los datos del otro buffer.
o Cuando el procesador concluye el proceso de los datos del primer buffer,
puede continuar con los datos del segundo, mientras el canal deposita
nuevos datos en el primer buffer:
o Es la técnica de “buffer biestable (o en flip flop)”.

Dispositivos periféricos

• Permiten el almacenamiento de grandes cantidades de información fuera del


almacenamiento principal.
• Existen dispositivos secuenciales y de acceso directo.
• Las características y prestaciones son muy variadas.

Protección del almacenamiento

• Limita el número de direcciones que un programa puede referenciar.


• Es esencial en los sistemas multiusuario.
• Se implementa mediante los “registros de límites”, que definen las direcciones
superior e inferior del bloque de almacenamiento afectado a un determinado
programa.
• También se pueden utilizar “claves de protección del almacenamiento” anexas a
áreas de almacenamiento primario:
o Un programa solo puede acceder a localidades de almacenamiento cuyas
claves de protección concuerdan con las del programa.

Temporizadores y relojes

• “Temporizador de intervalos”: previene que un solo usuario monopolice el


procesador en sistemas multiusuario.
• El temporizador genera una interrupción al procesador cuando expira el intervalo
asignado a un usuario.
• “Reloj horario”: permite al computador hacer un seguimiento de la “hora del reloj
de pared”, con una exactitud de millonésimas de segundo o mayor.

Operaciones en línea y fuera de línea; procesadores satélite

• “Operación en línea”: los periféricos utilizados están conectados al procesador.


• “Operación fuera de línea”: los periféricos utilizados están conectados a unidades de
control que no están conectadas al sistema central o principal.

Canales de entrada / salida

• Son sistemas computacionales de propósito especial, dedicados al manejo de la e / s


con independencia del procesador principal.
• Tienen acceso directo al almacenamiento principal para almacenar o recuperar
información.
• Evitan al procesador la mayor parte de la carga de manejar la e / s, incrementando la
concurrencia.
• Los principales tipos de canales son los siguientes:
o Selectores
o Multiplexores de bytes
o Multiplexores de bloques

Robo de ciclo
Significa que en la competencia entre el procesador y los canales para acceder a un
determinado banco de almacenamiento primario (memoria principal), se da prioridad a los
canales:

• Se optimiza el uso de los dispositivos de e / s.

Direccionamiento de base más desplazamiento

• Todas las direcciones son añadidas al contenido de un “registro de base”.


• Los programas son “independientes de la localización”:
o Especialmente importante en ambientes multiusuario.

Estado de problema, estado supervisor, instrucciones privilegiadas

• Corresponde a distintos “estados de ejecución”.


• “Estado de problema o de usuario”: estado en que corren los programas de usuario:
o Tiene acceso a un subconjunto de instrucciones del conjunto de
instrucciones de la máquina. “Estado supervisor o de núcleo”: generalmente
el S. O. corre así con la categoría de “usuario de mayor confianza o nivel”:
o Tiene acceso a todas las instrucciones del conjunto de instrucciones de la
máquina.
• Si el sistema soporta más de dos estados:
o Se puede instrumentar una “granulación de protección” más fina.
o Permite conceder accesos por medio del “principio de menos privilegio”:
• Se debe garantizar a cada usuario en particular la menor cantidad de privilegio y
acceso que necesite para cumplir sus tareas.
• “Instrucciones privilegiadas”: son aquellas a las que no se tiene acceso en estado de
problema.

Almacenamiento virtual

• Los sistemas de almacenamiento virtual permiten a los programas referenciar


direcciones que no necesitan corresponder con las direcciones reales disponibles en
el almacenamiento primario.
• Las “direcciones virtuales” desarrolladas por los programas en ejecución son
traducidas dinámicamente por el hardware a las “direcciones reales” de
instrucciones y datos del almacenamiento principal.
• Los programas pueden referenciar espacios de direcciones mucho mayores que los
espacios de direcciones disponibles en el almacenamiento primario.
• Se utilizan técnicas de:
o “Paginación”: bloques de datos de tamaño fijo van o vienen entre el
almacenamiento primario y el secundario.
o “Segmentación”: identifica las unidades lógicas de los programas y datos
para facilitar el control de acceso y participación.

Multiprocesamiento

• Varios procesadores comparten un almacenamiento primario común y un solo S. O.


• Es necesario “secuencializar” el acceso a una localización (dirección) de
almacenamiento compartido para que dos o más procesadores no intenten:
o Modificarla al mismo tiempo.
o Modificarla uno(s) mientras otro(s) intenta(n) leerla.

Acceso directo a la memoria (DMA)

• Requiere una sola interrupción al procesador por cada bloque de caracteres


transferidos durante la operación de e / s, lo cual mejora significativamente la
performance (rendimiento).
• Es como si el procesador, en vez de interrumpido fuera retrasado.
• Resulta muy útil para altos requerimientos de e / s.
• “Canal DMA”: es el hardware responsable del robo de ciclos y de la operación de
los dispositivos de e / s.

Canalización

• Técnica de hardware utilizada para explotar ciertos tipos de paralelismo durante el


procesamiento de instrucciones.
• Varias instrucciones pueden estar simultáneamente en diferentes estados de
ejecución.
Jerarquía de almacenamiento

• Los niveles de almacenamiento incluyen:


o Almacenamiento primario: memoria principal.
o Almacenamiento secundario: discos, cintas, etc.
o Almacenamiento “caché”: memoria muy veloz diseñada para aumentar la
velocidad de ejecución de los programas:
• Aloja la parte (instrucciones y datos) en ejecución de un programa.
• Los niveles de almacenamiento crean “jerarquías de almacenamiento”: caché,
almacenamiento primario, almacenamiento secundario.
• Al bajar en la jerarquía:
o Descienden el costo y la velocidad.
o Aumenta la capacidad.
• “Espacio de direcciones”: conjunto de todas las direcciones disponibles para un
programa.

(Red Martinez & Castillo Ron, 2001, p. 16).

1.7 Software

Consiste en los programas de instrucciones y datos que definen para el hardware los
algoritmos necesarios para la resolución de problemas.

Los aspectos más destacados en relación con los S. O. son los siguientes [7, Deitel]:

Da clic en cada uno de los títulos para obtener más información.

Programación en lenguaje de máquina

Lenguaje de programación que un computador puede comprender directamente.

Es “dependiente de la máquina”: un programa en lenguaje de máquina escrito en el


computador de un fabricante, generalmente no puede ser ejecutado en el de otro, salvo
que su lenguaje de máquina sea compatible.

Muy poco usado actualmente.

Ensambladores y macroprocesadores

- Los “lenguajes ensambladores” se desarrollaron para:

• Incrementar la velocidad de programación.


• Reducir los errores de codificación.

- Los programas deben ser traducidos al “lenguaje de máquina” mediante un programa


“ensamblador”:
• También es dependiente de la máquina.

- Los “macroprocesadores”:

• Se desarrollaron para acelerar la codificación de un programa ensamblador.


• Se incorporaron en los ensambladores.

• Una “macroinstrucción” indica la ejecución de varias instrucciones en lenguaje
ensamblador.
• El “procesador de macroinstrucciones” efectúa una “macroexpansión” cuando lee
una macro durante la traducción de un programa:

Genera una serie de instrucciones en lenguaje ensamblador correspondientes a la macro.

Compiladores

- “Lenguajes de alto nivel”: se desarrollaron para resolver el problema de la dependencia


respecto a la máquina.

- Permiten el desarrollo de programas “independientes de la máquina”.

- Se logra mayor velocidad de programación, programas transportables entre sistemas


diferentes y menores requerimientos de conocimientos de hardware.

- “Compiladores”: traducen los lenguajes de alto nivel al lenguaje de máquina.

- “Traductores”: es la denominación para “compiladores” y “ensambladores”.

• Entrada: “programa fuente” del programador.


• Salida: “programa objeto” o “programa resultante”.

Sistemas de control de entrada / salida (IOCS: input / output control system):

• EL IOCS libera al programador de aplicaciones de la complejidad de la


administración de la e / s:
o Programas de canal, coordinación de canales y procesadores, control de la e
/ s, etc.
• Es una manifestación de la tendencia a que los desarrolladores de aplicaciones se
concentren en la producción de códigos orientados hacia las aplicaciones y no hacia
los sistemas (hardware).

Utilización del SPOOL (Simultaneous Peripheral Operation On Line: operación simultánea de


periféricos en línea)

- Un dispositivo de alta velocidad (ej.: disco) se interpone entre un programa en ejecución y


un dispositivo de baja velocidad (ej.: impresora) relacionado con el programa en la e/s.
- Evita la demora en la ejecución de programas como consecuencia del uso de periféricos
lentos.

Lenguajes orientados hacia el procedimiento versus lenguajes orientados hacia el problema

- “O. hacia el procedimiento”: son de propósito general y aptos para resolver gran variedad
de problemas:

• Ej.: Pascal, Cobol, Fortran, Basic, PL/I.

“O. hacia el problema”: son específicos para resolver determinados tipos de problemas:

• Ej.: GPSS (simulación), SPSS (estadística).

Compiladores rápidos y sucios versus compiladores optimizadores

- “C. rápidos y sucios”: producen rápidamente un programa objeto que puede ser ineficiente
respecto de almacenamiento y velocidad de ejecución:

• Útiles para el desarrollo y prueba de sistemas.

- “C. optimizadores”: producen con mayor lentitud un código de máquina altamente


eficiente en almacenamiento y ejecución:

• Útiles en etapa de producción de los sistemas.

Interpretadores

- No producen un programa objeto.

- Ejecutan directamente un programa fuente.

-Son útiles en ambientes de desarrollo de programas.

- Son más lentos que los códigos compilados.

Cargadores absolutos y de relocalización

- Los programas se ejecutan en el almacenamiento principal.

- “Asignación”: es la asociación de instrucciones y datos con localizaciones particulares de


almacenamiento.

- “Cargador”: es un programa que coloca las instrucciones y datos de un programa dentro


de localizaciones del almacenamiento principal.
- “Cargador absoluto”: coloca las instrucciones y datos en las localizaciones específicas
indicadas en el programa de lenguaje de máquina.

- “Cargador de relocalización”: puede cargar un programa en varios lugares dentro del


almacenamiento principal:

• Depende de la disponibilidad de almacenamiento primario al momento de realizar la


carga.

- “Tiempo de carga”: momento de realizar la carga.

Cargadores de enlace y editores de enlace

- El programa en lenguaje de máquina producido por un traductor debe ser combinado con
otros programas en lenguaje de máquina para formar una unidad ejecutable.

- La “combinación de programas” es realizada por “cargadores de enlace” y “editores de


enlace” antes del tiempo de ejecución del programa.

- “Cargador de enlace”: en el momento de carga, combina cualesquiera programas


requeridos y los carga directamente en el almacenamiento primario.

- “Editor de enlace”: ejecuta la combinación de programas mencionada y además crea una


imagen de carga a memoria que preserva en el almacenamiento secundario (disco), para
usos futuros:

Es muy útil en ambientes de producción, ya que la carga inmediata de la imagen de


memoria previamente producida evita un nuevo proceso de combinación de programas
previo a cada ejecución. (Red Martinez & Castillo Ron, 2001, p. 21).

1.8 Memoria fija


Da clic en cada uno de los títulos para obtener más información.

Microporgamación

• El concepto de “microprogramación” suele atribuirse al Prof. Maurice Wilkes (1951) [7,


Deitel].
• La primer aplicación a gran escala fueron los S/360 (IBM - ’60) [24, Tanenbaum].
• La “microprogramación dinámica”: permite cargar fácilmente los nuevos
“microprogramas” (“microcódigo”) dentro del “almacenamiento de control”, desde donde
son ejecutados:
• Permite variar dinámica y frecuentemente los conjuntos de instrucciones de máquina.

La “microprogramación” introduce una capa de programación por debajo del


lenguaje de máquina:
• Hace posible definir las instrucciones del lenguaje de máquina.

Los “microprogramas” están formados por “microinstrucciones” individuales que


en relación a las instrucciones de los lenguajes de máquina son de:

• Naturaleza mucho más elemental.


• Función más dispersa.

Cada instrucción de lenguaje de máquina es implementada por un microprograma


completo que puede ser extenso:

• El almacenamiento de control debe ser mucho más rápido que el almacenamiento


primario

Microcódigos vertical y horizontal

El “microcódigo vertical”:

• Es similar a la ejecución de instrucciones en lenguaje de máquina.


• Especifica el movimiento de uno o varios datos entre registros.

El “microcódigo horizontal”:

• Está constituido por microinstrucciones que requieren muchos más bits.


• Puede especificar la operación paralela de movimiento de datos entre muchos o
todos los registros de datos de la unidad de control.
• Es más poderoso pero más complejo que el microcódigo vertical.

Decisión de qué funciones implementar en microcódigo

Una importante cuestión de diseño es decidir qué funciones del sistema computacional se
implementarán en microcódigo.

El microcódigo permite mejorar el rendimiento en la ejecución de un sistema


computacional.

El criterio frecuentemente es colocar en la memoria fija (en vez de en el software) las


secuencias de instrucciones utilizadas con más frecuencia.

Emulación

Es una técnica por medio de la cual se hace que una máquina aparente ser otra.

El conjunto de instrucciones de lenguaje de máquina que va a ser emulada se


microprograma en la “máquina anfitriona”.
Los programas de lenguaje de máquina de la máquina emulada pueden ejecutarse
directamente en la anfitriona.

Es útil para compatibilidad y migración de sistemas.

Microdiagnósticos

Los microprogramas tienen más acceso al hardware que los programas de lenguaje de
máquina:

• Es posible efectuar detección y corrección de errores más amplia a un nivel más


fino.

Se puede intercalar el “microdiagnóstico” con las instrucciones de programas de lenguaje


de máquina.

Computadores personalizados

El hardware proporciona un ambiente de propósito general para ejecutar programas de


software:

• Moldean el sistema computacional según las necesidades del usuario.

En algunos sistemas los usuarios pueden efectuar esta adaptación por medio del
microcódigo.

Asistencias de microcódigo
Implementan varias rutinas de manejo de interrupciones de uso más frecuente en microcódigo a
fin de lograr mejoras significativas en la ejecución.

Microprogramación y sistemas operativos

Las funciones implementadas frecuentemente en microcódigo son las siguientes:

• Manejo de interrupciones.
• Mantenimiento de varios tipos de estructuras de datos.
• Primitivas de sincronización que controlan el acceso a los datos compartidos y otros
recursos.
• Operaciones de palabras parciales que permiten que las operaciones de
manipulación de bits sean manejadas en forma eficiente.
• “Intercambio de contexto”, por ej., intercambio rápido del procesador entre los
usuarios de un sistema de usuarios múltiples.
• Secuencias de regreso y llamada al procedimiento.

(Red Martinez & Castillo Ron, 2001, p. 23).


Cierre de unidad
Todos los sistemas de cómputo están compuestos por al menos una unidad de proceso junto
con dispositivos que permiten ingresar datos (teclado, mouse, micrófono, etc.) y otros que
permiten obtener resultados (pantalla, impresora, bocinas, etc.). Una de las funciones del
sistema operativo es la de abstraer el hardware de la computadora y presentar al usuario una
versión unificada y simplificada de los dispositivos.

Los Sistemas Operativos han evolucionado y al paso del tiempo estas evoluciones tienen una
relación directa con el hardware, que ha permitido un gran desarrollo en varios ámbitos de
nuestra vida cotidiana.

Es importante mencionar que las características actuales de los SO, permiten realizar cálculos
avanzados, hacer uso de aplicaciones complejas de diseño así como mejorar la administración
de recursos.

Fuentes de consulta
Coordinación de Universidad Abierta y a Distancia de la UNAM. (2017) Sistemas
Operativos. Recuperado de:
https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/898/mod_resource/co
ntent/3/contenido/index.html

Fossati, (2017). Introducción Sistema operativos. Recuperado de:


https://books.google.com.mx/books?id=BhQkDwAAQBAJ&pg=PA5&lpg=PA5&dq#v=on
epage&q&f=false

Nutt, G., Vegas, J., y Llamas, C. (2004). Sistemas operativos. Madrid: Pearson, Addison-
Wesley.

Red Martinez, D., & Castillo Ron, E. (2001). Sistemas operativos. Santa Fe, Argentina: El
Cid Editor.

Silberschatz, A., Galvin, P., y Gagne, G. (2006). Fundamentos de sistemas operativos.


España: MCGraw Hill.

You might also like