INTRODUCCIÓN
Introducción según Tanembaum
“Una computadora moderna consta de uno o más procesadores, una memoria principal, discos, impresoras, un teclado, un ratón, una pantalla o monitor, interfaces de red y otros dispositivos de entrada salida. En general es un sistema complejo. Si todos los programadores de aplicaciones tuvieran que comprender el funcionamiento de todas estas partes, no escribirían código alguno. Es más: el trabajo de administrar todos estos componentes y utilizarlos de manera óptima es una tarea muy desafiante. Por esta razón, las computadoras están equipadas con una capa de software llamada sistema operativo, cuyo trabajo es proporcionar a los programas de usuario un modelo de computadora mejor, más simple y pulcro, así como encargarse de la administración de todos los recursos antes mencionados.”
Sistemas operativos modernos – A. Tanembaum, 2009, pág. 1
Visión general
Un sistema operativo (S.O.) es un programa o
conjunto de programas de control que tiene
por objeto facilitar el uso de la computadora
y conseguir que ésta se utilice eficientemente.
Básicamente cumple con dos funciones
independientes una de otra:
Máquina virtual o extendida
Gestor de recursos.
SO como máquina extendida o virtual
La arquitectura de la mayoría de las
computadoras a nivel de lenguaje
máquina es primitiva y compleja de
programar, en especial para la
entrada/salida.
Un programador a tan bajo nivel debe
conocer muy bien la electrónica del
dispositivo a programar, ya sea disco duro,
unidad óptica, etc.
Ejemplo:
Controlador de disco:
Dispone de comandos que realizan
operaciones tales como leer y escribir datos,
mover el brazo, saber en que plato y sección
se encuentra el dato, formatear pistas,
recalibrado, etc.
El programador ve el disco como una
colección de archivos y carpetas/directorios.
La abstracción es la clave para lidiar
con la complejidad.
Una abstracción que casi cualquier usuario de
computadora comprende es el archivo: es una pieza
útil de información, como una fotografía digital, un
mensaje de correo electrónico almacenado o una
página Web. Es más fácil lidiar con fotografías,
correos electrónicos y páginas Web que con los
detalles de los discos.
Trabajo del sistema operativo: crear buenas
abstracciones para después implementar y
administrar los objetos abstractos entonces creados.
Dificultad de interactuar con el
hardware
Procesadores, memorias, discos y otros dispositivos
presentan interfaces difíciles, enredadas, muy
peculiares e inconsistentes para las personas que
tienen que escribir software para utilizarlos.
Motivo: necesidad de tener compatibilidad con el
hardware anterior; deseo de ahorrar dinero; para
los diseñadores de hardware no es de interés qué la
programación del software sea sencilla.
SO oculta hardware difícil de
programar…
El sistema operativo oculta el hardware y presenta
a los programas (y a sus programadores)
abstracciones agradables, elegantes, simples y
consistentes con las que puedan trabajar.
Ocultan la parte
desagradable con
la parte
agradable.
Niveles y vistas de un sistema
informático.
• Los que se encargan de diseñar
SSOO, son los que deben
conocer del funcionamiento del
hardware y deben programar a
bajo nivel.
• En cambio los programadores
tiene una visión abstraída del
hardware y sólo deben
conocer del SO y sus
utilidades para enfocar
sus esfuerzos en el
desarrollo de las aplicaciones.
Conclusión
La maquina extendida o también llamada máquina
virtual es un software que emula 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 maquina física.
SO como administrador de recursos
Recursos de las computadoras modernas:
Procesador, memorias, temporizadores, discos,
ratones, interfaces de red, impresoras, etc.
El trabajo del sistema operativo es
proporcionar una asignación ordenada y
controlada de los procesadores, memorias y
dispositivos de E/S, entre los diversos
programas que compiten por estos recursos.
Orden del uso de recursos
Los sistemas operativos modernos permiten la ejecución
simultánea de varios programas.
¿Qué pasaría si tres programas trataran de imprimir sus
documentos en forma simultánea en la misma impresora?
Las primeras líneas de impresión podrían provenir del
programa 1, las siguientes del programa 2, después
algunas del programa 3, y así sucesivamente.
RESULTADO = CAOS
SO: Impone orden al caos potencial, guardando los datos
a imprimir en disco hasta que la impresora se libere para
así tomar esos datos e imprimirlos.
Recursos multiplexados
Dos aspectos:
Compartir recursos en el tiempo.
Compartir recursos en el espacio
Compartir recursos en el tiempo
Distintos programas o usuarios toman turnos
para utilizarlo.
Ejemplo: con sólo una CPU y varios programas
que desean ejecutarse, el SO primero asigna
la CPU a un programa y luego, una vez que se
ha ejecutado por el tiempo suficiente, otro
programa obtiene acceso a la CPU, después
otro, y en un momento dado el primer
programa vuelve a obtener acceso al recurso.
Compartir recursos en el tiempo
La tarea de determinar cómo se multiplexa el
recurso en el tiempo (quién sigue y durante cuánto
tiempo) es responsabilidad del sistema operativo.
Compartir recursos en el espacio
Cada cliente obtiene una parte del recurso.
Ejemplo: normalmente la memoria principal
se divide entre varios programas en
ejecución para que cada uno pueda estar
residente al mismo tiempo. Con suficiente
memoria, es más eficiente contener varios
programas en memoria a la vez, en vez de
proporcionar a un solo programa toda la
memoria, en especial si sólo necesita una
pequeña fracción.
Puede generar problemas de equidad y
protección.
Corresponde al sistema operativo resolverlos.
Compartir recursos en el espacio
Otro recurso que se multiplexa en espacio es el disco duro.
En muchos sistemas, un solo disco puede contener archivos
de muchos usuarios al mismo tiempo. Asignar espacio en
disco y llevar el registro de quién está utilizando cuáles
bloques de disco es una tarea típica de administración de
recursos común del sistema operativo.
Cada SO maneja un
sistema de Archivo
FAT, NTFS
ext2, ext3
Funciones de un SO
Proporcionar una interfaz con la cual el usuario puede
interactuar con el hardware con la mayor abstracción posible.
Gestionar la memoria RAM y ejecutar las aplicaciones.
Administrar al CPU gracias a un algoritmo de planificación de
procesos.
Direccionar las entradas y salidas de datos (a través
de drivers) por medio de los periféricos de entrada o salida.
Administrar las tareas según su prioridad (Multitarea)
Administrar los archivos con la cual el usuario puede crear
borrar, mover y modificar los archivos en el equipo
Núcleo
El núcleo del sistema operativo, también llamado kernel es aquella parte de un sistema operativo 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.
La administración del sistema de archivos.
La administración de servicios de entrada/salida.
La asignación de recursos entre los usuarios.
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.
Tanenbaum, A., Sistemas operativos modernos.Tercera edición
• Página 3 a 7
Bibliografía
Preguntas
1. ¿Cómo definiría en pocas palabra un sistema
operativo?
2. ¿Qué significa que un SO es una máquina
extendida?
3. ¿Qué significa que un SO es un gestor de recursos?
4. ¿Qué significa compartir recursos en el tiempo?
5. Qué significa compartir recursos en el espacio?
6. ¿Cuáles son las funciones de un SO?
7. ¿Qué es el núcleo de un SO?