进程线程笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

tangtianxu1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档