0% encontró este documento útil (0 votos)
39 vistas4 páginas

Documento Sin Título

El documento define los conceptos clave de procesos en sistemas operativos. Un proceso es un programa en ejecución que tiene su propio contador de programa, registros y variables. Los procesos pueden encontrarse en diferentes estados como ejecutando, listo, bloqueado o terminado. Los procesos se comunican entre sí a través de mecanismos como memoria compartida o paso de mensajes.
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 PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Proceso padre,
  • Acceso a memoria,
  • Acceso a memoria rutinario,
  • Variables globales,
  • Información contable,
  • Comunicación interprocesos,
  • Intercambio de datos,
  • Ejecución paralela,
  • Modularidad,
  • Recursos asignados
0% encontró este documento útil (0 votos)
39 vistas4 páginas

Documento Sin Título

El documento define los conceptos clave de procesos en sistemas operativos. Un proceso es un programa en ejecución que tiene su propio contador de programa, registros y variables. Los procesos pueden encontrarse en diferentes estados como ejecutando, listo, bloqueado o terminado. Los procesos se comunican entre sí a través de mecanismos como memoria compartida o paso de mensajes.
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 PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Proceso padre,
  • Acceso a memoria,
  • Acceso a memoria rutinario,
  • Variables globales,
  • Información contable,
  • Comunicación interprocesos,
  • Intercambio de datos,
  • Ejecución paralela,
  • Modularidad,
  • Recursos asignados

PROCESOS

Definición de Proceso
•El principal concepto en cualquier sistema operativo es el de 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)
Contador de programa
Cada proceso tiene su program counter, y avanza cuando el proceso tiene asignado el
recurso procesador. A su vez, a cada proceso se le asigna un número que lo identifica entre
los demás: identificador de proceso (process id)
Memoria de los procesos
Un proceso en memoria se constituye de varias secciones:
• Código (text): Instrucciones del proceso. • Datos (data): Variables globales del proceso.
• Memoria dinámica (heap): Memoria dinámica que genera el proceso.
• Pila (stack): Utilizado para preservar el estado en la invocación anidada de procedimientos
y funciones.
Estados de los procesos
El estado de un proceso es definido por la actividad corriente en que se encuentra. Los
estados de un proceso son:
• 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.
• Diagrama de estados y transiciones de los procesos.(ver capítulo 3)
Transiciones entre estados
Nuevo ⇒ Listo – Al crearse un proceso pasa inmediatamente al estado listo. Listo ⇒
Ejecutando – En el estado de listo, el proceso solo espera para que se le asigne un
procesador para ejecutar (tener en cuenta que puede existir más de un procesador en el
sistema). Al liberarse un procesador el planificador (scheduler) selecciona el próximo
proceso, según algún criterio definido, a ejecutar. Ejecutando ⇒ Listo – Ante una
interrupción que se genere, el proceso puede perder el recurso procesador y pasar al
estado de listo. El planificador será el encargado de seleccionar el próximo proceso a
ejecutar.
Ejecutando ⇒ Bloqueado – A medida que el proceso ejecuta instrucciones realiza pedidos
en distintos componentes (ej.: genera un pedido de E/S). Teniendo en cuenta que el pedido
puede demorar y, además, si está en un sistema multiprogramado, el proceso es puesto en
una cola de espera hasta que se complete su pedido. De esta forma, se logra utilizar en
forma más eficiente el procesador. Bloqueado ⇒ Listo – Una vez que ocurre el evento que
el proceso estaba esperando en la cola de espera, el proceso es puesto nuevamente en la
cola de procesos listos. Ejecutando ⇒ Terminado – Cuando el proceso ejecuta sus última
instrucción pasa al estado terminado. El sistema libera las estructuras que representan al
proceso.
Bloque descriptor de proceso
El proceso es representado, a nivel del sistema operativo, a través del bloque descriptor de
proceso (Process Control Block) (ver imagen capitulo 3)
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

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.
Creación de procesos
Ej.: UNIX – UNIX provee el system call fork para la creación de un nuevo proceso. – La
invocación a esta función le retorna al padre el número de process id del hijo recién creado
y al hijo el valor 0. El hijo comienza su ejecución en el retorno del fork. – Además, se provee
del system call exec que reemplaza el espacio de memoria del proceso por uno nuevo
El proceso creador se denomina proceso padre y los nuevos procesos son los hijos de
dicho proceso. Cada uno de estos procesos nuevos puede a su vez crear otros procesos,
dando lugar a un árbol de procesos. La mayoría de los sistemas operativos (incluyendo
UNIX y la familia Windows de sistemas operativos) identifican los procesos mediante un
identificador de proceso unívoco o pid (process identifier), que normalmente es un número
entero. La siguiente figura ilustra un árbol de procesos típico en el sistema operativo Solaris,
indicando el nombre de cada proceso y su pid. En Solaris, el proceso situado en la parte
superior del árbol es el proceso sched, con el pid 0. El proceso scheú crea varios procesos
hijo, incluyendo pageouc y f sf lush. Estos procesos son responsables de la gestión de
memoria y de los sistemas de archivos. El proceso sched también crea el proceso [Link], que
sirve como proceso padre raíz para todos los procesos de usuario(ver imagen capitulo3)
Terminación de procesos
Un proceso termina cuando ejecuta su última instrucción y pide al sistema operativo que lo
elimine usando la llamada al sistema exit (). En este momento, el proceso puede devolver
un valor de estado (normalmente, un entero) a su proceso padre (a través de la llamada al
sistema v;ait ()). El sistema operativo libera la asignación de todos los recursos del proceso,
incluyendo las memorias física v virtual, los archivos abiertos y los búferes de E/S.
Terminación de procesos La terminación puede producirse también en otras circunstancias.
Un proceso puede causar la terminación de otro proceso a través de la adecuada llamada al
sistema (por ejemplo, TerminateProcess í ) en Win32). Normalmente, dicha llamada al
sistema sólo puede ser invocada por el padre del proceso que se va a terminar. En caso
contrario, los usuarios podrían terminar arbitrariamente los trabajos de otros usuarios
Un padre puede terminar la ejecución de uno de sus hijos por diversas razones, como por
ejemplo, las siguientes:
Terminación de procesos
• El proceso hijo ha excedido el uso de algunos de los recursos que se le han asignado.
Para determinar si tal cosa ha ocurrido, el padre debe disponer de un mecanismo para
inspeccionar el estado de sus hijos.
• La tarea asignada al proceso hijo ya no es necesaria.
• El padre abandona el sistema, y el sistema operativo no permite que un proceso hijo
continúe si su padre ya ha terminado
Comunicación interprocesos
Los procesos que se ejecutan concurrentemente pueden ser procesos independientes o
procesos cooperativos. Un proceso es independiente si no puede afectar o verse afectado
por los restantes procesos que se ejecutan en el sistema. Cualquier proceso que no
comparte datos con ningún otro proceso es un proceso independiente. Un proceso es
cooperativo si puede afectar o verse afectado por los demás procesos que se ejecutan en el
sistema. Evidentemente, cualquier proceso que comparte datos con otros procesos es un
proceso cooperativo.
Hay varias razones para proporcionar un entorno que permita la cooperación entre
procesos:
• Compartir información. Dado que varios usuarios pueden estar interesados en la misma
información (por ejemplo, un archivo compartido), debemos proporcionar un entorno que
permita el acceso concurrente a dicha información.
• Acelerar los cálculos. Si deseamos que una determinada tarea se ejecute rápidamente,
debemos dividirla en subtareas, ejecutándose cada una de ellas en paralelo con las demás.
Observe que tal aceleración sólo se puede conseguir si la computadora tiene múltiples
elementos de procesamiento, como por ejemplos varias CPU o varios canales de E/S.
• Modularidad. Podemos querer construir el sistema de forma modular, dividiendo las
funciones del sistema en diferentes procesos o hebras
. • Conveniencia. Incluso un solo usuario puede querer trabajar en muchas tareas al mismo
tiempo. Por ejemplo, un usuario pued1 estar editando, imprimiendo y compilando en
paralelo
Comunicación interprocesos
La cooperación entre procesos requiere mecanismos de comunicación interprocesos (IPC,
interprocess communication) que les permitan intercambiar datos e información. Existen dos
modelos fundamentales de comunicación interprocesos: (1) memoria compartida y (2) paso
de mensajes. En el modelo de memoria compartida, se establece una región de la memoria
para que sea compartida por los procesos cooperativos. De este modo, los procesos
pueden intercambiar información leyendo y escribiendo datos en la zona compartida. En el
modelo de paso de mensajes, la comunicación tiene lugar mediante el intercambio de
mensajes entre los procesos cooperativos.
Los dos modelos que acabamos de presentar son bastante comunes en los distintos
sistemas operativos y muchos sistemas implementan ambos. El paso de mensajes resulta
útil para intercambiar pequeñas cantidades de datos, ya que no existe la necesidad de
evitar conflictos. El paso de mensajes también es más fácil de implementar que el modelo
de memoria compartida como mecanismo de comunicación entre computadoras.
Comunicación interprocesos La memoria compartida es más rápida que el paso de
mensajes, ya que este último método se implementa normalmente usando llamadas al
sistema y, por tanto, requiere que intervenga el kernel, lo que consume más tiempo. Por el
contrario, en los sistemas de memoria compartida, las llamadas al sistema sólo son
necesarias para establecer las zonas de memoria compartida. Una vez establecida la
memoria compartida, todos los accesos se tratan como accesos a memoria rutinarios y no
se precisa la ayuda del kernel

Common questions

Con tecnología de IA

Cooperative process environments are provided for information sharing, accelerating computations, achieving modularity, and improving user convenience. Enabling concurrent data access, dividing tasks for faster execution, structuring systems into modules, and simultaneously conducting multiple tasks enhance productivity and efficiency. This requires robust interprocess communication methods to handle data sharing and synchronization .

A process in a computer system is constituted by several components: the program counter, registers, and variables as part of a program in execution. Each process has its own execution thread, which is perceived as a virtual CPU, and includes multiple memory sections such as the code (instructions), data (global variables), dynamic memory (heap), and stack (to preserve the state during nested procedure and function calls).

Process memory management ensures efficient allocation using a memory descriptor in the Process Control Block (PCB), outlining the virtual or real addressing space according to system architecture. It includes memory protection rules and information on shared memory .

The Process Control Block (PCB) is vital in process management as it contains all the information about a process needed for its execution and management. It stores the process state, CPU register information, memory management details, assigned resources, process scheduling priority, accounting information, and process hierarchy information such as ancestors and descendants .

Processes have a hierarchical relationship where a parent process can create child processes, leading to a tree structure. Upon termination, a parent can end its child's process for reasons like resource overuse or task completion, ensuring no orphans unless system policies allow their continuation or reassignment. This hierarchy aids in structured system management and resource allocation .

Process termination occurs upon completion of the last instruction via the 'exit' system call, freeing resources. Alternatively, a process can be terminated due to resource overuse, or task redundancy. Parent processes can also terminate children when exiting the system. Mechanisms involve system calls like 'TerminateProcess', with access predominantly restricted to parent processes to prevent unauthorized terminations .

Modularity in process design allows system functions to be divided into separate processes or threads, improving manageability and reuse. It enhances concurrent execution by enabling parallel processing of independent modules, thus increasing computational efficiency and response time, especially in systems with multiple processing elements like CPUs and I/O channels .

In process management, the main state transitions include: New to Ready (process creation and readiness), Ready to Running (when selected by the scheduler to execute), Running to Ready (when interrupted), Running to Blocked (waiting for an event like I/O), Blocked to Ready (event occurrence), and Running to Terminated (process completion). These transitions signify how processes are managed, showcasing their lifecycle and ensuring efficient CPU resource utilization in concurrent systems .

In UNIX systems, the 'fork' system call is crucial for process creation, as it duplicates the process, returning the child's process ID to the parent and 0 to the child. The 'exec' system call is significant for modifying execution, allowing the transformation of a process's memory space with a new program, effectively overlaying new instructions and data .

The two primary interprocess communication models are shared memory and message passing. Shared memory is generally faster as it does not require kernel intervention after initial memory setup, allowing direct memory access. In contrast, message passing involves kernel intervention for sending and receiving messages, which can slow down the process but allows for simpler implementation across different systems, especially when computers are involved .

También podría gustarte