0% encontró este documento útil (0 votos)
219 vistas18 páginas

Sistemas Operativos Procesos

Un proceso consiste en un programa en ejecución, incluyendo su estado de ejecución y memoria reservada. Los procesos son creados por eventos como el inicio del sistema u órdenes de otros procesos, y pueden encontrarse en estados como ejecutando, listo, o bloqueado. Cada proceso se describe mediante una estructura de datos que incluye su estado, recursos asignados e información de planificación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
219 vistas18 páginas

Sistemas Operativos Procesos

Un proceso consiste en un programa en ejecución, incluyendo su estado de ejecución y memoria reservada. Los procesos son creados por eventos como el inicio del sistema u órdenes de otros procesos, y pueden encontrarse en estados como ejecutando, listo, o bloqueado. Cada proceso se describe mediante una estructura de datos que incluye su estado, recursos asignados e información de planificación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

UNIDAD 2

PROCESOS
¿Qué es un proceso?
 Un proceso es un programa en ejecución, incluyendo el valor del program counter, los
registros y las variables.
 Conceptualmente, cada proceso tiene un hilo (thread) de ejecución que es visto como un
CPU virtual.
 El recurso procesador es alternado entre los diferentes procesos que existan en el sistema,
dando la idea de que ejecutan en paralelo (multiprogramació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 son independientes y no comparten memoria (es decir, información)
con el proceso que los ha creado.
 Siempre que le pidamos a nuestra computadora que haga algo, los procesos asumirán el
trabajo y de esta manera el microprocesador dará ejecución al plan que realice el sistema
operativo a través de los procesos.
 Cada proceso tiene su contador de programa, registros y variables, aislados de otros
procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último caso
sucede, el sistema operativo usa la misma región de memoria de código, debido a que
dicho código no cambiará, a menos que se ejecute una versión distinta del programa.
Un proceso consiste en

 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.
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 la creación de otro proceso.
 Una petición de usuario para crear un proceso.
 El inicio de un trabajo por lotes.
 Los procesos de un sistema son creados a partir de otro proceso.
 Al creador se le denomina padre y al nuevo proceso hijo. Esto genera una jerarquía de
procesos en el sistema.
 En el diseño del sistema operativo se debe decidir, en el momento de creación de un nuevo
proceso, cuales recursos compartirán el proceso padre e hijo. Las opciones son que
compartan todo, algo o nada.
 También se debe determinar que sucede con los hijos cuando muere el padre. Pueden morir
también o cambiar de padre.
 Una vez creado el nuevo proceso tendrán un hilo (program counter) de ejecución propio.
El sistema genera un nuevo PCB para el proceso creado.
Tipos de procesos

Podemos clasificarlos en función de distintos criterios.


Según su diseño:
 Reutilizables: se cargan en memoria cada vez que se usan. Los programas de usuario suelen ser
de este tipo.
 Reentrantes: se carga una sola copia del código en memoria. Cada vez que se usan se crea un
nuevo proceso con su zona de datos propia, pero compartiendo el código.
Según su acceso a CPU y recursos:
 Apropiativos: acceden a los recursos y sólo los abandonan de forma voluntaria (mediante
instrucción CPU).
 No apropiativos: permiten a otros procesos apropiarse de los recursos que ahora poseen
Según su permanencia en memoria:
 Residentes: tienen que permanecer en memoria durante toda su evolución (desde creación hasta
terminación).
 Intercambiables (swappable): es lo más normal. El SO puede decidir llevarlos a disco a lo largo
de su evolución
Según su nivel de privilegio (no en todos los SO):
 Privilegiados: se ejecutan en modo supervisor.
 No privilegiados: los que normalmente ejecuta el usuario.
Según su propietario:
 Procesos de usuario: son los diseñados por los usuarios. Se ejecutan en modo no protegido.
 Procesos del sistema: son los que forman parte del SO (de E/S, de planificación de otros
procesos, etc).
Estados de los procesos

 Nuevo (new): Cuando el proceso es creado.


 Ejecutando (running): El proceso tiene asignado un procesador y está ejecutando sus
instrucciones.
 Bloqueado (waiting): El proceso está esperando por un evento (que se complete un pedido
de E/S o una señal).
 Listo (ready): El proceso está listo para ejecutar, solo necesita del recurso procesador.
 Finalizado (terminated): El proceso finalizó su ejecución.
 El modelo anterior de dos estados funcionaría bien con una cola FIFO y planificación por
turno rotatorio para los procesos que no están en ejecución, si los procesos estuvieran
siempre listos para ejecutar.
 En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se
encuentren listos, o que se deba esperar algún suceso antes de continuar, como una
operación de Entrada/Salida.
 Es por esto que se necesita un estado donde los procesos permanezcan bloqueados
esperando hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos
estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
Descripción de los procesos
Todo proceso se describe mediante su estado, nombre, recursos asignados, información contable,
etc.
Para ello se utiliza una estructura de datos que será el operando de las operaciones sobre procesos,
recursos y del planificador (scheduler).
Los campos de esta estructura son:
 Estado CPU: El contenido de esta estructura estará indefinido toda vez que el proceso está en
estado ejecutando (puesto que estará almacenado en la CPU indicada por procesador). Registro
de flags.
 Procesador: [1..#CPU]: Contendrá el número de CPU que está ejecutando al proceso (si está en
estado ejecutando), sino su valor es indefinido.
 Memoria: Describe el espacio virtual y/o real de direccionamiento según la arquitectura del
sistema. Contendrá las reglas de protección de memoria así como cual es compartida, etc..
 Estado del proceso: ejecutando, listo, bloqueado, etc.
 Recursos: Recursos de software (archivos, semáforos, etc.) y hardware (dispositivos, etc.).
 Planificación: Tipo de planificador.
 Prioridad: Podrá incluir una prioridad externa de largo aliento, o en su defecto una
prioridad interna dinámica de alcance reducido.
 Contabilización: Información contable como ser cantidad de E/S, fallos de páginas (page
faults), consumo de procesador, memoria utilizada, etc.
 Ancestro: Indica quién creó este proceso.
 Descendientes: Lista de punteros a PCBs de los hijos de este proceso.
Listas y colas de procesos

Los procesos, en los distintos estados que tienen, son agrupados en listas o colas:
 Lista de procesos del sistema (job queue): En esta lista están todos los procesos del
sistema. Al crearse un nuevo proceso se agrega el PCB a esta lista. Cuando el proceso
termina su ejecución es borrado.
 Cola de procesos listos (ready queue): Esta cola se compondrá de los procesos que estén en
estado listo. La estructura de esta cola dependerá de la estrategia de planificación utilizada.
 Cola de espera de dispositivos (device queue): Los procesos que esperan por un dispositivo
de E/S particular son agrupados en una lista específica al dispositivo. Cada dispositivo de
E/S tendrá su cola de espera.
Thread (hilos)

 Un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña


que puede ser planificada por un sistema operativo.
 Hay aplicaciones donde es necesario utilizar procesos que compartan recursos en forma
concurrente.
 IPC brindan una alternativa a nivel de sistema operativo.
 Los sistemas operativos modernos están proporcionando servicios para crear más de un
hilo (thread) de ejecución (control) en un proceso.
 Con las nuevas tecnologías multi-core esto se hace algo necesario para poder sacar mayor
provecho al recurso de procesamiento.
 De esta forma, se tiene más de un hilo de ejecución en el mismo espacio de
direccionamiento.
 Un Thread (Hilo) es una unidad básica de utilización de la CPU consistente en un juego de
registros y un espacio de pila. Es también conocido como proceso ligero.
 Cada thread contendrá su propio program counter, un conjunto de registros, un espacio
para el stack y su prioridad.
 Comparten el código, los datos y los recursos con sus hebras (thread) pares.
 Una tarea (o proceso pesado) está formado ahora por uno o varios threads.
 Un thread puede pertenecer a una sola tarea.
Ventajas de los hilos

 Compartir recursos: Los threads de un proceso comparten la memoria y los recursos que
utilizan. A diferencia de IPC, no es necesario acceder al kernel para comunicar o
sincronizar los hilos de ejecución.
 Economía: Es más fácil un cambio de contexto entre threads ya que no es necesario
cambiar el espacio de direccionamiento. A su vez, es más “liviano” para el sistema
operativo crear un thread que crear un proceso nuevo.
 Utilización de arquitecturas con multiprocesadores: Disponer de una arquitectura con más
de un procesador permite que los threads de un mismo proceso ejecuten en forma paralela.
 Repuesta: Desarrollar una aplicación con varios hilos de control (threads) permite tener un
mejor tiempo de respuesta.

También podría gustarte