Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN
A LOS SISTEMAS OPERATIVOS
Objetivos:
Elaborado por:
Prof. Giovana Garrido
Capítulo I Introducción a los Sistemas Operativos
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.
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:
e. Gestión de entradas/salidas.
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.
h. Servicios de soporte:
i. Administración de autorizaciones:
Prof. Giovana Garrido-2018
Página 4
Capítulo I Introducción a los Sistemas Operativos
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.
Usuarios
API
Programas de usuario Shell
Servicios Sistema
Núcleo operativo
Hardware
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
Planificación
Control de errores y protección
Contabilidad del sistema, etc.
Aunque todas estas funciones las podemos resumir en 2 funciones básicas: _
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
Características
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.
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)
Resumen
_ 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
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
Sistemas Transaccionales
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
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
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
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
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.1 Monolíticos
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.
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:
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:
Capa 0: hardware
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.
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
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.
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.
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.
Este tipo de hypervisor opera como una capa intermedia entre el hardware y
los sistemas operativos invitados (Máquinas Virtuales, guest).
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).
B. Máquina Virtual
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.
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.
Arquitectura de un Microkernel
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.
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
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
b. Gestor de Tareas
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
2. Componente Soporte
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.
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).
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
Procesos
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.
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.
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
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:
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.
Sirven para obtener los servicios de más bajo nivel y constituyen el interface entre los
programas en ejecución y el Sistema Operativo.
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
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.
Capa 13 SHELL
Capa 12 Procesos de usuarios.
Capa 11 Directorio
Capa 10 Dispositivos
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).
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.-
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.
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).
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.
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.
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.
Por otro lado, los sistemas distribuidos también exhiben algunas ventajas sobre
sistemas aislados. Estas ventajas son:
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.
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
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.
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
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.
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
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
Funciones de biblioteca
Arropan a las llamadas al sistema
- preparan los argumentos
- invocan la instrucción TRAP o equivalente
- recuperan los resultados
POSIX
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.
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
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
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_