Está en la página 1de 43

CAPITULO I

INTRODUCCIÓN
A LOS SISTEMAS OPERATIVOS

Objetivos:

 Conocer diversas definiciones de sistemas operativos.


 Proporcionar un panorama general de la evolución conceptual de los
sistemas operativos
 Describir los componentes y estructuras de los sistemas operativos.
 Comprender el arranque y la activación de un sistema operativo.
 Identificar la interfaz de usuario y del programador en un sistema
operativo.

Elaborado por:
Prof. Giovana Garrido
Capítulo I Introducción a los Sistemas Operativos

1.1. Definición de los Sistemas Operativos

En los años 60 un Sistema Operativo se define como el software que controla el


hardware.
Esta definición, sin embargo, se ha ido quedando obsoleta, porque progresivamente
hasta hoy una parte de las funciones del Sistema Operativo no están implementadas
en software, sino en microcódigo.

También se dice que un SO es un conjunto de programas que por medio de


abstracciones ponen el hardware del computador, de modo seguro, a disposición del
usuario.

A continuación se presentan otras definiciones de sistemas operativos dadas por los


siguientes autores:
H. Deitel: un SO es un programa que actúa como interfaz entre el usuario de un
computador y el HW del mismo, ofreciendo el entorno necesario para que el usuario
pueda ejecutar programas
Katzan: conjunto de programas y datos que ayudan a crear otros programas y a
controlar su ejecución
Madnik y Donovan: conjunto de programas que gestionan los recursos del sistema,
optimizan su uso y resuelven conflictos.
(Stallings) Un SO es un programa que controla la
ejecución de los programas de aplicación y que actúa
como interfaz entre el usuario del computador y el
hardware del computador.
(Milenkovic): un SO puede ser contemplado como una
colección organizada de extensiones software del
hardware, consistente en rutinas de control que hacen
funcionar un computador y proporcionan un entorno para
la ejecución de los programas.

Carretero define SO como un programa que tiene


encomendadas una serie de funciones diferentes cuyo
objetivo es simplificar el manejo y utilización de la
computadora, haciéndolo seguro y eficiente. Podemos
definir, hoy en día, un Sistema Operativo como un
conjunto de programas, implementados tanto en
software como en firmware, que hacen accesible el
hardware.

Este ’estar accesible’ significa: hacer el sistema disponible en la forma deseada, hacer
que aumente el Rendimiento Total del sistema. Podemos decir que el Rendimiento
Total se forma de dos partes:
1. Rendimiento Específico (Throughput), que es el volumen de trabajo por unidad de
tiempo.
2. Tiempo de respuesta ¹ (Disponibilidad), que debe ser bueno.

Por tanto, el Sistema Operativo en sí mismo es un interface entre el hardware del


computador y el usuario: es por esto que se suele denominar al Sistema Operativo
Gestor de Recursos.

Finalmente, tenemos los Programas y Aplicaciones que manejan los programadores:


 Operador: el encargado de dirigir el Sistema
Prof. Giovana Garrido-2018
Página 2
Capítulo I Introducción a los Sistemas Operativos

 Programador de Sistema: de mantenerlo


 Administrador de Sistema: de controlarlo

En fin, podemos concluir que el Sistema Operativo es un sistema de comunicación


entre dos tipos de recursos, el hardware y el usuario: está formado por software y
firmware, y consigue un mayor rendimiento del sistema.

1.1.1 Funciones y características de los Sistemas Operativos

Funciones
El objetivo fundamental de un SO es gestionar los recursos Hardware del sistema
computacional permitiendo que se ejecuten concurrentemente diferentes programas
evitando los conflictos que puedan existir en el acceso de cada uno de estos
programas a los recursos que requieran para ejecutarse, el objeto final no es mas que
el de facilitar el manejo de sistema y permitir que el uso de los recursos sea lo más
eficiente posible. Un SO desempeña las siguientes funciones básicas:
a. Suministro de una interfaz al usuario.

La interfaz es la parte del SO que permite la comunicación del usuario con éste,
creando la posibilidad de cargar los programas, acceder a los archivos y muchas otras
tareas, entre las interfaces existentes están las que se basan en comandos, las que
emplean menús y las interfaces gráficas de usuario GUI(sigla en inglés).

b. Administración de recursos.

Mediante los procesos de administración de recursos se gestiona por parte del SO los
recursos de Hardware y redes existentes en un sistema dado haciendo esta labor
transparente para el usuario, la finalidad es distribuir todas las tareas para el uso
eficiente de los recursos manteniendo así todos los componentes físicos lo más
ocupados que sea posible, evitando cuellos de botella que afecten el rendimiento del
sistema. Entre las tareas a realizar se encuentran:

c. Administración del procesador.

El SO administra la distribución del procesador entre los distintos programas por


medio de un algoritmo cuya implementación depende completamente del tipo de SO,
según el objetivo específico de la aplicación.

d. Gestión de la memoria de acceso aleatorio.

El SO se encarga de gestionar el espacio de memoria asignado para cada aplicación y


para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el
SO puede crear una zona de memoria en el disco duro, denominada "memoria virtual".
La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior
a la memoria RAM disponible en el sistema. Sin embargo, el acceso a esta
información es mucho más lento.

e. Gestión de entradas/salidas.

Prof. Giovana Garrido-2018


Página 3
Capítulo I Introducción a los Sistemas Operativos

El SO permite unificar y controlar el acceso de los programas a los recursos físicos y


periféricos en general a través de los drivers (también conocidos como
administradores periféricos o de entrada/salida).

f. Administración de archivos.
El SO gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de
acceso a archivos de aplicaciones y usuarios. Se trata de programas que se encargan
de la administración de los archivos de forma estructurada, controlando la creación,
borrados y acceso de archivos de datos y de otros programas, esto implica que debe
mantener el registro de la ubicación física de la información que pueda encontrarse en
cualquier dispositivo de almacenamiento que pertenezca al sistema.

El sistema de archivos responde a las necesidades de almacenar volúmenes de


información por largos periodos, esta información debe sobrevivir a un corte abrupto
de cualquier proceso que la pueda utilizar en un momento dado, además debe existir
la posibilidad de que distintos procesos puedan accederla simultáneamente.
g. Administración de tareas:

Mediante esta funcionalidad el SO administra las tareas informáticas de los usuarios


finales, estos programas se encargan de controlar las áreas de la CPU a la que
pueden accesar las tareas de usuario y definen el tiempo en que pueden usarlas; esto
se hace con la finalidad de distribuir la capacidad de procesamiento de la CPU
interrumpiendo el tiempo y recursos de ésta dependiendo la prioridad de la tarea a
realizar. La administración de tareas requiere entre otras:
 Crear y/o terminar tareas.
 Suspender y/o reanudar tareas.
 Proveer mecanismos para la sincronización de tareas.
 Proveer mecanismos para la comunicación entre tareas.
En resumen, el SO se encarga de que las aplicaciones se ejecuten sin problemas
asignándoles los recursos que éstas necesiten para funcionar correctamente.

h. Servicios de soporte:

Estos servicios dependen de la implementación específica del SO (Mac, Unix,


Windows, Software libre). Estos servicios de soporte suelen consistir en:
 Actualización de versiones.
 Mejoras de seguridad.
 Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para
administrar alguna determinada función, etc.).
 Controladores para manejar nuevos periféricos (este servicio debe coordinarse
a veces con el fabricante del Hardware).
 Corrección de errores de Software.
No todas las utilidades de administración o servicios forman parte del SO, además de
éste, hay otros tipos importantes de Software de administración de sistemas, como los
sistemas de administración de base de datos o los programas de administración de
redes. El soporte de estos productos deberá proporcionarlo el fabricante
correspondiente (que no tiene porque ser el mismo fabricante del SO).

i. Administración de autorizaciones:
Prof. Giovana Garrido-2018
Página 4
Capítulo I Introducción a los Sistemas Operativos

El SO se encarga de la seguridad relacionada con la ejecución de programas y


acceso de archivos garantizando que los recursos sean utilizados sólo por programas
y usuarios que posean las autorizaciones correspondientes.

El Sistema Operativo crea el entorno en el que se ejecutan los procesos y para ello
ofrece tanto a los procesos como a los usuarios una serie de funciones que varían
mucho de unos sistemas a otros.

Se pueden agrupar en tres grandes categoría:


 Gestión de los recursos de la computadora: asignación de recursos, protección y
contabilidad.
 Ejecución de servicios para los programas
 Ejecución de los mandatos de los usuarios

Usuarios
API
Programas de usuario Shell
Servicios Sistema
Núcleo operativo
Hardware

Todo Sistema Operativo tiene que tener 3 prestaciones fundamentales:


1. Permitir que existan n usuarios trabajando sobre m aplicaciones (simultáneamente
o no).
2. Además tiene que tener una serie de facilidades: procesadores de texto,
compiladores, ensambladores, montadores...
3. Debe asegurar un flujo continuo de trabajo en forma de tareas batch o interactivas
multiacceso.

Las funciones de todo Sistema Operativo conforman las distintas partes con que se
construye un SO. Las funciones que tiene un Sistema Operativo de propósito general
varían mucho de unos a otros, pero las que todos tienen que tener son las siguientes:
 Multiacceso
 Gestión de memoria
 Secuenciamiento de trabajos
 Control de procesos
 Intérprete de OSCL
 Gestión de operaciones de E/S
 Gestión de dispositivos y ficheros
 Gestión de interrupciones

Prof. Giovana Garrido-2018


Página 5
Capítulo I Introducción a los Sistemas Operativos

 Planificación
 Control de errores y protección
 Contabilidad del sistema, etc.


Aunque todas estas funciones las podemos resumir en 2 funciones básicas: _

A. Funciones desde el punto de vista del usuario. Van a transformar el


hardware en una máquina más tratable. Provisión de máquina virtual en varios
aspectos:

1. En lo referente a la carga y ejecución de programas


 Gestión de memoria. Que habrá que presentarla en la forma y tamaño
adecuada a cada programa y usuario, dependiendo de sus necesidades y no
de las características concretas de cada computador.
 Mecanismos de comunicación o intercomunicación entre procesos. Es decir,
que deberá existir un lenguaje de control que transmita a la máquina las
peticiones del usuario: el OSCL. Además, a ser posible, deberá ser fácil y
rápido de manejar.
 Gestión de interrupciones.
2. En cuanto a las operaciones de E/S. Se trata de liberar al usuario de programas los
mecanismos hardware, presentándole facilidades de E/S sencillas pero igual de
potentes.
3. En cuanto al manejo de ficheros y dispositivos. El Sistema Operativo debe:
a. Proporcionar acceso fácilmente a la información mediante nombres
simbólicos.
b. Mantener la integridad de la información.
4. En cuanto a la detección y manejo de errores y protección. Diferentes equipos
hardware proporcionan niveles de protección muy diferentes, es el Sistema Operativo
el que tendrá que incrementar el nivel de protección hasta el deseado.

B. Funciones internas. Dan soporte a la compartición de recursos.

Motivos de la compartición de recursos:


 Es más barato
 Hay recursos -como la información- que por naturaleza son compartidos
 Nos permite trabajar usando trabajos ya creados (reutilización)
 Eliminación de la redundancia de información.

Problemas que acarrea la compartición de recursos:


 Cómo dar soporte a varios accesos y ejecuciones simultáneas
 Dónde ubicar los recursos compartidos y cómo protegerlos

Funciones del Sistema Operativo para permitir la compartición de recursos:


1. Asignación de recursos
Se trata de lograr aumentar la disponibilidad y el uso de los recursos. Hay algunos
recursos (UCP, memoria...) que necesitan que el Sistema Operativo tenga algunos
programas especiales que se encarguen de asignarlos, liberarlos, conmutarlos... como
el Dispatcher quien se encarga de asignar la UCP.
Hay otros recursos (los llamados dispositivos) que se asignan gracias a programas
generales de asignación y liberación.

Prof. Giovana Garrido-2018


Página 6
Capítulo I Introducción a los Sistemas Operativos

2. Protección
Cuanto más compartición halla, mayor nivel de protección hace falta. Tiene 3
aspectos:
a. Controlar la información en cuanto a usos y accesos
b. Mantener la integridad de la información
c. Controlar que no halla interferencias no deseadas sobre la información por
parte de otros programas o usuarios

3. System Accounting (contabilidad del sistema)


Consiste en llevar un registro del uso del sistema por parte de los distintos usuarios y
procesos. Tiene 3 vertientes:
a. Facturación del servicio
b. Sacar estadísticas del uso de cada uno de los recursos
c. Nos permite hacer un tunning

Características

Los sistemas operativos presentan las siguientes características:

1. Conveniencia: un sistema operativo hace más conveniente el uso de una


computadora.
2. Eficiencia: el sistema operativo permite que los recursos de la computadora se
usen de manera correcta y eficiente.
3. Habilidad para evolucionar: un sistema operativo debe de ser capaz de aceptar
nuevas funciones sin que tenga problemas.
4. Encargado de administrar el hardware: el sistema operativo debe de ser eficaz.
5. Relacionar dispositivos
6. Algoritmos: un sistema operativo hace el uso de la computadora más racional

Cada uno de los administradores de los recursos, básicamente debe:


1. Mantener actualizado un registro o contabilidad del estado o uso de los
recursos.
2. Cumplir (en función de la política implementada a tal fin) con las demandas,
decidiendo quién, cómo, cuándo y por cuánto tiempo recibe determinado
recurso.
3. Asignar dicho recurso a quien lo demande.
4. Recuperar el recurso después que se ha utilizado. Función de Protección
Se dice que el SO implementa como árbitro imparcial:
 Una Política: dado que asigna prioridades (de uso y/o de acceso a los
recursos).
 Una Estrategia: ya que ordena los accesos y los conflictos
 Una Autoridad pues debe recuperar los recursos otorgados a los procesos y
ordenar el uso de los mismos.
 Una Protección: brindando seguridad a los usuarios entre sí y preservando la
integridad de los recursos.
 Una Contabilidad: para llevar el control del uso y disponibilidad de los
recursos.
El S.O. ofrece:
 Facilidades para crear, manipular y eliminar objetos sobre los que se quiere
realizar operaciones, a través de la Gestión y Conservación de la Información
sobre ellos.

Prof. Giovana Garrido-2018


Página 7
Capítulo I Introducción a los Sistemas Operativos

 Un ambiente para la ejecución de trabajos, mediante la gestión del conjunto de


recursos que permiten ejecutar los mismos.
 Facilidades para compartir el conjunto de recursos entre los usuarios,
mediante un planeamiento y ordenamiento de los trabajos.
La administración del sistema consiste en el:
 Manejo y conservación de la información: ofrece a los usuarios facilidades
para crear, recuperar y eliminar objetos sobre los que se quieren realizar
operaciones.
 Manejo del conjunto de recursos: que permiten ejecutar programas: El
sistema crea el ambiente necesario para la ejecución de los trabajos.
 Planeamiento y ordenación de trabajos mediante un adecuado manejo y
reparto del conjunto de recursos entre los usuarios.

1.2. Evolución de los Sistemas Operativos

En los primeros tiempos de la Informática sólo existe el hardware. De esta forma,


cuando surge un problema y se intenta solucionar informáticamente, hay que codificar
para ello un programa completo con todas las instrucciones en bits: tan sólo un
montón de ’1’s y ’0’s (a esto se le llama sistemas de puerta abierta).

Una vez que el problema está codificado se reserva tiempo de computador, y el propio
usuario-analista-programador-operador enciende el aparato, carga el programa
mediante switches y sigue el desarrollo mediante los indicadores de la consola.
Para reservar el tiempo de utilización existía un esquema de reparto de tiempos, (ídem
Horario del Centro de Cálculo). Pero este esquema tenía 2 problemas:
 tiempos de no utilización de la máquina (me sobra tiempo del que había reservado)
 el tiempo reservado se me queda corto.

Como ventaja podemos citar que en el momento en que disponemos de la máquina


también disponemos de todos los recursos. Pero también existen varios
inconvenientes, como son:
 el rendimiento es muy bajo porque los recursos muy caros están infrautilizados
 la interacción es muy complicada (pensar en ’1’s y ’0’s es muy difícil)

1.2.1. Tendencias actuales


Podemos resumir las tendencias actuales en cuatro términos:
1. Se tiende a que la máquina sea lo más amistosa posible: que el interface
presentado por el Sistema Operativo proporcione un acceso y manejo fácil y
guiado. Por ejemplo, con menús, ayudas, mensajes, etc. (User Friendly)
2. Se trata de ocultar a los usuarios todas las complejidades o detalles físicos de los
sistemas de forma que el usuario s7ólo perciba lo que el Sistema Operativo le
muestra. (Máquina Virtual). Si unimos a esto la existencia de las redes, podríamos
hacer que un trabajo que un usuario de la red mande ejecutar lo haga en otra
máquina que el usuario ni siquiera sabe que existe.
3. Se tiende a hacer un uso más extensivo de los sistemas distribuidos, es decir,
sistemas que pueden cooperar con otros y a la vez trabajar de forma totalmente
independiente.
Esto consiste en que cada proceso haga operaciones locales y tome decisiones
locales, pero además participe en decisiones que afectan a otros sistemas con los
que se comunica a través de una red.
Prof. Giovana Garrido-2018
Página 8
Capítulo I Introducción a los Sistemas Operativos

El proceso distribuido hace las comunicaciones cada vez más baratas y las
velocidades de transmisión cada vez más elevadas.
4. Procesos paralelos. Implica que existen varios procesadores trabajando en
paralelo. Esto es posible gracias a que cada vez hay una mayor escala de
integración, lo cual se traduce en procesadores y memorias físicamente pequeñas
pero con una capacidad de almacenamiento y proceso mucho mayores.

Por ello, se logran máquinas masivamente paralelas, en las cuales el control del
sistema está repartido entre varios procesadores.
Para que todo esto sea viable hace falta desarrollar lenguajes de programación
concurrentes y también arquitecturas que nos permitan sacar el mayor provecho
posible de la concurrencia.
No debemos confundir PROCESO PARALELO con PROCESO DISTRIBUIDO, por
ejemplo:
 si ejecutamos programas distintos en varios procesadores
 varios procesadores ejecutando un mismo proceso (ejecutándose todos a la
vez)
 varios procesadores ejecutando un mismo proceso (pero no a la vez)

Ejemplos de Sistemas Operativos

 WINDOWS NT  Sistema monousuario multitarea diseñado para trabajar con PC


y Estaciones de trabajo. Incorpora los últimos adelantos.
 UNIX  Sistema operativo multiusuario dirigido a todo tipo de computadoras.
Siempre en grandes redes. Compatibilidad absoluta.
 OS/2  Sistemas de oficinas.

Resumen

Todos los sistemas acordes con las 4 tendencias van a ser:


 más fiables, más fáciles de mantener y de extender, más fáciles de usar y con
un rendimiento mucho mayor.

Estas 4 cosas son factibles gracias a:


 la implantación en microcódigo (firmware) de muchas de las funciones de los
Sistemas Operativos
 la aplicación de los avances de la Ingeniería del Software al diseño de los
Sistemas Operativos.

1.3 Tipos de Sistemas Operativos


Existen muchos criterios de clasificación de los Sistemas Operativos, cada uno de los
cuales brinda una clasificación propia. Así, existen divisiones basadas en el tipo de
memoria, tipo de almacenamiento secundario, tipo de aplicaciones o áreas
funcionales, accesibilidad, etc.

Según el punto de vista del usuario


Aquí vamos a tomar como criterio la forma en la que el Sistema Operativo es percibido
por el usuario, ya que la forma en la que se percibe está en relación directa con el uso
que se hace de él.
De esta manera podemos dividir a los Sistemas Operativos en varios grupos:

Prof. Giovana Garrido-2018


Página 9
Capítulo I Introducción a los Sistemas Operativos

 Sistemas Monousuario y multiusuario


 Sistemas de Tiempo Real
 Sistemas Transaccionales
 Sistemas "Time Sharing" y Multiprogramados
 Sistemas Multiprocesador
 Sistemas Embebidos

_ Monousuario

En estos sistemas, la máquina virtual (la presentada por el S.O., es decir, la que ve el
usuario) tiene un sólo usuario y generalmente está dedicada a una sola función (crear
ficheros, nombrar ficheros, guardar ficheros, ejecutar programas, etc.).
El interface del S.O. constará, entonces, de un gestor de ficheros sencillo, utilidades
de E/S y un intérprete de comandos también sencillo.
Podemos enumerar las características de estos sistemas como sigue:

Características
 gestión de ficheros (crear, borrar, guardar...)
 componer, ejecutar y modificar nuevos programas
 transferir información entre programas y dispositivos de E/S

Funciones
 sistema de gestión de ficheros sencillo
 intérprete de OSCL sencillo
 facilidades para operaciones de E/S

Cualidades
 facilidad de uso, es decir, proporcionar un buen interface
 eficacia, dado que el resultado del soporte hardware suele ser limitado
 facilidad de mantenimiento y de extensión, tanto en cuanto a dispositivos como
en cuanto a programas
 fiabilidad

Multiusuario
 Sistema de consulta de información
 Sistema de gestión de operaciones
 Sistema de propósito general

Multitarea: la PC puede operar varias aplicaciones de forma simultánea.

_ Sistemas de Tiempo Real

Existen muchos tipos de sistemas de tiempo real, como los sistemas de control de
procesos, los de seguimiento de trayectorias, pilotaje de aviones, vigilancia médica,
gestión de centrales telefónicas, control de robots, etc.

Todos estos sistemas tienen algo en común, que es la limitación de tiempo de proceso
informático: tienen que dar respuestas a unas determinadas entradas en un tiempo
mínimo, tienen que responder casi instantáneamente (de aquí lo de tiempo real).

Características
Prof. Giovana Garrido-2018
Página 10
Capítulo I Introducción a los Sistemas Operativos

 respuesta en tiempo real, es decir, existe una limitación del tiempo empleado
en el tratamiento informático
 interconexión con elementos externos
 registro de información
 tratamiento de procesos prioritarios (sistemas de riesgo)

Funciones
 regulación, es decir, la acción sobre elementos externos. Tanto para captar
información como para actuar sobre el proceso
 seguridad, es decir, debe haber una reacción inmediata ante cualquier suceso
o evento externo
 grabación. Debe llevarse un registro del comportamiento del sistema controlado

Cualidades
 fiabilidad
 disponibilidad, es decir, debe garantizarse la seguridad de los dispositivos
controlados cumpliendo las restricciones de tiempo dadas
 debe incluir servicios mínimos en caso de anormalidades

Un ejemplo de este tipo de sistemas es cualquier sistema de control, como éste:


donde vemos otra de las características de los sistemas en tiempo real, la conexión
con elementos externos.
Los procesos que existen son cíclicos: Regulación - Control y, simultáneamente,
grabación o registro de la información. Además, debe existir otro tratamiento de
proceso prioritario.
El esquema general de estos sistemas se puede representar como:

Sistemas Transaccionales

Ejemplos de estos sistemas son: reservas de plazas en líneas aéreas, gestión de


cuentas bancarias, consulta de documentos, etc.

Funciones
 gestionar un gran volumen de información (por ello, la Base de Datos suele
estar presente siempre)
 existencia de un gran número de puntos de acceso, a veces, geográficamente
dispersos
 ejecutar operaciones predefinidas de forma interactiva
 existencia de un gran número de transacciones desarrollándose en forma
paralela (concurrencia)

Cualidades
 fiabilidad y seguridad. Deben existir unas reglas de integridad que aseguren la
coherencia de la información compartida
 disponibilidad, es decir, que haya una tolerancia a fallos y un tiempo de
respuesta adecuado

Sistemas "Time Sharing" y Multiprogramados

Características
 concurrencia, es decir, existen n procesos ejecutándose a la vez, lo cual
implica que el S.O. deberá conmutar los recursos entre los distintos procesos
 debe dar servicio a m usuarios simultáneamente

Prof. Giovana Garrido-2018


Página 11
Capítulo I Introducción a los Sistemas Operativos

Se plantean una serie de problemas en los sistemas monousuarios y transaccionales:


 hay que dar servicio a cada usuario de forma que éste crea que tiene una
máquina individual
 servicios de compartición de datos y comunicación

Funciones
 definir la máquina virtual a asignar a cada usuario
 facilitar el uso compartido y la asignación de recursos físicos
 gestionar la información compartida
 gestionar la comunicación entre usuarios y programas

Cualidades
Tienen que tener todas las cualidades tanto de los monousuario como de los
transaccionales, destacando:
 un buen interface, es decir, ser fácilmente accesibles para proporcionar
numerosos servicios
 deben ser fáciles de extender y adaptar
 deben ser eficaces, con el fin de lograr un rendimiento total adecuado
 fiabilidad y seguridad
 disponibilidad

Sistemas Multiprocesador

Se caracterizan por la existencia de ’n’ procesadores, en los cuales se podrán ejecutar


instrucciones en paralelo, instrucciones que en su ejecución compartirán a veces
memoria y/o periféricos.
Lógicamente, con cada procesador podrá existir un sistema de los vistos
anteriormente. Por tanto, las funciones del interface en este caso serán todas las
funciones vistas en cada uno de los sistemas anteriores, además de la función de
gestión de los ’n’ procesadores.

Funciones
 gestión de los ’n’ procesadores, es decir, asignación, conmutación... y esto
sobre todo en los sistemas fuertemente acoplados 7
 gestión de las comunicaciones, o gestión teleinformática. Sobre todo cuando
los procesadores están geográficamente dispersos (son los llamados sistemas
distribuidos)

Cualidades
 Todas las anteriores, con especial énfasis a la fiabilidad (para asegurar que la
información fluya de manera adecuada y sin problemas).

Sistemas Embebidos

Los sistemas embebidos se encuentran disponibles a cada comento de nuestra vida.


El horno microondas, el auto, el ascensor, el equipo de audio, el avión son controlados
por computadoras que normalmente no poseen una pantalla, un teclado o disco rígido,
y no responden a lo que comúnmente denominamos PC.

Prof. Giovana Garrido-2018


Página 12
Capítulo I Introducción a los Sistemas Operativos

Un sistema embebido (S.E.) es una plataforma de cómputo (Hardware + Software) con


una función específica dentro de un sistema más grande, normalmente con
restricciones de ejecución de tiempo real (se necesita que los tiempos de cómputo
estén dentro de ciertos límites preestablecidos). Se entiende por sistemas embebidos
a una combinación de hardware y software de computadora, sumado tal vez a algunas
piezas mecánicas o de otro tipo, diseñado para tener una función específica. Es
común el uso de estos dispositivos pero pocos se dan cuenta que hay un procesador y
un programa ejecutándose que les permite funcionar. Se denominan “embebidos” a
estos sistemas porque son parte de un dispositivo que incluye otros componentes de
hardware y/o partes mecánicas y por oposición a los sistemas computacionales de
propósito general (p.ej. PC o Tablets), que se diseñan para ser flexibles y para
satisfacer las necesidades de una amplia gama de usuarios.

La característica principal de los S.E. es que están diseñados para una tarea
específica; es por ello que pueden optimizarse para reducir su tamaño y su costo de
producción, incrementando su confiabilidad y su performance. Muchos S.E. se diseñan
pensando en producción masiva, beneficiándose de la economía de escala (el costo
por unidad se reduce al aumentar la cantidad de unidades producidas porque el costo
fijo del diseño se distribuye entre todas las unidades producidas).
Un uso muy común de los sistemas embebidos es en los sistemas de tiempo real. Los
sistemas en tiempo real necesitan realizar ciertas operaciones o cálculos en un límite
de tiempo. Donde ese límite de tiempo resulta crucial. Un ejemplo claro de un sistema
de tiempo real es el control de tráfico aéreo.

1.4 Estructura de un Sistemas Operativo


Es decir, cómo está construido el Sistema Operativo para que lleve a cabo sus
objetivos.
Podemos dividirlos en:
 Sistemas Monolíticos
 Sistemas Operativos por niveles o por capas
 Sistemas Operativos de Máquina Virtual
 Sistemas Micronúcleo (Cliente-Servidor)

1.4.1 Monolíticos

Prof. Giovana Garrido-2018


Página 13
Capítulo I Introducción a los Sistemas Operativos

Es la estructura de los primeros sistemas operativos constituidos fundamentalmente


por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma
que cada una puede llamar a cualquier otra. Las características fundamentales de este
tipo de estructura son:
 Construcción del programa final a base de módulos compilados separadamente
que se unen a través del enlace.
 Buena definición de parámetros de enlace entre las distintas rutinas existentes,
que puede provocar mucho acoplamiento.
 Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes
aspectos de los recursos de la computadora, como memoria, disco, etc.

Generalmente están hechos a medida, por lo que son eficientes y rápidos en su


ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes
ambientes de trabajo o tipos de aplicaciones.

En estos casos el Sistema Operativo está formado por un conjunto de rutinas que se
compilan por separado, se llaman entre si y se montan juntas para formar un todo: el
Sistema Operativo. De ahí que no tengan una estructura definida.

Cada rutina tiene un interface con las demás, es decir, cuando una rutina llama a otra
la primera le pasa una serie de parámetros y, cuando la rutina llamada finaliza su
tarea, devuelve unos resultados a la rutina madre.

En estos sistemas todas las rutinas se pueden llamar entre si. Esto implica que no hay
ocultamiento de información, es decir, cada rutina conoce -y puede usar-, por ejemplo,
las estructuras de datos de las demás.

Cuando estamos ejecutando un programa de usuario y hace falta un servicio del


Sistema Operativo, los pasos que se siguen son los siguientes:
1. Se hace una llamada al SO, es decir, se ejecuta un extracódigo (Supervisor Call o
SVC)
2. El SO toma el control, es decir, se pasa a modo supervisor
3. El SO averigua el servicio requerido y direcciona a la rutina que da servicio a esa
petición
4. La rutina inicia el servicio, siempre y cuando le hayan pasado los parámetros
necesarios
5. La rutina anterior puede llamar, a su vez, a otra rutina que sirva la petición, sobre
todo en aquellos servicios que llevan mucho tiempo
6. Cuando se completa el servicio requerido se devuelve el control al proceso, es
decir, se pasa a modo usuario

En resumen, tenemos:
 en primer lugar, una rutina principal o SV que, mediante una combinación de
hardware y software y gracias a una tabla, direcciona a las rutinas de servicio
necesarias para dar respuesta a las distintas peticiones
 rutinas de servicio (una por cada proceso)
 rutinas de ayuda o de utilidad y rutinas de servicio

Nota:

 No es un sistema definido, no tiene estructuras definidas.

Prof. Giovana Garrido-2018


Página 14
Capítulo I Introducción a los Sistemas Operativos

 La modularidad consiste en dividir el S.O. en partes más pequeñas por lo que


al final tendremos un Sistema Operativo dividido en módulos.
 Cada módulo tendrá su propio interface con el fin de conectarse a los demás.
 Los distintos módulos se diseñan de manera que haya ocultamiento de
información: se sabe lo que hace cada módulo pero no cómo lo hace, ni qué
estructuras de datos maneja.
 Al variar un módulo no varían ni sus interfaces ni tampoco el resto de los
módulos.
 Gracias a la modularidad tenemos módulos fáciles de extender o cambiar.

1.4.2 Sistemas Operativos por niveles o por capas (jerárquicos)

A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron


los sistemas, se hizo necesaria una mayor organización del software, del sistema
operativo, donde una parte del sistema contenía subpartes y esto organizado en forma
de niveles.
Se dividió el sistema operativo en pequeñas partes (funciones relacionadas) que
forman un nivel o capa, de tal forma que cada una de ellas estuviera perfectamente
definida y con un claro interface con el resto de elementos. Estas funciones se
implementan en módulos, cada uno con sus interfaces y sus estructuras de datos bien
definidas. Luego, los distintos módulos se agrupan en las distintas capas o niveles.
Funciones = módulos + niveles

En cada nivel se pueden utilizar las funciones implementadas en él y las de los niveles
inferiores, sin importarnos cómo están implementados (a esto se le llama ocultamiento
de información extendido porque se realiza entre módulos y niveles).

Cada nivel proporciona una serie de objetos y primitivas necesarias para su manejo.
El problema se plantea a la hora de establecer los distintos niveles del Sistema
Operativo. La división más común es la siguiente:

Descripción de los niveles:


1. Núcleo. Es el que actúa directamente sobre el hardware. Los objetivos que
manipula son los procesos y sus entornos de ejecución: entornos necesarios para que
se ejecute el proceso.
2. E/S Básica. Maneja todos los espacios de almacenamiento como si fueran lineales,
teniendo en cuenta, además, que estos espacios de almacenamiento son fragmentos
del espacio total o bloques.
3. Gestión de memoria. Maneja agrupaciones de espacios. En este nivel los espacios
lineales del nivel anterior se agrupan lógicamente dependiendo de una serie de
parámetros.
4. Sistema de ficheros. Es el encargado del manejo de ficheros, directorios y
dispositivos.
5. Intérprete de comandos. Gracias a las facilidades que nos ofrecen los niveles
inferiores podemos aceptar comandos, o analizarlos y ejecutarlos. Este nivel es el que
proporciona el interface para la interrelación con el usuario.

Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el


primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de
Dijkstra, que se utilizó con fines didácticos (Ver Fig. 2). Se puede pensar también en
estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría.

Prof. Giovana Garrido-2018


Página 15
Capítulo I Introducción a los Sistemas Operativos

Capa 5: Programas de usuario

Capa 4: Gestión de la E/S

Capa 3: Controlador de la consola

Capa 2: Gestión de memoria

Capa 1: Planificación de la CPU y multiprogramación

Capa 0: hardware

En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos


actuales. Otra forma de ver este tipo de sistema es la denominada de anillos
concéntricos o "rings".

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa
(trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma,
las zonas más internas del sistema operativo o núcleo del sistema estarán más
protegidas de accesos indeseados desde las capas más externas. Las capas más
internas serán, por tanto, más privilegiadas que las externas.

Ejemplo - Hacer un DIR de un directorio (DOS).

1. El Intérprete de Comandos asimila el comando para proceder a su ejecución.


2. Le pasa el control Sistema de Ficheros, quien se encargará de buscar el lugar
donde se encuentra lo que queremos visualizar.
3. Hay que invocar al nivel de E/S Básica para llevar a memoria lo que queremos
visualizar. Además, este mismo nivel se encarga de localizarlo en el disco.
4. Se le pasa el control al Núcleo ya que éste es el único que puede acceder al
hardware.
5. Cuando los distintos niveles acaban sus tareas devuelven el control al nivel desde el
cual han sido invocados, hasta que la orden de usuario haya sido completada.

1.4.3 Sistemas Operativos de Máquina Virtual

Se trata de un tipo de sistemas operativos que presentan una interface a cada


proceso, mostrando una máquina que parece idéntica a la máquina real subyacente.
Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto
de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas
operativos de máquina virtual es el de integrar distintos sistemas operativos dando la
sensación de ser varias máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como
misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas
máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas
extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas
se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina
extendida al usuario.

El Sistema Operativo tiene 2 funciones fundamentales:

Prof. Giovana Garrido-2018


Página 16
Capítulo I Introducción a los Sistemas Operativos

1. Crear una máquina tratable, es decir, adaptada a las necesidades de cada usuario
(máquina virtual)
2. Hacer posible la compartición de recursos, es decir, soportar la multiprogramación

En estos sistemas se mantiene por separado el software que implementa cada una de
estas funciones. Partiendo de un único hardware a compartir se simula la existencia de
varias máquinas idénticas a la real. Para que esto sea posible hace falta un nuevo
elemento en el Sistema Operativo, es el llamado monitor de máquina virtual. Éste hace
dos cosas:
1. Simula tantas máquinas virtuales idénticas a la real como haga falta
2. Gestiona los recursos de la máquina real

Para que esto se traduzca en una máquina tratable por el usuario sobre cada máquina
virtual se ejecuta un Sistema Operativo independiente, que se encarga de la segunda
función del Sistema Operativo (hacer posible la compartición de recursos). Esto lo
hace a partir del hardware del que dispone. Un ej., puede ser el siguiente: donde el
usuario introduce un comando que el intérprete de comandos del Sistema Operativo
que maneja interpreta y genera la petición correspondiente a la máquina virtual.

Las llamadas que se hacen a la máquina virtual las captura el monitor de máquina
virtual que, como parte de su simulación, se las pasará al hardware real.
En el caso de que varios usuarios traten de acceder a los mismos recursos será el
monitor de máquina virtual el que gestione la compartición de los mismos (el monitor
de máquina virtual gestiona las esperas, sincronizaciones, prioridades... y ordena las
peticiones para que la máquina real las atienda de una en una).

A. Virtualización

Un concepto realmente interesante, que ha experimentado un notable desarrollo en los


últimos años, y que parece que por fin está encontrando sus caminos productivos y no
solo experimentales. Si leemos algunos análisis de carga de servidores, millones en
todo el mundo, podemos encontrarnos con estadísticas interesantes de como, y de
forma general, tan solo aprovechamos entre un 20-30% de la capacidad de proceso de
estos servidores. Es decir, a cualquier servidor a nivel global le sobran el 70% de sus
recursos. Si a esto unimos la proliferación de servidores, dada la reducción de precio
que han sufrido, nos encontramos con un parque infrautilizado y con dificultades de
mantenimiento

La virtualización es un término que se refiere a la abstracción de los recursos de una


computadora llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa
de la abstracción entre el hardware de la maquina física (host) y el sistema operativo
de la maquina virtual (virtual machine, guest). El VMM maneja los recursos de las
maquinas físicas subyacentes (designadas por el computador central) de una manera
que el usuario pueda crear varias maquinas virtuales presentando a cada una de ellas
una interfaz del hardware que sea compatible con el sistema operativo elegido.

Esta capa de software (VMM) maneja, gestiona y arbitra los cuatro recursos
principales de una computadora (CPU, Memoria, Red, Almacenamiento) y así podrá
repartir dinámicamente dichos recursos entre todas las maquinas virtuales definidas en
el computador central.

En este trabajo cuando se habla de Virtualización, nos referimos a la Virtualización de


plataformas, que consiste en la abstracción del hardware para virtualizar un
computador o sistema operativo en una máquina virtual (virtual machine, VM).
Prof. Giovana Garrido-2018
Página 17
Capítulo I Introducción a los Sistemas Operativos

La Virtualización tiene una larga historia, que comienza en los entornos de


“mainframe" en la década de 1960, surgiendo como necesidad de ofrecer aislamiento
entre usuarios. En ese momento se propuso la Virtualización de sistemas operativos, y
en la década de 1970 era ya una tecnología ampliamente usada.

El reciente interés que ha vuelto a poner de moda esta tecnología se originó al tener
un único tipo de servidores caros y necesitar de algún modo compartir los recursos
entre varias aplicaciones. Esto propicio la idea de agrupar procesos que pertenecen al
mismo usuario en su propio entorno virtual.

La tecnología de Virtualización para arquitecturas i386 recientemente desarrollada


Ofrece nuevas formas de utilizar la tecnología informática al permitir Acceso de forma
lógica, en lugar de física, a datos, capacidad de cómputo, Almacenamiento y otros
recursos.

Numerosas organizaciones están adoptando la tecnología de Virtualización Como


medio para ofrecer servicios elásticos, agrupar la carga de servidores, y Mejorar el
ratio de utilización de los servidores. De esta manera se reducen los Costes de
hardware y mantenimiento, lo que conlleva además un recorte del Consumo de
energía, necesidad de refrigeración, y contaminación.

En la actualidad asistimos a su eclosión gracias al fuerte descenso del coste total de


propiedad (TCO) atribuible a tecnologías vía hardware como Intel VT, AMD-V Pacifica,
NPIV y vía software VMWare , XEN, Microsoft Hyper-V, VirtualIron.”

Hipervisor.

Hypervisor o Virtual Machine Monitor (VMM) es una tecnología que está compuesta
por una capa de software que permite utilizar, al mismo tiempo, diferentes sistemas
operativos o máquinas virtuales (sin modificar o modificados en el caso de
paravirtualización) en una misma computadora central. Es decir es la parte principal
de una máquina virtual que se encarga de manejar los recursos del sistema
principal exportándolos a la máquina virtual

El VMM (Virtual Machine Monitor) crea una capa de la abstracción entre el hardware
de la maquina física (host) y el sistema operativo de la máquina virtual (virtual
machine, guest), de tal forma que maneja los recursos de las maquinas físicas
subyacentes (designadas por el computador central) de una manera que el usuario
pueda crear varias máquinas virtuales presentando a cada una de ellas una interfaz
del hardware que sea compatible con el sistema operativo elegido.

Esta capa de software (VMM) maneja, gestiona y arbitra los cuatro recursos
principales de una computadora (CPU, Memoria, Red, Almacenamiento) y así podrá
repartir dinámicamente dichos recursos entre todas las máquinas virtuales definidas en
el computador central.

En la actualidad todos los fabricantes tanto de Software como de Hardware están


trabajando para mejorar, ayudar al Hypervisor (VMM) y así poder llegar a una
virtualización completa, fiable y robusta.

Como hemos comentado en el apartado de Virtualización existen varios Tipos de


Hypervisor:

Prof. Giovana Garrido-2018


Página 18
Capítulo I Introducción a los Sistemas Operativos

 Type II: Tipo Hosted - Hardware / Sistema Operativo / Hypervisor VMM /


Maquina Virtual:

Este tipo de hypervisor necesita un Sistema Operativo completo para poder


ejecutarse

 Type I: Tipo Non-Hosted / Binary translation - Hardware / Hypervisor VMM /


Maquina Virtual

Este tipo de hypervisor opera como una capa intermedia entre el hardware y
los sistemas operativos invitados (Máquinas Virtuales, guest).

Todas las traducciones binarias (binary translation) de CPU, Memoria, Red,


Almacenamiento las hace la capa VMM

 Paravirtualización: Tipo Non-Hosted / Hardware assist (Intel VT, AMD-V) -


Hardware / Hypervisor VMM / Máquina Virtual Nativa o Modificada

Este tipo de hypervisor opera como una capa intermedia entre el hardware y los
sistemas operativos invitados (Máquinas Virtuales, guest).

Todas las traducciones binarias (binary translation) Red, Almacenamiento las hace la
capa VMM y las traducciones binarias de CPU, Memoria la hace mediante el hardware
(hardware assist).

 Fullvirtualización: Full Hardware assist (Futuro de la virtualización Intel


VT, AMD-V, NPIV..) - Hardware / Hypervisor VMM / Máquina Virtual Nativa o
Modificada

B. Máquina Virtual

Una máquina virtual es un contenedor de software perfectamente aislado que puede


ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador
físico. Una máquina virtual se comporta exactamente igual que lo hace un ordenador
físico. En otras palabras, una máquina virtual es una aplicación que simula el
funcionamiento de una máquina real sobre la que se pueden instalar sistemas
operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicación,
usar los dispositivos USB, etc.

Prof. Giovana Garrido-2018


Página 19
Capítulo I Introducción a los Sistemas Operativos

El sistema operativo no puede establecer una diferencia entre una máquina virtual y
una máquina física, ni tampoco lo pueden hacer las aplicaciones u otros ordenadores
de una red. Incluso la propia máquina virtual considera que es un ordenador “real”. Sin
embargo, una máquina virtual se compone exclusivamente de software y no contiene
ninguna clase de componente de hardware. El resultado de ello es que las máquinas
virtuales ofrecen una serie de ventajas con respecto al hardware físico.

Ventajas de las Máquinas Virtuales


 Compatibilidad
Al igual que un ordenador físico, una máquina virtual aloja su propio sistema
operativo y aplicaciones guest, y dispone de los mismos componentes (placa
base, tarjeta VGA, controlador de tarjeta de red, etc.). El resultado de ello es
que las máquinas virtuales son totalmente compatibles con la totalidad de
sistemas operativos x86, aplicaciones y controladores de dispositivos estándar,
de modo de se puede utilizar una máquina virtual para ejecutar el mismo
software que se puede ejecutar en un ordenador x86 físico.
 Aislamiento
Aunque las máquinas virtuales pueden compartir los recursos físicos de un
único ordenador, permanecen completamente aisladas unas de otras, como si
se tratara de máquinas independientes. Si, por ejemplo, hay cuatro máquinas
virtuales en un único servidor físico y falla una de ellas, las otras tres siguen
estando disponibles. El aislamiento es un factor importante que explica por qué
la disponibilidad y protección de las aplicaciones que se ejecutan en un entorno
virtual es muy superior a las aplicaciones que se ejecutan en un sistema
tradicional no virtualizado.
 Encapsulamiento
Una máquina virtual es básicamente un contenedor de software que ata o
“encapsula” un conjunto completo de recursos de hardware virtuales, así como
un sistema operativo y todas sus aplicaciones, dentro de un paquete de
software. El encapsulamiento hace a las máquinas virtuales
extraordinariamente portables y fáciles de gestionar. Por ejemplo, puede mover
y copiar una máquina virtual de un lugar a otro como lo haría con cualquier otro
archivo de software, o guardar una máquina virtual en cualquier medio de
almacenamiento de datos estándar, desde una memoria USB de tamaño de
bolsillo hasta las redes de área de almacenamiento (SAN) de una empresa.
 Independencia del Hardware
Las máquinas virtuales son completamente independientes de su hardware
físico subyacente. Por ejemplo, se puede configurar una máquina virtual con
componentes virtuales (CPU, tarjeta de red, controlador SCSI, pongamos por
caso) que difieren totalmente de los componentes físicos presentes en el
hardware subyacente. Las máquinas virtuales del mismo servidor físico pueden
incluso ejecutar distintos tipos de sistema operativo (Windows, Linux, etc.).
 Si se combina con las propiedades de encapsulamiento y compatibilidad, la
independencia del hardware proporciona la libertad para mover una máquina
virtual de un tipo de ordenador x86 a otro sin necesidad de efectuar ningún
cambio en los controladores de dispositivo, en el sistema operativo o en las
aplicaciones. La independencia del hardware también significa que se puede
Prof. Giovana Garrido-2018
Página 20
Capítulo I Introducción a los Sistemas Operativos

ejecutar una mezcla heterogénea de sistemas operativos y aplicaciones en un


único ordenador físico.

Podemos encontrar dos tipos de Máquinas Virtuales:


 Máquinas Virtuales de Sistema, En este tipo de máquinas virtuales
podemos trabajar distintos Sistemas Operativos, cada uno con sus
características de Hardware independientes.
 Máquinas Virtuales de proceso, Este tipo de máquina virtual corre con un
proceso en específico y se detiene cuando el proceso termina, todo ello sobre
el Sistema Operativo, por ejemplo con la plataforma .Net que corre la máquina
Virtual Common Language Runtime.

1.4.4 Microkernel (Micronúcleo)

Las funciones concretas del núcleo van a depender en gran medida de la arquitectura
del sistema operativo. Tradicionalmente, los sistemas operativos poseen un núcleo
monolítico que suministra la mayoría de los servicios directamente, a través de las
llamadas al sistema. El término monolítico implica, no tanto que el núcleo del sistema
operativo sea de gran tamaño, sino que esté codificado de forma no modular. Como
consecuencia, la alteración de cualquier componente del mismo para modificar o
añadir nuevos servicios es difícil. El típico ejemplo de sistema operativo con núcleo
monolítico es UNIX.
En la actualidad, se tiende hacia arquitecturas basadas en el concepto de micronúcleo
(microkernel), que consiste en un núcleo que proporciona, básicamente, un conjunto
de servicios esenciales. El resto de los servicios se implementan como procesos
servidores a nivel de usuario. Estos servidores presentan una interfaz bien definido y
son accedidos por el resto de los procesos mediante paso de mensajes.

Prof. Giovana Garrido-2018


Página 21
Capítulo I Introducción a los Sistemas Operativos

Arquitectura de un Microkernel

La filosofía de los sistemas operativos basados en micronúcleo es mantener el núcleo


lo más pequeño posible. Las ventajas de este esquema son que el sistema operativo
es muy modular y que es fácil implementar, instalar y depurar nuevos servicios, ya que
añadir o modificar un servicio no requiere parar el sistema y arrancarlo de nuevo.
Como consecuencia, estos sistemas son muy flexibles, hasta el punto de que los
usuarios que no estén satisfechos con un servicio aportado por el sistema pueden
crearse el suyo propio.

Sistemas Cliente-Servidor (Microkernel)

El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que


puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o
pequeñas.

Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y
cumple con las mismas actividades que los sistemas operativos convencionales.

El núcleo tiene como misión establecer la comunicación entre los clientes y los
servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un
programa de aplicación normal es un cliente que llama al servidor correspondiente
para acceder a un archivo o realizar una operación de entrada/salida sobre un
dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para
otro." Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el
sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria,
entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que
el usuario final o programador puede usar. Estos servidores deben tener mecanismos
de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el
hardware. Actualmente se está trabajando en una versión de UNIX que contempla en
su diseño este paradigma.

Prof. Giovana Garrido-2018


Página 22
Capítulo I Introducción a los Sistemas Operativos

En estos sistemas cada función del Sistema Operativo se implementa como un


programa independiente y se intenta ejecutar al mismo nivel que los programas de
usuario. El problema es que muchos de estos programas no pueden ejecutarse a nivel
de usuario porque actúan directamente sobre el hardware y esas funciones son
competencia del núcleo de los Sistemas Operativos Cliente-Servidor.
Las partes del Sistema Operativo que se ejecutan a nivel de usuario se denominan
servidores. Estos programas tienen exactamente las mismas capacidades que un
programa de usuario y por tanto no tienen acceso directo al hardware.

Cuando un programa de usuario (denominado cliente) quiere un servicio del Sistema


Operativo lanza un mensaje al servidor correspondiente, pero siempre a un servidor de
su mismo nivel.
El núcleo desempeña 2 funciones:
1. Soporta los mensajes a través de los cuales se comunican los clientes y servidores
2. Manipula al hardware para responder a peticiones cuando se lo piden los
servidores. Cuando se quiere acceder a un servicio, toda la toma de decisiones
(decidir si el que ha pedido el servicio tiene privilegios, a quién dar el servicio en
primer lugar si ha habido dos solicitudes al mismo tiempo...), es decir, la política del
sistema, reside en el servidor del servicio. Entonces, el núcleo -que tiene los
mecanismos necesarios para manipular el hardware- será el que realice el servicio,
es decir, la mecánica del sistema reside en el núcleo y está soportado por el
hardware.

Ventajas de estos sistemas


1. Siempre y cuando los servidores estén bien delimitados es posible eliminar un
servidor si éste no se utiliza
2. Siempre es posible sustituir un servidor por otro que haga lo mismo
3. Si falla un servidor el sistema sigue funcionando (pero con alguna función menos)
4. Estos sistemas se puede adaptar muy fácilmente a los sistemas distribuidos.

Un Sistema Operativo Distribuido es aquel en el que el Sistema Operativo no está en


una sola máquina sino que está repartido entre varias.
En este caso, el hardware que manipula el núcleo es más complejo que antes pero
está manipulación es transparente tanto para el usuario como para los servidores.

Cuando una máquina hace exclusivamente la función de un servidor a lo largo del


tiempo se dice que es un servidor dedicado, aunque hay otras máquinas que pueden
ser alternativamente clientes o servidores.

Ejemplo, µCronos: un micronúcleo para sistemas operativos dinámicamente


extensibles.

1.5 Componentes de un Sistema Operativo


El SO está formado por una serie de componentes especializados en determinadas
funciones. Cada SO estructura estos componentes de forma distinta. En esta sección
describiremos primero los distintos componentes que conforman un SO, para
continuar con las diversas estructuras.

Prof. Giovana Garrido-2018


Página 23
Capítulo I Introducción a los Sistemas Operativos

Usuarios
Varias API
Programas de usuario Shell 1 Shell 2

Win 32 POSIX
Sistema
Gestión de Seguridad Comunicac. operativo
Gestión de Gestión de Gestión de y
archivos y y
procesos memoria la E/S
directorios protección sincroniz.

Núcleo
Hardware

Se deben observar dos tipos de requisitos cuando se construye un sistema operativo,


los cuales son:
 Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y
adecuado al uso al que se le quiere destinar.
 Requisitos del software: Donde se engloban aspectos como el mantenimiento,
forma de operación, restricciones de uso, eficiencia, tolerancia frente a los
errores y flexibilidad.

1.5.1. Componentes
Podemos agrupar los componentes de un sistema en dos principales, el componente
gestor y el soporte.

1. Componente Gestor
Es el responsable de regular toda la actividad del sistema, y por tanto comprenderá las
funciones necesarias para controlar el ambiente de trabajo de todo el Sistema.

Podemos agrupar las funciones que comprende el Componente Gestor en tres grupos:

a. Gestor de Trabajos

Llamamos JOB (trabajo) a la unidad mínima de trabajo que se puede presentar al


sistema para su ejecución.
El Gestor de Trabajos se encargará de preparar los jobs para su ejecución,
asignándoles los recursos que necesiten (indicados mediante el OSCL).

Estos son: ficheros, volúmenes, prioridad, programas a ejecutar, puesto en la cola de


trabajos, etc. El ambiente de ejecución que se prepara podemos decir que es un ente
estático.

b. Gestor de Tareas

Cuando el trabajo es aceptado por el sistema, se cargará en memoria el programa


correspondiente al primer paso de trabajo que lo compone. A partir de este momento,
el programa crea una entidad externa que se conoce como proceso (también tarea,
actividad, etc.) que es un ente dinámico.

Prof. Giovana Garrido-2018


Página 24
Capítulo I Introducción a los Sistemas Operativos

El Gestor de Tareas se encarga de gestionar estos procesos, y para ello les asignará
aquellos recursos que necesiten, excepto los de E/S, que no se le han asignado
todavía (ya que no podían reservarse); es decir, las necesidades que surgen durante
la ejecución del programa, como memoria suplementaria, tiempo de CPU,
recuperación tras ciertos errores, etc.

c. Gestor de Datos

Es el que se encarga de supervisar, dinámicamente, todas las operaciones de


Entrada/Salida. Así, se encargará de:
 Asignación de memoria auxiliar
 Control de rutinas y actividades de E/S, incluyendo los interfaces de usuario
 Manejo de los métodos de acceso o programas de canal
 Gestión de buffers
 Recuperación tras errores en E/S
 etc.

2. Componente Soporte

Es el responsable de que las funciones que componen el componente gestor se


ejecuten normalmente.

Por tanto, incluye las funciones necesarias para mantener y soportar tanto los
programas y datos de los usuarios como los del propio Sistema Operativo,
proporcionando una serie de facilidades.

Las funciones que incluye se pueden dividir en cuatro grupos:

a. Ayudas para el mantenimiento de los programas de aplicación


Comprenderá todas las rutinas que ayudan al usuario en la gestión de sus programas
de aplicación: gestión de bibliotecas, ayudas para la construcción de los programas
objeto y ejecutable, utilidades para poder modificar instrucciones, tanto en memoria
principal como en auxiliar, etc.

b. Compiladores e Intérpretes
Facilitan el tratamiento del grupo de programas de Alto Nivel; son programas producto
que nos proporciona generalmente el fabricante de la máquina, y que no incluyen sólo
el traductor en sí mismo, sino también un conjunto de rutinas objeto para las fases de
ejecución, y un conjunto de rutinas fuente para la fase de compilación.

c. Utilidades y Cargador
Facilitan las tareas rutinarias, como mover, copiar, borrar, clasificar ficheros, etc.

d. Soporte de Gestión
Es como un System Accounting, pero ampliado. O sea, es un sistema, rutinas
estadísticas, utilidades de gestión de memoria principal y secundaria especiales,
rutinas check-point/restart, etc. Incluye también todas las rutinas necesarias para
poner a punto el sistema (para ver si es el deseado).

Podemos decir, que básicamente, los componentes básicos de un SO son:


1. Gestor de procesos
a. Abstracción: imagen de memoria, estado del procesador, proceso
b. Estructura: Bloque de Control de Proceso
c. Servicios: crear, ejecutar, terminar proceso

Prof. Giovana Garrido-2018


Página 25
Capítulo I Introducción a los Sistemas Operativos

2. Gestor de memoria
a. Abstracción: regiones, memoria virtual, imagen de memoria
b. Estructuras: tablas de páginas
c. Servicios: solicitar, liberar, compartir memoria
3. Comunicación y sincronización de procesos
a. Abstracción: cauces, semáforos, mensajes
b. Servicios: Crear mecanismo, recibir (esperar), enviar (despertar), destruir
4. Gestor de Entrada/salida
a. Abstracción: dispositivo como fichero
b. Servicios: los de ficheros (independencia de dispositivo)
c. Tipos: Orientados a caracteres o a bloques
5. Gestor de ficheros y directorios
a. Abstracción: ficheros – atributos, puntero de posición, bloques, volumen
b. Servicios de ficheros: abrir, leer, escribir, cerrar, posicionar, crear, borrar
c. Abstracción: directorios, jerarquía de nombres
d. Servicios de directorios: crear, abrir, leer, borrar, cambiar de directorio

Un sistema operativo se denomina multiproceso cuando muchas "tareas" (también conocidas


como procesos) se pueden ejecutar al mismo tiempo.

1.5.2 Servicios de los Sistemas Operativos


El sistema brindará un entorno de ejecución de programas donde se dispondrá de un
conjunto de servicios que serán accesibles mediante una interface bien definida.

Los servicios básicos que debe brindar un sistema operativo son:


 Ejecución de programas
 Operaciones de E/S
 Manipulación de archivos
 Comunicación entre procesos
 Manipulación de errores (excepciones)

Además, se especifican otros servicios importantes tales como:

Procesos

Un concepto central en todos los sistemas operativos. Un proceso es básicamente, un


programa en ejecución Consta del programa ejecutable, sus datos y su pila, contador
y otros registros, además de toda la información necesaria para ejecutar un programa.
Es parte de las llamadas al sistema de control, que son fundamentales para la
creación y finalización de procesos. Ejemplo, interprete de comandos.

Archivos

Otra categoría de las llamadas al sistema. Son unas de las funciones principales del
sistema operativo es ocultar las peculiaridades de los discos, y demás dispositivos de
E/S.

Es evidente la necesidad de las llamadas al sistema en la creación, eliminación,


lectura y escritura de archivos. Además, también involucra, el espacio para almacenar
los archivos (directorios), archivos especiales.

Una de las últimas características es aquella que se refiere tanto a los procesos como
a los archivos: los tubos. Un tubo es una especie de seudoarchivo que se puede
utilizar para conectar dos procesos.

Prof. Giovana Garrido-2018


Página 26
Capítulo I Introducción a los Sistemas Operativos

Shell

Es el intérprete de comandos en Unix (Linux), el cual sin ser parte del sistema
operativo, hace un uso extenso de muchas de las características del sistema. También
suministra una interfaz a través del cual el usuario puede dialogar en forma interactiva
con la computadora. El shell recibe los mandatos u órdenes del usuario, los interpreta
y, si puede los ejecuta. Ejemplo, uso de comando date de Unix.

Kernel o núcleo
El Kernel o Ejecutivo es el núcleo del sistema operativo. Éste está permanente en
memoria una vez que el equipo inicia sus funciones normales.
Es el componente Software central de la mayoría de los sistemas operativos se
encarga de facilitarle a los distintos programas el acceso al Hardware del sistema, en
otros términos es el encargado de gestionar los recursos a través de la comunicación
entre procesos y/o llamadas de servicio del sistema. Esta capacidad de gestión de
recursos del Kernel se basa en el diseño de sistemas computacionales como una
serie de niveles de abstracción en los cuales cada nivel soporta su funcionamiento en
los servicios que le brinda el nivel inmediatamente inferior, desde este punto de vista
el Kernel es simplemente el nombre que se da al nivel de abstracción más bajo
implementado en Software, es decir el más cercano al Hardware.
Es responsable por tareas como:
 Traslado del control de un programa a otro
 control y programación de dispositivos periféricos
 Manejo de interrupciones y condiciones de error
 Comunicación entre procesos
 Cronogramación de tareas
 Manejo de la memoria
 Manejo de archivos

Teniendo en cuenta que los recursos de un sistema son limitados, el Kernel se


encarga de decidir qué programa puede hacer uso de un dispositivo Hardware y el
tiempo en que lo puede hacer.

Prof. Giovana Garrido-2018


Página 27
Capítulo I Introducción a los Sistemas Operativos

El núcleo tiene como función básica garantizar la carga y ejecución de los procesos, el
manejo de las entradas/salidas del sistema y de brindar una interfaz entre este y los
programas de usuario. Entre otras el Kernel realiza las siguientes Funciones:
 Comunicación entre programas y Hardware.
 Gestión de los diferentes programas informáticos (Tareas o Procesos).
 Gestión del Hardware (memoria, procesador, periféricos y dispositivos de
almacenamiento).

Tipos de Kernel.
El Kernel puede clasificarse en función del tamaño y de las funcionalidades que posea.
Realmente, y pese a seguidores incondicionales en un modelo u otro, existe una
tendencia básica a reducir el tamaño del núcleo proporcionando menos
funcionalidades, que son desplazadas a módulos que se cargan en el momento de la
ejecución. En función a esta idea existen tres tipos fundamentales de Kernel:

 Kernel monolítico: Todas las funcionalidades posibles están integradas en el


sistema. Se trata de un programa de tamaño considerable que se debe
recompilar por completo cada vez que se añade una nueva función. Esta es la
estructura original de Linux. Por tratarse de una técnica clásica y desfasada el
creador de Linux fue muy criticado.

 Kernel modular: Se trata de la tendencia actual de desarrollo. En el Kernel se


centran las funcionalidades esenciales como la administración de memoria, la
planificación de procesos, etc. Sin embargo no tiene sentido que el núcleo de
un sistema operativo englobe todos los elementos requeridos para
comunicarse con todas los posibles periféricos de un sistema teniendo en
cuenta la gran variedad tanto de modelos como de fabricantes disponibles.

En otros sistemas operativos esto se soluciona con unos archivos


proporcionados por el fabricante de los dispositivos llamados Drivers. En Linux
se creó una interfaz adecuada para posibilitar el desarrollo de módulos que
cumplieran esas funcionalidades. Esos módulos pueden ser compilados por
separado y añadidos al Kernel durante el tiempo de ejecución.

 Estructura de micro-Kernel: Esta técnica pretende reducir a su mínima


expresión el Kernel, dejando a los niveles superiores el resto de las
funcionalidades. Existen algunos Kernels que lo utilizan, por ejemplo
el Hurd, Se trata del último Kernel GNU llamado a sustituir a Linux como
núcleo del sistema operativo. Aunque esta estrategia de diseño es tan antigua
como la modular, no ha sido tenida en cuenta hasta ahora debido a las
limitaciones de rendimiento que presenta

1.5.3 Sistemas Operativos por Servicios


Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del
usuario final.

Prof. Giovana Garrido-2018


Página 28
Capítulo I Introducción a los Sistemas Operativos

Monousuarios
Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la
vez, sin importar el número de procesadores que tenga la computadora o el número de
procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las
computadoras personales típicamente se han clasificado en este renglón.
Multiusuarios
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un
usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora
o por medio de sesiones remotas en una red de comunicaciones. No importa el
número de procesadores en la máquina ni el número de procesos que cada usuario
puede ejecutar simultáneamente.
Monotareas
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por
usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se
admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo
solo una tarea a la vez.
Multitareas
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando
varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de
un programa durante su depuración mientras compila otro programa, a la vez que está
recibiendo correo electrónico en un proceso en background. Es común encontrar en
ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un
rápido intercambio entre las tareas para el usuario, mejorando su productividad.
Uniproceso
Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un
procesador de la computadora, de manera que si la computadora tuviese más de uno
le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.
Multiproceso
Un sistema operativo multiproceso se refiere al número de procesadores del sistema,
que es más de uno y éste es capaz de usarlos todos para distribuir su carga de
trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o
asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo
selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y
servirá como pivote para distribuir la carga a los demás procesadores, que reciben el
nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de
ellos (threads) son enviados indistintamente a cualquiera de los procesadores
disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de
trabajo bajo este esquema.

Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual


puede consistir de un área de memoria, un conjunto de registros con valores
específicos, la pila y otros valores de contexto. Us aspecto importante a considerar en
estos sistemas es la forma de crear aplicaciones para aprovechar los varios
procesadores. Existen aplicaciones que fueron hechas para correr en sistemas
monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el
compilador detecte secciones de código paralelizable, los cuales son ejecutados al
mismo tiempo en procesadores diferentes. Por otro lado, el programador puede
modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última
opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al

Prof. Giovana Garrido-2018


Página 29
Capítulo I Introducción a los Sistemas Operativos

programador a ocupar tanto o más tiempo a la paralelización que a elaborar el


algoritmo inicial.

1.5.4. Acceso a los servicios del Sistema Operativo


Existen dos formas básicas de prestación de servicios por parte del sistema:

1. Llamadas al sistema (conocido también como servicios)

Sirven para obtener los servicios de más bajo nivel y constituyen el interface entre los
programas en ejecución y el Sistema Operativo.

Los programas del usuario se comunican con el sistema operativo y le solicitan


servicio mediante las llamadas al sistema. A cada una de estas llamadas le
corresponde un procedimiento de la biblioteca que pueden llamar los programas del
usuario en forma de interfaz de programación o API (Application Programming
Interface). Este procedimiento pone los parámetros de la llamada al sistema en un
lugar específico, como pueden ser los registros de la máquina, para después ejecutar
una instrucción. Trap (un tipo de llamada de procedimiento protegido) para iniciar el
sistema operativo. La finalidad del procedimiento de biblioteca es ocultar los detalles
de la instrucción Trap y hacer que las llamadas al sistema parezcan llamadas
comunes a un procedimiento. Ejemplo de una llamada Read desde un programa en C,
Count = read(file, buffer, nbytes);
Claro está, el tipo de llamadas al sistema varía de un sistema operativo a otro.

Generalmente estas funciones del Sistema Operativo están implementadas en


ensamblador o en algún otro lenguaje que permita la manipulación del hardware.

Las llamadas al sistema en un programa de usuario, o son una instrucción especial o


están encubiertas en llamadas a funciones de librería.
Cuando se realiza una de estas llamadas se tiene que especificar la operación que se
quiere realizar, y para ello será necesario pasarle todos los parámetros esenciales.

Podemos hacerlo de tres formas:


a. Dejar el valor de dichos parámetros en los registros del sistema. Puesto que el
sistema tiene acceso a los registros puede leerlos de ahí.
b. Guardar el valor de los parámetros en memoria y meter en los registros la dirección
donde se guardan dichos parámetros.
c. Utilizar la pila de ejecución del propio Sistema Operativo, aunque hay máquinas en
las que el sistema de protección no permite esto.

Principales llamadas del sistema.

Existen 5 grupos:
 Control de procesos y trabajos.
Estas llamadas permiten la terminación de un programa, tanto de manera normal
como de manera anormal.
En los sistemas generalmente se trabaja con lo que se denominan niveles de error.
Por ejemplo, podemos detectar -y tratar- un cierto tipo de error que no produce un
break del programa pero que puede servir para controlar su ejecución.
Nos permiten generar nuevos procesos a partir de un proceso en ejecución, es decir,
hacer que un proceso cree otro. Además, el proceso padre y el hijo deben
sincronizarse mediante llamadas que permitan generar esperas tanto en el padre

Prof. Giovana Garrido-2018


Página 30
Capítulo I Introducción a los Sistemas Operativos

como en el hijo. También hay otras llamadas que nos permiten leer y modificar los
atributos de un proceso (prioridad de proceso, tamaño de memoria...).
 Manipulación de ficheros.
Nos deben permitir abrir, cerrar, escribir, leer, posicionarse en ellos, crear, destruir...
En caso de que el sistema disponga de una jerarquía de directorios, se aplicarán las
mismas llamadas al directorio que sirven para leer y modificar atributos de ficheros y
directorios.
 Gestión de dispositivos.
Las llamadas al sistema para manejar dispositivos son las mismas que para manejar
ficheros, añadiendo las necesarias para solicitar y liberar el uso de dicho dispositivo.
 Mantenimiento de la información.
Son aquellas que sirven para transferir información de carácter general desde el
sistema hasta el programa de usuario, por ejemplo, obtener la fecha y la hora del
sistema, la versión y nombre del sistema operativo, algún parámetro de su
funcionamiento, cuánto tamaño libre de memoria hay...
 Llamadas para las comunicaciones.
Para realizar el paso de mensajes será necesario abrir y aceptar una conexión, poder
leer y escribir los mensajes y, cuando se ha terminado, cerrar esa conexión.

La otra forma de comunicarse es por medio de áreas de memoria compartidas (igual


que el buzón de casa). Necesitaré dos llamadas: una que me permita acceder al área
compartida y la otra para indicar que he acabado.

Capas del Sistema Operativo (Clasificación genérica). .-

Capa 13 SHELL
Capa 12 Procesos de usuarios.
Capa 11 Directorio
Capa 10 Dispositivos

Capa 9 Sistemas de archivos.


Capa 8 Comunicaciones
Capa 7 Memoria virtual.

Capa 6 Almacenamiento secundario.

Capa 5 Procesos primitivos

Capa 4 Interrupciones
Capa 3 Procedimientos
Capa 2 Conjunto de instrucciones
Capa 1 Circuitos electrónicos

 Capa 1.- Circuitos electrónicos. Objetos tratados son registros, celdas de memoria, puertas lógicas.
 Capa 2.- Conjunto de instrucciones del procesador. Las operaciones de este nivel son las permitidas
por el conjunto de instrucciones del lenguaje máquina.
 Capa 3.- Añade concepto de procedimiento o subrutina. Operaciones de llamada y retorno.
 Capa 4.- Introduce interrupciones, las cuales hacen que procesador salve el contexto actual e invoque
rutina de tratamiento de interrupción.

--- Las cuatros primeras capas anteriormente citadas no pertenecen al SO sino al hardware de la
máquina. ---

 Capa 5.- Se introduce noción de proceso como programa en ejecución. Entre requisitos
fundamentales de un SO que ofrezca soporte para varios procesos incluye capacidad de suspender y
reanudar un proceso (Exige guardar cambios de contexto  Capa 4). Si un proceso necesita
cooperación será necesario un sistema de sincronización. (Técnica sencilla  Semáforo).

Prof. Giovana Garrido-2018


Página 31
Capítulo I Introducción a los Sistemas Operativos

 Capa 6.- Dispositivos de almacenamiento secundario del computador. Se incluyen procesos para la
planificación de estos dispositivos.
 Capa 7.- Crea un espacio de direcciones lógicas para procesos. Organiza el espacio de direcciones
virtuales en bloques que se pueden mover entre memoria principal y secundaria.

3 esquemas.-

 Paginación de longitud fija.


 Segmentación de longitud variable.
 Las dos anteriores.

 Capa 8.- comunicación de información y mensajes entre procesos (Nivel 5 proporciona mecanismos
de señalización). Una de las herramientas más potentes  Tubo  Canal lógico para flujo de datos
entre procesos.
 Capa 9.- Da soporte a almacenamiento a largo plazo de archivos con nombre. Los datos de
almacenamiento secundario se contemplan en términos de entidades abstractas de longitud variable
en contraste con el enfoque a hardware del Nivel 6.
 Capa 10.- Acceso a dispositivos externos.
 Capa 11.- Mantienen asociación entre identificadores externos de recursos y objetos del sistema Estos
se mantiene en un directorio. Las entradas no incluyen solo lo anterior sino también otras
características.
 Capa 12.- Servicio completo de soporte a proceso. Se da soporte para la gestión ordenada de toda la
información asociada a la gestión de proceso. Esto incluye, espacio de direcciones virtuales, lista de
objetos y procesos con los que puede interactuar y sus restricciones, los parámetros pasados al
proceso.
 Capa 13.- Interface de usuario con sistema operativo.

2. Mediante Programas del sistema

Constituyen una interfaz entre el usuario y el sistema operativo. Incluyen llamadas al


sistema y proporcionan la funcionalidad básica para resolver problemas comunes de
los usuarios. Además, permiten crear un entorno adecuado para el desarrollo y la
ejecución de los programas de usuario. En resumidas cuentas, es lo que usuario ve
del Sistema Operativo.

Son el método más usado en los Sistemas Operativos modernos, de hecho, los
Sistemas Operativos modernos se suelen suministrar en dos partes:
- el supervisor o núcleo
- un amplio conjunto de programas de usuario

A modo de resumen, son la otra forma de acceder a los servicios del sistema y
permiten crear un entorno adecuado para el desarrollo y la ejecución de los programas
de usuario.
La idea que un usuario tiene de un sistema es la que le dan los propios programas del
sistema. Diseñar estos programas -esta interface- es una tarea muy difícil. Pueden
darse dos circunstancias:
 el sistema operativo es muy bueno pero interface pésimo (UNIX)
 el sistema operativo es malo pero con un interface muy bueno (WINDOWS95)
aunque un mismo Sistema Operativo puede tener varios interfaces distintos (X-
WINDOWS en UNIX).

Los programas del sistema se pueden dividir en varias categorías:


 Manipulación de archivos. Estos programas crean, eliminan, copian, renombran,
imprimen, vuelcan, muestran y en general manipulan archivos y directorios.
 Información de estado. Algunos programas simplemente solicitan al sistema
fecha, hora, espacio de memoria o disco disponible, número de usuarios o
información de estado similar. A esta información se le da formato y se imprime en
la terminal u otro dispositivo o en un archivo.
Prof. Giovana Garrido-2018
Página 32
Capítulo I Introducción a los Sistemas Operativos

 Modificación de archivos. Puede haber varios editores de texto para crear y


modificar el contenido de archivos almacenados en cinta o disco.
 Apoyo a lenguajes de programación. Con frecuencia, con el sistema operativo
se ofrecen compiladores, ensambladores e intérpretes para los lenguajes de
programación habituales (como FORTRAN, COBOL, Pascal, BASIC, C, LISP, etc.).
 Carga y ejecución de programas. Una vez ensamblado o compilado el programa,
se debe cargar en la memoria para ejecutarlo. El sistema puede ofrecer
cargadores absolutos, cargadores relocalizables, editores de enlace y cargadores
de superposición. También se necesitan los sistemas de depuración para
lenguajes de alto nivel o de máquina.
 Comunicaciones. Estos programas proporcionan el mecanismo para crear
conexiones virtuales entre procesos, usuarios y diferentes sistemas de
computación; permiten a los usuarios enviar mensajes a las pantallas de los
demás, enviar mensajes más grandes en forma de correo electrónico o transferir
archivos de una máquina a otra, e incluso conectarse en forma remota a otros
computadores.
 Programas de aplicación. La mayoría de los sistemas operativos se entregan con
programas útiles para solucionar problemas comunes, o para efectuar operaciones
comunes. Estos programas incluyen compiladores de compiladores, formadores de
texto, paquetes generadores de gráficos, sistemas de bases de datos, hojas de
cálculo, paquetes de análisis estadístico, juegos, etcétera.

El programa del sistema más importante es el intérprete de comandos, que se puede


implementar de dos formas distintas.
1. Incluir, dentro del intérprete de comandos, el código correspondiente a cada
comando. Su ejecución es muy rápida pero el tamaño del intérprete crece de forma
desmesurada.
Además es poco flexible porque cada vez que queremos que reconozca un nuevo
comando necesitamos hacer las modificaciones en el código fuente, volverlo a
compilar y enlazar.

2. Implementar cada comando como un programa del sistema. En este caso el


intérprete de comandos no ejecuta el comando, lo único que hace es usar ese
comando para buscar un programa del sistema que se llame igual. Y cuando se
encuentre, el programa será cargado en memoria y ejecutado.

Ventajas (con respecto a la primera forma de implementación):


 Es reducido su tamaño
 Su tamaño no depende del número de comandos que reconozca
 Es flexible (para añadir un nuevo comando basta añadir al sistema un nuevo
programa llamado igual que el nuevo comando a reconocer y cuyo código sea
el correspondiente a la función realizada por ese comando).

Inconvenientes:
 Es más lento
 Los parámetros tienen que fluir del intérprete de comandos al programa del
sistema, por tanto, hay que ofrecer mecanismos para transmitir esta
información.
 En cualquiera de los dos casos, deben establecerse a priori unas reglas de
diseño para que los usuarios sepan cómo llamar a los comandos y pasarles los
parámetros adecuadamente.

Prof. Giovana Garrido-2018


Página 33
Capítulo I Introducción a los Sistemas Operativos

Características
1. Fiabilidad y seguridad, que quiere decir que el sistema operativo esté libre de
error y pueda responder ante cualquier evento.
2. Determinismo e indeterminismo. Un sistema operativo tiene que ser
determinista en el sentido de que los mismos programas con los mismos datos
tiene que dar los mismos resultados, pero también tiene que ser no
determinista en relación a que debe responder a cualquier suceso imprevisto.
3. Flexibilidad y generalidad. Debe adaptarse a las distintas necesidades del
usuario y debe ser portable, es decir, debe poder funcionar sobre distintas
plataformas.
4. Facilidad de uso. Debe ser fácil de acceder y de usar, es decir, User Friendly.
5. Seguridad e integridad. Tanto datos como programas deben estar protegidos
de cualquier intento de acceso no permitido y posibles corrupciones.
6. Visibilidad u opacidad. El sistema operativo debe dejar ver el usuario sólo lo que
necesita y en la forma más adecuada.
7. Eficiencia y disponibilidad. El sistema operativo tiene que ser rápido, funcionar bien
y proporcionar el mayor número de funciones posibles.

Estas características se miden con parámetros como:


 el tiempo de respuesta
 el tiempo entre tareas
 los tiempos muertos de UCP
 el uso de recursos
 el throughtput
 ...

8. Mantenibilidad y extensibilidad. Dos ideas:


a. El sistema operativo debe ser fácil de mantener y ampliar
b. El sistema operativo debe estar programado de forma modular

9. El tamaño del sistema operativo. No debe ser excesivo y no debe afectar a la


productividad del sistema (consumiendo pocos recursos).

1.5.4 Sistemas Operativos por la Forma de Ofrecer sus Servicios


Esta clasificación también se refiere a una visión externa, que en este caso se refiere a
la del usuario, el cómo accesa los servicios. Bajo esta clasificación se pueden detectar
dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos.

Sistemas Operativos de Red


Los sistemas operativos de red se definen como aquellos que tiene la capacidad de
interactuar con sistemas operativos en otras computadoras por medio de un medio de
transmisión con el objeto de intercambiar información, transferir archivos, ejecutar
comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas
es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al
sistema para ejecutar estas operaciones, además de la ubicación de los recursos que
desee accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el
archivo matriz.pas que se localiza en el directorio /software/código en la computadora
fisc99 bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red
con los comandos siguientes:

Prof. Giovana Garrido-2018


Página 34
Capítulo I Introducción a los Sistemas Operativos

hidalgo% hidalgo% rcp fisc99:/software/código/matriz.pas . hidalgo%

En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la
computadora fisc99 y lo coloca en el directorio donde se ejecutó el mencionado
comando. Lo importante es hacer ver que el usuario puede accesar y compartir
muchos recursos.

Sistemas Operativos Distribuidos


Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando
integrar recursos (impresoras, unidades de respaldo, memoria, procesos, unidades
centrales de proceso) en una sola máquina virtual que el usuario accesa en forma
transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los
recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos
fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo
que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha
conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos
en las varias unidades de procesamiento, reintegrar sub-resultados, resolver
problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos
distribuidos y consolidar la protección y seguridad entre los diferentes componentes
del sistema y los usuarios. Por ejemplo, el control de los cajeros automáticos en
diferentes estados de la república. Ahí no es posible ni eficiente mantener un control
centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar
servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que
se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar
grandes cantidades de información en disco duro con una alta confiabilidad y
disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne una
partición de disco duro en servidores diferentes, de manera que si uno de los
servidores falla, no se deje dar el servicio a todos, sino sólo a unos cuantos y, más
aún, se podría tener un sistema con discos en espejo ( mirror ) a través de la red, de
manera que si un servidor se cae, el servidor en espejo continúa trabajando y el
usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma
transparente.

Ventajas de los Sistemas Distribuidos


En general, los sistemas distribuidos (no solamente los sistemas operativos) exhiben
algunas ventajas sobre los sistemas centralizados que se describen enseguida.
 Economía: El cociente precio/desempeño de la suma del poder de los
procesadores separados contra el poder de uno solo centralizado es mejor
cuando están distribuidos.
 Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy
superior.
 Confiabilidad: Si una sola máquina falla, el sistema total sigue funcionando.
 Crecimiento: El poder total del sistema puede irse incrementando al añadir
pequeños sistemas, lo cual es mucho más difícil en un sistema centralizado y
caro.
 Distribución: Algunas aplicaciones requieren de por sí una distribución física.

Por otro lado, los sistemas distribuidos también exhiben algunas ventajas sobre
sistemas aislados. Estas ventajas son:

Prof. Giovana Garrido-2018


Página 35
Capítulo I Introducción a los Sistemas Operativos

 Compartir datos: Un sistema distribuido permite compartir datos más fácilmente


que los sistemas aislados, que tendrían que duplicarlos en cada nodo para
lograrlo.
 Compartir dispositivos: Un sistema distribuido permite accesar dispositivos
desde cualquier nodo en forma transparente, lo cual es imposible con los
sistemas aislados. El sistema distribuido logra un efecto sinergético.
 Comunicaciones: La comunicación persona a persona es factible en los
sistemas distribuidos, en los sistemas aislados no. _ Flexibilidad: La
distribución de las cargas de trabajo es factible en el sistema distribuido, se
puede incrementar el poder de cómputo.

Desventajas de los Sistemas Distribuidos


Así como los sistemas distribuidos exhiben grandes ventajas, también se pueden
identificar algunas desventajas, algunas de ellas tan serias que han frenado la
producción comercial de sistemas operativos en la actualidad. El problema más
importante en la creación de sistemas distribuidos es el software: los problemas de
compartición de datos y recursos es tan complejo que los mecanismos de solución
generan mucha sobrecarga al sistema haciéndolo ineficiente. El verificar, por ejemplo,
quiénes tienen acceso a algunos recursos y quiénes no, el aplicar los mecanismos de
protección y registro de permisos consume demasiados recursos. En general, las
soluciones presentes para estos problemas están aún en pañales.

Otros problemas de los sistemas operativos distribuidos surgen debido a la


concurrencia y al paralelismo. Tradicionalmente las aplicaciones son creadas para
computadoras que ejecutan secuencialmente, de manera que el identificar secciones
de código `paralelizable' es un trabajo arduo, pero necesario para dividir un proceso
grande en sub-procesos y enviarlos a diferentes unidades de procesamiento para
lograr la distribución. Con la concurrencia se deben implantar mecanismos para evitar
las condiciones de competencia, las postergaciones indefinidas, el ocupar un recurso y
estar esperando otro, las condiciones de espera circulares y , finalmente, los "abrazos
mortales" (deadlocks). Estos problemas de por sí se presentan en los sistemas
operativos multiusuarios o multitareas, y su tratamiento en los sistemas distribuidos es
aún más complejo, y por lo tanto, necesitará de algoritmos más complejos con la
inherente sobrecarga esperada.

Por otro lado, en el tema de sistemas distribuidos existen varios conceptos importantes
referentes al hardware que no se ven en este trabajo: multicomputadoras,
multiprocesadores, sistemas acoplados débil y fuertemente, etc.

1.6 Arranque, activación y parada de un Sistema Operativo


1.6.1 Arranque del Sistema operativo

El arranque de una computadora tiene dos fases: la fase de arranque de hardware y la


fase de arranque del sistema operativo. Estas van a depender del sistema operativo.

La siguiente figura muestra las actividades más importantes.

Prof. Giovana Garrido-2018


Página 36
Capítulo I Introducción a los Sistemas Operativos

Test del hardware


Bajo el control del
iniciador ROM Carga en memoria del cargado del SO

Bajo el control del


cargador (boot) Carga en memoria componentes del SO
del SO

Inicialización bajo Test del sistema de archivos


el control de la Creación de estructuras de datos internas
parte residente del Completa la carga del SO residente
SO Creación de procesos login

Arranque hardware

Software de E/S
(BIOS)

Programa
en ROM
1. Comprobación del sistema que sirve para
detectar sus características (ejem. Cantidad de
Programa de memoria principal)
arranque 2. Fase de lectura y almacenamiento en memoria
del programa cargador del SO
Señal eléctrica 3. Da control a este programa bifurcando a la
Iniciador ROM
dirección de memoria en la que lo ha
almacenado. Para tener flexibilidad se hace
que el programa iniciador ROM sea
Reset independiente del SO

Arranque del sistema (pasos)


1. Memoria ROM que contiene
a. Iniciador ROM – independiente del SO. Modo real, sin interrupciones
i. Comprueba el sistema (POST – Power-On self-test)
ii. Carga en memoria el boot desde el dispositivo de arranque
seleccionado
iii. Cede control al programa de arranque (boot)
b. Software de E/S (BIOS): disco, teclado, pantalla,…
2. Cargador del SO en disco (boot): almacenado en zona predefinida
a. Comprueba el sistema (coherencia del sistema de ficheros)
b. Carga el kernel residente en memoria
c. Inicializa las estructuras de información (IDT, tablas de procesos,…)

Prof. Giovana Garrido-2018


Página 37
Capítulo I Introducción a los Sistemas Operativos

d. Crea las tablas de páginas de memoria y activa la MMU  paso a modo


protegido
e. Habilita interrupciones

El BIOS
• El sistema BIOS siempre está presente, pero solo es visible cuando se prende la
computadora. Después del inicio, el sistema operativo toma el control.
• Al prender la computadora no hay sistema operativo en la memoria. La memoria RAM está
vacía. El sistema BIOS debe residir en otro tipo de memoria para llevar a cabo su función.
El BIOS reside en un chip del la memoria ROM (memoria de sólo lectura) en la tarjeta
principal
• Al encender la computadora, el procesador automáticamente ejecuta las instrucciones del
ROM. Lo primero que hace el BIOS es copiarse del ROM al RAM. A partir de ese
momento, le dice al procesador que tome todas sus instrucciones de la RAM.
• Otro tipo de memoria que el BIOS utiliza es la memoria CMOS. El CMOS Semiconductor
de Óxido de Metal Complementario) es una tecnología de chip que utiliza muy poca
energía. En la tarjeta principal se incluye una cantidad pequeña de memoria CMOS, por lo
general 64 bytes, para almacenar los parámetros de configuración de BIOS que controlan
el equipo de cómputo.
• Ahora puede ver lo importante que es que el CMOS consuma poca energía. El mayor
inconveniente de la tecnología CMOS es que es más lento que el DRAM regular. Sin
embargo, esto no es tan importante si la memoria CMOS solamente almacena la
configuración de parámetros BIOS, ya que el contenido sólo se utiliza en el arranque de la
computadora.
• Al encender la computadora, el BIOS inicia su ejecución con el examen POST ("Power-On
Self Test" o Examen de Encendido). Primero, el BIOS habilita la tarjeta de video (la pantalla
brilla) y se despliega información básica así como el tipo de tarjeta de video instalada, el
nombre del fabricante del BIOS y la versión del BIOS.
• Después determina la cantidad de DRAM instalado en el sistema y puede hacer un examen
de memoria. Este examen depende de un parámetro en la configuración del BIOS. (En los
sistemas de mucha memoria, se puede desactivar el examen de memoria para producir un
encendido más rápido.
• La configuración de la memoria y los resultados de los exámenes se desplegarán en la
pantalla. El BIOS verifica cuales tarjetas de expansión y adaptadores están presentes y los
inicializa.
• Para concluir la secuencia POST, el BIOS despliega la información de la configuración del
sistema, así como el tipo de procesador instalado, la información de la memoria caché, los
tipos de unidades de disco, las direcciones de los puertos seriales y paralelos y la lista de
otras tarjetas de expansión detectadas.
• Una vez que se finaliza la secuencia POST, el siguiente trabajo del BIOS es cargar el
programa que a su vez cargará al sistema operativo. Para hacer esto es necesario que
BIOS conozca suficiente sobre las unidades de disco para poder leer un grupo de datos
llamados Registro de Inicio Maestro (Master Boot Register), o MBR.
• De manera convencional el MBR se encuentra en la primera pista del disco. El programa
MBR carga al sistema operativo y lo empieza a operar
• Para encontrar el sistema operativo, el BIOS sigue un orden de búsqueda. Empieza
buscando en la unidad A, si el disco no contiene el MBR, busca en la unidad de disco B. Si
no tiene éxito, busca el MBR en la unidad de disco C, la cual normalmente es el disco duro
principal. Y así continua hasta encontrarlo.

Prof. Giovana Garrido-2018


Página 38
Capítulo I Introducción a los Sistemas Operativos

Ubicación del sistema operativo

Iniciador ROM
extrae Conversación: sobre ubicación,
dirección de arranque y tamaño del
cargador del SO
Memoria
Principal

Envía
SO Programa
Cargador SO

Arranque del sistema operativo

El programa cargador del SO tiene por misión traer a memoria principal alguno de los
componentes del SO. Una vez cargados estos componentes, se pasa a la fase de
iniciación, que incluye las siguientes operaciones:
 Comprobación del sistema: Se completa pruebas de hardware iniciadas por ROM
y comprueba si el sistema de archivo tiene un estado coherente.
 Se establecen las estructuras de información propias del SO, tales como tablas de
procesos, de memoria y las de E/S.
 Se carga en memoria principal aquella parte del SO que ha de estar siempre en
memoria, parte que se denomina SO residente.
 Se crea un proceso de inicio o login por cada terminal definido en el sistema, así
como una serie de procesos auxiliares y de demonios.

Programa cargador Disco


(Identificador)

Sistema operativo
3. Sistema Operativo en funcionamiento – fase inicial (pasos seguido del segundo-
anterior)
a. Carga módulos adicionales, generalmente drivers de dispositivos
b. Crea procesos servidores (“demonios”) iniciales
c. Crea un proceso de inicio o login por cada terminal, y procesos auxiliares
d. El proceso login autentica al usuario mediante contraseña y ejecuta un shell
para interactuar con él

Parada del sistema

En ocasiones es necesario apagar o reiniciar el sistema: mantenimiento, diagnóstico,


hardware nuevo, etc.

Prof. Giovana Garrido-2018


Página 39
Capítulo I Introducción a los Sistemas Operativos

 Copia a disco de la información necesaria mantenida en memoria por razones


de eficiencia; si no se efectúa así, el sistema queda corrompido y en el próximo
arranque debe ser “reparado”
 Hibernación: copia a disco de la imagen completa de memoria principal 
rearranque rápido a la misma situación de apagado
 Suspensión (Standby): apagado de casi todo excepto la memoria 
reanudación instantánea
Todo lo anterior variará dependiendo del sistema operativo.

1.6.2 Activación del Sistema Operativo

El trabajo del SO puede provenir de las siguientes fuentes:

 Llamadas al sistema emitidas por los programas


 Interrupciones producidas por los periféricos
 Condiciones de excepción o error del hardware

En todos estos casos se deja de ejecutar el proceso en ejecución y se entra a ejecutar


el SO. Los mecanismos para romper la secuencia de ejecución son dos: las
instrucciones de bifurcación (no invoca al SO, puesto que el proceso ejecuta a nivel de
usuario y el SO es a nivel de núcleo y en espacio de direcciones distintos; significa que
los servicios del SO no se pueden solicitar mediante llamadas a procedimientos o
funciones) y las interrupciones.

Por lo tanto la activación del SO solo se realiza mediante el mecanismo de


interrupciones (instrucción TRAP).

La figura siguiente muestra todos los pasos involucrados en una llamada al SO,
indicando el código que interviene en cada uno de ellos.

Compuesta de:
 Inicialmente prepara los
parámetros del servicio de
Solicitud acuerdo con la forma en
Biblioteca del Llamada a de que los espera el SO
Sistema una Función servicio  Instrucción TRAP que
al SO realiza el paso al SO
 Finalmente, recupera los
parámetros de
contestación del SO, para
devolverles al programa
que lo llamó
SO

El SO “despierta” a la actividad a causa de:


1. Llamadas al sistema. Instrucción TRAP
2. Interrupciones externas: de E/S, de reloj, de otro procesador
3. Excepciones h/w síncronas o asíncronas
La secuencia de activación es:
1. La interrupción hace pasar el proceso A a modo privilegiado y pasa control al
kernel
2. EL kernel salva el contexto (estado) del proceso A interrumpido
3. El kernel atiende al servicio solicitado

Prof. Giovana Garrido-2018


Página 40
Capítulo I Introducción a los Sistemas Operativos

4. El kernel usa el planificador para seleccionar un nuevo proceso B, si es el caso


5. El kernel restaura el contexto del proceso B y le cede control

Servicios de sistema (cada llamada-servicio está asociada a un número)


La prestación del servicio puede
- ser inmediato
- requerir bloqueo del proceso solicitante (síncrono)
- proceder dejando continuar al proceso solicitante (asíncrono)

Funciones de biblioteca
Arropan a las llamadas al sistema
- preparan los argumentos
- invocan la instrucción TRAP o equivalente
- recuperan los resultados

1.7 Interfaces de usuario y del programador en un


Sistema Operativo
Están:

A. Las interfaces del programador, es la que recupera los servicios y llamadas


al sistema que los usuarios pueden utilizar directamente des sus programas.
En la actualidad hay dos interfaces: POSIX y los servicios de Win32.

POSIX

POSIX (Portable Operating System Interface for UNIX- Computer Enviroment). Es un


conjunto de normas definidas por el Instituto de Ingenieros Eléctricos y Electrónicos
(IEEE) con el fin de crear interfaces que permitan la portabilidad del software (distintos
entornos UNIX) entre diferentes sistemas operativos abiertos o sistemas abiertos.

La norma se ha implementado no sólo en muchas versiones de UNIX, sino también en


otros sistemas operativos como Windows NT, VMS, etc. Se trata de un conjunto de 23
normas, identificadas como IEEE 1003.0 a IEEE 1003.22, o también POSIX.0 a
POSIX.22, de las cuales el subsistema POSIX soporta la POSIX.1 (conocido también
como P1003.1), que define un conjunto de llamadas al sistema en lenguaje C. El
subsistema sirve las llamadas interactuando con el Executive. Se encarga también de
definir aspectos específicos del s.o. UNIX, como pueden ser las relaciones jerárquicas
entre procesos padres e hijos (las cuales no existen en el subsistema Win32, por
ejemplo, y que por consiguiente no aparecen implementadas directamente en el
Executive). Entre las áreas cubiertas por los estándares POSIX están las llamadas al
sistema, bibliotecas, herramientas, interfaces, verificación y prueba, características en
tiempo real y seguridad.

Otro estándar importante es el P1003.2 (POSIX.2) que versa sobre shells y utilidades.
El POSIX 1003.2 cubre los métodos de prueba sobre el cumplimiento de los
estándares POSIX; el estándar POSIX 1003.4 cubre las extensiones sobre tiempo
real. Existen más de 20 estándares diferentes que han sido desarrollados o están en
vías de desarrollo.

Linux cumple en gran medida el estándar POSIX. Linux funciona perfectamente en


combinación con los sistemas operativos convencionales de Microsoft, Novell y Apple,
abriendo al mismo tiempo las puertas al mundo de Internet.

Prof. Giovana Garrido-2018


Página 41
Capítulo I Introducción a los Sistemas Operativos

Linux es un sistema operativo de 32-bits incorporado para seguir la especificación


POSIX, una familia de estándares que define cualquier aplicación que interactúa con
un sistema operativo.

POSIX define una biblioteca que contiene una serie de funciones de manejo, a alto
nivel, de directorios, de forma que no se requiere conocer la estructura física de los
mismos.

WIN32

En realidad, Win32 significa "Windows 32 bits". En otras palabras, hace referencia a


todas las plataformas de 32 bits del sistema operativo Windows: Windows NT,
Windows 95, Windows 98, Windows CE.

Es el más importante, ya que atiende no sólo a las aplicaciones nativas


de Windows NT, sino que para aquellos programas no Win32, reconoce
su tipo y los lanza hacia el subsistema correspondiente. En el caso de
que la aplicación sea MS-DOS o Windows de 16 bits (Windows 3.11 e
inferiores), lo que hace es crear un nuevo subsistema protegido. Así, la aplicación
DOS o Win16 se ejecutaría en el contexto de un proceso llamado VDM (Virtual DOS
Machine, máquina virtual DOS), que no es más que un simulador de un computador
funcionando bajo MS-DOS. Las llamadas al API Win16 serían correspondidas con las
homónimas en API Win32. Microsoft llama a esto WOW (Windows On Win32). El
subsistema soporta una buena parte del API Win32. Así, se encarga de todo lo
relacionado con la interfaz gráfica con el usuario (GUI), controlando las entradas del
usuario y salidas de la aplicación. Por ejemplo, un buen número de funciones de las
bibliotecas USER32 y GDI32 son atendidas por Win32, ayudándose del Executive
cuando es necesario.

Win32 permite la comunicación entre la pantalla y el teclado, así como varios de los
procesos gráficos y bibliotecas propias de windows.

WIN64
La principal diferencia entre ambas arquitecturas es que los procesadores de 32 bits
no son capaces de gestionar tanta memoria RAM como los de 64. Tengas en tu
ordenador 8 o 16 GB de RAM, un sistema operativo de 32 bits sólo puede aprovechar
un máximo de 4 GB. Los de 64 bits pueden utilizar muchísima más, teóricamente
hasta 16 Exabytes, unos 16 millones de Terabytes.

Los ordenadores de 64 bits tienen capacidad de hacer más en menos tiempo. Pero
tiene que tener en cuenta que eso no quiere decir que las aplicaciones de 64 bits
sean siempre más rápidas, ya que esta velocidad dependerá de la manera de
funcionar y de las exigencias de cada aplicación.

Los sistemas operativos de 64 bits son retrocompatibles, lo que quiere decir que
pueden utilizar programas de 32 bits, aunque los mantiene separados. Es por eso que
encontrará una carpeta de Archivos de programa, donde instala las aplicaciones de 64
bits, y un *Archivos de programa (x86) en el que instala las de 32 bits.

También es importante saber que aunque una CPU de 64 bits puede utilizar un
sistema operativo de 32 o 64 bits, las CPU de 32 bits sólo pueden utilizar los de su
arquitectura. Eso sí, si en una CPU de 64 bits instalamos un sistema operativo de 32,
no podremos utilizar aplicaciones de 64.
Prof. Giovana Garrido-2018
Página 42
Capítulo I Introducción a los Sistemas Operativos

B. Interfaz del usuario del SO, es responsable de la comunicación entre la aplicación


y el usuario. Es utilizado por el usuario al momento que interactúa con el SO para
poder llevar a cabo operaciones tales como ejecutar un programa, borrar archivo,
sin necesidad de escribir un programa que realice dicha operación utilizando los
servicios del SO. Hay dos tipos de interfaz de usuario: alfanumérica (comandos) y
la gráfica (GUI, Graphical User Interface).

La interfaz gráfica de usuario, GUI utiliza un conjunto de imágenes y objetos gráficos


para representar la información y acciones disponibles en la interfaz. Su principal uso,
consiste en proporcionar un entorno visual sencillo para permitir la comunicación con
el sistema operativo de una máquina o computador.
Como ejemplos de interfaz gráfica de usuario, cabe citar los entornos de escritorio
Windows, el X-Window de GNU/Linux o el de Mac OS X, Aqua.

Referencias

 An Introduction to Virtualization.
http://www.kernelthread.com/publications/virtualization/
 The Reincarnation of Virtual Machines.
http://queue.acm.org/detail.cfm?id=1017000
 Preguntas de autoevaluación de SO http://www.daypo.com/sistemas-
operativos-1bim.html
 Los sistemas embebidos y su importancia en la actualidad.
https://licuadodeletras5.wordpress.com/los-sistemas-embebidos-y-su-
importancia-en-la-actualidad/
 Sistemas embebidos. Invocando hacia los sistemas inteligentes.
http://www.semanticwebbuilder.org.mx/es_mx/swb/Sistemas_Embebidos_Innov
ando_hacia_los_Sistemas_Inteligentes_

Prof. Giovana Garrido-2018


Página 43

También podría gustarte