Introduccion a los sistemas operativos
-
Upload
friky-equis-de -
Category
Engineering
-
view
192 -
download
1
description
Transcript of Introduccion a los sistemas operativos
INSTITUTO TECNOLÓGICO DE
OAXACA
MATERIA: SISTEMAS OPERATIVOS
PROFESORA: VALVERDE JARQUÍN REYNA
ALUMNO: DEL VILLAR SORIANO JOSÉ
MANUEL
GRUPO: IS-A
CLAVE DE LA MATERIA: AEC1061
PORTAFOLIO DE EVIDENCIAS DE LA
PRIMERA UNIDAD
2
Índice
1. Introducción a los sistemas operativos.
1.1 Definición y concepto…………………………………….3
1.2 Funciones y características…………………………......3
1.3 Evolución histórica……………………………………….8
1.4 Clasificación………………………………………………12
1.5 Estructura: Niveles o estratos de diseño…………….19
1.6 Núcleo………………………………………………………24
Fuentes……………………………………………………………..26
3
Índice de imágenes
Fig1……………………………………………………………………5
Fig2……………………………………………………………………5
Fig3………………………………………………………………6
Fig4………………………………………………………………6
Fig5………………………………………………………………8
Fig6………………………………………………………………9
Fig7………………………………………………………………9
Fig8………………………………………………………………9
Fig9………………………………………………………………9
Fig10………………………………………………………………10
Fig11………………………………………………………………11
Fig12………………………………………………………………11
Fig13………………………………………………………………12
Fig14………………………………………………………………12
Fig15………………………………………………………………13
Fig16………………………………………………………………14
Fig17………………………………………………………………14
Fig18………………………………………………………………14
Fig19………………………………………………………………15
Fig20………………………………………………………………15
Fig21………………………………………………………………17
Fig22………………………………………………………………18
Fig23………………………………………………………………19
Fig24………………………………………………………………20
4
Fig25………………………………………………………………21
Fig26………………………………………………………………23
Fig27………………………………………………………………25
Fig28………………………………………………………………25
Fig29………………………………………………………………26
Fig30………………………………………………………………27
5
1.0 INTRODUCCIÓN A LOS SISTEMAS
OPERATIVOS
1.1 DEFINICIÓN Y CONCEPTO
1.1.1 DEFINICIÓN SISTEMA OPERATIVO:
El sistema operativo es el programa (o software) más importante de un ordenador.
Para que funcionen los otros programas, cada ordenador de uso general debe tener
un sistema operativo.
1.1.2 CONCEPTO DE SISTEMA
OPERATIVO:
Conjunto de programas que se integran con
el hardware para facilitar al usuario, el
aprovechamiento de los recursos
disponibles.
1.2 FUNCIONES Y CARACTERÍSTICAS
1.2.1 FUNCIONES DE UN SISTEMA OPERATIVO
Administración del procesador:
El sistema operativo administra la distribución del procesador entre los
distintos programas por medio de un algoritmo de programación. El tipo de
programador depende completamente del sistema operativo, según el
objetivo deseado.
Gestión de la memoria de acceso aleatorio:
El sistema operativo 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 sistema operativo 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,
esta memoria es mucho más lenta.
Fig1. Algunos sistemas operativos
Fig2.- Gestión de memoria
RAM
6
Gestión de entradas/salidas:
El sistema operativo permite unificar y controlar el acceso de los programas
a los recursos materiales a través de los drivers (también conocidos como
administradores periféricos o de entrada/salida).
Gestión de ejecución de aplicaciones:
El sistema operativo se encarga de que las
aplicaciones se ejecuten sin problemas asignándoles
los recursos que éstas necesitan para funcionar. Esto
significa que si una aplicación no responde
correctamente puede "sucumbir".
Administración de autorizaciones:
El sistema operativo se encarga de la seguridad en relación con la ejecución
de programas garantizando que los recursos sean utilizados sólo por
programas y usuarios que posean las autorizaciones correspondientes.
Gestión de archivos:
El sistema operativo gestiona la lectura y escritura en el sistema de archivos,
y las autorizaciones de acceso a archivos de aplicaciones y usuarios.
Gestión de la información:
El sistema operativo proporciona cierta cantidad de indicadores que pueden
utilizarse para diagnosticar el funcionamiento correcto del equipo.
Componentes o elementos del sistema operativo:
El sistema operativo está compuesto por un conjunto de paquetes de
software que pueden utilizarse para gestionar las interacciones con el
Fig3. Los diversos
programas necesitan de un
OS.
Fig4.- Ejemplo de la gestión de archivos digitales.
7
hardware.
Cargador inicial:
Se trata de un conjunto de instrucciones que permite el paso de los
programas del sistema operativo desde el disco a la memoria RAM.
El núcleo o kernel:
Que representa las funciones básicas del sistema operativo, como por
ejemplo, la gestión de la memoria, de los procesos, de los archivos, de
las entradas/salidas principales y de las funciones de comunicación.
Administrador de memoria:
Se encarga de la compactación, segmentación, paginación, swapping
y gestión de memoria virtual.
El intérprete de comandos:
Que posibilita la comunicación con el sistema operativo a través de un
lenguaje de control, permitiendo al usuario controlar los periféricos sin
conocer las características del hardware utilizado, la gestión de las
direcciones físicas, etcétera.
Interface o interfaz de usuario UI:
Se encarga de establecer la comunicación con el usuarios y puede
tener dos apariencias: De consola (DOS) o puede ser gráfica (GUI,
interfaz gráfica de usuario, como el entorno de Windows). Linux tiene
varias GUI’s como lo son GNOME y KDE.
El sistema de archivos:
Que permite que los archivos se registren en una estructura arbórea.
Planificador de trabajos:
Asigna tiempo de CPU a cada uno de los programas cargados en
memoria para su ejecución. Debe atender a las diversas
interrupciones que se generan.
8
1.2.2 CARACTERÍSTICAS DE UN SISTEMA OPERATIVO:
En general, se puede decir que un Sistema Operativo tiene las siguientes características:
Conveniencia: Un Sistema Operativo hace más conveniente el uso de una computadora.
Eficiencia: Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible.
Habilidad para evolucionar: Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio.
Encargado de administrar el hardware: El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos.
Relacionar dispositivos (gestionar a través del kernel): El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera.
Organizar datos para acceso rápido y seguro.
Manejar las comunicaciones en red:
Fig5.- El sistema operativo permite la interacción entre varios
elementos como lo son los periféricos, hardware, y aplicaciones
para que todo funcione como el usuario lo requiere.
9
El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras.
Procesamiento por bytes de flujo a través del bus de datos.
Facilitar las entradas y salidas: Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
Técnicas de recuperación de errores.
Evita que otros usuarios interfieran: El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación está siendo ocupada por otro usuario.
Generación de estadísticas: Permite que se puedan compartir el hardware y los datos entre los usuarios.
Fig6.- La interfaz de un OS, hace que la
convivencia con la computadora sea fácil. Fig7.- La evolución de un OS le permite
adaptarse a las necesidades de las personas.
Fig8.- El hardware es administrado por
el sistema operativo.
Fig9.- El Sistema operativo permite que
el usuario interactúe con el sistema
gracias a los dispositivos de entrada y
salida.
10
1.3 EVOLUCIÓN HISTÓRICA DE LOS SISTEMAS
OPERATIVOS
1a. Etapa (1945-1955): Bulbos y conexiones:
Después de los infructuosos
esfuerzos de Babbage, hubo
poco progreso en la
construcción de las
computadoras digitales,
hasta la Segunda Guerra
Mundial. A mitad de la
década de los 40's, Howard
Aiken (Harvard), John Von
Newman (Instituto de
Estudios Avanzados,
Princeton), J. Prespe R.
Eckert y Williams Mauchley
(Universidad de
Pennsylvania), así como
Conrad Zuse (Alemania),
entre otros lograron construir máquinas de cálculo mediante bulbos. Estas
máquinas eran enormes y llenaban cuartos completos con decenas de miles
de bulbos, pero eran mucho más lentas que la computadora casera más
económica en nuestros días.
Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y
con frecuencia se utilizaban conexiones para controlar las funciones básicas
de la máquina. Los lenguajes de programación eran desconocidos (incluso
el lenguaje ensamblador).
No se oía de los Sistemas Operativos el modo usual de operación consistía
en que el programador reservaba cierto periodo en una hoja de reservación
pegada a la pared, iba al cuarto de la máquina, insertaba su conexión a la
computadora y pasaba unas horas esperando que ninguno de los 20,000 o
más bulbos se quemara durante la ejecución.
La inmensa mayoría de los problemas eran cálculos numéricos directos, por
ejemplo, el cálculo de valores para tablas de senos y cosenos.
A principio de la década de los 50's la rutina mejoro un poco con la
introducción de las tarjetas perforadas. Fue entonces posible escribir los
programas y leerlas en vez de insertar conexiones, por lo demás el proceso
era el mismo.
Fig10.- En los primeros SO se usaban bulbos para que
realizaran cálculos.
11
2a. Etapa. (1955-1965): Transistores y Sistemas de Procesamiento por
lotes: La introducción del
transistor a
mediados de los
años 50's modifico
en forma radical el
panorama. Las
computadoras se
volvieron confiables
de forma que podían fabricarse y venderse a clientes, con la esperanza de
que ellas continuaran funcionando lo suficiente como para realizar un trabajo
en forma.
Dado el alto costo del equipo, no debe sorprender el hecho de que las
personas buscaron en forma por demás rápidas vías para reducir el tiempo
invertido. La solución que, por lo general se adoptó, fue la del sistema de
procesamiento por lotes.
3ra Etapa (1965-1980): Circuitos integrados y multiprogramación: La 360 de IBM fue la primera línea principal de
computadoras que utilizo los circuitos
integrados, lo que proporciono una gran ventaja
en el precio y desempeño con respecto a las
máquinas de la segunda generación, construidas
a partir de transistores individuales. Se trabajó
con un sistema operativo enorme y
extraordinariamente complejo. A pesar de su
enorme tamaño y sus problemas el sistema
operativo de la línea IBM 360 y los sistemas
operativos similares de esta generación
producidos por otros fabricantes de computadoras realmente pudieron
satisfacer, en forma razonable a la mayoría de sus clientes. También
popularizaron varias técnicas fundamentales, ausentes de los sistemas
operativos de la segunda generación, de las cuales la más importante era la
de multiprogramación.
Otra característica era la capacidad de leer trabajos de las tarjetas al disco,
tan pronto como llegara al cuarto de cómputo. Así, siempre que concluyera
Fig11.- El procesamiento por lotes fue una gran mejora para
los SO de los años 50.
Fig12.- En la tercera etapa
los sistemas operativos
hacían uso de transistores.
12
un trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la
partición que quedara desocupada y ejecutarlo.
4ta Etapa (1980-Actualidad): Computadoras personales:
Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.
En los sistemas operativos de red, los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una maquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario.
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus
usuarios como un sistema tradicional de un solo procesador, aun cuando está compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema operativo.
Otra forma de ver la evolución histórica de los sistemas operativos es la siguiente:
En los 40's, se introducen los programas bit a bit,
por medio de interruptores mecánicos y después
se introdujo el lenguaje máquina que trabajaba
por tarjetas perforadas.
Con las primeras computadoras, desde finales
de los años 40 hasta la mitad de los años 50, el
programador interactuaba de manera directa con
el hardware de la computadora, no existía
realmente un Sistema Operativo; las primeras
computadoras utilizaban bulbos, la entrada de Fig14.- Los años 40, daban inicio a los
primeros sistemas operativos.
Fig13.- Los sistemas operativos
pudieron ser usados en las
computadoras personales.
13
datos y los programas se realizaban a través del lenguaje maquina (bits) o a través
de interruptores.
Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors
implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas
perforadas las cuales permiten que los usuarios (que en ese tiempo eran
programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus
programas. Establecían o apartaban tiempo, metían o introducían sus programas,
corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en
serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas
excesivos.
En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y
se generan los procesos Batch (por lotes), lo cual consiste en determinar los
trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen
las unidades de cinta y el cargador de programas, el cual se considera como el
primer tipo de Sistema Operativo.
En los 80's, inicio el auge de la
INTERNET en los Estados Unidos de
América. A finales de los años 80's
comienza el gran auge y evolución de los
Sistemas Operativos. Se descubre el
concepto de multiprogramación que
consiste en tener cargados en memoria a
varios trabajos al mismo tiempo, tema
principal de los Sistemas Operativos actuales.
En los años 80, también se dio la aparición de las primeras interfaces de usuario,
siendo MAC OS Macintosh un ejemplo de ello.
Fig15.- Con el nacimiento de internet fue
necesario la aparición de nuevos sistemas
operativos.
14
Los 90's y el futuro, entramos a la era de la
computación distribuida y del multiprocesamiento
a través de múltiples redes de computadoras,
aprovechando el ciclo del procesador. Se tendrá
una configuración dinámica con un
reconocimiento inmediato de dispositivos y
software que se añada o elimine de las redes a
través de procesos de registro y localizadores. La
conectividad se facilita gracias a estándares y
protocolos de sistemas abiertos por
organizaciones como la Organización
Internacional de normas, fundación de software
abierto, todo estará más controlado por los
protocolos de comunicación OSI y por la red de
servicios digital ISDN.
1.4 CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS:
Sistema Operativo Monotarea:
Los sistemas operativos Monotarea son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Sistema Operativo Multitarea:
La multitarea es la característica de los sistemas operativos modernos de permitir que varios procesos se ejecuten al parecer al mismo tiempo compartiendo uno o más procesadores.
Los sistemas operativos multitarea son capaces de dar servicio a más de un proceso a la vez para permitir la ejecución de muchos más programas.
Fig16.- En los 90 se dio el
nacimiento de GNU/Linux y una
gran cantidad de SO aparecieron
a partir de ese momento.
Fig17. Ejemplo de un
sistema Monotarea
Fig18. La familia NT
es multitarea.
15
Sistema Operativo Monousuario.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se esté ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se está utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de
inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores. Windows 95/98/Me de Microsoft son ejemplos de sistemas Monousuario.
Sistema Operativo Multiusuario:
Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Los recursos que se comparten son, normalmente, una combinación de:
Procesador.
Memoria.
Almacenamiento secundario (en disco duro).
Programas.
Periféricos como impresoras, plóteres, escáneres, etc.
De tal modo que múltiples usuarios utilizan una única computadora, comparten programas y usan un sistema operativo unificado, que les están dedicados por completo; teniendo la impresión de que lo hacen simultáneamente.
Fig19. Windows 95, claro
ejemplo de sistema
monousuario
Fig20. Solaris es un sistema
multiusuario.
16
Ejemplos de sistemas operativos con característica de multiusuario son VMS y Unix, así como sus múltiples derivaciones (e.g. IRIX, Solaris, etc.) y los sistemas tipo Unix como Linux, FreeBSD y Mac OS X.
Sistemas Operativos por lotes:
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuencialidad de la ejecución de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Algunas otras características con que cuentan los Sistemas Operativos por lotes son:
o Requiere que el programa, datos y órdenes al sistema sean remitidos
todos juntos en forma de lote.
o Permiten poca o ninguna interacción usuario/programa en ejecución.
o Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.
o No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.
o Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.).
o Se encuentra en muchos computadores personales combinados con procesamiento serial.
o Planificación del procesador sencilla, típicamente procesados en orden de llegada.
o Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.
17
o No requieren gestión crítica de dispositivos en el tiempo.
o Suelen proporcionar gestión sencilla de manejo de archivos: se requiere
poca protección y ningún control de concurrencia para el acceso.
Sistemas Operativos de tiempo real:
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como
control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:
o Control de trenes.
o Telecomunicaciones.
o Sistemas de fabricación integrada.
o Producción y distribución de energía eléctrica.
o Control de edificios.
o Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lynx OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:
o Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.
Fig21. Ejemplo de
sistema en tiempo real
18
o Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.
o Objetivo es proporcionar rápidos
tiempos de respuesta.
o Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
o Proceso se activa tras ocurrencia de suceso, mediante interrupción.
o Proceso de mayor prioridad expropia recursos.
o Por tanto generalmente se utiliza planificación expropiativa basada en
prioridades.
o Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.
o Población de procesos estática en gran medida.
o Poco movimiento de programas entre almacenamiento secundario y
memoria.
o Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.
SISTEMAS OPERATIVOS DE TIEMPO COMPARTIDO:
Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, ésta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Características de los Sistemas Operativos de tiempo compartido:
Fig22.- Los sistemas de tiempo real pueden ser
usados en control de vuelo.
19
o Populares representantes de sistemas multiprogramados multiusuario,
ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.
o Dan la ilusión de que cada usuario tiene una máquina para sí.
o Mayoría utilizan algoritmo de reparto circular.
o Programas se ejecutan con prioridad rotatoria que se incrementa con la
espera y disminuye después de concedido el servicio.
o Evitan monopolización del sistema asignando tiempos de procesador (time slot).
o Gestión de memoria proporciona protección a programas residentes.
o Gestión de archivo debe proporcionar protección y control de acceso
debido a que pueden existir múltiples usuarios accesando a un mismo archivo.
SISTEMAS OPERATIVOS DISTRIBUIDOS:
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Características de los Sistemas Operativos distribuidos:
Fig23. Ejemplo de SO distribuido.
20
o Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software.
o Gobierna operación de un S.C. y proporciona abstracción de máquina virtual
a los usuarios.
o Objetivo clave es la transparencia.
o Generalmente proporcionan medios para la compartición global de recursos.
o Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.)
Sistemas Operativos de red:
Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.
Los Sistemas Operativos de red más ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.
Sistemas Operativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de
Fig24.- Los SO mantienen a las
computadoras en red.
21
manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.
1.5 ESTRUCTURA: NIVELES O ESTRATOS DE DISEÑO
ESTRUCTURA SIMPLE:
NÚCLEO MONOLÍTICO:
En computación, un núcleo monolítico es una arquitectura de sistema operativo donde esté en su totalidad trabaja en espacio del núcleo, estando él solo en modo supervisor. Difiere de otras arquitecturas (como la de micro núcleo) en que solo define una interfaz virtual de alto nivel sobre el hardware del ordenador. Un conjunto primitivo de llamadas al sistema implementa todos los servicios propios del sistema operativo tales como la planificación, concurrencia, sistema de archivos, gestión de memoria, etc.
En esta arquitectura hay una correspondencia entre el programa que
conforma el sistema operativo y el núcleo en sí.
Éste núcleo está programado de forma no modular y puede tener un tamaño considerable. A su vez, cada vez que se añada una nueva funcionalidad, deberá ser recompilado en su totalidad y luego reiniciado. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Por ende, un error en una rutina podría propagarse a todo el sistema.
Hay diversas ramificaciones de este diseño, que se han ido amoldando a nuevas necesidades. Existen sistemas que, en tiempo de ejecución, permiten la carga dinámica de módulos ejecutables, lo cual le brinda al modelo de núcleo monolítico algunas de las ventajas de un micronúcleo. Dichos módulos pueden ser compilados, modificados, cargados y descargados en tiempo de ejecución, de manera similar a los servicios de un micronúcleo, pero con la
Fig25. Esquema de un núcleo
monolítico.
22
diferencia de que se ejecutan en el espacio de memoria del núcleo mismo (anillo 0). De esta forma, es probable que un bloqueo del módulo bloquee todo el núcleo. Además, el módulo pasa a formar un todo con el núcleo, usando la API del mismo, y no se emplea un sistema de mensajes como en los micronúcleos. Este es el esquema usado por, entre otros, Linux, FreeBSD y varios derivados de UNIX.
La alternativa es tener una estructura de micronúcleo, donde las partes funcionales están divididas en unidades separadas con mecanismos de comunicación estrictos entre ellos. Cabe resaltar que el paso constante de mensajes entre los servicios del micronúcleo, es en parte responsable del pobre rendimiento de esta estructura.
Entre los sistemas operativos que cuentan con núcleos monolíticos se encuentran:
o Núcleos tipo Unix
o Linux
o Syllable
o Unix
BSD (FreeBSD, NetBSD, OpenBSD)
Solaris
o Núcleos tipo DOS
o DR-DOS
o MS-DOS
o Familia Microsoft Windows 9x (95, 98, 98SE, Me)
o Núcleos del Mac OS hasta Mac OS 8.6
o OpenVMS
o XTS-400
CAPAS NIVELES:
Podemos imaginar a Linux como una cebolla donde cada capa se comunica con la capa inferior. En la parte del centro se encuentra la capa de comunicación con el hardware. El SO la utiliza para poder controlar los diversos aspectos del hardware. Sobre ella se encuentra la capa de dispositivos. Es un conjunto de funciones denominadas controladores de dispositivo que se encuentra dentro del kernel del SO. Ellas acceden directamente al hardware y hacen el trabajo de lectura, escritura,
23
etc. Es un punto muy sensible del sistema en donde cuando un error surge poco puede hacerse para detener el proceso. Sobre la capa de dispositivos se encuentra la capa de administración, esta es un conjunto de funciones a las que se hace referencia como sistema operativo tomando la decisión de que se ejecuta y cuando. Son las funciones que administran también los procesos, dándoles los turnos pertinentes y mandándolos a dormir cuando no es su turno.
La capa que sigue es la de los procesos mismos, por ejemplo el Shell del SO. Estos procesos reciben la ordenes directamente del usuario u otros procesos y los traducen al lenguaje de máquina pasándoselos al SO para su ejecución. A partir del Shell se podrán arrancar otros procesos, como programas, que forman la capa superior de la cebolla. Estos se comunicaran con el Shell para que el SO interprete sus órdenes.
MODULARES:
En computación, un módulo cargable del núcleo es un archivo que contiene código objeto que puede extender el núcleo en ejecución (también llamado núcleo base) de un Sistema Operativo. La mayoría de los sistemas estilo Unix, y Microsoft Windows, soportan módulos cargables en el núcleo, aunque suelen utilizar distintos nombres para ellos, como "extensión del núcleo" en Mac OS X.
Los módulos cargables en el núcleo son generalmente utilizados para brindar soporte a nuevos dispositivos de Hardware y Sistema de archivos, así como para agregar llamadas al sistema. Cuando la funcionalidad provista por un módulo del núcleo deja de ser requerida, normalmente éste puede ser descargado, liberando su memoria.
Un ejemplo típico de módulo cargable son los Controladores de Dispositivo.
Fig26. Capas y niveles.
24
ESTRUCTURA CLIENTE/SERVIDOR
Micronúcleo:
En computación, micronúcleo (en inglés, microkernel o μkernel) es un tipo de núcleo de un sistema que provee un conjunto de primitivas o llamadas mínimas al sistema para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios (memoria, sistema, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.
El paradigma del micronúcleo, tuvo una gran relevancia académica durante los años ochenta y principios de los noventa, dentro de lo que se denominó self healing computing, esto es, sistemas independientes que fuesen capaces de superar por si mismos errores de software o hardware. En un principio pretendía ser una solución a la creciente complejidad de los sistemas operativos.
Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no se propagaría al sistema entero) y la facilidad para crear y depurar controladores de dispositivos. Según los defensores de esta tendencia, esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware.
Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy y la integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria. Sus detractores le achacan también y fundamentalmente, mayor complejidad en el código, menor rendimiento y limitaciones en diversas funciones.
Exonúcleo:
En computación, el término exonúcleo (en inglés,exokernel) se refiere a un sistema creado con fines de investigación en el Massachusetts sobre OpenBSD y otros sistemas operativos similares. Su propósito es crear una especie de capa de software para otros sistemas virtuales.
El concepto de exonúcleo fue introducido en torno a los finales de 1994, pero aún en 2005 los exonúcleo siguen siendo un gran esfuerzo en investigación y no son usados en ningún sistema operativo comercial popular. Un sistema operativo que sigue la filosofía exonúcleo es Némesis, escrito por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informática. El MIT también ha desarrollado varios sistemas exonúcleo, como el ExOS.
25
MÁQUINA VIRTUAL:
En informática una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones
proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario.
NÚCLEO HIBRIDO:
En computación, un núcleo híbrido es un tipo de núcleo de un sistema operativo. Básicamente, es un micronúcleo que tienen algo de código «no esencial» en espacio de núcleo, para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario.
Éste fue un compromiso que muchos desarrolladores de los primeros sistemas, con arquitectura basada en micronúcleo, adoptaron antes que se
Fig27.- Una máquina virtual es una máquina
dentro de la máquina misma.
Fig28.- Estructura de un núcleo hibrído.
26
mostrara que los micronúcleos pueden tener también muy buen rendimiento.
La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. El núcleo de Mac OS X, XNU, también es un micronúcleo NO modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. Dragon Fly BSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.
Se tiende a confundir erróneamente a los núcleos híbridos con losnúcleos monolíticos que pueden dinámicamente cargar módulos después del arranque. El concepto de núcleo híbrido se refiere a que el núcleo en cuestión usa mecanismos o conceptos de arquitectura tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código «no esencial» hacia el espacio de usuario (manteniendo a su vez cierto código «no esencial» en el propio núcleo por razones de rendimiento).
1.6 NÚCLEO
El núcleo del sistema operativo, también llamado kernel (núcleo en alemán) es
aquella parte de un sistema que interactúa de forma directa con el hardware de una
máquina. Entre las funciones principales del kernel se encuentran:
La gestión de memoria:
Este nivel administra la memoria principal o
memoria RAM, se encarga de asignar los bloques
de memoria a los procesos y de liberarlos cuando
los procesos han terminado, así también se
encarga de retirar algunos procesos de la
memoria y almacenar una imagen de ellos en el
disco duro, con la finalidad de simular que existe
más memoria de la que realmente existe de forma
física, el cual es un proceso que denominamos memoria virtual.
Fig29.- Administra la memoria
RAM
27
La administración del sistema de archivos:
Esta capa proporciona las funciones
necesarias para almacenar la
información en archivos, se apoya en
las primitivas de la capa 2 y la decisión
de que procesos hacen uso de
memoria se ubican en esta capa.
La administración de servicios de entrada/salida:
Proporciona funciones primitivas para la gestión de la memoria secundaria, es
decir, se encarga de proveer las primitivas necesarias para la localización,
escritura y lectura de bloques de datos en el disco duro, sin llegar a proporcionar
muchos detalles, cabe señalar que en esta capa la información almacenada no
se representa como archivos, la cual es una implementación de una capa
superior.
La asignación de recursos entre los usuarios:
En esta capa se ubica la interfaz visible para el usuario, ya sea como una línea
de comando o como una GUI (Interfaz Gráfica de Usuario), con la cual el usuario
comunica y que esta capa traduce al conjunto de primitivas de las capas
anteriores.
La manipulación del hardware se realiza por medio de controladores de dispositivo,
que conocen la forma de comunicarse directamente con el hardware de la máquina.
El software por su parte puede comunicarse con el kernel por medio de llamadas al
sistema, las cuales le indican al kernel que realice tareas como abrir y escribir un
archivo, ejecutar un programa, finalizar un proceso u obtener la fecha y hora del
sistema.
Fig30.- Esta capa es importante para los
archivos.
28
angelacollazosgrado11. (septiembre de 2014). Obtenido de
http://angelacollazosgrado11.blogspot.mx/2011/04/clasificacion-de-los-sistemas.html
Enciclopedia. (septiembre de 2014). Obtenido de
http://enciclopedia.us.es/index.php/N%C3%BAcleo_del_sistema_operativo
kioskea. (septiembre de 2014). Obtenido de http://es.kioskea.net/contents/651-sistema-
operativo#funciones-del-sistema-operativo
magomez. (septiembre de 2014). Obtenido de
http://www.magomez.net/SSOO/document/Funciones.htm
mas adelante. (septiembre de 2014). Obtenido de OS:
http://www.masadelante.com/faqs/sistema-operativo
monografias. (septiembre de 2014). Obtenido de
http://www.monografias.com/trabajos5/sisop/sisop.shtml
rincon del vago. (septiembre de 2014). Obtenido de http://html.rincondelvago.com/clasificacion-
de-sistemas-operativos.html
silverschatz. (2006). Fundamentos de sistemas operativos. Mcgrawhill.
wikipedia. (septiembre de 2014). Obtenido de
http://es.wikipedia.org/wiki/N%C3%BAcleo_monol%C3%ADtico