- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程线程笔记.doc
DAY 1
进程的基本概念:
1.进程与程序的区别:
程序:存储在磁盘上可执行指令的集合,是一个文件。
例如:a.out文件就是一个程序。
进程:程序一次执行的过程,伴随着资源的分配和释放。
区别:
1进程是动态的,运行在内存中,并伴随着资源的分配与释放。
2程序是静态的,一般存在在磁盘上,没有执行的概念。
2.进程的标示
就绪态:进程所有需要的条件已经准备完成,等待CPU的调度。
运行态(R--running):进程占用CPU,并在CPU上运行。
可中断等待态(S):进程正在休眠,等待某个资源来唤醒它。也可以被其他信号中断唤醒。
不可中断等待态(D):进程正在休眠,等待某个资源来唤醒它。不能 被其他信号中断唤醒。
停止态(T):进程暂停接受某种处理。例如:gdb调试断点信息处理。
僵尸态(Z):进程以及结束但是还没有释放进程资源。例如:PID,PPID等未释放。
+ : 表示该进程在前台运行。例如:S+ ,R+等,没有+表示在后台运行。
各个状态之间的转换如下图:
时间片:CPU分配给一个进程所运行的时候。实现消耗完成后,进程 处于等待态。
3.进程相关命令详解
(1)常用:pstree -p.
2ps(process status) 查看当前系统进程的工具
a.给当前进程截取一个快照,来查看我们的PID号
ps -ef | grep “进程名/进程ID”
b.查看进程第一行的信息。
ps -ef | head -1
c.查看当前进程的状态
ps aux | grep “进程名/进程ID”
3kill 给指定的PID进程发送信号
使用方法:
kill -信号的宏名 PID 或者 kill -信号的编号 PID号
常用宏:
宏名 编号 功能
SIGKILL 9 杀死进程。
SIGCONT 18 让信号继续运行。
SIGSTOP 19 让信号停止。
SIGCHLD 17 子进程结束的时候,给父进程发送该 信号。
4bg(backgroud) 将一个挂起的进程在后台的运行。
使用方法:bg job号 把挂起的进程放到后台运行。
5fg(foreground) 将后台的进程到前台运行。
./a.out 默认是在前台运行我们的程序。我们可以在启动的时候让我们的程序在后台运行。
./a.out 让程序在后台运行。这里的符合表示把我们的程序放到后台来运行。
fg的使用方法: fg job号 把后台的进程放到前台运行。
常用概念了解:
ctrl + z 给当前前台执行的命令放到后台,并且将进程暂停 挂起。
jobs 看出当前后台运行的程序,并显示其job号
4. 创建子进程函数
1创建进程[pid_t 是int类型]
#include unistd.h
pid_t fork(void);
功能:在当前进程中,创建子进程
返回值:
成功 给父进返回子进错的pid号
给子进错返回0,
失败 返回 -1,并且置errno,
注意:
1fork 是通过对当调用fork()的进程的复制来实现对新进程的创建
子进程:新创建的进程
父进程:调用fork()函数的进程。
2子进程创建的过程:拷贝父进程的堆,栈,rodata段,data段,bss段,
系统相关信息,代码段共享。
3fork之后父,子进程谁先执行是不确定,取决系统的调度算法
4fork之后,父子进程都是从fork下一条语句开始执行
5fork之后,父子进程拥有独立的4G虚拟地址空间。互相不影响
6fork之后,子进程会继承父进程的打开的文件描述符集合,共用相同的文件表项。
思考:我们如何根据pid来判断当前进程是父进程还是子进程呢?
pid 0 表示此时是父进程的运行空间。
pid == 0 表示此时是子进程的运行空间
僵尸子进程:子进程结束的时候,父进程没有进行收尸操作(父进程还存在),
此时占用资源。
孤儿进程:父进程结束了,子进程会变成孤儿进程,会自动被init进程所收养。
5. vfork函数详解
1写时拷贝简介
详见《3.写时拷贝简介》
2vfork
#include sys/types.h
#include unistd.h
pid_t vfork(void);
功能:创建子进程
参数:无
返回值:成功,对父进程而言。返回子进程的PID好。
对子进程而言。返回0.
错误,返回-1。
fork与vfork的区别:
1fork函数父子进程谁
文档评论(0)