网站大量收购闲置独家精品文档,联系QQ:2885784924

DS_TD_Linux进程管理_0105汇编.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DS_TD_Linux进程管理_0105汇编

Linux进程管理 此页作废 分配 task_struct 分配 thread_info list_head链表结构管理,内核提供链表操作的多种函数和宏。 程序创建的进程具有父子兄弟亲属关系。 进程 可执行文件( 程序) 系统堆栈空间 进程描述符 用户空间 线程 可执行文件( 程序) 系统堆栈空间 进程描述符 用户空间 Linux使用轻量级进程(lightweight process) : 轻量级进程可以同其它进程共享资源,例如内存地址空间、打开的文件描述符、信号处理等等。 通过将轻量级进程与每个线程相关联,线程之间可共享内存地址空间等资源,并且可以由内核可以独立调度。 轻量级进程对多线程应用提供了支持。 Linux线程: 生存在进程中,并使用进程资源; 拥有task_struct结构,拥有进程号; 独立调度; 拥有它自己独立的控制流(前提是只要它的父进程还存在); 仅仅复制可以使它自己调度的必要的资源; 可能会同其它与之同等独立的线程分享进程资源; 是轻量级的,因为大部分的开支已经在创建时完成了。 特点: 循环构成,从创建时永远执行下去;被唤醒执行后,自行休眠。 fork 创建子进程 vfork “写时复制”前的创建进程方式,减少系统开销。 clone 创建线程 CLONE_VM: 子进程共享父进程内存描述符和所有页表(地址空间) CLONE_FS: 子进程共享父进程所在文件系统信息 CLONE_FILES: 子进程共享父进程打开的文件 CLONE_SIGHAND:子进程共享父进程信号处理 CLONE_VFORK:父进程被挂起,直至子进程释放虚拟内 存资源 传统的进程直接把所有的资源复制给子进程,实现简单并且效率低下。如果新进程执行新的映像时候,前面的拷贝就没有什么作用了。 写时复制是一种推迟甚至免除复制的技术: 子进程复制父进程的页表,以只读的方式共享。 当两者之一去写物理页时候,内核才将这个页的内容拷贝到新的物理页,并把这个新的物理页分配给写进程。 调用成功,返回被收集子进程的PID;如果没有子进程,返回-1。 wait执行过程: 阻塞自己 找到一个僵死子进程,否则一直阻塞下去 收集僵死子进程信息 释放子进程,返回 wait起到了同步的作用,父进程只有当子进程结束后才能继续执行。 wait pid_t wait(int *status) 进程的生命周期 #include sys/types.h #include sys/wait.h #include unistd.h #include stdlib.h main(){ pid_t pc,pr; pc=fork(); if (pc 0) printf(fork failed!\n); if (pc == 0){ printf(child process with pid of %d\n,getpid()); sleep(10); } if (pc 0){ pr = wait(NULL); printf(catch a child process with pid of %d\n,pr); } exit(0); } 进程的生命周期 child process with pid of 5970 catch a child process with pid of 5970 运行结果: 进程的生命周期 进程系统调用小结 Fork() 父亲克隆一个 儿子。执行fork()之后,兵分两路,两个进程并发执 行。 终止进程,把进程的状态置为“僵死”,并把其所有的子进程都托付给init进程,最后调用schedule()函数,选择一个新的进程运行。 Exit() Exec() 新进程脱胎换骨,离家独立,开始了独立工作的职业生涯。 等待不仅仅是阻塞自己,还准备对僵死的子进程进行善后处理。 Wait() 进程的生命周期 Q A USA 265 Madison Ave. 4th floor New York, NY 10016, USA Phone: +1-415-215-2123 Canada 17 PebbleCreek Drive Brampton, Ontario Canada L6P 2T8 Phone: +1-647- 802-7708 日本 東京都墨田区八広6-54-1-602  〒131-0041 Phone: +81-090-5546-6819 中国 南京市广州路191号 五环大厦二层 电话: +86-25-5188-7700 创新,我们帮您实现! We help deliver your innovations!

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档