Sistema operativo notes-002 gestión de procesos y multiproceso

Alguna información complementaria, el marco organizacional es más arbitrario ~

La introducción de procesos: después de la aparición de los sistemas multiprograma, la capacidad para describir conceptos de programas estáticos es insuficiente. Se introduce un nuevo concepto para describir la situación dentro del sistema y describir las reglas de actividad de varias operaciones dentro del sistema.

Control de procesos

Primitivas de control de procesos

Para gestionar eficazmente los procesos en el sistema, normalmente el sistema proporciona una serie de operaciones básicas, estas operaciones se denominan primitivas. Las primitivas de control de procesos comúnmente utilizadas son:

Establecimiento de primitivas de proceso
La tarea principal de esta primitiva es establecer un bloque de control de proceso PCB para el proceso establecido y completar los valores iniciales correspondientes. El proceso de operación principal es aplicar primero al espacio de la PCB del sistema para asignar una PCB inactiva, y luego inicializar la entrada de la PCB del proceso hijo de acuerdo con los parámetros proporcionados por el proceso principal, y finalmente devolver un nombre interno del proceso.
Parámetros proporcionados generalmente: nombre del proceso (identificador externo) n, el estado inicial del procesador (o el valor inicial de la escena en ejecución del proceso, se refiere principalmente al valor inicial de cada registro y palabra de estado del programa) S0, el número de prioridad k0, el proceso padre se asigna al hijo El área de memoria principal inicial M0 del proceso y otras listas de recursos (tablas de recursos múltiples) R0, etc.
El trabajo de establecer primitivas de proceso se describe a grandes rasgos como:

procedure Create(n,S0,k0,M0,R0,acc)
begin
	i:=Get New Internal Name(n); // 调用查找进程名过程,参数为进程外部名。查找对象为PCB集合,如果同名则返回出错信息
	Id(i):=n;
	Priority(i):=k0;
	Cpustate(i):=S0;
	Main Store(i):=M0;
	Resources(i):=R0;
	Status(i):='Readys'; // 设置为‘挂起就绪’
	Parent(i):=*;
	Set Accounting Data; // 在PCB中(或其他相应表中)建立记账信息,这也是调用‘记账过程’
	Insert(RL,i);
end.

Suspender las primitivas del proceso
solo se pueden suspender a sí mismas oa sus descendientes.
El proceso de comando se describe a continuación:

procedure Suspend(n,a);
begin
	i:=Get Internal Name(n);
	S:=Status(i);
	if	S="Running" then STOP(i);
	a:=COPY PCB(i)
	Status(i):=if a="Blockeda" then "blockeds" else "Readys";
	if	S="Running" then SCHEDULER // 调用调用程序SCHEDULER
end.

Primitivas de anulación de suspensión El
proceso de anulación de suspensión se describe a continuación:

procedure Resume(n);
begin
	i:=Get Internal Name(n);
	Status(i):=if Status(i)='Readys' then 'Readys' else 'Blockeda';
	if	Status(i)='Readya' then SCHEDULER
end.

Revocación de primitivas de proceso Existen
dos estrategias para las primitivas de revocación: 1) solo revocar un proceso con un identificador específico (su proceso hijo); 2) revocar uno de sus procesos hijo y todos los descendientes del proceso.
1) Destruirá la relación jerárquica del árbol de procesos, provocando que el sistema deje algunos procesos aislados, perdiendo así el control sobre ellos. Por lo tanto, se adopta generalmente 2).
Las primitivas de cancelación generalmente las emite el proceso padre o los antepasados, y no se cancelarán por sí mismas.
Una descripción general del primitivo:

procedure Destroy(n);
begin
	Sched:=false;
	i:=Get Internal Name(n);
	KILL(i);
	if Sched=true then SCHEDULER;
end(Destroy)
procedure KILL(i);
begin
	if Status(i)='Running' then
		begin STOP(I);
			  Sched:=true
		end
	REMOVE(Queue(i),i);
	for all S<- progeny(i) do KILL(S); //<-是数学集合元素中的属于
	for all r<- Resources(i) do RELEASE(r);
								RELEASE(PCB(i));
end(KILL)

Cambiar la primitiva del número de prioridad del proceso
Omitir

Ejecución del sistema operativo y control de procesos

levemente

Multihilo

Hilo de nivel de usuario KLT y subproceso de nivel de kernel ULT

Para superar las deficiencias de los métodos KLT puro y ULT puro, y obtener los beneficios de estos dos métodos, es necesario combinar los dos métodos. Este es un sistema operativo basado en multiproceso. El kernel admite el establecimiento, la programación y la gestión de múltiples subprocesos. Al mismo tiempo, el sistema brinda la conveniencia de una biblioteca de subprocesos, lo que permite que las aplicaciones de usuario establezcan, programen y administren subprocesos a nivel de usuario.

En la discusión de texto, a menudo aparecen subprocesos a nivel de usuario, subprocesos a nivel de kernel, subprocesos de usuario y subprocesos de kernel. De hecho, el hilo de nivel de usuario ULT y el hilo de nivel de kernel KLT son ambos un concepto de gestión , lo que significa que el hilo es creado y gestionado por el usuario o el kernel. En términos simples, la cuenta del hilo está en el kernel o en la aplicación del usuario.
Cada subproceso específico en el sistema tiene solo dos tipos:
(1) Subproceso de usuario: se refiere al subproceso que se ejecuta en el espacio de direcciones del usuario, la mayoría de los subprocesos son subprocesos de usuario.
(2) Subproceso del kernel: se refiere al subproceso que se ejecuta en el espacio del kernel, como las subrutinas del kernel o todos los manejadores de interrupciones y excepciones implementados por subprocesos, todos son subprocesos del kernel.

Todos los subprocesos a nivel de usuario son subprocesos de usuario. Todos los subprocesos a nivel de kernel pueden ser subprocesos de usuario o subprocesos del kernel, según el espacio de direcciones en el que se ejecutan.
O todos los manejadores de interrupciones y excepciones son implementados por subprocesos, todos son subprocesos del kernel.

Todos los subprocesos a nivel de usuario son subprocesos de usuario. Todos los subprocesos a nivel de kernel pueden ser subprocesos de usuario o subprocesos del kernel, según el espacio de direcciones en el que se ejecutan.

Supongo que te gusta

Origin blog.csdn.net/MaoziYa/article/details/105719707
Recomendado
Clasificación