Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un sistema operativo (SO) se define como una agrupación de órdenes y programas que controlan
los procesos básicos de una computadora y permiten el funcionamiento de otros programas
(Stallings, 2005). La tarea fundamental de cualquier SO moderno es la gestión de procesos dentro
de los diversos equipos de cómputo.
Que es un proceso?
Las tablas de memoria son utilizadas para seguir la pista de la memoria principal (real) y
secundaria (virtual). Parte de la memoria principal está reservada para el uso del SO; el resto está
disponible para el uso de los procesos. Los procesos se mantienen en memoria secundaria
mediante alguna forma de memoria virtual o por un mecanismo de intercambio. Las tablas de
memoria incluyen la siguiente información:
Control de procesos
Es necesario distinguir entre el modo de ejecución del procesador que generalmente es asociada
con el sistema operativo y el modo que normalmente se asocia con los programas de usuario. La
mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos:
- Módulo usuario: modo que ejecuta los procesos del usuario, no se puede acceder
a las estructuras del sistema. Para cambiar entre modos se utilizan ciertos
métodos para pasar de modo núcleo a modo usuario, basta con realizar la
instrucción:
Hilos
Multihilo
El enfoque tradicional de un solo hilo de ejecución por proceso, en el que no se identifica con el
concepto de hilo, se conoce como estrategia monohilo.
Otros sistemas operativos, como algunas variedades de UNIX, soportan múltiples procesos de
usuario, pero solo un hilo por proceso. La parte derecha de la figura siguiente representa las
estrategias multihilo.
En un entorno multihilo, un proceso es definido como la unidad de asignación de recursos y una
unidad de protección, con lo cual se asocian los siguientes procesos:
Dentro de un proceso puede haber uno o más hilos, cada uno con:
- Un contexto de hilo que se almacena cuando no está en ejecución; una forma de era un
- Acceso a la memoria y recursos de sus procesos, compartido con todos los hilos de sus
mismos procesos (Stallings, 2005).
Concurrencia
La concurrencia no hace referencia a dos o más eventos que ocurren a la vez sino a dos o más
eventos cuyo orden es no determinista, esto es, eventos acerca de los cuales no se puede predecir
el orden relativo en que ocurrirán. Si bien dos procesos (o dos hilos) totalmente independientes
entre sí ejecutándose simultáneamente son concurrentes, se referirá principalmente a procesos
cuya ejecución está vinculada de alguna manera (p. ej.: dos procesos que comparten cierta
información o que dependen uno del otro) (Wolf et al, 2015).
Los temas centrales del diseño de sistemas operativos están todos relacionados con la gestión de
procesos e hilos:
La concurrencia es esencial en todas las áreas y en el diseño del sistema operativo. La concurrencia
engloba varias características, entre las cuales están la comunicación entre procesos y la
compartición, o competencia por recursos, la sincronización de actividades de múltiples procesos y
la reserva de tiempo de procesador para los procesos. Todos estos asuntos no solo suceden en el
entorno del multiprocesamiento y el procesamiento distribuido, sino también en sistemas
monoprocesador multiprogramados (Stallings, 2005).
- Estructura del sistema operativo. Las mismas ventajas constructivas son aplicables a la
programación de sistemas y, de hecho, los sistemas operativos son a menudo
implementados en sí mismos como un conjunto de procesos o hilos.
- Llega a ser muy complicado localizar errores de programación porque los resultados son
típicamente no deterministas y no reproducibles (Stallings, 2005)
Planificación
Cuando una computadora se multiprograma, con frecuencia tiene varios procesos o hilos que
compiten por la CPU al mismo tiempo. Esta situación ocurre cada vez que dos o más de estos
procesos se encuentran al mismo tiempo en estado listo. Si solo hay una CPU disponible, hay que
decidir cuál proceso se va a ejecutar a continuación. La parte del sistema operativo que realiza esa
decisión se conoce como planificador de procesos y el algoritmo que utiliza se conoce como
algoritmo de planificación (Tanenbaum, 2009).
La clave de la multiprogramación es la planificación. El objetivo de la planificación de procesos es
asignar procesos a ser ejecutados por el procesador o procesadores a lo largo tiempo, de forma
que se cumplan los objetivos del sistema tales como el tiempo de respuesta, el rendimiento y la
eficiencia del procesador. En muchos sistemas, esta actividad de planificación se divide en tres
funciones independientes: planificación a Página 14 de 20 largo-medio, y corto plazo. Los nombres
sugieren las escalas de tiempo relativas con que se ejecutan estas funciones (Stallings, 2005).
Exclusión mutua
En la exclusión mutua un proceso excluye de manera temporal a los demás procesos para utilizar
un recurso compartido de manera que garantice la integridad del sistema.
Los siguientes requisitos deben cumplirse para proporcionar una exclusión mutua:
- Un proceso que se pare en su sección no crítica debe hacerlo sin interferir con otros
procesos.
- No debe ser posible que un proceso que solicite acceso a una sección crítica sea
postergado indefinidamente: ni interbloqueo, ni inanición.
- Cuando ningún proceso esté en una sección crítica, a cualquier proceso que solicite entrar
en su sección crítica debe permitírsele entrar sin demora.
Sincronización
Si con la finalidad de completar una tarea, se involucran varios procesos ejecutándose al mismo
tiempo se le conoce como sincronización. Es indispensable proporcionar mecanismo de exclusión
mutua, para garantizar la sincronización de los procesos al asignarles algún recurso y la
coordinación al resolver una tarea compartidos (Universidad Técnica Particular de Loja, 2013).
En los sistemas operativos multiprogramados los procesos compiten por el acceso a los recursos
compartidos o cooperan dentro de una misma aplicación para comunicar información.
Ambas situaciones son tratadas por el sistema operativo mediante mecanismos de sincronización
que permiten el acceso exclusivo de forma coordinada a los recursos y a los elementos de
comunicación compartidos (Universidad Técnica Particular de Loja, 2013).
Con el fin de cumplir con una meta común, los procesos interactivos necesitan compartir datos o
coordinar sus actividades entre sí. La sincronización para acceder a datos garantiza que aquellos
que se comparten no pierdan consistencia cuando son actualizados por varios procesos. Esto se
realiza asegurándose de que los accesos a datos compartidos sean efectuados de manera
mutuamente exclusiva. La sincronización de controles asegura también que los procesos
interactivos realicen sus acciones en un orden deseado. Los sistemas de cómputo proporcionan
instrucciones indivisibles (también llamadas instrucciones atómicas) para apoyar el acceso a datos
y la sincronización de controles (Dhamdhere, 2008).
En 1965 E. W. Dijkstra sugirió el uso de una variable entera para contar el número de señales de
despertar, guardadas para un uso futuro. En su propuesta introdujo un nuevo tipo de variable, al
cual él llamó semáforo. Un semáforo podría tener el valor 0, indicando que no se guardaron
señales de despertar o algún valor positivo si estuvieran pendientes una o más señales de
despertar (Tanenbaum, 2009).
Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico
para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de
almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento
(en el que se ejecutarán varios procesos concurrentemente). Se usaron por primera vez en el
sistema operativo THEOS. Los semáforos se emplean para permitir el acceso a diferentes partes de
programas (llamados secciones críticas) donde se manipulan variables o recursos que deben ser
accedidos de forma especial. Según el valor con que son inicializados se permiten a más o menos
procesos utilizar el recurso de forma simultánea (Castellanos, 2014).
Un semáforo es una variable de tipo entero que tiene definida la siguiente interfaz:
Conclusiones
Como se revisó a lo largo de esta unidad, dentro de los sistemas operativos una de las principales
acciones que se ejecutan es la gestión y control de procesos. Los procesos como se revisó
permiten de forma conjunta y coordinada, gestionar, almacenar y en general procesar información
dentro del sistema, para esto cada proceso debe estar perfectamente definido e identificado.
De igual manera dentro de esta unidad revisamos los conceptos fundamentales de hilos, que es
una de las dos partes de lo que conocemos como proceso: un hilo, como revisamos, es la
ejecución del flujo de instrucciones, que pueden ser contenidos de forma única, o múltiple forma
dentro de un proceso. El concepto de hilo puede ampliarse, y como se revisó, puede generar
múltiples estructuras dentro de la gestión de diferentes formas de atender las acciones de un
proceso.
El concepto base de concurrencia es un ítem relevante como revisamos para el diseño dentro de
los sistemas operativos, como analizamos, dos de los aspectos claves a considerar dentro de la
concurrencia es la exclusión mutua y la sincronización.
Para finalizar, es importante considerar que dentro de los SO la gestión de actividades dentro de
cada equipo es importante y que sin ella no se podrían ejecutar los múltiples procesos que se
requiere. Esta gestión debe permitir pasar por sus diferentes estados y por la administración de la
ejecución de varios de estos de forma “simultánea” así como las herramientas que permitan la
atención de cada una de estas entre ellas.