四川大学linux第4章unix进程管理及进程通信.ppt
《四川大学linux第4章unix进程管理及进程通信.ppt》由会员分享,可在线阅读,更多相关《四川大学linux第4章unix进程管理及进程通信.ppt(152页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 Linux进程管理及进程通信进程管理及进程通信刘刘 循循4.1 Linux进程及描述进程及描述4.1.1 Linux系统中的进程Linux操作系统是多进程并发环境,进程和进程之间的关操作系统是多进程并发环境,进程和进程之间的关系呈现为多级结构,如图系呈现为多级结构,如图4.1所示。所示。loggerupdatecronlpschedgeety root(进程程0)init(进程程1)swapper(对换进程)程)shellshellshell图4.1 进程多程多级结构关系构关系4.1 Linux进程及描述进程及描述最上层的进程是系统的根进程,也称为最上层的进程是系统的根进程,也称为
2、0进程,是系统所进程,是系统所有进程的起点,在系统引导时创建。根进程通过系统函有进程的起点,在系统引导时创建。根进程通过系统函数调用数调用fork创建初始化进程创建初始化进程(init进程,也称为进程,也称为1进程进程)。跟进程在创建初始化进程之后,变为对换进程跟进程在创建初始化进程之后,变为对换进程(swapper)存在,其功能为完成内存与外存之间的进)存在,其功能为完成内存与外存之间的进程对换工作。程对换工作。初始化进程通过系统函数调用初始化进程通过系统函数调用fork创建一系列的系统进创建一系列的系统进程,如程,如logger、update、cron、lpsched、getty进程进程等
3、。这些进程长期运行在系统中,被称为驻守进程等。这些进程长期运行在系统中,被称为驻守进程(daemon进程)。如果系统承担网络服务功能,则还进程)。如果系统承担网络服务功能,则还需包含网络服务进程,如需包含网络服务进程,如httpd、sendmail、ftp等。等。getty进程负责用户登录,监视每个终端上的用户注册情进程负责用户登录,监视每个终端上的用户注册情况。当用户登录进入系统后,便生成相应的子进程,即况。当用户登录进入系统后,便生成相应的子进程,即shell进程。进程。4.1 Linux进程及描述进程及描述所有进程都会生成一个或多个子进程。除根进程之外,所有进程都会生成一个或多个子进程。
4、除根进程之外,所有进程都有一个父进程。所有进程都有一个父进程。为了管理方便,为了管理方便,Linux操作系统给每个进程分配一个唯一操作系统给每个进程分配一个唯一的进程标识符的进程标识符pid。操作系统通过进程标识符管理进程。操作系统通过进程标识符管理进程。无论何时,当用户注册登录后,系统为用户创建一个无论何时,当用户注册登录后,系统为用户创建一个shell进程(即用户的进程(即用户的login shell),键入一个命令或执),键入一个命令或执行一个程序时,行一个程序时,shell进程会产生一个相应的子进程;在进程会产生一个相应的子进程;在子进程中还可以创建子进程,待用户退出(子进程中还可以创
5、建子进程,待用户退出(exit)后,)后,又把控制权还给又把控制权还给shell进程。进程。进程拥有者的标识符为进程的用户标识符。用户标识符进程拥有者的标识符为进程的用户标识符。用户标识符反映了用户在系统中的地位,决定了用户进程的各种特反映了用户在系统中的地位,决定了用户进程的各种特权,如进程对文件的存取权限等。子进程会继承父进程权,如进程对文件的存取权限等。子进程会继承父进程的用户标识符。的用户标识符。4.1 Linux进程及描述进程及描述所有进程都会生成一个或多个子进程。除根进程之外,所有进程都会生成一个或多个子进程。除根进程之外,所有进程都有一个父进程。所有进程都有一个父进程。为了管理方
6、便,为了管理方便,Linux操作系统给每个进程分配一个唯一操作系统给每个进程分配一个唯一的进程标识符的进程标识符pid。操作系统通过进程标识符管理进程。操作系统通过进程标识符管理进程。无论何时,当用户注册登录后,系统为用户创建一个无论何时,当用户注册登录后,系统为用户创建一个shell进程(即用户的进程(即用户的login shell),键入一个命令或执),键入一个命令或执行一个程序时,行一个程序时,shell进程会产生一个相应的子进程;在进程会产生一个相应的子进程;在子进程中还可以创建子进程,待用户退出(子进程中还可以创建子进程,待用户退出(exit)后,)后,又把控制权还给又把控制权还给s
7、hell进程。进程。进程拥有者的标识符为进程的用户标识符。用户标识符进程拥有者的标识符为进程的用户标识符。用户标识符反映了用户在系统中的地位,决定了用户进程的各种特反映了用户在系统中的地位,决定了用户进程的各种特权,如进程对文件的存取权限等。子进程会继承父进程权,如进程对文件的存取权限等。子进程会继承父进程的用户标识符。的用户标识符。4.1 Linux进程及描述进程及描述如果进程的拥有者和进程运行所对应的代码文件拥有者如果进程的拥有者和进程运行所对应的代码文件拥有者具有相同的用户标识符,则称该用户标识符为有效用户具有相同的用户标识符,则称该用户标识符为有效用户标识符。标识符。直接从终端读写的进
8、程为前台进程,正在运行却又无法直接从终端读写的进程为前台进程,正在运行却又无法直接从终端读写的进程为后台进程。任何时候,一个终直接从终端读写的进程为后台进程。任何时候,一个终端只有一个前台进程但可以拥有多个后台进程。端只有一个前台进程但可以拥有多个后台进程。如果要调度一个进程在后台进程运行,运行时在执行的如果要调度一个进程在后台进程运行,运行时在执行的程序名后加程序名后加“&”(注意:程序名和符号(注意:程序名和符号“&”之间需要之间需要有空格),如:有空格),如:$./httpd&表示启动进程表示启动进程httpd在后台运行。在后台运行。4.1.2 进程状态及其转换进程状态及其转换54可中断
9、睡眠可中断睡眠(interruptible)不可中断睡眠不可中断睡眠(uninterruptible)76 僵死僵死(zombie)停止停止(stopped)终止终止 终止终止123 就绪就绪(running)核心态运行核心态运行(running)用户态运行用户态运行(running)调度调度返回返回系系统统函函数数调调用用或中断或中断 睡眠睡眠 睡眠睡眠 唤醒唤醒 唤醒唤醒中断中断图图4.2 Linux进程状态及转换进程状态及转换4.1.2 进程状态及其转换进程状态及其转换Linux操作系统采用如下的进程状态描述进程的动态过程:操作系统采用如下的进程状态描述进程的动态过程:(1)就绪就绪(R
10、unning):进程处于预备运行状态,等待系统分配:进程处于预备运行状态,等待系统分配处理器;处理器;(2)核心态运行核心态运行(Running):进程运行在操作系统核心空间。:进程运行在操作系统核心空间。在用户程序中如果有系统函数调用,则进程状态会从用户在用户程序中如果有系统函数调用,则进程状态会从用户态执行转入核心态执行。任何一个进程都不可能抢占一个态执行转入核心态执行。任何一个进程都不可能抢占一个处于核心态执行的进程,除非处于核心态执行的进程正从处于核心态执行的进程,除非处于核心态执行的进程正从核心态到用户态切换;核心态到用户态切换;(3)用户态运行用户态运行(Running):进程运行
11、在用户空间。处于用户:进程运行在用户空间。处于用户态运行的进程可被抢占;态运行的进程可被抢占;(4)可中断睡眠(可中断睡眠(interruptible):由于进程):由于进程CPU运行时发运行时发生了需要等待生了需要等待I/O事件或进程通信时需要相互配合而等待,事件或进程通信时需要相互配合而等待,此时,进程会在内存中处于一种相对静止状态。如果等待此时,进程会在内存中处于一种相对静止状态。如果等待的事件已经完成,此时进程可被唤醒,被唤醒后的进程转的事件已经完成,此时进程可被唤醒,被唤醒后的进程转入内存就绪状态;入内存就绪状态;4.1.2 进程状态及其转换进程状态及其转换(5)不可中断睡眠(不可中
12、断睡眠(uninterruptible):进程在内存中处于):进程在内存中处于一种相对静止状态,此时进程不会被唤醒。产生不可中断一种相对静止状态,此时进程不会被唤醒。产生不可中断睡眠的原因一般是睡眠进程还未进入睡眠,而唤醒它的进睡眠的原因一般是睡眠进程还未进入睡眠,而唤醒它的进程的唤醒操作已经发生。由于错过了唤醒操作,当睡眠进程的唤醒操作已经发生。由于错过了唤醒操作,当睡眠进程进入睡眠后则不能唤醒了。不可中断睡眠状态较少使用,程进入睡眠后则不能唤醒了。不可中断睡眠状态较少使用,可用于进程必须等待时。可用于进程必须等待时。(6)僵死(僵死(zombie):由于父进程死亡而被终止的进程,虽):由于
13、父进程死亡而被终止的进程,虽然进程已经死亡,但没有释放系统资源,如没有释放内存然进程已经死亡,但没有释放系统资源,如没有释放内存和和task_struct结构等,所以被称为处于僵死状态。如果结构等,所以被称为处于僵死状态。如果系统中处于僵死状态的进程很多,则会引发系统资源短缺系统中处于僵死状态的进程很多,则会引发系统资源短缺问题。用命令问题。用命令“ps el”可查看进程状态,如果进程状态可查看进程状态,如果进程状态标识是标识是Z,则进程处于僵死状态。,则进程处于僵死状态。有些处于僵死状态的进程,用命令有些处于僵死状态的进程,用命令“kill-9”也不能杀死。也不能杀死。例如,如果系统在例如,
14、如果系统在shutdown时,屏幕显示信息时,屏幕显示信息:some process wouldnt die。则表明系统中存在不能被。则表明系统中存在不能被reboot发出的发出的“kill 9”杀掉的进程,这些进程很可能处于僵杀掉的进程,这些进程很可能处于僵死状态;死状态;4.1.2 进程状态及其转换进程状态及其转换(7)停止(停止(stopped):进程被停止。如果进程接收到信号,):进程被停止。如果进程接收到信号,如信号如信号SIGSTOP 或或 SIGTSTP 等时,进程则进入停止状等时,进程则进入停止状态。正在被调试的进程可能处于停止状态。当停止状态的态。正在被调试的进程可能处于停止
15、状态。当停止状态的进程接收到进程接收到SIGCONT信号之后,将再次成为可运行进程。信号之后,将再次成为可运行进程。通常,将处于内核态运行和用户态运行的进程状态统一称为通常,将处于内核态运行和用户态运行的进程状态统一称为进程的运行态。进程的运行态。4.1.2 进程状态及其转换进程状态及其转换4.1.3 进程映像与进程上下文一个程序经过编译和链接之后,成为可执行文件。操作一个程序经过编译和链接之后,成为可执行文件。操作系统核心将可执行文件作为进程的实体装入内存时,进系统核心将可执行文件作为进程的实体装入内存时,进程实体分为正文段、数据段和堆栈段。程实体分为正文段、数据段和堆栈段。正文段由程序中的
16、代码构成;正文段由程序中的代码构成;数据段由程序运行所用到的数据构成;数据段由程序运行所用到的数据构成;堆栈段由函数调用传递参数、保留现场、存放返回地址堆栈段由函数调用传递参数、保留现场、存放返回地址和局部变量构成。和局部变量构成。在程序运行过程中,堆栈段由操作系统创建并不断刷新。在程序运行过程中,堆栈段由操作系统创建并不断刷新。堆栈段分为核心堆栈和用户堆栈两种。核心堆栈为进程堆栈段分为核心堆栈和用户堆栈两种。核心堆栈为进程在核心态下运行的工作区;用户堆栈为进程在用户态下在核心态下运行的工作区;用户堆栈为进程在用户态下运行的工作区。运行的工作区。4.1.2 进程状态及其转换进程状态及其转换进程
17、控制块分为常驻内存和非常驻内存两部分。进程控制块分为常驻内存和非常驻内存两部分。常驻内存部分为进程描述符,非常驻内存部分为常驻内存部分为进程描述符,非常驻内存部分为USER区,也称为区,也称为U区。进程描述符可由核心访问,区。进程描述符可由核心访问,U区只能由区只能由在核心态运行的进程访问。在核心态运行的进程访问。每个进程都有一个每个进程都有一个U区。为了便于访问区。为了便于访问U区,操作系统会区,操作系统会用一个固定的虚地址对应用一个固定的虚地址对应U区。内核将正处于核心态运区。内核将正处于核心态运行进程的行进程的U区地址映射到该固定虚地址上。区地址映射到该固定虚地址上。虽然每个进程都有虽然
18、每个进程都有U区,不同进程的区,不同进程的U区有不同的地址,区有不同的地址,但是,内核每次都将正在核心态下运行的进程的但是,内核每次都将正在核心态下运行的进程的U区映区映射到固定的地址,进程访问射到固定的地址,进程访问U区总可以用相同的地址。区总可以用相同的地址。4.1.2 进程状态及其转换进程状态及其转换U区中的主要信息有:区中的主要信息有:(1)与进程对应的用户标识符;与进程对应的用户标识符;(2)记录进程已打开文件的文件描述符;记录进程已打开文件的文件描述符;(3)描述进程位于文件系统的当前目录和根目录;描述进程位于文件系统的当前目录和根目录;(4)具有系统函数调用结果的返回值字段和出错
19、字段;具有系统函数调用结果的返回值字段和出错字段;(5)记录进程与子进程在用户态和核心态运行时的时间;记录进程与子进程在用户态和核心态运行时的时间;(6)各种输入各种输入/输出参数,如进程要读写的数据量、用户地址输出参数,如进程要读写的数据量、用户地址空间中的数据地址、读写文件的字节数、读写方式、缓空间中的数据地址、读写文件的字节数、读写方式、缓冲区长度及地址等;冲区长度及地址等;(7)限制进程大小的字段及限制进程读写文件大小的字段;限制进程大小的字段及限制进程读写文件大小的字段;(8)对进程所创建的所有文件设置的许可权方式字段的屏蔽对进程所创建的所有文件设置的许可权方式字段的屏蔽模式;模式;
20、(9)指向进程表的指针。指向进程表的指针。4.1.2 进程状态及其转换进程状态及其转换进程上下文是进程的环境,当一个进程在执行时,可以进程上下文是进程的环境,当一个进程在执行时,可以看成系统在进程的上下文中执行。通常把进程上下文理看成系统在进程的上下文中执行。通常把进程上下文理解为进程映像,进程切换被认为是进程上下文的切换。解为进程映像,进程切换被认为是进程上下文的切换。进程上下文由用户级上下文、寄存器上下文和系统级上进程上下文由用户级上下文、寄存器上下文和系统级上下文组成。下文组成。用户级上下文由进程的正文、数据、用户栈和共享存储用户级上下文由进程的正文、数据、用户栈和共享存储区组成,占据进
21、程的虚地址空间。区组成,占据进程的虚地址空间。寄存器上下文由程序计数器、处理器状态寄存器、栈指寄存器上下文由程序计数器、处理器状态寄存器、栈指针和通用寄存器组成。针和通用寄存器组成。系统级上下文由进程表表项(进程描述符)、正在核心系统级上下文由进程表表项(进程描述符)、正在核心态运行进程的态运行进程的U区、进程区表表项和区表、页表、核心区、进程区表表项和区表、页表、核心栈。栈。4.1.2 进程状态及其转换进程状态及其转换4.1.4 进程描述符与进程表 进程描述符是进程描述符是Linux系统用于描述进程的数据结构,系统用于描述进程的数据结构,是操作系统管理进程最重要的依据。进程描述符包含的是操作
22、系统管理进程最重要的依据。进程描述符包含的信息可以归纳为以下几大类:信息可以归纳为以下几大类:4.1.2 进程状态及其转换进程状态及其转换1.进程的运行信息进程的运行信息进程标示信息进程标示信息进程的标识符进程的标识符(pid);进程的父进程标识符(进程的父进程标识符(ppid););进程的父进程组标识符(进程的父进程组标识符(pgrp););进程的会话号(进程的会话号(session););进程的会话头(进程的会话头(leader););进程的用户标识符(进程的用户标识符(uid););进程的有效用户标识符(进程的有效用户标识符(euid););进程保存的用户标识符(进程保存的用户标识符(s
23、uid););进程的用户组标识符(进程的用户组标识符(gid););进程的有效组标识符(进程的有效组标识符(egid););进程的保存组标识符(进程的保存组标识符(sgid););4.1.2 进程状态及其转换进程状态及其转换进程状态描述进程状态描述在在include/linux/sched.h中,将进程的状态描述具体化:中,将进程的状态描述具体化:TASK_RUNNING为为0;TASK_INTERRUPTIBLE为为1;TASK_UNINTERRUPTIBLE为为2;TASK_STOPPED为为4;TASK_ZOMBIE为为8;TASK_DEAD为为16。当进程的状态描述为当进程的状态描述为
24、-1时,表示进程不可运行。时,表示进程不可运行。4.1.2 进程状态及其转换进程状态及其转换进程在内存中的分布信息:进程在内存中的分布信息:进程的代码段地址(进程的代码段地址(start_code););进程的代码段长度(进程的代码段长度(end_code,字节数);,字节数);进程的代码长度加进程的数据段长度(进程的代码长度加进程的数据段长度(end_data,字节数);,字节数);进程的总长度(进程的总长度(brk,字节数);,字节数);进程的堆栈段地址(进程的堆栈段地址(start_stack););进程运行时间片递减计数(进程运行时间片递减计数(counter););进程运行优先数(进
25、程运行优先数(priority:数字越大优先级越低);:数字越大优先级越低);发送和接收信号的信号位图(发送和接收信号的信号位图(signal),每个比特位代表一种信),每个比特位代表一种信号;号;信号将要执行的操作和标志信息结构信号将要执行的操作和标志信息结构(sigaction32);进程信号屏蔽码(进程信号屏蔽码(blocked););进程执行停止的退出码,由停止进程的父进程收取(进程执行停止的退出码,由停止进程的父进程收取(exit_code););4.1.2 进程状态及其转换进程状态及其转换2进程的时间信息进程的时间信息报警定时时间(报警定时时间(alarm););用户态运行时间(用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川大学 linux unix 进程 管理 通信
限制150内