学院首页>操作系统>Linux>在Linux世界驰骋系列之三——结构和算法

在Linux世界驰骋系列之三——结构和算法

作者: 来源: 添加时间:2006-5-26 14:12:16
2. 进程系统栈

在Linux系统中,每个进程都有一个系统栈,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息。每个进程的系统栈和task_struct数据结构之间存在紧密联系,因而二者在物理存储空间中也连在一起。如图1所示。













图1 进程的系统栈和task_struct结构


由图1中可以看出,内核在为每个进程分配task_struct结构的内存空间时,实际上是一次就分配两个连续的内存页面(共8KB),其底部大约1KB的空间用于存放task_struct结构,而上面的大约7KB的空间用于存放进程系统空间栈。

另外,系统空间栈的大小是静态确定的,而用户空间栈可以在运行时动态扩展。

对进程的操作

进程是有“生命期”的动态过程,核心能对它们实施操作,主要包括创建进程、撤消进程、挂起进程、恢复进程、改变进程优先级、封锁进程、唤醒进程、调度进程等。

1.进程的创建

与Unix操作系统对进程的管理相似,Linux系统中各个进程构成了树型的进程族系。当系统刚刚启动时,系统运行在内核方式,内核在引导并完成了基本的初始化以后就有了系统的第一个进程(即初始化进程,实际上是内核线程)。

除此之外,所有其它的进程和内核线程都由这个原始进程或其子孙进程所创建,如系统为每个终端生成一个注册进程和一个Shell进程,分别管理用户注册和执行Shell命令解释程序。用户和系统交互作用过程中,由Shell进程为输入的命令创建若干进程,每个子进程执行一条命令。

执行命令的子进程也可再创建子进程。这棵进程树除了同时存在的进程数受到限制外,树型结构的层次也可以不断延伸。

第 2 页,共 2 页 [1] [2]
站内搜索