1. Objetivos de los sistemas operativos:
Todos
los dispositivos computarizados, como los servidores, las computadoras de
escritorio, las computadoras portátiles y las computadoras de mano, requieren
un SO para funcionar. El SO cumple la función de traductor entre las
aplicaciones de usuario y el hardware.
2. funciones generales del sistema operativo:
El conocimiento, en forma general, sobre el
funcionamiento de un Sistema Operativo, nos abrirá las puertas a una mejor
comprensión
3. funciones básica del sistema operativo:
Un sistema operativo desempeña
5 funciones básicas en la operación de un sistema informático: suministro de
interfaz al usuario, administración de recursos, administración de archivos,
administración de tareas y servicio de soporte y utilidades.
Interfaces
del usuario
Es la
parte del sistema operativo que permite comunicarse con él de tal manera que se puedan cargar programas, acceder
archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las
que se basan en comandos, las que utilizan
menús y las interfaces gráficas de usuario.
Administración
de recursos
Sirven
para administrar los recursos de hardware y de redes de un sistema informativo,
como el CPU, memoria, dispositivos de almacenamiento secundario y periféricos
de entrada y de salida.
Administración
de archivos
Un
sistema de información contiene programas de administración de archivos que
controlan la creación, borrado y acceso de archivos de datos y de programas.
También implica mantener el registro de la ubicación física de los archivos en
los discos magnéticos y en otros dispositivos de almacenamiento secundarios.
Administración
de tareas
Los
programas de administración de tareas de un sistema operativo administran la
realización de las tareas informáticas de los usuarios finales. Los programas
controlan que áreas tiene acceso al CPU y por cuánto tiempo. Las funciones de
administración de tareas pueden distribuir una parte específica del tiempo del
CPU para una tarea en particular, e interrumpir al CPU en cualquier momento
para sustituirla con una tarea de mayor prioridad.
Servicio
de soporte
Los
servicios de soporte de cada sistema operativo dependerán de la implementación
particular de éste con la que estemos trabajando. Entre las más conocidas se
pueden destacar las implementaciones de Unix, desarrolladas por diferentes
empresas de software, los sistemas operativos de Apple Inc.
4. característica del sistema operativos:
El
sistema operativo tiene las siguientes características:
1-Conveniencia:
un sistema operativo hace más conveniente el uso de una computadora en
informática.
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
5. Servicios de los sistema operativo:
El
Sistema Operativo proporciona ciertos servicios a los programas y a los
usuarios de estos mismos programas. Un cierto conjunto de servicios del sistema
operativo proporciona funciones que resultan útiles al usuario y otras que
permiten mayor eficiencia hacia los usuarios. Las siguientes son las funciones
que son útiles para el usuario.
6. Componentes del sistema operativo:
• Administración de procesos
• Administración de memoria
• Subsistema de Entrada/Salida
• Administración de Almacenamiento secundario
• Subsistema de archivos
• Sistema de protección
Administración de Procesos
Para comenzar debemos saber que es un
proceso. Un proceso es un programa en
Memoria + CPU + acceso a dispositivos + otros
recursos. Notemos que un proceso
Necesita de ciertos recursos (como CPU,
memoria, archivos, dispositivos de E/S, etc.)
Para realizar su tarea.
Podemos ver entonces que un proceso es una
entidad activa, mientras que un programa
Una entidad pasiva.
Sabiendo entonces que es un proceso, podemos
decir entonces que el sistema operativo es el encargado de su administración.
Es el encargado de proveer servicios para que cada proceso pueda realizar su
tarea. Entre los servicios se encuentran:
• Crear y destruir procesos
• Suspender y reanudar procesos
• Proveer mecanismos para la sincronización y
comunicación entre procesos
• Proveer mecanismos para prevenir dead-locks
o lograr salir de ellos.
Administración de Memoria
La memoria es un área de almacenamiento común
a los procesadores y dispositivos, donde se almacenan programas, datos, etc. El
sistema deberá administrar el lugar libre y ocupado, y será el encargado de las
siguientes tareas:
• Mantener que partes de la memoria están
siendo usadas, y por quien.
• Decidir cuales procesos serán cargados a memoria
cuando exista espacio de memoria disponible, pero no suficiente para todos los
procesos que deseamos.
• Asignar y quitar espacio de memoria según
sea necesario.
Subsistema de Entrada/Salida
El sistema operativo deberá ocultar las
características específicas de cada dispositivo y ofrecer servicios comunes a
todos. Estos servicios serán, entre otros:
• Montaje y desmontaje de dispositivos
• Una interfaz entre el cliente y el sistema
operativo para los divise drivers.
• Técnicas de cache, buffering y spooling.
• Divise drivers específicos2
Administración de Almacenamiento secundario
Dado que la memoria RAM es volátil y pequeña
para todos los datos y programas que se precisan guardar, se utilizan discos
para guardar la mayoría de la información. El sistema operativo será el
responsable de:
• Administrar el espacio libre
• Asignar la información a un determinado
lugar
• Algoritmos de planificación de disco (estos
algoritmos deciden quien utiliza un determinado recurso del disco cuando hay
competencia por él)
Subsistema de Archivos
Proporciona una vista uniforme de todas las
formas de almacenamiento, implementando el concepto de archivo como una
colección de bytes. El Sistema Operativo deberá proveer métodos para:
• Abrir, cerrar y crear archivos
• Leer y escribir archivos
Sistema de protección
Antes que nada, tener en cuenta que por
protección nos referimos a los mecanismos por los que se controla el acceso de
los procesos a los recursos.
En un sistema multiusuario donde se ejecutan
procesos de forma concurrente se deben tomar medidas que garanticen la ausencia
de interferencia entre ellos. Estas medidas deben incorporar la posibilidad de
definir reglas de acceso, entre otras cosas.
7. Estructuras de los sistema
operativo:
Analizando
la historia de los Sistemas Operativos notamos que se puede considerar que
éstos surgen desde finales de los 50's con una arquitectura bastante obsoleta
comparada con la de la actualidad.
Para
poder construir un Sistema Operativo se deben tener en cuenta dos tipos de
requisitos, los cuales son:
Requisitos
de usuario: Un sistema fácil de usar y de aprender, seguro, rápido y adecuado
para el uso que se le necesita dar.
Requisitos
del software: Considera el continuo mantenimiento, forma de operación,
restricciones de uso, eficiencia, tolerancia frente a los errores y
flexibilidad.
El
objetivo de la estructuración es buscar una organización interna que facilite
la comprensión, incremente la portabilidad, extensión y favorecer el
mantenimiento de los Sistema
Operativos.
A
continuación se describen las distintas estructuras que presentan los actuales
Sistemas Operativos para satisfacer las necesidades que de ellos se quieren
obtener. Éstas no son de ninguna manera las únicas estructuras posibles, pero
nos darán una idea de algunos diseños que se han llevado a la práctica.
Los
cuatro diseños son:
Los
Sistemas Monolíticos. (Estructuras Simples)
Según
la Real Academia Española Monolítico es algo de una pieza, sin fisuras o
rígido, inflexible.
Los
sistemas Monolíticos son la estructura más simple para un Sistema Operativo.
También llamados de Estructura Modular, fue escrito para proporcionar una
máxima funcionalidad dentro del menor espacio posible.
Se
caracteriza porque no tienen una estructura totalmente clara, con ésto nos
referimos a que sus rutinas y funcionalidades (ej. manejo de drivers, sistemas
de archivos, gestión de memoria, etc.), se encuentran agrupados en un solo
programa (el Sistema Operativo).
Este
sistema está descrito como un conjunto de procedimientos o rutinas entrelazadas
de tal forma que cada una tiene la posibilidad de llamar a las otras rutinas
cada vez que así lo requiera. Sin embargo, cabe destacar las falencias en este
tipo de estructura que radica principalmente en la poca confiabilidad otorgada,
ya que todo el sistema, al no tener una estructura definida, se ejecuta todo en
el mismo nivel del núcleo (kernel) lo que lo hace altamente vulnerable, por
esta razón cuando falla un programa se produce un error en todo el sistema.
Además,
otro problema inherente al Sistema Monolítico es que si se modifica el hardware
por lo general es necesario recompilar el kernel para poder disponer de las
funcionalidades. Esto consume tiempo y recursos porque la compilación de un
nuevo kernel puede durar varias horas y necesita de una gran cantidad de
memoria. Cada vez que alguien añade una nueva característica o corrige un
error, significa que se necesitará hacer una recopilación del kernel entero, un
ejemplo de esto podemos verlo en Linux. También el hecho de que en el espacio
del kernel están incluidos todos los servicios básicos, tiene tres grandes
inconvenientes: el tamaño del núcleo, la falta de extensibilidad y la mala
capacidad de mantenimiento.
Esquema
Sistema Monolítico
EJEMPLOS
SISTEMAS MONOLÍTICOS:
Los
ejemplos típicos de este sistema son Unix, MS-DOS y Mac OS hasta Mac OS 8.6.
Otros ejemplos son:
Linux
Syllable
Núcleos
tipo DOS
DR-DOS
Familia
Microsoft Windows 9x (95, 98, 98SE, Me)
Los
sistemas de Micronúcleo o Microkernel
El
Micronúcleo surge como una nueva forma de organización para un Sistema
Operativo, es un término algo tedioso de entender ya que puede no ser relativo
a su tamaño, pero si a su diseño.
En este
sistema las funciones centrales son manejadas por el núcleo(kernel) y la
interfaz de usuario es manejada por el entorno(shell). El Microkernel se
encarga de todo el código de un sistema, y de planificar los hilos(threads) con
la finalidad de tener multitareas.
Algunas
ventajas que podemos destacar de los Micronúcleos son los siguientes:
•Uniformidad
de interfaces: disponen de una interfaz única para las solicitudes de los procesos, el paso de
mensajes.
•Portabilidad:
reduciendo el núcleo e implementando casi todo en servidores, para
implementarlo en arquitecturas diferentes, sólo habría que modificar el núcleo
haciendo más simple su portabilidad.
•Fiabilidad:
es más fácil corregir fallas en un sistema pequeño ya que se pueden realizar
pruebas más rigurosas que en un sistema mucho más grande.
ALGUNOS EJEMPLOS DE
SISTEMAS MICRONÚCLEO SON:
AIX
BeOS
Mach
MorphOS
QNX
Minix
Hurd
L4
RadiOS
Symbian
VSTa
A
continuación examinaremos cuáles son las principales características de un
sistema Monolítico y un Micronúcleo, además se podrá notar por qué el Sistema
Micronúcleo supera algunas problemáticas relativas al diseño de un sistema
Monolític
Todo
sistema operativo se ejecuta en modo supervisor Todo
el núcleo se ejecuta en modo supervisor
Menos
robusto Más robusto
El
sistema operativo es interrumpible El
sistema operativo es interrumpible
Mayor
rendimiento, eficiencia Menor
rendimiento debido a la sobrecarga de comunicaciones
Difícil
de modificar en tiempo de ejecución Fácil
de modificar en tiempo de ejecución
Menos
adaptable Más adaptable
Realiza
todas las funciones con un único programa
El
sistema es escrito como una colección de procedimientos y no existe
"ocultación de información" ya que cualquier procedimiento puede ser
invocado por otros
Un
error o una vulnerabilidad de seguridad pueden expandirse y afectar a todo el
núcleo
Cualquier
cambio a realizar requiere el reinicio del sistema para que este se haga
efectivo
Esquema
Sistema Monolítico-Micronúcleo
Intentemos
finalmente entender el Sistema Monolítico y Micronúcleo con una historieta
Historieta
explicativa
Sistema
Cliente-Servidor:
Dentro
de esta estructura también podríamos incluir el Sistema Cliente-Servidor ya que
presenta una ligera variación en la idea del Microkernel la cual es que este
sistema hace la diferencia entre dos clases de procesos: los servidores, cada
uno de los cuales proporciona cierto servicio, y los clientes, que utilizan
estos servicios. A menudo la capa inferior es un microkernel, pero eso no es
requerido. La esencia es la presencia de procesos cliente y procesos servidor.
En los
sistemas operativos modernos, los sistemas cliente-servidor nacen con la finalidad
de minimizar el núcleo (kernel), trasladando el código de todos sus servicios a
las capas superiores; y el núcleo sólo deberá controlar la comunicación, que se
realiza mediante mensajes, entre clientes y servidores o servidores y hardware.
El
objetivo es desarrollar la mayoría de las funciones del sistema operativos como
procesos de usuario. Un proceso de usuario, llamado en este caso proceso
cliente, envía una solicitud a un proceso servidor, que realiza el trabajo y
devuelve la respuesta.
El
sistema operativo se divide en partes donde cada una controla una faceta del
sistema, entre ellos servicios a archivos, servicios a procesos, servicios a
terminales, o servicios a la memoria, donde cada una es pequeña y controlable,
así al ejecutar los procesos en modo usuario y no en modo núcleo si hay algún
error en algún servidor, este afectará sólo a dicha parte y no a toda la
máquina, ya que no se tiene acceso
Un caso
sencillo de cliente, en este caso, es un programa de aplicación que llama al
servidor para acceder a un archivo, otro ejemplo es cuando el programa de
aplicación realiza una operación de entrada o salida a un dispositivo concreto.
En cada uno de estos casos el cliente a su vez puede ser servidor de otros
servicios. Esta idea se refleja a continuación:
Modelo
Cliente Servidor
Los
sistemas por capas o jerárquica (Estructura por niveles)
Utilización
de servicios de capas inferiores.
En esta
estructura el Sistema Operativo queda definido modularmente por divisiones en
capas o niveles, cuya organización está dada como una jerarquía de capas donde
cada una de ellas ofrece una interfaz clara y bien definida, la capa superior
solamente utiliza los servicios y funciones que ofrece la capa inferior, es
decir, la capa n sólo se comunica para obtener lo requerido con la capa n-1
(Ver imagen derecha), donde la capa inferior es la más privilegiada. El
encargado de que solamente haya comunicación entre capas adyacentes es el
procesador.
La capa
más interna o inferior (capa 0) corresponde al Hardware, mientras que la más
alta o externa corresponde a la interfaz de usuario.
El
primer sistema construido de esta manera fue el sistema THE (Technische
Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus
estudiantes.
El
sistema original consta de 6 capas:
Capa 5:
Se encuentra la interfaz de usuario.
Capa 4:
Aloja los programas de usuario.
Capa 3:
Se controlan los dispositivos E/S (entrada y salida).
Capa 2:
Se administra la comunicación inter-proceso y la consola del operador.
Capa 1:
Administración de memoria y discos.
Capa 0:
Correspondiente al Hardware, realizando asignación del procesador, también
alterna entre procesos cuando ocurren interrupciones o se han expirado y
proporciona multiprogramación básica de la CPU.
Organización
de Sistema por capas
Como
ventajas de este sistema podemos mencionar que al tener una organización modularidad,
otorga facilidad en construcción y depuración del sistema. La facilidad de
construcción se respalda porque al existir esta división en módulos (capas) se
produce una abstracción del problema, simplificándose solamente a la función
que realiza el módulo correspondiente a una capa N. También al lograr esta
abstracción, no es necesario saber detalles de implementación de las capas
inferiores, sólo se utilizan. La facilidad de depuración, quiere decir, que sea
más simple la tarea de encontrar errores en el código y corregirlos. Otro
aspecto positivo relacionado con la modularidad existente, cuando ocurre un
error o falla en una de las capas, no se compromete a todo el sistema, sólo a
la capa relacionada con la falla.
Con
respecto a las desventajas de esta organización, al realizar la construcción de
las capas, la problemática es la forma de realizar la división y definición de
las funcionalidades, ya que se tiene considerar que las capas superiores
solamente pueden utilizar los servicios de la capa que se encuentra inferior,
por lo tanto, se debe tener mucho cuidado en la planificación del sistema para
que exista un óptimo funcionamiento. Otra desventaja que podemos mencionar es
el gasto de tiempo que se genera en ir de una capa a otra, cada capa implica un
gasto extra.
EJEMPLOS
DE SISTEMAS POR CAPAS:
THE (Technische Hogeschool Eindhoven)
Venus
MULTICS (Multiplexed Information and Computing
Service)
Sistemas
por módulos
La
mayoría de los sistemas operativos modernos implementan este enfoque. Lo que
caracteriza este tipo de estructura es que el kernel se compone por módulos, y
cada uno de estos módulos se encuentra separado de forma independiente, tal
que, si alguno falla no afecta a los otros, ni al núcleo, por ejemplo, si el
módulo de software que se encarga de controlar el proceso de Telnet en una unidad
se bloquea o es atacado, sólo este proceso se verá afectado. El resto de las
operaciones siguen sus funciones habituales. Los módulos se pueden cargar
dinámicamente en el núcleo cuando se necesiten, ya sea, en tiempo de ejecución
o durante el arranque del sistema. El kernel dispone de los componentes
fundamentales y se conectan directamente con servicios adicionales. Además
otros componentes pueden cargarse dinámicamente al núcleo. Este enfoque modular
utiliza la programación orientada a objetos.
En general,
esta estructura se parece bastante a la de capas, pero es mucho más flexible
debido a que cualquier módulo de esta estructura puede llamar a otro. Es
similar a la estructura de microkernel, pues el kernel también tiene las
funciones esenciales, pero este es más eficiente ya que, no necesitan un
mecanismo de paso de mensajes para comunicarse, sólo interfaces conocidas.
Tabla
comparativa sobre algunas funcionalidades entre Sistemas Monolítico y Sistemas
por Módulos:
Funcionalidad Sistema Monolítico Sistema Modular
Arquitectura Cerrada, es decir, inmodificable a los
programadores ajenos a la compañía propietaria del código fuente. Abierta, es decir, que todos los
componentes del sistema del computador sean compatibles en cualquier ambiente
sin importar la compañía que lo haya producido.
Dependencia
de Hardware Absolutamente dependiente. No existe dependencia.
Escalabilidad No existe. Las
funciones nuevas requieren un reinicio de la unidad, son instaladas como un
nuevo SO.
Vulnerabilidad
frente a los ataques Muy Vulnerable Existe una vulnerabilidad controlada.
Ejecución
de Scripts Ejecución limitada, difícil
realizar ejecuciones de instrucciones externas, ya que el sistema carga al
inicio las funciones a realizar. Control
total de ejecución de comandos externos.
Extensibilidad No es posible extender las capacidades del SO
sin crear un nuevo código. Es
posible extender sus capacidades hacia operaciones con agentes externos
mediante API’s en un modelo cliente-servidor.
Niveles
de Disponibilidad Muy bajos, ya que si
se produce un error local, puede ocasionar un sistema inestable, detenido o un
error en todo el sistema. Altos. Al
existir un error de programación, este sucede localmente en un componente del
sistema, el cual puede ser fácilmente reparado, sin afectar al resto.
Soporte
para Redes Convergentes Este tipo de
sistemas no es adecuado para realizar funciones en línea, como por ejemplo
sincronización de voz, datos y videos. Óptimo
soporte, a causa de su alta disponibilidad.
Cambios
dinámicos en el software Al estar todo
integrado conjuntamente, no es posible. Posibles,
ya que cada módulo independientemente puede ser dado de alta o baja de manera
independiente.
EJEMPLOS
DE COMANDOS LINUX PARA GESTIONAR MÓDULOS:
•lsmod:
Muestra todos los módulos que están cargados en el kernel Linux.
•modprobe:
Se utiliza para agregar, ver y eliminar módulos.
•rmmod:
Utilizado para descargar módulos del kernel, con la restricción de que no estén
siendo utilizados y que no sean llamados por otros módulos.
EJEMPLOS
SISTEMA POR MÓDULOS:
Unix
modernos
Solaris
Linux
Mac OSX
8. Clases del sistemas operativo:
Un sistema Operativo (SO) es en sí mismo un
programa de computadora. Sin embargo, es un programa muy especial, quizá el más
complejo e importante en una computadora. El SO despierta a la computadora y
hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las
unidades de disco. Además, proporciona la facilidad para que los usuarios se
comuniquen con la computadora y sirve de plataforma a partir de la cual se corran
programas de aplicación. Los sistemas operativos más conocidos son los
siguientes:
1) DOS: El famoso DOS, que quiere decir Disk
Operating System (sistema operativo de disco), es más conocido por los nombres
de PC-DOS y MS-DOS. MS-DOS fue hecho por la compañía de software Microsoft y es
en esencia el mismo SO que el PC-DOS.
La razón de su continua popularidad se debe
al aplastante volumen de software disponible y a la base instalada de computadoras
con procesador Intel.
Cuando Intel liberó el 80286, DOS se hizo tan
popular y firme en el mercado que DOS y las aplicaciones DOS representaron la
mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad
IBM, fue una necesidad para que los productos tuvieran éxito, y la
"compatibilidad IBM" significaba computadoras que corrieran DOS tan
bien como las computadoras IBM lo hacían.
Aún con los nuevos sistemas operativos que
han salido al mercado, todavía el DOS es un sólido contendiente en la guerra de
los SO.
2)
Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que
tuviera una interfaz gráfica amigable para el usuario, y como resultado obtuvo
Windows. Este sistema muestra íconos en la pantalla que representan diferentes
archivos o programas, a los cuales se puede acceso al darles doble click con el
puntero del mouse. Todas las aplicaciones elaboradas para Windows se parecen,
por lo que es muy fácil aprender a usar nuevo software una vez aprendido las
bases.
3) Windows 95: En 1995, Microsoft introdujo
una nueva y mejorada versión del Windows 3.1. Las mejoras de este SO incluyen
soporte multitareas y arquitectura de 32 bits, permitiendo así correr mejores aplicaciones
para mejorar la eficacia del trabajo.
4) Windows NT: Esta versión de Windows se
especializa en las redes y servidores. Con este SO se puede interactuar de
forma eficaz entre dos o más computadoras.
5) OS/2: Este SO fue hecho por IBM. Tiene
soporte de 32 bits y su interfaz es muy buena. El problema que presenta este
sistema operativo es que no se le ha dado el apoyo que se merece en cuanto a
aplicaciones se refiere. Es decir, no se han creado muchas aplicaciones que
aprovechen las características del SO, ya que la mayoría del mercado de
software ha sido monopolizado por Windows.
6) Mac OS: Las computadoras Macintosh no
serían tan populares como lo son si no tuvieran el Mac OS como sistema
operativo de planta. Este sistema operativo es tan amigable para el usuario que
cualquier persona puede aprender a usarlo en muy poco tiempo. Por otro lado, es
muy bueno para organizar archivos y usarlos de manera eficaz. Este fue creado
por Apple pc, Inc.
7) UNIX: El sistema operativo UNIX fue creado
por los laboratorios Bell de AT&T en 1969 y es ahora usado como una de las
bases para la supercarretera de la información. Unix es un SO multiusuario y
multitarea, que corre en diferentes computadoras, desde supercomputadoras,
Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo.
Esto quiere decir que muchos usuarios pueden estar usando una misma computadora
por medio de terminales o usar muchas de ellas.