- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程阅读笔记(李秀艳)
1.进程的定义
a.进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源
进程是可以并行执行的计算部分
进程是一个程序的一次执行的
过程。
b.它是程序执行和资源管理的最小单位。
d.进程是 Linux 系统的基本调度单位
2.进程控制块包含了进程的描述信息、控制信息以及资
源信息,它是进程的一个静态描述。
在 Linux 中,进程控制块中的每一项都是一个 task_struct
结构,它是在 include/linux/sched.h 中定义的。
3.进程的标识
a.在 Linux 中最主要的进程标识有进程号(PID,Process Idenity Number)和它的父进程号
(PPID,parent process ID)。其中 PID 惟一地标识一个进程。PID 和 PPID 都是非零的正整数。
b.在 Linux 中获得当前进程的 PID 和 PPID 的系统调用函数为 getpid 和 getppid,通常程序
获得当前进程的 PID 和 PPID 可以将其写入日志文件以做备份。
4.进程运行的状态
进程是程序的执行过程,根据它的生命期可以划分成 3 种状态。
? 执行态:该进程正在,即进程正在占用 CPU。
? 就绪态:进程已经具备执行的一切条件,正在等待分配 CPU 的处理时间片。
? 等待态:进程不能使用 CPU,若等待事件发生则可将其唤醒。
5,Linux 下的进程结构
:
Linux 系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。
Linux 中的进程包含 3 个段,分别为“数据段”“代码段”和“堆栈段”
? “数据段”存放的是全局变量、常数以及动态数据分配的数据空间(如 malloc 函数
取得的空间)等。
? “代码段”存放的是程序代码的数据。
? “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量
Linux 下进程的模式
:
用户模式和内核模式
6.Linux 下的进程管理:
a.启动进程:
手工启动:手工启动进程又可分为前台启动和后台启动。
调度启动:使用调度启动进程有几个常用的命令,如 at 命令在指定时刻执行相关进程,cron 命令可
以自动周期性地执行相关进程,
b.调度进程:调度进程包括对进程的中断操作、改变优先级、查看进程状态等
7.Linux 进程控制编程:
a.进程创建
1.fork()
:在 Linux 中创建一个新进程的惟一方法是使用 fork 函数,它执行一次却返回两个值
说 明:fork 函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程
这两个分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程
则返回 0。因此,可以通过返回值来判定该进程是父进程还是子进程。
(2)fork 函数语法
#include sys/types.h // 提供类型 pid_t 的定义所需头文件
#include unistd.h
函数原型 : pid_t fork(void)
函数返回值 : 0:子进程
子进程 ID(大于 0 的整数):父进程
?1:出错
2.exec 函数族: exec 函数族就提供了一个在进程中启动另一个程序执行的
方法。 它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据
段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是 Linux 下任何可执行的
脚本文件。
(4)exec 函数族使用注意点
在使用 exec 函数族时,一定要加上错误判断语句。因为 exec 很容易执行失败,其中最
常见的原因有:
? 找不到文件或路径,此时 errno 被设置为 ENOENT;
? 数组 argv 和 envp 忘记用 NULL 结束,此时 errno 被设置为 EFAULT;
? 没有对应可执行文件的运行权限,此时 errno 被设置为 EACCES。
3.exit 和_exit
xit 和_exit 函数都是用来终止进程的。当程序执行到 exit 或_exit 时,进程会无条件地停 止剩下的所有操作,清除包括 PCB 在内的各种数据结构,并终止本进程的运行
区别:_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间,
并清除其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装,在执行退出之
前
文档评论(0)