清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 第6章进程与存储管理示例 61UNⅨ进程和存储管理简介 62UNX进程结构 63进程控制 64UNⅨX进程调度与交换 65进程通信 66UNⅨ存储管理 本章小结 习题
第6章 进程与存储管理示例 6.1 UNIX进程和存储管理简介 6.2 UNIX进程结构 6.3 进程控制 6.4 UNIX进程调度与交换 6.5 进程通信 6.6 UNIX存储管理 本章小结 习题
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 本章以 UNIX System V为主,介绍UNⅨ的进程和存 储管理方法。 61UNIX进程和存储管理简介 UNIX系统的核心部分从整体上说可以分为两大部分, 即“静”的文件系统和“动”的进程控制系统。文 件系统主要用来存放、管理那些暂时不被处理机执 行的程序和数据,它为程序和数据文件分配空间, 控制文件存取和为用户检索信息。而进程控制系统 则负责为将要执行的程序和数据文件分配内存空间, 并负责进程调度、控制并发进程的执行速度和分配 必要的资源,以及负责进程通信和内存管理等。 UNIX的进程控制系统与文件系统之间通过系统调 用来互相作用。先介绍UNIX的进程控制系统部分
本章以UNIX System V 为主,介绍UNIX的进程和存 储管理方法。 6.1 UNIX进程和存储管理简介 UNIX系统的核心部分从整体上说可以分为两大部分, 即“静”的文件系统和“动”的进程控制系统。文 件系统主要用来存放、管理那些暂时不被处理机执 行的程序和数据,它为程序和数据文件分配空间, 控制文件存取和为用户检索信息。而进程控制系统 则负责为将要执行的程序和数据文件分配内存空间, 并负责进程调度、控制并发进程的执行速度和分配 必要的资源,以及负责进程通信和内存管理等。 UNIX的进程控制系统与文件系统之间通过系统调 用来互相作用。先介绍UNIX的进程控制系统部分
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS UNIX系统把一个程序看作是一个可执行文件,而把 个进程看作是程序的执行或执行中的程序实例。 但是,从静态的观点看,CPU把进程解释为由一组 机器指令、数据和堆栈结构组成的集合,及其上下 文。系统核心调度进程占据CPU。由于调度并不 定是在每个进程执行完毕时发生,因此,系统内同 时有多个进程在执行。而且,若干个进程可以同时 调用一个子程序。 和其他所有操作系统一样,UNIX操作系统只有在其 内核装入内存后才能开始运行
UNIX系统把一个程序看作是一个可执行文件,而把 一个进程看作是程序的执行或执行中的程序实例。 但是,从静态的观点看,CPU把进程解释为由一组 机器指令、数据和堆栈结构组成的集合,及其上下 文。系统核心调度进程占据CPU。由于调度并不一 定是在每个进程执行完毕时发生,因此,系统内同 时有多个进程在执行。而且,若干个进程可以同时 调用一个子程序。 和其他所有操作系统一样,UNIX操作系统只有在其 内核装入内存后才能开始运行
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 为了使操作系统内核能在每次开机时顺利地装入内 存,用户必须事先把UNⅨ操作系统的执行代码以 文件方式存储在计算机硬盘设备中,并对计算机系 统中的相应资源,例如高速缓存、交换区等进行初 始化。这一过程被称为操作系统的安装过程。一个 商用的操作系统都有自己的自动安装程序。用户在 购买了操作系统之后,只要按照操作系统程序的提 示和说明,一般都能进行系统安装。因此,本章的 进程运行和存储管理都是假定在一个已完全安装完 毕的操作系统基础上进行的
为了使操作系统内核能在每次开机时顺利地装入内 存,用户必须事先把UNIX操作系统的执行代码以 文件方式存储在计算机硬盘设备中,并对计算机系 统中的相应资源,例如高速缓存、交换区等进行初 始化。这一过程被称为操作系统的安装过程。一个 商用的操作系统都有自己的自动安装程序。用户在 购买了操作系统之后,只要按照操作系统程序的提 示和说明,一般都能进行系统安装。因此,本章的 进程运行和存储管理都是假定在一个已完全安装完 毕的操作系统基础上进行的
大学出 000000 在一个已安装好UN系统的操作系统中,启动电源 意味着系统引导程序开始系统自举,引导在外存硬 盘中的操作系统进入内存。这一过程是一个启动 UNIX系统、设置和初始化各种数据结构与表格、 建立控制UNⅨX系统内核运行的控制进程(在UNIX 系统中,把核心进程称为0进程),和建立控制终 端进程与She进程(用户交互进程)运行的进程。 最后,系统在建立了0进程和1进程等之后,将出 现相应的提示符,以等待用户输入命令来执行和处 理用户应用程序。 UNIX系统在初始过程中的运行如图6所示。图中, 当系统创建了1进程之后,1进程将会调用相应的 终端管理进程,为UNⅠX系统的不同终端创建相应 的终端管理进程和Shel进程,从而使每个终端上的 用户都可以在She的管理下交互使用UNIX系统
在一个已安装好UNIX系统的操作系统中,启动电源 意味着系统引导程序开始系统自举,引导在外存硬 盘中的操作系统进入内存。这一过程是一个启动 UNIX系统、设置和初始化各种数据结构与表格、 建立控制UNIX系统内核运行的控制进程(在UNIX 系统中,把核心进程称为0 #进程),和建立控制终 端进程与Shell进程(用户交互进程)运行的1 #进程。 最后,系统在建立了0 #进程和1 #进程等之后,将出 现相应的提示符,以等待用户输入命令来执行和处 理用户应用程序。 UNIX系统在初始过程中的运行如图6.1所示。图中, 当系统创建了1 #进程之后,1 #进程将会调用相应的 终端管理进程,为UNIX系统的不同终端创建相应 的终端管理进程和Shell进程,从而使每个终端上的 用户都可以在Shell的管理下交互使用UNIX系统
系统自举)①UNX内核入内存) TY PRESS 初始化程序设置各种表格与数据结构 建立0进程 建立1"进程 建立终端进程 建立图6UNIX中各进程的关系 用户输入 显示提示符 建立用户进程 Shel进程否 用户 等待 进程执行 是 执行结束
图6.1 UNIX中各进程的关系
清华大学出版 000000 Shel程序将为用户提供解释执行用户命令的交互工 具。随着用户命令,例如“cp”等的输入,系统将 为该命令建立一个执行该命令的用户进程。如果这 个用户进程抢不到处理器,则She进程会自动退出 处理器,进入等待队列,以便用户进程执行。在用 户进程执行结束后,She进程又恢复执行,并显示 提示符和等待用户的下一条命令输入。UNⅠX系统 的所有进程都是在上述执行过程中产生和消亡。 由图61可以看到,在UNⅠ系统中还未创建出其他新 用户进程之前,只有0进程、1进程以及终端管理 进程与She进程存在。其中,终端管理进程与 She进程是1进程的子进程,这是因为在UNIⅨ系 统中,除了0进程和1进程之外,其他进程都是由 父进程创建的。人们也称1进程是所有用户进程的 祖先
Shell程序将为用户提供解释执行用户命令的交互工 具。随着用户命令,例如“cp”等的输入,系统将 为该命令建立一个执行该命令的用户进程。如果这 个用户进程抢不到处理器,则Shell进程会自动退出 处理器,进入等待队列,以便用户进程执行。在用 户进程执行结束后,Shell进程又恢复执行,并显示 提示符和等待用户的下一条命令输入。UNIX系统 的所有进程都是在上述执行过程中产生和消亡。 由图6.1可以看到,在UNIX系统中还未创建出其他新 用户进程之前,只有0 #进程、1 #进程以及终端管理 进程与Shell进程存在。其中,终端管理进程与 Shell进程是1 #进程的子进程,这是因为在UNIX系 统中,除了0 #进程和1 #进程之外,其他进程都是由 父进程创建的。人们也称1 #进程是所有用户进程的
000000000 UNX操作系统的0进程在核心态下运行,而1进程 以及由1进程衍生的其他进程都可在用户态和核心 态两种执行模式下执行。 在不同的执行模式下执行时,同一进程使用不同的 堆栈和不同的管理数据结构。在两种不同模式下执 行的程序不能互相访问各自的堆栈,它们之间的参 数传递往往需要借助通用寄存器等硬件。两态之间 的主要区别是,用户态下的进程能存取它们自己的 指令与数据,但不能存取核心指令和数据。然而, 核心态下的进程能存取核心和用户地址。另外,某 些机器的指令是特权指令,在用户态下执行会引起 错误,只能在核心态下执行。另外,在后面的章节 中将会看到,核心态模式享有比用户态模式高的优 先级。因此,尽管是同一进程,有时仍把它分开称 为用户进程和系统进程(核心进程)
UNIX操作系统的0 #进程在核心态下运行,而1 #进程 以及由1 #进程衍生的其他进程都可在用户态和核心 态两种执行模式下执行。 在不同的执行模式下执行时,同一进程使用不同的 堆栈和不同的管理数据结构。在两种不同模式下执 行的程序不能互相访问各自的堆栈,它们之间的参 数传递往往需要借助通用寄存器等硬件。两态之间 的主要区别是,用户态下的进程能存取它们自己的 指令与数据,但不能存取核心指令和数据。然而, 核心态下的进程能存取核心和用户地址。另外,某 些机器的指令是特权指令,在用户态下执行会引起 错误,只能在核心态下执行。另外,在后面的章节 中将会看到,核心态模式享有比用户态模式高的优 先级。因此,尽管是同一进程,有时仍把它分开称 为用户进程和系统进程(核心进程)
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 进程与1进程是UNIX系统中最重要的两个进程。其 中,0进程是UNI系统中唯一只在核心态下执行 的进程。它有三种功能,除了在初始化时创建1进 程之外,还负责调度分配处理器以及负责进程交换。 有关UN进程调度和交换功能将在本章后续部分 介绍。 UNIX进程的核心态和用户态之间的转换靠中断以及 硬件设置等方法完成,当用户进程由用户态转向核 心态执行时,需要依靠中断或后述的陷阱来实现。 在核心态执行的进程只有通过设置程序状态寄存器 PSW才能回到用户态。它们之间的关系如图62所 小
进程与1 #进程是UNIX系统中最重要的两个进程。其 中,0 #进程是UNIX系统中唯一只在核心态下执行 的进程。它有三种功能,除了在初始化时创建1 #进 程之外,还负责调度分配处理器以及负责进程交换。 有关UNIX进程调度和交换功能将在本章后续部分 介绍。 UNIX进程的核心态和用户态之间的转换靠中断以及 硬件设置等方法完成,当用户进程由用户态转向核 心态执行时,需要依靠中断或后述的陷阱来实现。 在核心态执行的进程只有通过设置程序状态寄存器 PSW才能回到用户态。它们之间的关系如图6.2所 示
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS UNIX进程(不含0进程) 中断或陷入 核心态 用户态 设置PSW 图62UN进程的核心态与用户态之间的转换 系统在逻辑上由四个模块组成。即与文件系统的接 口部分,进程本身的控制部分,包括进程的创建、 进程调度和进程的撤消等,第三部分是进程间控制 部分,包括进程间的互斥、同步和通信等,第四部 分是存储管理部分。进程控制系统模块结构如图 63所示
图6.2 UNIX进程的核心态与用户态之间的转换 系统在逻辑上由四个模块组成。即与文件系统的接 口部分,进程本身的控制部分,包括进程的创建、 进程调度和进程的撤消等,第三部分是进程间控制 部分,包括进程间的互斥、同步和通信等,第四部 分是存储管理部分。进程控制系统模块结构如图 6.3 所示