Está en la página 1de 11

Que es un sistema operativo?

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?

Un proceso es en concreto un programa en ejecución, donde se le asocia un espacio de


direcciones y una lista de ubicaciones de memoria que va desde algún mínimo (en general 0) hasta
cierto valor máximo, donde el proceso puede leer y escribir información. El programa ejecutable,
los datos del programa y su pila están contenidos en el espacio de direcciones. 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 información necesaria para ejecutar el
programa. En resumen, un proceso es un recipiente que guarda toda la información que se
necesita para ejecutar un programa (Castellanos, 2014)

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:

- La asignación de memoria principal y secundaria a los procesos

- Cualquier atributo de protección de segmentos de memoria principal o virtual


- Cualquier información necesaria para gestionar la memoria virtual (Stallings, 2005).

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:

- Modo núcleo: modo controlado y utilizado por el sistema operativo.

- 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:

Changemode (CM): para pasar de modo usuario a modo núcleo el sistema es


mucho más complejo. Si el usuario necesita utilizar las estructuras del sistema,
deberá realizar una “llamada al sistema”.

- La llamada al sistema: funciona como una interrupción, pero proviene del


software. De esta manera al producirse la interrupción se pasa automáticamente
al modo núcleo. Cuando se produce una de estas interrupciones, el Página 7 de 20
microprocesador hace un cambio de contexto, es decir guarda toda la información
en registros PCB (Villarreal, 2017).

Estados de los procesos en 5 estados

En tanto se ejecuta un proceso, el proceso va cambiando de estado. El estado de un proceso es


definido por la actividad actual del proceso. Cada proceso puede estar en alguno de los siguientes
estados:

- Nuevo. El proceso está siendo creado.

- En ejecución. Se están ejecutando las instrucciones.

- En espera o bloqueado. El proceso está esperando a que se produzca un suceso (como la


terminación de una operación de E/S o la recepción de una señal).

- Preparado o listo. El proceso está a la espera de que le asignen a un procesador.

- Terminado o saliente. Ha terminado la ejecución del proceso.

Hilos

Cuando se consideran procesos basados en un modelo de hilos, es posible proyectar en sentido


inverso que todo proceso es como un solo hilo de ejecución. Un SO que no otorga permiso a los
hilos los planificaría exactamente del mismo modo.
El proceso posee dos características:

- Propiedad de recursos. Un proceso incluye un espacio de direcciones virtuales para el


manejo de la imagen del proceso; la imagen de un proceso es la colección del programa,
datos, pila y atributos. De vez en cuando a un proceso se le puede asignar control o
propiedad de recursos tales como la memoria principal, canales E/S, dispositivos E/S y
archivos. El sistema operativo realiza la función de protección para evitar interferencias no
deseadas entre procesos en relación con los recursos.

- Planificación/ejecución. La ejecución de un proceso sigue una ruta de ejecución (traza) a


través de uno o más programas. Esta ejecución puede estar intercalada con ese u otros
procesos. De esta manera, un proceso tiene un estado de ejecución (Ejecutando, Listo,
etc.) y una prioridad de activación y esta es la entidad que se planifica y activa por el SO.

Multihilo

El concepto hace referencia a la capacidad de un sistema operativo de dar soporte a múltiples


hilos de ejecución en un solo proceso.

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:

- Un espacio de direcciones virtuales que soporta la imagen del proceso.

- Acceso protegido a procesadores, otros procesos (para comunicación entre procesos),


archivos y recursos de E/S (dispositivos y canales).

Dentro de un proceso puede haber uno o más hilos, cada uno con:

- Un estado de ejecución por hilo (Ejecutando, Listo, etc.).

- Un contexto de hilo que se almacena cuando no está en ejecución; una forma de era un

- hilo es como un contador de programa independiente dentro de un proceso.

- Una pila de ejecución.

- Por cada hilo, espacio de almacenamiento para variables locales.

- 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:

- Multiprogramación. Gestión de múltiples procesos dentro de un sistema monoprocesador

- Multiprocesamiento. Gestión de múltiples procesos dentro de un multiprocesador.

- Procesamiento distribuido. Gestión de múltiples procesos que ejecutan sobre múltiples


sistemas de cómputo distribuidos.

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).

A continuación, se detallan los contextos de la concurrencia:


- Múltiples aplicaciones. La idea principal de las múltiples aplicaciones es permitir compartir
el tiempo de procesamiento entre varias aplicaciones que se encuentren activas.

- Aplicaciones estructuradas. Algunas aplicaciones se programan de forma funcional como


un conjunto de procesos concurrentes.

- 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.

Las técnicas de entrelazado y solapamiento pueden verse como ejemplos de procesamiento


concurrente y ambas presentan inconvenientes similares. Por ejemplo, en un monoprocesador, los
problemas surgen de una característica básica de los sistemas multiprogramados, es decir no
puede predecir la velocidad relativa de ejecución de los procesos ya que depende de la actividad
de los otros procesos, de la forma en que el sistema operativo maneja las interrupciones, así como

las políticas de planificación del SO. Por lo que a continuación se plantea:

- La compartición de recursos globales está cargada de peligros. Por ejemplo, si dos


procesos utilizan la misma variable global y ambos realizan lecturas y escrituras sobre esa
variable, entonces el orden en que se ejecuten es crítico. En la siguiente subsección se
muestra un ejemplo de este problema.

- Para el sistema operativo es complicado gestionar la asignación de recursos de manera


óptima. Por ejemplo, el proceso A puede solicitar el uso de un canal concreto de E/S, y
serie concedido el control, y luego ser suspendido justo antes de utilizar ese canal. Puede
no ser deseable que el SO simplemente bloquee el canal e impida su utilización por otros
procesos. De hecho, esto puede conducir a una condición de interbloqueo.

- 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).

A continuación, se enlistan los tipos de planificación:

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:

- En la exclusión mutua solo se permite un proceso al tiempo dentro de su sección crítica,


de entre todos los procesos que tienen secciones críticas para el mismo recurso u objeto
compartido.

- 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.

- No se hacen suposiciones sobre las velocidades relativas de los procesos ni sobre el


número de procesadores.

- Un proceso permanente dentro de su sección crítica solo por un tiempo finito.


Hay varias maneras de satisfacer los requisitos para la exclusión mutua. Una manera es delegar la
responsabilidad en los procesos que desean ejecutar concurrentemente. Esos procesos, ya sean
programas del sistema o programas de aplicación, estarían obligados a coordinarse entre sí para
cumplir la exclusión mutua, sin apoyo del lenguaje de programación ni del sistema operativo.
Podemos referirnos a esto como soluciones software.

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).

Características de la sincronización de acceso a datos y de la sincronización de controles:


Semáforos

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:

- Inicialización. Se puede inicializar el semáforo a cualquier valor entero, pero después de


esto, su valor no puede ya ser leído. Un semáforo es una estructura abstracta, y su valor es
tomado como opaco (invisible) al programador.
- Decrementar. Cuando un hilo decrementa el semáforo, si el valor es negativo, el hilo se
bloquea y no puede continuar hasta que otro hilo incremente el semáforo. Según la
implementación, esta operación puede denominarse wait, down, acquire o incluso P (por
ser la inicial de proberen te verlagen, intentar decrementar en holandés, del
planteamiento original en el artículo de Dijkstra).
- Incrementar. Cuando un hilo incrementa el semáforo, si hay hilos esperando, uno de ellos
es despertado. Los nombres que recibe esta operación son signal, up, release, post o V (de
verhogen, incrementar) (Wolf et al, 2015).

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.

En esta unidad se analizó también el concepto de control de procesos, y se comprendió como un


proceso puede recorrer por un conjunto de estados, los cuales deben ser administrados; esta
administración como se vio requiere que el sistema operativo realice operaciones de planificación
y proporcione servicios para su comparación y sincronización.

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.

También podría gustarte