Linux操作系统基础知识之三:进程

来源:岁月联盟 编辑:exp 时间:2011-10-12

Q1.        程序与进程的概念分别是什么?为什么要引入“进程”的概念?
A:

1)        程序是一个普通文件,是机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映像中,可执行映像(executable image)就是一个可执行文件的内容;

2)        进程代表程序的执行过程,它是一个动态的实体,随着程序中指令的执行而不断地变化,在某个时刻进程的内容被称为进程映像(process image);

3)        程序的执行过程可以说是一个执行环境的总和,这个执行环境除了包括程序中各种指令和数据外,还有一些额外数据;而执行环境的动态变化体现了程序的运行,为了对动态变化的过程进行描述,就引入了“进程”概念。

 

Q2.        什么是进程控制块?它包含哪些基本信息?

A:

1)        Linux中把对进程的描述结构叫做task_struct,将这样的数据结构称作进程控制块(PCB);

2)        PCB是一个其域多达80多项的相当庞大的数据结构,按其功能将所有域划分为:状态信息,链接信息、各种标识符、进程间通信信息、时间和定时器信息、调度信息、文件系统信息、虚拟内存信息和处理器环境信息。

 

Q3.        Linux内核的状态有哪些?

A:

1)        Linux最基本的进程状态有三种:运行态、就绪态和阻塞态(或等待态);这三种状态之间有四种可能的转换关系:运行态->阻塞态、运行态->就绪态、就绪态->运行态和阻塞态->就绪态;

2)        为了管理上的方便,将就绪态和运行态合并为一个状态—可运行态,再包括其它方面的一些改变,将进程状态划分为:可运行态、睡眠(或等待)态(分为深度睡眠态和浅度睡眠态)、暂停状态和僵死状态。

 

Q4.        PCB的组织方式有哪几种?

A:PCB的组织方式有:进程链表、散列表、可运行队列和等待队列。

 

Q5.        主要的调度算法包括哪些?一个好的调度算法要考虑哪些方面?

A:

1)        主要的调度算法包括:时间片轮转调度算法、优先级调度算法(非抢占式优先级算法和抢占式优先级算法)、多级反馈队列调度算法和实时调度算法;

2)        一个好的调度算法应该考虑五个方面:公平、高效、响应时间、周转时间和吞吐量。

摘自: