capitulo iii. control y descripcion de procesos
TRANSCRIPT
Control y descripción de
procesos
o Un computador está
consituido por varios recursos (HW) compartidos.
o Las aplicaciones de computador son desarrollados para ejecutar una tarea en particular.
o Resultaría poco (nada) práctico crear aplicaciones para una plataforma de hardware en particular.
• El S.O. fue desarrollado
para proveer
“interfaces” a través
de abstracciones
simples y uniformes del
HW y que serán
usadas por las
aplicaciones.
Resumen de conceptos revisados
• El S.O. gestiona la ejecución de aplicaciones.
• Los recursos están disponibles para múltiples aplicaciones.
• El procesador “físico” es conmutado entre múltiples aplicaciones de tal forma que parecería que todas se ejecutan al mismo tiempo.
• El procesador y los dispositivos de E/S deben ser usados de forma eficiente.
o Evitar monopolios.
o Planificar la ejecución de aplicaciones de manera justa, no necesariamente equititativa
Elementos de un proceso
• Cuando el procesador comienza a ejecutar el código máquina de un programa , nosotros referiremos a esta entidad en ejecución como PROCESO
• Los dos elementos esenciales de un proceso son:
Código máquina y datos del programa.
Puede ser compartido con otros procesos que están ejecutándose en el mismo programa.
Un conjunto de datos asociados con el código.
• Cuando un programa está en ejecución, este proceso puede ser caracterizado de forma única por algunos elementos , que inlcuyen:
Identificador (PID)
estado prioridad contador de programa
Punteros de memoria
(código y datos)
Datos de contexto
(Registros)
Información de estado de E/S
Información de contabilidad
(CPU usado)
Bloque de control de proceso
Contiene los elementos de un
proceso.
Es posible interrumpir un proceso en
ejecución y reanudar más tarde de la
ejecución, como si la interrupción no
hubiese sucedido.
Es creado y gestionado por el S.O.
Es la estructura clave que permite la
ejecución de varios procesos
(multiprocesamiento).
Proceso: Código máquina del
programa + datos asociados + bloque
de control de proceso.
Identifier
Figure 3.1 Simplified Process Control Block
State
Priority
Program counter
Memory pointers
Context data
I /O status
information
Accounting
information
Ejecución de procesos
Rastreo
El comportamiento de un proceso puede ser rastreado por las instrucciones que son ejecutadas por éste.
El comportamiento del procesador puede ser
caracterizado mostrando el rastreo de varios procesos
intercalados.
Planificador
Dispatcher
Ejecuta un programa
pequeño que conmuta de un proceso a otro.
Ejecución de procesos
Main MemoryAddress
Dispatcher
Process A
Process B
Process C
Program Counter0
100
5000
8000
8000
12000
Figure 3.2 Snapshot of Example Execution (Figure 3.4)
at Instruction Cycle 13
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
8000
8001
8002
8003
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
(a) Trace of Process A (b) Trace of Process B (c) Trace of Process C
5000 = Starting address of program of Process A
8000 = Starting address of program of Process B
12000 = Starting address of program of Process C
Figure 3.3 Traces of Processes of Figure 3.2
Ejecución de procesos (desde la perspectiva
de cada proceso)
1 5000
2 5001
3 5002
4 5003
5 5004
6 5005
-------------------- Timeout
7 100
8 101
9 102
10 103
11 104
12 105
13 8000
14 8001
15 8002
16 8003
----------------I/O Request
17 100
18 101
19 102
20 103
21 104
22 105
23 12000
24 12001
25 12002
26 12003
27 12004
28 12005
-------------------- Timeout
29 100
30 101
31 102
32 103
33 104
34 105
35 5006
36 5007
37 5008
38 5009
39 5010
40 5011
-------------------- Timeout
41 100
42 101
43 102
44 103
45 104
46 105
47 12006
48 12007
49 12008
50 12009
51 12010
52 12011
-------------------- Timeout
100 = Starting address of dispatcher program
Shaded areas indicate execution of dispatcher process; first and third columns count instruction cycles;
second and fourth columns show address of instruction being executed
Figure 3.4 Combined Trace of Processes of Figure 3.2
Ejecución de procesos (desde la perspectiva
del procesador)
Modelo de proceso con 2 estados
Not
Running Running
Figure 3.5 Two-State Process Model
Dispatch
Dispatch
Queue
Enter Exit
Pause
Pause
Enter Exit
(a) State transition diagram
(b) Queuing diagram
Processor
La principal responsabilidad de los sistemas
operativos es controlar la ejecución de procesos.
Not
Running Running
Figure 3.5 Two-State Process Model
Dispatch
Dispatch
Queue
Enter Exit
Pause
Pause
Enter Exit
(a) State transition diagram
(b) Queuing diagram
Processor
Modelo de proceso con 2 estados
Hay una sola cola, en donde cada entrada es un
puntero al bloque de control de un proceso en
particular.
¿Cuándo se crean procesos?
• Creados por el S.O. para proveer servicios y evitar
que el usuario tenga que esperar por él.
• ¿Que sucede cuando envío a imprimir un archivo
desde M. Word?
• ¿Como funciona un servidor web cuando recepta peticiones de los usuarios?
• Creados por procesos existentes con el propósito
de explotar el paralelismo.
• Cuando requieras ejecutar varias tareas de
forma concurrente.
• ¿Ejm?
Trabajo grupal Creación de procesos
• Objetivo: Plantear posibles ‘escenarios’ en donde
sea necesaria la creación de procesos que se
ejecuten de forma concurrente.
• Procedimiento: o Hacer grupos de 5 o 6 personas.
o Discutir y plantear posibles escenarios, en el área de nuestra
especialidad, en donde es necesaria la creación de procesos.
o Exponer ante sus compañeros el planteamiento del grupo, justificando la
inclusión de cada escenario.
• Tiempo requerido: 15 minutos
Creación de procesos
‘Engendrado’ de un proceso
Process spawning
• Cuando el S.O, crea un proceso ante la solicitud explícita de otro proceso.
Proceso Padre
• Es el proceso original, el engendrador.
Proceso Hijo
• Es el nuevo proceso.
Cooperación
Finalización de procesos • El S,O. debe proveer un mecanismo para
indicar que un proceso a terminado. o Se incluye una instrucción HALT, que genera una interrupción para
alertar al S.O. que un proceso se ha completado.
• ¿Cuándo? o Proceso completado.
o Límite de tiempo excedido.
o Memoria no disponible.
o Violación de acceso a memoria.
o Error de protección.
o Error aritmético.
o Falla de E/S.
o Intento de ejecución de instrucción privilegiada.
o Mal uso de datos.
o Intervención del S.O. Ejm: deadlock.
o Finalización del proceso padre.
Modelo de proceso de 5 estados
New Ready
Blocked
Running Exit
Figure 3.6 Five-State Process Model
AdmitDispatch
Timeout
Release
Event
Wait
Event
Occurs
Dispatcher
= Running = Ready
Figure 3.7 Process States for Trace of Figure 3.4
= Blocked
0 5 10 15 20 25 30 35 40 45 50
Process C
Process B
Process A
Modelo de proceso de 5 estados
Figure 3.8 Queuing Model for Figure 3.6
Dispatch
Timeout
Event Wait
Event 1 Wait
Event 2 Wait
Event n Wait
Event
Occurs
Ready Queue
Blocked Queue
AdmitRelease
Processor
Dispatch
ReleaseReady QueueAdmit
Processor
Timeout
Event 1 QueueEvent 1
Occurs
Event 2
Occurs
Event n
Occurs
Event 2 Queue
Event n Queue
(a) Single blocked queue
(b) Multiple blocked queues
Modelo de proceso de 5 estados
Procesos suspendidos o Las tareas de E/S son mucho más lentas que
las tareas que ejecuta el procesador.
• El procesador en un sistema monotarea pasaría la mayor parte del tiempo en reposo.
• En un sistema multitarea, el modelo presentado en la
diapositiva enterior resuelve el problema parcialmente.
o Tengo muchos procesos y cuando uno se bloquea conmuto a otro
proceso. Sin embargo, aún el procesador podría pasar mucho tiempo
en reposo.
• Solución: Acomodar más procesos en memoria principal.
• Aparece otro problema. Sabemos que la memoria principal es un recurso limitado. ¿Qué ocurre con los procesos bloqueados por un período de tiempo considerable? ¿ocupan memoria?.
• Solución: Swapping
Procesos suspendidos o Swapping.
• Mover los procesos bloqueados, que se hallan en memoria principal, hacia el disco duro.
• El S.O. mueve los procesos que no están en estado READY hacia una cola de procesos suspendidos. Ahora, el S.O. puede traer otros procesos suspendidos o nuevos procesos creados (NEW).
Even
t
Occ
urs
New
Suspend
Ready
Blocked
Running Exit
Figure 3.9 Process State Transition Diagram with Suspend States
Admit
(a) With One Suspend State
Suspend
Eve
nt W
ait
Even
t
Occ
urs
Activat
e
Dispatch
Timeout
Release
Ready/
Suspend
New
Ready
Blocked
Running Exit
Adm
itAdm
it
(b) With Two Suspend States
Eve
nt W
ait
Even
t
Occ
urs
Dispatch
Timeout
Activate
Suspend
Suspend
Activate
Suspend
Release
Blocked/
Suspend
Procesos suspendidos
Razones para la suspensión de un proceso
• Swapping: El S.O. necesita liberar suficiente memoria principal para traer un proceso que está listo para ejecutarse.
• Otra razón del S.O. EL S.O. puede suspender un proceso en background que es sospechoso de causar un problema
• Solicitudes interactiva de usuario. Un usuario desea suspender la ejecución de una aplicación con propósitos de depuración de programa.
• Temporización: Un proceso es ejecutado de forma periódica (Ejm: Proceso de monitorización del sistema). Entonces será suspendido esperando el próximo intervalo de tiempo.
• Solicitud del proceso padre: El proceso padre solicita la suspensión de sus procesos hijos.
DESCRIPCION DE PROCESOS
Processor I /O I /O
Figure 3.10 Processes and Resources (resource allocation at one snapshot in time)
I /OMain
Memory
Computer
Resources
Virtual
Memory
P1 P2 Pn
Procesos y Recursos
“El S.O. es una entidad que gestiona el uso
de recursos del sistema mediante
procesos”.
Memory
Devices
Files
Processes
Process 1
Memory Tables
Process
Image
Process
1
Process
Image
Process
n
I /O Tables
File Tables
Figure 3.11 General Structure of Operating System Control Tables
Primary Process Table
Process 2
Process 3
Process n
Estructura General de las tablas de control del S.O.
• Deben ser administradas por el S.O.
• Todos los procesos deben estar
referenciados a memoria, E/S y
archivos directa o indirectamente.
• ¿Cómo el S.O. crea las tablas la
primera vez? o Se requiere de una configuración inicial básica del
entorno (cuánta memoria existe, que dispositivos
de E/S existen y cuales son sus identificadores)
•El lugar donde está el proceso.
•Los atributos del proceso que son necesarios para su gestión.
¿Qué necesita el S.O. para
gestionar y controlar
un proceso?
Process
IdentificationProcess
Control
Block
Processor State
Information
Process Control
Information
User Stack
Private User
Address Space
(Programs, Data)
Shared Address
Space
Process
Identification
Process 1 Process 2 Process n
Processor State
Information
Process Control
Information
User Stack
Private User
Address Space
(Programs, Data)
Shared Address
Space
Process
Identification
Processor State
Information
Process Control
Information
User Stack
Private User
Address Space
(Programs, Data)
Shared Address
Space
Figure 3.13 User Processes in Virtual Memory
Process Identification
Identifiers Numeric identifiers that may be stored with the process control block include
•Identifier of this process
•Identifier of the process that created this process (parent process) •User identifier
Processor State Information
User-Visible Registers
A user-visible register is one that may be referenced by means of the machine language that the
processor executes while in user mode. Typically, there are from 8 to 32 of these registers, although some RISC implementations have over 100.
Control and Status Registers These are a variety of processor registers that are employed to control the operation of the processor.
These include
•Program counter: Contains the address of the next instruction to be fetched
•Condition codes: Result of the most recent arithmetic or logical operation (e.g., sign, zero, carry, equal, overflow)
•Status information: Includes interrupt enabled/disabled flags, execution mode
Stack Pointers
Each process has one or more last-in-first-out (LIFO) system stacks associated with it. A stack is used
to store parameters and calling addresses for procedure and system calls. The stack pointer points to the top of the stack.
Process Control Information
Scheduling and State Information This is information that is needed by the operating system to perform its scheduling function. Typical
items of information:
•Process state: Defines the readiness of the process to be scheduled for execution (e.g., running, ready, waiting, halted).
•Priority: One or more fields may be used to describe the scheduling priority of the process. In
some systems, several values are required (e.g., default, current, highest-allowable)
•Scheduling-related information: This will depend on the scheduling algorithm used. Examples are the amount of time that the process has been waiting and the amount of time that the process
executed the last time it was running.
•Event: Identity of event the process is awaiting before it can be resumed.
Data Structuring
A process may be linked to other process in a queue, ring, or some other structure. For example, all processes in a waiting state for a particular priority level may be linked in a queue. A process may
exhibit a parent-child (creator-created) relationship with another process. The process control block
may contain pointers to other processes to support these structures.
Interprocess Communication
Various flags, signals, and messages may be associated with communication between two
independent processes. Some or all of this information may be maintained in the process control block.
Process Privileges Processes are granted privileges in terms of the memory that may be accessed and the types of
instructions that may be executed. In addition, privileges may apply to the use of system utilities and
services.
Memory Management
This section may include pointers to segment and/or page tables that describe the virtual memory
assigned to this process.
Resource Ownership and Utilization
Resources controlled by the process may be indicated, such as opened files. A history of utilization of the processor or other resources may also be included; this information may be needed by the
scheduler.
• Cada proceso tiene asignado un identificador único (PID) que sirve como índice en la tabla de procesos.
• Muchas de las tablas controladas por el S.O. pueden usar los PID para establecer una referencia crazada con las tablas de procesos.
• Las tablas de memoria pueden ser organizadas para proveer un mapa de memoria con una indicación del proceso al que se le ha asignado cada región.
• Cuando un proceso se comunica con otro, el PID informa al S.O. el destino de una comunicación en particular.
• La relación entre procesos padres e hijos es mantenida a través de los PID.
Running
Ready
Blocked
Process
Control Block
Figure 3.14 Process List Structures
CONTROL DE PROCESOS
Modo Usuario
o Menos privilegios
o Todos los
programas de
usuario se
ejecutan de este
modo.
Modo Kernel
o Máximos privilegios.
o Lo ejecuta el kernel
del S.O. Para la
gestión de
procesos, memoria,
E/S, archivos, etc.
• El procedimiento que lleva a cabo es el
siguiente:
Asigna un identificador único al proceso creado.
Asigna espacio de memoria para el proceso (en función de la imagen del proceso)
Se inicializa el bloque de control de procesos.
Configura las relaciones de forma apropiada ( en la cola adecuada)
Crea o expande otras estructurasd de datos para mantener la contabilidad por ejemplo.
Mecanismos para la interrupción de la
ejecución de procesos
Mecanismo Causa Uso
Interrupción Externa a la ejecución de la instrucción actual.
Reacción a eventos externos asíncronos.
Trap Asociada a la ejecución de la instrucción actual
Manejo de un error o una condición de excepción.
Llamada al sistema Solicitud explícita Llamada a una función del S.O.
Interrupciones del sistema
Interrupción
• Debido a un evento que es externo e independiente del proceso que se ejecuta actualmente.
o Interrupción de reloj.
o Interrupción de E/S
o Falla de memoria.
• Time slice
o Máxima cantidad de tiempo que un proceso puede ejecutarse antes de ser interrumpido.
Trap
• Un error o condición de
excepción generado dentro del proceso que
se ejecuta actualmente.
• EL S.O. determina si una
condición es fatal.
o Finaliza el proceso si es
necesario.
o Notifica al usuario y
continua.
Si no hay interrupciones pendientes para el procesador.
Procede a apuntar a la siguiente instrucción a ejecutar.
Si hay interrupciones pendientes para el procesador
Setea el contador de programa (PC), hacia el inicio de la rutina que
maneja la interrupción.
Conmuta desde el modo usuario al modo kernel, para ejecutar instrucciones privilegiadas.
Consideraciones de seguridad
• Los privilegios determinan los recursos a los que puede acceder un proceso (regiones de memoria, archivos, instrucciones privilegiadas, etc).
• Un proceso que se ejecuta en favor de un usuario tiene los privilegios que el S.O. reconoce para el usuario.
• En un sistema típico, los más altos privilegios se conoce como administrador o acceso root. o Tiene el control completo del sistema, puede agregar o cambiar
programas y archivos, monitorear otros procesos, etc.
• Una consideración de diseño clave es prevenir, o al menos detectar el malware que intenta ganar acceso como root.
Gestión de procesos en LINUX
Created
Sleep,
Swapped
Ready to Run
In Memory
Ready to Run
Swapped
Asleep in
MemoryZombie
Kernel
Running
User
Running
Preempted
fork
not enough memory
(swapping system only)enough
memory
swap in
swap out
swap out
wakeupwakeupsleep
return
preempt
return
to user
system call,
interrupt
exit
reschedule
process
interrupt,
interrupt return
Figure 3.17 UNIX Process State Transition Diagram
Diagrama de transición de estados
de un proceso en LINUX
User-Level Context Process text Executable machine instructions of the program Process data Data accessible by the program of this process
User stack Contains the arguments, local variables, and pointers for functions
executing in user mode
Shared memory Memory shared with other processes, used for interprocess
communication
Register Context Program counter Address of next instruction to be executed; may be in kernel or
user memory space of this process
Processor status register Contains the hardware status at the time of preemption; contents
and format are hardware dependent
Stack pointer Points to the top of the kernel or user stack, depending on the mode
of operation at the time or preemption
General-purpose registers Hardware dependent
System-Level Context Process table entry Defines state of a process; this information is always accessible to
the operating system U (user) area Process control information that needs to be accessed only in the
context of the process
Per process region table Defines the mapping from virtual to physical addresses; also
contains a permission field that indicates the type of access
allowed the process: read-only, read-write, or read-execute
Kernel stack Contains the stack frame of kernel procedures as the process
executes in kernel mode
Imagen de un proceso en LINUX
Process status Current state of process.
Pointers To U area and process memory area (text, data, stack).
Process size Enables the operating system to know how much space to allocate
the process.
User identifiers The real user ID identifies the user who is responsible for the
running process. The effective user ID may be used by a process
to gain temporary privileges associated with a particular program;
while that program is being executed as part of the process, the
process operates with the effective user ID.
Process identifiers ID of this process; ID of parent process. These are set up when the
process enters the Created state during the fork system call.
Event descriptor Valid when a process is in a sleeping state; when the event occurs,
the process is transferred to a ready-to-run state.
Priority Used for process scheduling.
Signal Enumerates signals sent to a process but not yet handled.
Timers Include process execution time, kernel resource utilization, and
user-set timer used to send alarm signal to a process.
P_link Pointer to the next link in the ready queue (valid if process is ready to execute).
Memory status Indicates whether process image is in main memory or swapped
out. If it is in memory, this field also indicates whether it may be
swapped out or is temporarily locked into main memory.
Entrada en la tabla de procesos.
• La creación de procesos es mediante la
llamada al sistema fork().
• Al ejecutar fork, lo que sucede es lo siguiente:
1
• Asigna un slot en la tabla de procesos, para el nuevo proceso.
2 • Asigna un identificador único al proceso hijo.
3
• Hace una copia de la imagen del proceso padre, con excepción de la memoria compartida.
4
• Incremente los contadores para cualquier archivo perteneciente al padre, para reflejar que un proceso adicional es ahora también dueño de estos archivos.
5 • Setea el estado del proceso hijo a un estado ready
• Después de la creación del proceso, el kernel
puede hacer lo siguiente, como parte de la rutina
del planificador:
o Mantenerse en el proceso padre.
o Transferir el control al proceso hijo.
o Transferir el control a otro proceso.
Procesos en LINUX • Listado de procesos
o ps: Lista todos los procesos creados por el terminal actual.
• PID: Process Identifier
• TTY: Terminal Type (Ingrese tty para observar el terminal en el que se encuetra).
• TIME: Tiempo de CPU usado desde que el proceso inicio.
• CMD: Comando ejecutado para ejecutar el proceso.
o pstree: Lista los procesos en forma de árbol.
o top: Muestra un snapshot de los procesos en tiempo real.
Procesos en LINUX getpid y getppid
• Obteniendo el PID de un proceso. o getpid(): Retorna el PID del proceso que se está ejecutando.
o getppid(): Retorna el PID del proceso padre del proceso que se está ejecutando.
• Compilar y ejecutar el programa desde el shell de Linux. o ¿Cuál es el PPID?
o ¿A quién pertenece el proceso padre?
• Utilice el comando cat para ver el contenido del archivo /proc/sys/kernel/pid_max o ¿Qué indica este valor?
Procesos en LINUX system
• Creación de procesos por medio de la función
system o Crea un proceso corriendo sobre el shell para la ejecución de un
comando.
o Retorna 0 cuando la ejecución es satisfactoria.
Procesos en LINUX system
• Creación de procesos por medio de la función
system o Crea un proceso corriendo sobre el shell para la ejecución de un
comando.
o Retorna 0 cuando la ejecución es satisfactoria.
Procesos en LINUX fork
• Creación de procesos mediante la llamada al
sistema fork(). o Duplica un proceso, llamado proceso hijo.
• El proceso padre continua la ejecución del proceso desde el punto
donde fork fue llamado.
• El proceso hijo también ejecuta el mismo programa, desde el mismo
punto.
o ¿Cómo difieren esos procesos?
• Primero el proceso hijo tiene un nuevo PID, distinto al del proceso
padre.
o Ambos pueden ser obtenidos mediante la llamada a la función
getpid().
• El valor que retorna fork() difiere en el proceso hijo y en el proceso
padre.
o El valor retornado en el proceso padre es el PID del hijo.
o El valor de retorno en el proceso hijo es cero.
Procesos en LINUX ejemplo fork
Procesos en LINUX exec
• Las funciones exec reemplazan el programa en
ejecución de un proceso con otro programa.
• Cuando un programa llama a la función exec, el
proceso deja de ejecutar el programa actual y
comienza a ejecutar el nuevo programa desde el
inicio.
• Hay varias funciones exec que varían ligeramente y
que siguen ciertas reglas.
Procesos en LINUX exec
• Las funciones que contienen la letra p en sus nombres
(execvp y execlp): o Aceptan los nombres del programa y buscan el programa por su nombre en la ruta
de ejecución actual.
o Si no se especifica la p, se debe proporcionar toda la ruta del programa.
• Las funciones que contienen la letra v en sus nombres (execv,
execvp, execve): o Aceptan una lista de argumentos en un arreglo de punteros a cadenas de carateres
(terminan con un NULL).
• Las funciones que contienen la letra l en sus nombres (execl,
execlp, execle): o Aceptan una lista de argumentos usando el mecanismo varargs de C.
• Las funciones que contienen la letra e en sus nombres
(execve y execle): o Aceptan un arreglo con variables de entorno como argumento adicional (terminan
con NULL). Cada cadena de caracteres debe tener la forma “VARIABLE=value
Procesos en Linux exec
• Ejemplo simple: Paso de parámetros varargs a un
programa en C:
Procesos en LINUX (fork y exec)
• El uso de ambas funciones es un patrón común. o Primero se crea el proceso y luego se ejecuta un subprograma. Esto
permite que el programa llamante siga con el ejecución en el proceso
padre, mientras que el proceso hijo inicia con la ejecución de otro
programa.
A incluir en el informe semanal…
• ¿Qué hace el comando
nice de LINUX? o ¿Cuándo es necesario el login como
root?
o ¿Para qué será importante el comando
nice?
Procesos en LINUX Señales (Signals)
• Una señal es un mensaje asíncrono ‘especial’ enviado a un proceso.
• Las señales con un mecanismo de comunicación y manipulación de procesos.
• Cuando un proceso recibe una señal, éste la procesa de forma inmediata.
• Cada señal está identificada por un número (o su nombre de constante). o En Linux para usar las señales se debe incluir el archivo de cabecera signal.h
• Cuando se recibe una señal, el proceso detiene su ejecución normal. En su lugar, ejecuta una rutina signal-handler. o Al terminar de ejecutar la rutina de manejo de señal retorna a la ejecución del
programa.
Identificador Nombre Descripción Acción por defecto
1 SIGHUP Terminal colgado o proceso muerto.
Terminar el proceso.
4 SIGILL Instrucción ilegal Terminar el proceso y volcado de memoria.
11 SIGSEGV El S.O. informa: Violación de acceso a memoria
Terminar el proceso y volcado de memoria.
8 SIGFPE El S.O. informa: Excepción de punto flotante.
Terminar el proceso y volcado de memoria.
15 SIGTERM Un proceso solicita la finalización de otro proceso.
Pregunta si finaliza el proceso.
9 SIGKILL Un proceso finaliza otro proceso de forma unilateral.
Terminar el proceso.
30, 10 y 16 SIGUSR1 Señal definida por el usuario 1
Terminar el proceso.
31, 12 y 17 SIGUSR2 Señal definida por el usuario 2
Terminar el proceso.
Procesos en LINUX - Señales (Signals)
Procesos en LINUX Señales (Signals)
• La función sigaction es una función que permite
modificar la acción, “disposition”, por defecto a
ejecutar cuando se recibe una señal. o Hay que ser cuidadosos en la implementación de una nueva rutina para
al manejo de la señal. ¿Por qué?
Procesos en LINUX Finalización de proceso
• Hemos visto que el comando kill permite enviar un mensaje a un proceso específico. o Kill –KILL 3450 (Envía la señal KILL (9) al proceso cuyo PID es 3450).
• Para enviar una señal desde un programa en C, hay que utilizar la función kill con dos parámetros de entrada: o kill(pid, señal)
o Donde:
• pid es el identificador del proceso a emitir la señal.
• señal es el tipo de señal a emitir.
o Por ejemplo kill(pid_hijo, SIGKILL), termina el proceso cuyo PID está contenido en pid_hijo.
o Se debe usar los archivos de cabecera sys/types.h y signal.h para el uso de la función kill.
Procesos en LINUX Esperando por la finalización de un proceso.
• ¿Qué sucedió con el programa en donde se crea un proceso hijo para imprimir la salida del comando “ls -l /”?
• No olvidemos que los procesos se ejecutan de
forma independiente.
• ¿Podemos predecir cual se ejecutará primero?
• ¿Qué ocurre en un S.O. multitarea?
• Se puede lograr que el proceso padre espere a
que los procesos hijo terminen su ejecución usando
la familia de llamadas al sistema wait.
Procesos en LINUX Esperando por la finalización de un proceso.
Proceso en LINUX wait
• wait. Bloquea al proceso llamante hasta que sus procesos hijos salga (o un error ocurra). o Retorna el estado por medio de un puntero a entero.
Procesos en LINUX wait
Es necesario para el uso de
WEXITSATUS y WIFEXITED
Espera q que el proceso
hijo termine