操作系统实验2进程创建讲解PPT资料.pptx
- 文档编号:14679736
- 上传时间:2022-10-23
- 格式:PPTX
- 页数:29
- 大小:207.34KB
操作系统实验2进程创建讲解PPT资料.pptx
《操作系统实验2进程创建讲解PPT资料.pptx》由会员分享,可在线阅读,更多相关《操作系统实验2进程创建讲解PPT资料.pptx(29页珍藏版)》请在冰豆网上搜索。
T表示暂停或终止状态;
Z表示僵死状态UID(UserID):
进程启动者的用户IDPID(ProcessID):
进程号PPID:
父进程的进程号CCPU使用的资源百分比PRI这个是Priority(优先执行序)的缩写NI(Nice):
进程的优先级值SZ(Size):
进程占用内存空间的大小,以KB为单位TTY:
进程所在终端的终端号,其中桌面环境的终端窗口表示为pts/0,字符界面的终端号为tty1tty6.TIME:
进程累计使用的CPU时间CMD:
启动进程的shell命令,例1:
将目前属于您自己这次登入的PID与相关信息列示出来命令:
ps-l,守护进程是Linux系统3种进程之一;
守护进程(Daemon,也称为精灵进程)守护进程经常在程序启动时开始运行,在系统结束时停止;
在后台运行,脱离控制终端,执行通常与键盘输入无关的任务。
Linux系统有许多标准守护进程网络服务:
如网页服务器(httpd)、FTP服务器(vsftpd)。
系统任务:
如日志守护进程(syslogd)和电源管理守护进程(apmd)。
1.周期性地运行来完成特定的任务(例如crond)2.连续地运行,等待处理系统中发生的某些特定的事件(例如xinetd和lpd),守护进程,今天介绍两个守护进程:
1.允许用户延迟任务(atd)2.允许用户在固定间隔时间运行命令(crond)注:
所有守护进程通常以d作为结尾,表9-1所示为Linux系统中一些比较重要的守护进程以及其所具有的功能,用户可以通过使用这些进程方便地使用系统以及网络服务,重要守护进程,表9-1Linux重要守护进程列表,续表,在Shell中执行程序或者在桌面环境中打开某程序,从本质上说就是启动进程启动一个进程有两个主要途径:
用户手动执行和系统调度。
手动执行比较简单,因此本节主要对系统调度的进程执行进行介绍。
启动进程,定时执行at命令,使用Linux的过程中,有时会需要在特定时间执行一些任务需要对系统进行一些费时而且占用资源的维护工作,例如网站数据库备份等用户可以事先进行调度安排,指定任务运行的时间或者场合,届时系统将自动启动该进程,自动完成这些工作此时就要使用at命令,at命令可以只指定时间,也可以时间和日期一起指定:
at-ffile-mldvtimeat-cjob1job2job3.,从指定文件读取命令,m:
作业结束后发邮件l:
列出用户排在队列中的作业d:
删除指定要执行的命令序列v:
显示作业执行时间,进程控制块(PCB)包括
(1)进程描述信息:
进程标识符用于唯一的标识一个进程(pid,ppid)。
每个进程都会分配到一个独一无二的数字编号,我们称之为“进程标识”(processidentifier),或者就直接叫它PID.是一个正整数,取值范围从2到32768。
可以通过:
cat/proc/sys/kernel/pid_max查看系统支持多少进程当一个进程被启动时,它会顺序挑选下一个未使用的编号数字做为自己的PID数字1一般为特殊进程init保留的。
进程控制块(PCB),获取进程识别码函数getpid表头文件:
#include定义函数:
pid_tgetpid(void);
函数说明:
getpid()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。
返回值:
目前进程的进程识别码例:
#includemain()printf(“pid=%dn”,getpid();
(2)进程控制信息:
进程当前状态进程优先级程序开始地址各种计时信息通信信息(3)资源信息:
占用内存大小及管理用数据结构指针交换区相关信息I/O设备号、缓冲、设备相关的数结构文件系统相关指针(4)现场保护信息(cpu进行进程切换时):
寄存器PC程序状态字PSW栈指针,用户在使用Linux系统的时候,每次在终端下面输入一行命令,就由shell进程接收这个命令并创建一个新的进程。
这个新的进程还可以通过fork()系统调用,继续创建自己的子进程。
实际上,在Linux系统启动时,最早产生的进程是idle进程,其pid号为0,该进程会创建一个内核线程,该线程进行一系列初始化动作后最终会执行/sbin/init文件,执行该文件的结果是运行模式从核心态切换到用户态,该线程演变成了用户进程init,pid为1。
手动进程的创建,调用fork时,系统将创建一个与当前进程相同的新进程,其与原有进程具有相同的数据、连接关系和在程序同一处执行的连续性。
原进程称为父进程,新生进程称为子进程。
子进程是父进程的一个拷贝,子进程获得同父进程相同的数据,但是同父进程使用不同的数据段和堆栈段。
子进程被创建以后,处于可运行状态,与父进程以及系统中的其他进程平等地参与系统调度。
fork,fork调用将执行两次返回,即分别从父进程和子进程分别返回,即子进程一旦创建就绪,就与父进程一样被平等地调度执行。
因此,从fork返回以后,不能确切知道执行哪一个进程。
从父进程返回时,返回值(0)为子进程的进程标识号PID;
而从子进程返回时,返回值为0,并且返回都将执行fork之后的语句。
调用出错时返回值为-1,并将errno置为相应值。
(1)为新进程分配一进程表项和进程标识符进入fork()后,核心检查系统是否有足够的资源来建立一个新进程。
若资源不足,则fork()系统调用失败;
否则,核心为新进程分配一进程表项和唯一的进程标识符。
(2)检查同时运行的进程数目超过预先规定的最大数目时,fork()系统调用失败。
(3)拷贝进程表项中的数据将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。
(4)子进程继承父进程的所有文件对父进程当前目录和所有已打开的文件表项中的引用计数加1。
核心为fork()完成以下操作:
(5)为子进程创建进程上、下文进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。
(6)子进程执行虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork()返回值的不同,执行了不同的分支语句。
父进程设置的锁,子进程不继承(因为如果是排它锁,被继承的话,矛盾了)各自的进程ID和父进程ID不同子进程的未决告警被清除;
子进程的未决信号集设置为空集。
子进程与父进程的区别在于,包含头文件和函数功能:
创建一个子进程函数原型pid_tfork(void);
/一次调用两次返回值,是在各自的地址空间返回,意味着现在有两个基本一样的进程在执行参数:
无参数。
返回值:
如果成功创建一个子进程,对于父进程来说返回子进程ID如果成功创建一个子进程,对于子进程来说返回值为0如果为-1表示创建失败,fork系统调用基本格式与用法,父进程调用fork()系统调用,然后陷入内核,进行进程复制。
如果成功:
则对调用进程即父进程来说返回值为刚产生的子进程pid,因为进程PCB没有子进程信息,父进程只能通过这样获得。
对子进程(刚产生的新进程),则返回0,这时就有两个进程在接着向下执行;
如果失败:
则返回0,调用进程继续向下执行。
注:
fork英文意思:
分支,fork系统调用复制产生的子进程与父进程(调用进程)基本一样:
代码段+数据段+堆栈段+PCB,当前的运行环境基本一样,所以子进程在fork之后开始向下执行,而不会从头开始执行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 进程 创建 讲解