进程的调度算法以及task_struct结构各字段含义

首先,我们需要知道什么是进程?

1.进程是程序的一个执行的实例。

2.进程是正在执行的程序。

3.进程是能分配处理器并由处理器执行的实体。

按内核的观点来谈进程:它是担当分配系统资源(cpu时间,内存)的实体。

-操作系统的调度分为三种:

1.远程调度(创新进程)

2.中程调度(交互功能的一部分)

3.短程调度(下次执行哪个进程)

-进程的三种状态:

1.等待态:等待某个事件的完成

2.就绪态:等待系统分配处理器以便运行

3.运行态:占有处理器正在运行

-调度方式:

剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺以分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则,短进程优先原则,时间片原则。

非剥夺方式:分配程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生阻塞时,才把处理机分配给另一个进程。

-进程调度算法:

1.先来先到服务(FCFS)

2.短作业优先(SPN)

3.最短剩余时间(SRT)

4.时间片轮转法(RR,Round-Robin):采用剥夺方式,每个进程被分配一个时间段,按照在队列中的顺序交替执行;不利于处理紧急作业。

5.最高响应比优先

6.公平共享调度

Linux内核用过一个被称为进程描述符task_struct结构体来管理进程,这个结构体包含了进程的所有信息。

task_struct结构如下:

1.进程状态,将记录进程在等待,运行或死锁。

2.调度信息,由那个调度函数调度,怎样调度等。

3.进程的通讯情况。

4.因为要插入进程树,必须有联系父子兄弟的指针,当然是task_struct型。

5.时间信息,比如计算好执行的时间,以便CPU分配。

6.标号,决定改定进程归属。

7.可以读写打开文件的一些信息。

8.进程上下文和内核上下文。

9.处理器上下文。

10.内存信息。

只有这些结构,才能满足一个进程的需求。

猜你喜欢

转载自blog.csdn.net/CDatreides/article/details/81777098