教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 资料大全 >

Linux 编程白皮书001-03

来源:网络收集 时间:2026-09-10
导读: 第3章进程 本章描述了什么是进程以及L inux内核如何创建、管理和删除系统中的进程。 进程执行操作系统中的任务。一个程序是保存在一个磁盘的可执行映像中的机器代码指令和数据的集合,并且,实际上是一个被动实体;一个进程可以被认为是一个执行中的计算机程

第3章进程

本章描述了什么是进程以及L inux内核如何创建、管理和删除系统中的进程。

进程执行操作系统中的任务。一个程序是保存在一个磁盘的可执行映像中的机器代码指令和数据的集合,并且,实际上是一个被动实体;一个进程可以被认为是一个执行中的计算机程序。它是一个动态实体,总是随着机器代码指令随处理器的执行而处于变化之中。除了程序的指令和数据,进程还包括程序计数器和所有C PU寄存器,以及含有例程参数、返回地址和保存的变量等临时变量的进程栈( stack)。当前正执行的程序或说进程,包含所有处理器当前的行为。L inux是一个多进程操作系统。进程是独立的任务,有自己的权利和责任。若一个进程崩溃并不会引起系统中另一个进程崩溃。每个单独的进程运行在自己的虚拟地址空间,并且只能通过安全的内核管理机制和其他进程交互。

在进程的生存期( lifetime)内将使用许多系统资源。它将使用系统的C PU来运行自己的指令并使用系统的物理内存来保存自己和自己的数据;它将打开和使用文件子系统中的文件并直接或间接地使用系统中的物理设备。L inux必须跟踪进程本身和它拥有的系统资源,来保证它能公平地管理该进程和系统中其他进程。如果一个进程独自占有系统中的大部分物理内存或其C PU,对系统中其他进程来说将是不公平的。

系统中最宝贵的资源是C PU,通常只有一个。L inux是个多进程操作系统,它的目标是在每一时刻都有一个进程运行在系统的每个C PU上,来极大化C PU利用率。若进程比C PU多(通常是这样),其余的进程在它们可以运行前必须等待一个C PU变空闲。多进程基于这样一个简单的思想:一个进程执行直到它必须等待,通常是等待一些系统资源;当它获得这个资源后,就可以再次运行。在单进程系统中,比如D OS,C PU将简单地闲置等待,等待的时间将被浪费。在多进程系统中内存里同时保存多个进程。每当一个进程需要等待时,操作系统从该进程夺走C PU并给予另一个更有价值的进程。选择哪一个进程是下一次运行最合适的进程是调度器( scheduler)的事,L inux使用一些调度策略来保证公平。

L inux支持几种不同的可执行文件格式,E LF是一种,J ava是另一种;并且它们要透明地管理,因为进程要使用系统的共享库。

3.1 Linux进程

为了使L inux可以管理系统中的进程,每个进程通过一个t ask_struct数据结构表示(任务( t a s k )和进程( p r o c e s s )是L i n u x中两个互相通用的术语)。Ta s k向量是一个指向系统中所有t ask_struct数据结构的指针数组。这意味着系统中最大进程受限于Ta sk向量的大小,缺省情况下它有5 12项。当进程被创建时,从系统内存中分配一个新的t ask_struct并把它加入到t ask向量中。为了便于查找,当前运行的进程由c urrent指针来指向。

除了普通类型的进程,L inux还支持实时进程。这些进程必须对外部事件反应迅速(从而得到名字“实时”),并且它们被调度器区别于普通用户进程对待。尽管t ask_struct数据结构很大很复杂,但它的字段可以被分成几个功能区。

状态

a. 运行

b. 等待随着进程执行,它根据其环境改变状态。L inux进程有以下状态:进程或者正在运行(它是系统中的当前进程)或者已经准备好运行(等待被分配到系进程正在等待一个事件或一个资源。L inux区分两种类型的进程;可中断的和不统的一个C PU上)。可中断的。可中断等待进程可以被信号中断,而不可中断等待进程直接等待硬件条件,并且在任何环境下都不会被中断。

c. 停止进程停止了,通常是通过接收一个信号。一个正在被调试的进程可以处于停止状态。

d. 死亡这是一个被终止的进程,由于某种原因,仍在t ask向量中有一个t ask_struct数据

调度器需要这些信息以公平地决定系统中哪个进程最值得运行。结构,正像其名字那样,它是一个死去的进程。 调度信息

标识

问。

进程间通信L inux支持经典的UNIXTM IPC机制如信号、管道和信号灯,以及System VI PC机制如共享内存、信号灯和消息队列。L inux支持的I PC机制在第4章描述。

链接在L inux系统中没有哪个进程与其他进程完全独立。除了初始进程,系统中每个进程都有一个父进程,新的进程不是被创建,它们是从先前的进程被复制(或说克隆)。每一个表示一个进程的t ask_struct都有指针指向其父进程及其兄弟进程(和它具有相同父进程的进程)以及它自己的子进程。你可以用p tree命令查看L inux系统中运行的进程之间的家族关系:系统中每个进程有一个进程标识。进程标识不是t ask向量的索引,它只是一个简单的数。每个进程还有用户和组标识,这些被用来控制本进程对系统中文件和设备的访

另外系统中所有的进程都保存在一个双向链表中,它的根是i nit进程的t ask_struct数据结构。这个链表使得L inux可以查看系统中每一个进程,它需要这样来为一些命令如p s或k ill提供支持。

时间和时钟内核记住进程的创建时间以及在它生存期内消耗的C PU时间。每次时钟

“滴答”时,内核更新保留在j iff ies中的时间量,表示当前进程花费在系统和用户态下的时间。L inux还支持进程相关的间隔定时器。进程可以用系统调用来设置定时器,以便当定时器超时时给进程自己发送信号。定时器可以是一次触发的或周期性多发的。

文件系统进程在需要的时候可以打开和关闭文件;进程的t ask_struct包含每个打开的文件的描述符指针以及两个V FS索引节点的指针。每个V FS索引节点唯一地描述文件系统中的一个文件或目录,并提供一个底层文件系统的统一接口。L inux对文件系统的支持将在第7章描述。两个V FS索引节点指针第一个指向进程的根目录,第二个指向其当前的或称p wd目录。p wd从U NIX命令p wd—打印工作目录(print working directory)而来。这两个V FS索引节点使自己的c ount字段( field)递增来表示一个或多个进程在引用它们。这就是为什么不能删除被一个进程设成p wd的目录的原因。同样的原因,也不能删除它的子目录。

虚拟内存大多数进程有一些虚拟内存(内核线程和守护进程没有),并且L inux必须跟踪虚拟内存如何映射到系统物理内存。

处理器相关上下文一个进程可以被认为是系统当前状态的总和。每当一个进程运行时,它要使用处理器的寄存器、栈等等,这是进程的上下文( context)。并且,每当一个进程被暂停时,所有的C PU相关上下文必须被保存在该进程的t ask_struct中。当进程被调度器重新启动时其上下文将从这里恢复。

3.2 标识符

L inux像所有U NIXTM系统一样使用用户和组标识来检查对系统中文件和映像的访问权限。L inux系统中所有文件都有所有权和授权,这些授权描述系统中用户对该文件或目录有什么访问权限。基本的授权是读、写和执行并被赋予三种用户:文件的所有者、属于一个特定组的进程和系统中所有的进程。每种用户可以有不同的授权,例如一个文件可以有授权使得其所有者可以读写,文件的组成员可以读而系统中其他进程没有任何访问权。

组是L inux给一组用户(而不是一个用户或系统中所有进程)赋予访问文件或目录特权的方式。例如,你可以为一个软件项目的所有用户创建一个组,并可以设定只有他们能够读写该项目的源代码。一个进程可以属于几个组(缺省最大值是3 2个),并且它们被保存在每个进程t ask_struct中的g roups向量中。只要进程所在的一个组有对某文件的访问权限,该进程就拥有对该文件的适当的组权利。

一个进 …… 此处隐藏:14736字,全部文档内容请下载后查看。喜欢就下载吧 ……

Linux 编程白皮书001-03.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/2192039.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)