Estructura de un sistema operativo:
En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea más extensa de cómo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseños de sistemas operativos.
Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.
La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído hacia el núcleo. (2) el sistema operativo determina el número del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario.
Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. La siguiente figura muestra este procedimiento de tres capas:
Estructura por microkernel.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandosLas funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
Estructura por anillos concéntricos (capas).
El sistema por "capas" consiste en organizar el sistema operativo como una jerarquía de capas, cada una construida sobre la inmediata inferior. 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 tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignación del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros. Sobre la capa 0, el sistema consta de procesos secuénciales, cada uno de los cuales se podría programar sin importar que varios procesos estuvieran ejecutándose en el mismo procesador, la capa 0 proporcionaba la multiprogramación básica de la CPU.
La capa 1 realizaba la administración de la memoria. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (páginas) para las que no existía lugar en la memoria principal. Por encima de la capa 1, los procesos no debían preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las páginas llegaran a la memoria cuando fueran necesarias.
La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador. Por encima de esta capa, cada proceso tiene su propia consola de operador.
La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de información entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenían que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5.
Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concéntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debió hacer el equivalente a una llamada al sistemaMientras que el esquema de capas de THE era en realidad un apoyo al diseño, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecución y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensión para estructurar subsistemas del usuario.
5
El operador
4
Programas del usuario
3
Control de entrada / salida
2
Comunicación operador-proceso
1
Administración de la memoria y del disco
0
Asignación del procesador y multiprogramación
. Estructura del sistema operativo THE.
Estructura cliente – servidor
Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina.
(Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo")
El modelo Cliente-servidor.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos
Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.
Multiusuario
La palabra multiusuario se refiere a un concepto de sistemas operativos, pero en ocasiones también puede aplicarse a programas de computadora de otro tipo (Cg. aplicaciones de base de datos). En general se le llama multiusuario a la característica de un sistema operativo o programa que permite proveer servicio y procesamiento a múltiples usuarios simultáneamente (tanto en paralelismo real como simulado).
En contraposición a los sistemas monousuario, que proveen servicio y procesamiento a un solo usuario, en la categoría de multiusuario se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten los mismos recursos. Actualmente este tipo de sistemas se emplean especialmente en redes, pero los primeros ejemplos de sistemas multiusuario fueron sistemas centralizados que se compartían a través del uso de múltiples dispositivos de interfaz humana (e.g. una unidad central y múltiples pantallas y teclados).
Sistemas operativos multiusuario
En los sistemas operativos antiguos son lo magnifico, la idea de multiusuario guarda el significado original de que éste puede utilizarse por varios usuarios al mismo tiempo, permitiendo la ejecución concurrente de programas de usuario. Aunque la idea original de tiempo compartido o el uso de terminales tantas no es ya el más utilizado. Esto debido a que los ordenadores modernos pueden tener múltiples procesadores, o proveer sus interfaces de usuario a través de una red, o en casos especiales, ya ni siquiera existe una sola computadora física proveyendo los servicios, sino una federación de computadoras en red o conectadas por un bus de alta velocidad y actuando en concierto para formar un cluster.
Desde el principio del concepto, la comparición de los recursos de procesamiento, almacenaje y periféricos facilita la reducción de tiempo ocioso en el (o los) procesador(es), e indirectamente implica reducción de los costos de energía y equipamiento para resolver las necesidades de cómputo de los usuarios. 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 "clones de Unix" como Linux, FreeBSD y Mac OS X.
En la familia de los sistemas operativos Microsoft Windows, desde Windows 95 hasta la versión Windows VISTA, proveen soporte para ambientes personalizados por usuario, pero no admiten la ejecución de múltiples sesiones de usuario, haciendo necesaria la finalización de una sesión para poder iniciar otra distinta (y por lo tanto son, en esencia, sistemas operativos monousuario); Las versiones de Windows 2000 Server y Windows 2003 Server ofrecen el servicio Terminal Server el cual permite la ejecución remota de diferentes sesiones de usuario
Multitarea
Software que se subdivide en distintas tareas que pueden ser ejecutadas de forma simultánea. En realidad se trata de una simultaneidad aparente, puesto que el microprocesador dedica a cada trabajo una fracción de segundo; algo, por otra parte, inapreciable para el ser humano. Los recursos y el tiempo pueden ser asignados de forma igualitaria o estableciendo correcciones según un orden de prioridades. La multitarea es una característica típica de sistemas como OS/2 o Unís
Multiprogramación
Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo" (seudo-paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU.Aporta las siguientes ventajas:La ya mencionada, varios procesos en ejecución.Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente.Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/Aumenta el uso de la CPU.Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estará el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.
Sistemas Operativos por Servicios
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final.
.
2.2.1 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.
2.2.2 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.
2.2.3 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 pueden estar haciendo solo una tarea a la vez.
2.2.4 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
.
2.2.5 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
.
2.2.6 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.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un
Área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto. Us
Aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios
Procesadores.
Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman
Ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable,
los cuales son ejecutados al mismo tiempo en procesadores diferentes.
Por otro lado, el programador puede.
Modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces
Es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la
paralelización que a elaborar el algoritmo inicial.
En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea más extensa de cómo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseños de sistemas operativos.
Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.
La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído hacia el núcleo. (2) el sistema operativo determina el número del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario.
Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. La siguiente figura muestra este procedimiento de tres capas:
Estructura por microkernel.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandosLas funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
Estructura por anillos concéntricos (capas).
El sistema por "capas" consiste en organizar el sistema operativo como una jerarquía de capas, cada una construida sobre la inmediata inferior. 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 tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignación del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros. Sobre la capa 0, el sistema consta de procesos secuénciales, cada uno de los cuales se podría programar sin importar que varios procesos estuvieran ejecutándose en el mismo procesador, la capa 0 proporcionaba la multiprogramación básica de la CPU.
La capa 1 realizaba la administración de la memoria. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (páginas) para las que no existía lugar en la memoria principal. Por encima de la capa 1, los procesos no debían preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las páginas llegaran a la memoria cuando fueran necesarias.
La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador. Por encima de esta capa, cada proceso tiene su propia consola de operador.
La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de información entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenían que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5.
Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concéntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debió hacer el equivalente a una llamada al sistemaMientras que el esquema de capas de THE era en realidad un apoyo al diseño, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecución y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensión para estructurar subsistemas del usuario.
5
El operador
4
Programas del usuario
3
Control de entrada / salida
2
Comunicación operador-proceso
1
Administración de la memoria y del disco
0
Asignación del procesador y multiprogramación
. Estructura del sistema operativo THE.
Estructura cliente – servidor
Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina.
(Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo")
El modelo Cliente-servidor.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos
Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.
Multiusuario
La palabra multiusuario se refiere a un concepto de sistemas operativos, pero en ocasiones también puede aplicarse a programas de computadora de otro tipo (Cg. aplicaciones de base de datos). En general se le llama multiusuario a la característica de un sistema operativo o programa que permite proveer servicio y procesamiento a múltiples usuarios simultáneamente (tanto en paralelismo real como simulado).
En contraposición a los sistemas monousuario, que proveen servicio y procesamiento a un solo usuario, en la categoría de multiusuario se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten los mismos recursos. Actualmente este tipo de sistemas se emplean especialmente en redes, pero los primeros ejemplos de sistemas multiusuario fueron sistemas centralizados que se compartían a través del uso de múltiples dispositivos de interfaz humana (e.g. una unidad central y múltiples pantallas y teclados).
Sistemas operativos multiusuario
En los sistemas operativos antiguos son lo magnifico, la idea de multiusuario guarda el significado original de que éste puede utilizarse por varios usuarios al mismo tiempo, permitiendo la ejecución concurrente de programas de usuario. Aunque la idea original de tiempo compartido o el uso de terminales tantas no es ya el más utilizado. Esto debido a que los ordenadores modernos pueden tener múltiples procesadores, o proveer sus interfaces de usuario a través de una red, o en casos especiales, ya ni siquiera existe una sola computadora física proveyendo los servicios, sino una federación de computadoras en red o conectadas por un bus de alta velocidad y actuando en concierto para formar un cluster.
Desde el principio del concepto, la comparición de los recursos de procesamiento, almacenaje y periféricos facilita la reducción de tiempo ocioso en el (o los) procesador(es), e indirectamente implica reducción de los costos de energía y equipamiento para resolver las necesidades de cómputo de los usuarios. 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 "clones de Unix" como Linux, FreeBSD y Mac OS X.
En la familia de los sistemas operativos Microsoft Windows, desde Windows 95 hasta la versión Windows VISTA, proveen soporte para ambientes personalizados por usuario, pero no admiten la ejecución de múltiples sesiones de usuario, haciendo necesaria la finalización de una sesión para poder iniciar otra distinta (y por lo tanto son, en esencia, sistemas operativos monousuario); Las versiones de Windows 2000 Server y Windows 2003 Server ofrecen el servicio Terminal Server el cual permite la ejecución remota de diferentes sesiones de usuario
Multitarea
Software que se subdivide en distintas tareas que pueden ser ejecutadas de forma simultánea. En realidad se trata de una simultaneidad aparente, puesto que el microprocesador dedica a cada trabajo una fracción de segundo; algo, por otra parte, inapreciable para el ser humano. Los recursos y el tiempo pueden ser asignados de forma igualitaria o estableciendo correcciones según un orden de prioridades. La multitarea es una característica típica de sistemas como OS/2 o Unís
Multiprogramación
Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo" (seudo-paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU.Aporta las siguientes ventajas:La ya mencionada, varios procesos en ejecución.Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente.Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/Aumenta el uso de la CPU.Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estará el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.
Sistemas Operativos por Servicios
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final.
.
2.2.1 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.
2.2.2 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.
2.2.3 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 pueden estar haciendo solo una tarea a la vez.
2.2.4 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
.
2.2.5 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
.
2.2.6 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.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un
Área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto. Us
Aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios
Procesadores.
Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman
Ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable,
los cuales son ejecutados al mismo tiempo en procesadores diferentes.
Por otro lado, el programador puede.
Modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces
Es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la
paralelización que a elaborar el algoritmo inicial.
No hay comentarios:
Publicar un comentario