Está en la página 1de 11

UNIDAD 2 TAREA 3

OMAR YOVANY FORERO DIAZ

JAIME JOSE VALDES


TUTOR

GRUPO: 301402_49

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD


SISTEMAS OPERATIVOS
CCAV SAN JOSE DEL GUAVIARE
2019
Actividades a desarrollar:
Individual:
El estudiante realizar los aportes de la fase Individual.

Respondiendo los siguientes puntos:

1. Definir que son procesos, sus estados y como se clasifican. (Realizar dos
ejemplos que usted como ingeniero considere que son procesos de un sistema
operativo).

R: // Un proceso es un programa en ejecución Un programa ejecutable es un


conjunto de instrucciones y datos almacenados en un fichero. Cuando lo que tiene
ese programa se carga en la memoria y se pone en ejecución, se convierte en un
proceso. Este es una entidad formada por los siguientes elementos principales:

· Una imagen binaria de un programa, cargada total o parcialmente en la memoria


física. La imagen binaria está formada por las instrucciones y datos del programa.

· Un área de memoria para almacenar datos temporales, conocida como pila. La


imagen binaria y la pila son el programa en sí mismo, pero para que el SO pueda
controlar el programa hacen falta una serie de estructuras de datos. Las estructuras
fundamentales son: · La tabla de páginas para traducir las direcciones virtuales
generadas por el proceso en las direcciones físicas en la que se encuentra
almacenado. · Una estructura de control, conocida como PCB, para que el sistema
operativo pueda controlar su ejecución. Un proceso no es más que un programa en
ejecución, e incluye los valores actuales del contador de programa, los registros y
las variables. Conceptualmente cada uno de estos procesos tiene su propia CPU
virtual. Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro.
Un proceso es un concepto manejado por el sistema operativo que consiste en el
conjunto formado por:
 Las instrucciones de un programa destinadas a ser ejecutadas por el
microprocesador.
 Su estado de ejecución en un momento dado, esto es, los valores de los
registros de la CPU para dicho programa.
 Su memoria de trabajo, es decir, la memoria que ha reservado y sus
contenidos.
 Otra información que permite al sistema operativo su planificación.
Esta definición varía ligeramente en el caso de sistemas operativos multi hilo, donde
un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos
los hilos) y la información de planificación. Cada hilo consta de instrucciones y
estado de ejecución. Los procesos son creados y destruidos por el sistema operativo,
así como también este se debe hacer cargo de la comunicación entre procesos, pero
lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro
proceso se denomina bifurcación (fork). Los nuevos procesos pueden ser
independientes y no compartir el espacio de memoria con el proceso que los ha
creado o ser creados en el mismo espacio de memoria. En los sistemas operativos
multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un
proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten
toda la memoria reservada para el proceso.
En este modelo: todo software ejecutable de la computadora, lo que a menudo
incluye al sistema operativo, está organizado en una serie del proceso secuenciales,
o simplemente procesos. La idea clava aquí es que un proceso es una actividad de
algún tipo: tiene programa, entrada, salida y un estado. Se puede compartir un
procesador entre varios procesos, usando algún algoritmo de planificación para
determinar cuándo debe de trabajar en un proceso para atender a uno distinto.
ESTADOS DE PROCESO

Durante su existencia un proceso pasa por una serie de estados discretos, siendo
varias las circunstancias que pueden hacer que el mismo cambie de estado. Debido a
ello se puede establecer una “Lista de Listos” para los procesos “listos” y una “Lista
de Bloqueados” para los “bloqueados”. La “Lista de Listos” se mantiene en orden
prioritario y la “Lista de Bloqueados” está desordenada, ya que los procesos se
desbloquean en el orden en que tienen lugar los eventos que están esperando.
Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado
en la última parte de la “Lista de Listos”. La asignación de la CPU al primer proceso
de la “Lista de Listos” se denomina “Despacho”, que es ejecutado por una entidad
del Sistema Operativo llamada “Despachador”. El “Bloqueo” es la única transición
de estado iniciada por el propio proceso del usuario, puesto que las otras
transiciones son iniciadas por entidades ajenas al proceso. La manifestación de un
proceso en un Sistema Operativo es un “Bloque de Control de Proceso” (PCB) con
información que incluye:

• Estado actual del proceso.


• Identificación única del proceso.
• Prioridad del proceso.
• Apuntadores para localizar la memoria del proceso.
• Apuntadores para asignar recursos.
• Área para preservar registros.

Cuando el Sistema Operativo cambia la atención de la CPU entre los procesos,


utiliza las áreas de preservación del PCB para mantener la información que necesita
para reiniciar el proceso cuando consiga de nuevo la CPU. Los sistemas que
administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar
la prioridad, bloquear, despertar y despachar un proceso. La “creación” de un
proceso significa:

• Dar nombre al proceso.


• Insertar un proceso en la lista del sistema de procesos conocidos.
• Determinar la prioridad inicial del proceso.
• Crear el bloque de control del proceso.
• Asignar los recursos iniciales del proceso.
CLASIFICACIÓN DE PROCESOS
Procesos pesados versus procesos livianos
Los procesos que implementa un sistema operativo se clasifican según el grado en
que comparten la memoria.

• Procesos Pesados (proceso Unix): Los procesos no comparten ninguna porción


de la memoria. Cada proceso se ejecuta en su propio procesador virtual con CPU y
memoria. Todos los procesos sí comparten el mismo espacio de almacenamiento
permanente (el disco).
• Procesos Livianos o threads: Los threads comparten toda la memoria y el espacio
de almacenamiento permanente.
El primer tipo de procesos se dice pesado porque el costo de implementación en
tiempo de CPU y memoria es mucho más elevado que el de los procesos livianos.
Además la implementación de procesos pesados requiere de una MMU o Unidad de
Manejo de la Memoria. Esta componente de hardware del procesador se encarga de
la traducción de direcciones virtuales a reales. La implementación en software de
esta traducción sería demasiado costosa en tiempo de CPU, puesto que para
garantizar una verdadera protección habría que recurrir a un intérprete del lenguaje
de máquina.
Unix estándar sólo ofrece procesos pesados, pero como veremos existen
extensiones que implementan procesos livianos para Unix. Un ejemplo de sistema
de procesos livianos es el que implementaba el sistema operativo de los antiguos
computadores Commodore Amiga (1985), que no tenía la MMU necesaria para
implementar procesos pesados.
La ventaja de los procesos pesados es que garantizan protección. Si un proceso
falla, los demás procesos continúan sin problemas. En cambio si un thread falla,
esto causa la falla de todos los demás threads que comparten el mismo procesador.
La ventaja de los threads es que pueden comunicarse eficientemente a través de la
memoria que comparten. Si se necesita que un thread comunique información a otro
thread basta que le envíe un puntero a esa información. En cambio los procesos
pesados necesitan enviar toda la información a otros procesos pesados usando pipes,
sockets, mensajes o archivos en disco, lo que resulta ser más costoso que enviar tan
solo un puntero.
PREEMPTION VERSUS NON-PREEMPTION
Los procesos también se pueden clasificar según quién tiene el control para
transferir el procesador multiplexado de un proceso a otro:
• Procesos preemptive (con adelantamiento): Es el núcleo el que decide en qué
instante se transfiere el procesador real de un proceso al otro. Es decir un proceso
puede perder el control del procesador en cualquier instante.
• Procesos non-preemptive (sin adelantamiento): Es el proceso el que decide en que
momento se puede transferir el procesador real a otro proceso.
Los procesos de Unix son preemptive. Ejemplos de procesos non preemptive son los
que antiguamente ofrecía Windows hasta la versión 3.X o MacOS hasta la versión
6.X. En Windows 3.X si una aplicación entraba en un ciclo infinito, no había forma
de quitarle el procesador real, la única salida era el relanzamiento del sistema
operativo completo. Lo mismo ocurría en MacOS 6.X. Los procesos necesitaban ser
nonpreemptive para asegurar el funcionamiento adecuado de las aplicaciones que
databan de cuando estos mismos sistemas operativos eran mono-aplicación.
EL NANO SYSTEM
Dado que en Unix un proceso pesado corre en un procesador virtual es posible
implementar un sistema de threads que comparten el mismo espacio de direcciones
virtuales en un proceso Unix. Un ejemplo de estos sistemas es el nano System
(nSystem de ahora en adelante).
En vez de usar la palabra thread -que es difícil de pronunciar en castellano-
usaremos como sinónimo la palabra tarea. Las tareas de nSystem se implementan
multiplexando el tiempo de CPU del proceso Unix en tajadas de tiempo que se
otorgan por turnos a cada tarea, de la misma forma en que Unix multiplexa el
tiempo del procesador real para otorgarlo a cada proceso pesado.
De esta forma varios procesos Unix puede tener cada uno un enjambre de tareas que
comparten el mismo espacio de direcciones, pero tareas pertenecientes a procesos
distintos no comparten la memoria.
Ejemplos

Un ejemplo, en una situación de sobrecarga temporal del sistema, el Sistemas


Operativo puede decidir retardar la admisión de los procesos nuevos. Así se alivia la
carga del sistema, ya que hasta que un proceso no es admitido, éste no compite por
los recursos del sistema.

Otro ejemplo se da cuando el procesador encuentra una referencia a una dirección


de memoria virtual de una palabra que no está en la memoria principal, el sistema
operativo debe traer un bloque (página o segmento) que contiene la referencia, de la
memoria secundaria a la memoria principal. Después de hacer la solicitud de E/S
para traer el bloque de la memoria, el SO puede llevar acabo un cambio de contexto
para reanudar la ejecución de otro proceso; el proceso que cometió fallo de memoria
se pasa a estado bloqueado. Cuando el bloque mencionado se cargue en memoria, el
proceso se colocara en estado listo.

2. Los sistemas operativos necesitan cierta manera de crear procesos. En sistemas


muy simples o diseñado para ejecutar una sola aplicación.

 Usted como ingeniero debe definir los eventos principales que provocan la
creación de un proceso y realizar un ejemplo de proceso

R: // Hay cuatro eventos principales que provocan la creación de procesos:

 El arranque del sistema.


 La ejecución, desde un proceso, de una llamada al sistema para creación de
procesos.
 Una petición de usuario para crear un proceso.
 El inicio de un trabajo por lotes.
Generalmente, cuando se arranca un sistema operativo se crean varios procesos.
Algunos de ellos son procesos en primer plano; es decir, procesos que interactúan
con los usuarios (humanos) y realizan trabajo para ellos. Otros son procesos en
segundo plano, que no están asociados con usuarios específicos sino con una
función específica. Por ejemplo, se puede diseñar un proceso en segundo plano para
aceptar el correo electrónico entrante, que permanece inactivo la mayor parte del día
pero que se activa cuando llega un mensaje. Se puede diseñar otro proceso en
segundo plano para aceptar peticiones entrantes para las páginas Web hospedadas
en ese equipo, que despierte cuando llegue una petición para darle servicio.
Los procesos que permanecen en segundo plano para manejar ciertas actividades
como correo electrónico, páginas Web, noticias, impresiones, etcétera, se conocen
como demonios (daemons). Los sistemas grandes tienen comúnmente docenas de
ellos. En UNIX podemos utilizar el programa ps para listar los procesos en
ejecución. En Windows podemos usar el administrador de tareas. Además de los
procesos que se crean al arranque, posteriormente se pueden crear otros. A menudo,
un proceso en ejecución emitirá llamadas al sistema para crear uno o más procesos
nuevos, para que le ayuden a realizar su trabajo. En especial, es útil crear procesos
cuando el trabajo a realizar se puede formular fácilmente en términos de varios
procesos interactivos relacionados entre sí, pero independientes en los demás
aspectos. Por ejemplo, si se va a obtener una gran cantidad de datos a través de una
red para su posterior procesamiento, puede ser conveniente crear un proceso para
obtener los datos y colocarlos en un búfer compartido, mientras un segundo proceso
remueve los elementos de datos y los procesa. En un multiprocesador, al permitir
que cada proceso se ejecute en una CPU distinta también se puede hacer que el
trabajo se realice con mayor rapidez.

En los sistemas interactivos, los usuarios pueden iniciar un programa escribiendo un


comando o haciendo (doble) clic en un icono. Cualquiera de las dos acciones inicia
un proceso y ejecuta el programa seleccionado. En los sistemas UNIX basados en
comandos que ejecutan X, el nuevo proceso se hace cargo de la ventana en la que se
inició. En Microsoft Windows, cuando se inicia un proceso no tiene una ventana,
pero puede crear una (o más) y la mayoría lo hace. En ambos sistemas, los usuarios
pueden tener varias ventanas abiertas a la vez, cada una ejecutando algún proceso.
Mediante el ratón, el usuario puede seleccionar una ventana e interactuar con el
proceso, por ejemplo para proveer datos cuando sea necesario.
La última situación en la que se crean los procesos se aplica sólo a los sistemas de
procesamiento por lotes que se encuentran en las mainframes grandes. Aquí los
usuarios pueden enviar trabajos de procesamiento por lotes al sistema (posiblemente
en forma remota). Cuando el sistema operativo decide que tiene los recursos para
ejecutar otro trabajo, crea un proceso y ejecuta el siguiente trabajo de la cola de
entrada. Técnicamente, en todos estos casos, para crear un proceso hay que hacer
que un proceso existente ejecute una llamada al sistema de creación de proceso. Ese
proceso puede ser un proceso de usuario en ejecución, un proceso del sistema
invocado mediante el teclado o ratón, o un proceso del administrador de
procesamiento por lotes. Lo que hace en todo caso es ejecutar una llamada al
sistema para crear el proceso. Esta llamada al sistema indica al sistema operativo
que cree un proceso y le indica, directa o indirectamente, cuál programa debe
ejecutarlo.
En UNIX sólo hay una llamada al sistema para crear un proceso: fork. Esta llamada
crea un clon exacto del proceso que hizo la llamada. Después de fork, los dos
procesos (padre e hijo) tienen la misma imagen de memoria, las mismas cadenas de
entorno y los mismos archivos abiertos. Eso es todo. Por lo general, el proceso hijo
ejecuta después a execveo una llamada al sistema similar para cambiar su imagen de
memoria y ejecutar un nuevo programa. Por ejemplo, cuando un usuario escribe un
comando tal como sort en el shell, éste crea un proceso hijo, que a su vez ejecuta a
sort. La razón de este proceso de dos pasos es para permitir al hijo manipular sus
descriptores de archivo después de fork, pero antes de execve, para poder lograr la
redirección de la entrada estándar, la salida estándar y el error estándar. Por el
contrario, en Windows una sola llamada a una función de Win32 (CreateProcess)
maneja la creación de procesos y carga el programa correcto en el nuevo proceso.
Esta llamada tiene 10 parámetros, que incluyen el programa a ejecutar, los
parámetros de la línea de comandos para introducir datos a ese programa, varios
atributos de seguridad, bits que controlan si los archivos abiertos se heredan,
información de prioridad, una especificación de la ventana que se va a crear para el
proceso (si se va a crear una) y un apuntador a una estructura en donde se devuelve
al proceso que hizo la llamada la información acerca del proceso recién creado.
Además de CreateProcess, Win32 tiene cerca de 100 funciones más para
administrar y sincronizar procesos y temas relacionados.
Tanto en UNIX como en Windows, una vez que se crea un proceso, el padre y el
hijo tienen sus propios espacios de direcciones distintos. Si cualquiera de los
procesos modifica una palabra en su espacio de direcciones, esta modificación no es
visible para el otro proceso. En UNIX, el espacio de direcciones inicial del hijo es
una copia del padre, pero en definitiva hay dos espacios de direcciones distintos
involucrados; no se comparte memoria en la que se pueda escribir (algunas
implementaciones de UNIX comparten el texto del programa entre los dos, debido a
que no se puede modificar). Sin embargo, es posible para un proceso recién creado
compartir algunos de los otros recursos de su creador, como los archivos abiertos.
En Windows, los espacios de direcciones del hijo y del padre son distintos desde el
principio

3. Realizar un mapa conceptual donde se pueda evidenciar como se realiza la


Comunicación Y Sincronización Entre Procesos En Un Sistema Operativo. El mapa
conceptual debe contener

(Condiciones de carrera, regiones críticas, exclusión mutua con espera ocupada,


dormir y despertar, semáforo, monitores, transmisión de mensajes y barreras).
4. Como cree usted que el sistema operativo planifica la ejecución de los procesos, que
herramientas utiliza y como lo realiza.

R: // Conjunto de políticas y mecanismos incorporados al sistema operativo, a través


de un módulo denominado planificador, que debe decidir cuál de los procesos en
condiciones de ser ejecutado conviene ser despachado primero y qué orden de
ejecución debe seguirse. Esto debe realizarse sin perder de vista su principal
objetivo que consiste en el máximo aprovechamiento del sistema, lo que implica
proveer un buen servicio a los procesos existentes en un momento dado.

Existen 3 estados en los que puede encontrarse un proceso, estos son: "Listo",
"Bloqueado" y "En ejecución". Para el control de los mismos internamente son
almacenados en una lista, cada uno de los nodos guarda información de un proceso.
En esa información se almacena, entre otros aspectos, el estado en que se encuentra
el proceso, el tiempo que el proceso ha usado el CPU, e información de E/S
(entrada/salida). Los sistemas operativos cuentan con un componente llamado
planificador, que se encarga de decidir cuál de los procesos hará uso del procesador.
La toma de esta decisión, así como el tiempo de ejecución del proceso, estará dada
por un algoritmo, denominado Algoritmo de Planificación.

También podría gustarte