Fundamentos Sistemas Operativos Parte 1 2°4°
Fundamentos Sistemas Operativos Parte 1 2°4°
Fundamentos Sistemas Operativos Parte 1 2°4°
Este punto es tan importante que vale la pena repetirlo en distintas palabras. El sistema
operativo abstrae al usuario de la complejidad de administrar directamente el hardware y le
presenta un conjunto de directivas que le permiten al usuario (en particular a los
programadores) tener una visión más agradable y sencilla del sistema.
El otro tipo de multiplexaje es en el espacio. En vez de que los clientes tomen turnos,
cada uno obtiene una parte del recurso. Por ejemplo, normalmente la memoria principal se
divide entre varios programas en ejecución para que cada uno pueda estar residente al mismo
tiempo (por ejemplo, para poder tomar turnos al utilizar la CPU). Suponiendo que hay suficiente
memoria como para contener varios programas, 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. Desde luego que esto genera problemas de equidad y
protección, por ejemplo, y corresponde al sistema operativo resolverlos. 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.
Según su propósito:
Propósito General: se caracterizan por tener a múltiples usuarios
trabajando en un numero variado de aplicaciones.
Propósito Específico: se utilizan en entornos donde se aceptan y
procesan, en poco tiempo, un gran número de sucesos y procesos, en
su mayoría externos al ordenador. Por ejemplo: control industrial,
controles de vuelos, equipamiento telefónico conmutado o en
simulaciones en tiempo real.
Según la Administración de Tareas:
Monotareas: son capaces de manejar un programa o realizar una tarea
a la vez. Se los puede asociar a los primeros sistemas operativos que
aparecieron en la historia de la computación.
Multitareas: En un sistema operativo multitarea, varios procesos se
pueden estar ejecutando aparentemente al mismo tiempo sin que el
usuario lo perciba. La gran mayoría de sistemas operativos actuales son
multitarea. Un sistema multitarea permite a la vez estar escuchando
música, navegando por Internet y realizando una videoconferencia. El
sistema operativo fracciona el tiempo de CPU y lo va repartiendo entre
los procesos que lo necesitan de la mejor forma posible.
Según el tipo de Administración de Recursos:
Centralizados: son aquellos sistemas que utilizan recursos de una sola
computadora, es decir, su propia memoria, procesador, disco y
periféricos. Es decir, que un solo ordenador se encarga del
procesamiento. Se trata de un hardware de alto costo y de gran
potencia, que se pueden encontrar en empresas en la que se procesan
grandes cantidades de cálculos, información, etc., en la cual puede
haber un soporte Multiusuario. Los equipos más utilizados aquí son
MAINFRAMES (se encargan de todo el procesamiento de información
que solicitan las computadoras de los usuarios) y para los usuarios
particulares, las computadoras personales. Su principal desventaja es
que cuando el procesamiento era lento o tenía falla, hay que reemplazar
el equipo físico.
Distribuidos: Permiten distribuir los trabajos, tareas o procesos entre
un conjunto de procesadores, que pueden estar en el mismo equipo o
en equipos distintos.
Según el número de Procesadores:
Monoprocesador: puede ejecutar un proceso a la vez, por lo tanto,
trabaja con un solo procesador. La función principal, es alternar las
tareas que solicita el usuario de a una.
Multiprocesador: Un sistema operativo multiproceso es aquel que
puede ejecutar varios procesos de forma concurrente (a la vez). Para
que se puedan ejecutar varios procesos a la vez es necesario tener un
sistema multiprocesador (con varios procesadores). El objetivo de
utilizar un sistema con varios procesadores no es ni más ni menos que
aumentar la potencia de cálculo y por lo tanto rendimiento del mismo.
El sistema va repartiendo la carga de trabajo entre los procesadores
existentes y también tendrá que gestionar la memoria para poder
repartirla entre dichos procesadores. Generalmente los sistemas
multiprocesador se utilizan en Workstation, servidores, etc. El realizar
un sistema operativo que pueda trabajar con varios procesadores de
forma concurrente es una tarea complicada y generalmente se diseñan
para que trabajen de varias formas:
Forma Asimétrica: Se designa un procesador como el
procesador master (maestro) y los demás serán Slave (esclavos)
de este. En el procesador maestro se ejecuta el sistema
operativo y se encargará de repartir el trabajo entre los demás
procesadores esclavos. Este sistema tiene la ventaja de que es
más simple de implementar ya que se centraliza la gestión en un
procesador. Por el contrario, el que existan procesadores que
realicen distinto trabajo hace que el sistema no sea tan eficiente
como un sistema operativo que trabaje de forma simétrica.
Forma Simétrica: En este tipo de sistema operativo todos los
procesadores realizan las mismas funciones. Es más difícil de
implementar, pero son más eficientes que los sistemas
operativos multiproceso asimétricos. El poder balancear la
carga de trabajo entre todos los procesadores existentes hace
que el tiempo de inactividad de los mismos sea mucho menor y
por lo tanto la productividad mucho más alta. Otra ventaja es
que, si un procesador falla, gracias al balanceo de carga, los
demás procesadores se hacen cargo de las tareas del
procesador que ha fallado.
Según el Tiempo de Respuesta
En Tiempo Real: Son los que permiten que el ordenador dé una
respuesta inmediata tras lanzar un proceso.
Tiempo Compartido: Son los que permiten que varios usuarios
individuales interactúen a la vez, de forma que cada usuario tenga la
sensación de que se le está atendiendo en exclusiva, aunque, en
realidad, cada tarea tiene un nivel de prioridad y se ejecuta en orden
secuencial.
Además, este núcleo gestiona recursos mediante servicios de llamada al sistema operativo y
decide cuáles son los programas que harán uso de un dispositivo de hardware y cuál será su
duración, distribuyendo los recursos de la mejor forma, para que los componentes externos e
internos del ordenador puedan trabajar en conjunto. Otra de sus funciones, es la de administrar
la memoria de los procesos y programas en ejecución.
Interfaz de Línea de Comandos (CLI): Entre los lugares donde se utiliza la interfaz de
línea de comandos (Command Line Interface en inglés), se encuentran los ordenadores
DOS. El usuario ve una línea de comandos y un indicador que indica la posición actual.
La interacción sólo es posible mediante la introducción de comandos. La máquina los
procesa y, a continuación, muestra otra línea con una indicación de entrada. Este tipo
de sistema operativo está obsoleto. Las CLI han sido reemplazadas en gran medida por
las GUI.
1.1.6.1 Procesos
Un concepto clave en todos los sistemas operativos es el proceso. Un proceso es en
esencia un programa en ejecución. Cada proceso tiene asociado un espacio de direcciones, una
lista de ubicaciones de memoria que va desde algún mínimo (generalmente 0) hasta cierto valor
máximo, donde el proceso puede leer y escribir información. El espacio de direcciones contiene
el programa ejecutable, los datos del programa y su pila. También hay asociado a cada proceso
un conjunto de recursos, que comúnmente incluye registros (el contador de programa y el
apuntador de pila, entre ellos), una lista de archivos abiertos, alarmas pendientes, listas de
procesos relacionados y toda la demás información necesaria para ejecutar el programa. En
esencia, un proceso es un recipiente que guarda toda la información necesaria para ejecutar un
programa
Por ahora la manera más fácil de que nos demos una buena idea de lo que es un proceso
es pensar en un sistema de multiprogramación. El usuario puede haber iniciado un programa de
edición de video para convertir un video de una hora a un formato específico (algo que puede
tardar horas) y después irse a navegar en la Web. Mientras tanto, un proceso en segundo plano
que despierta en forma periódica para comprobar los mensajes entrantes puede haber
empezado a ejecutarse. Así tenemos (cuando menos) tres procesos activos: el editor de video,
el navegador Web y el lector de correo electrónico. Cada cierto tiempo, el sistema operativo
decide detener la ejecución de un proceso y empezar a ejecutar otro; por ejemplo, debido a que
el primero ha utilizado más tiempo del que le correspondía de la CPU en el último segundo.
Cuando un proceso se suspende en forma temporal como en el ejemplo anterior, debe
reiniciarse después exactamente en el mismo estado que tenía cuando se detuvo. Esto significa
que toda la información acerca del proceso debe guardarse en forma explícita en alguna parte
durante la suspensión, en las llamadas tablas de procesos.
Un proceso puede crear uno o más procesos aparte (conocidos como procesos hijos) y
estos procesos a su vez pueden crear procesos hijos, llegamos rápidamente la estructura de
árbol de procesos. Los procesos relacionados que cooperan para realizar un cierto trabajo a
menudo necesitan comunicarse entre sí y sincronizar sus actividades. A esta comunicación se le
conoce como comunicación entre procesos.
Sin embargo, en muchas computadoras las direcciones son de 32 o 64 bits, con lo cual
se obtiene un espacio de direcciones de 232 o 264 bytes, respectivamente. ¿Qué ocurre si un
proceso tiene más espacio de direcciones que la memoria principal de la computadora, y desea
usarlo todo? Hoy en día existe una técnica llamada memoria virtual, como se mencionó antes,
en la cual el sistema operativo mantiene una parte del espacio de direcciones en memoria
principal y otra parte en el disco, moviendo pedazos de un lugar a otro según sea necesario.
1.1.6.3 Archivos
Otro concepto clave de casi todos los sistemas operativos es el sistema de archivos.
Como se dijo antes, una de las funciones principales del sistema operativo es ocultar las
peculiaridades de los discos y demás dispositivos de E/S, presentando al programador un
modelo abstracto limpio y agradable de archivos independientes del dispositivo. Sin duda se
requieren las llamadas al sistema para crear los archivos, eliminarlos, leer y escribir en ellos.
Para proveer un lugar en donde se puedan mantener los archivos, la mayoría de los
sistemas operativos tienen el concepto de un directorio como una manera de agrupar archivos.
s. Por ejemplo, un estudiante podría tener un directorio para cada curso que esté tomando (para
los programas necesarios para ese curso), otro directorio para su correo electrónico y otro más
para su página de inicio en World Wide Web. Así, se necesitan llamadas al sistema para crear y
eliminar directorios. También se proporcionan llamadas para poner un archivo existente en un
directorio y para eliminar un archivo de un directorio. Las entradas de directorio pueden ser
archivos u otros directorios. Este modelo también da surgimiento a una jerarquía (el sistema de
archivos), como se muestra en la siguiente imagen: