linux进程创建过程 - 技术分享 - 志盟培训
首页技术分享 linux进程创建过程

linux进程创建过程

更新时间:2017-05-18      作者:龙老师       阅读:799

一、 进程的创建

fork的含义:新进程通过对老进程进程复制得到,这个过程由fork机制来完成。进程存在于内存中,拥有自己的地址空间(address space),当进程fork的时候,linux在内存中分配新的内存空间给新进程用,同时将老进程内存空间中的内容复制给新进程,此后,两个进程同时运行。

进程树的含义:系统中所有里程的祖先进程都是init进程,计算机启动时,内核(kernel)只建立了一个init进程。系统并不提供建立新进程的系统调用,所有进程的建立都是通过fork init进程得到的,老进程是新进程的父进程,新进程是老进程的子进程,PPID即是进程的父进程。所有的进程可以构成以init为根的进程树,可以用pstree来查看。

二、子进程的终结

退出信息(exit code):当子进程终结时会通知父进程,并清空自己所占据的内存,并在kernel里留下自己的退出信息(exit code):

0: 子进程顺利运行,为0;

>0:有错误或异常状况,为>0的整数。这个信息里会解释该进程为什么退出。

父进程在得知子进程终结时,有责任对该子进程使用wait系统调用。这个wait函数能从kernel中取出子进程的退出信息,并清空该信息在kernel中所占据的空间。但是,如果父进程早于子进程终结,子进程就会成为一个孤儿(orphand)进程。孤儿进程会被过继给init进程,init进程也就成了该进程的父进程。init进程负责该子进程终结时调用wait函数。

ps:

1. 当子进程的退出信息滞留在kernel中的状况(父进程不对子进程调用wait函数),这样的情况下,子进程成为僵尸(zombie)进程。当大量僵尸进程积累时,内存空间会被挤占。

2.linux实现了比线程更灵活的进程模型,线程只是其进程模型中的一种选项,一般来说fork用于创建进程,clone创建线程。

在线报名

志盟科技上海招聘

在线报名 联系我们

志盟科技深圳招聘

在线报名 联系我们

志盟科技北京招聘

在线报名 联系我们
联系我们

咨询热线:

咨询 QQ:517578         

就业学员

  • 就业学员

    姓名:郭凡凡 
    院校:阜阳师范学院
    就职:佳戴
    职位:软件工程师
    月薪:10000

  • 就业学员

    姓名:陈祥龙 
    院校:中北大学
    就职:美囤妈妈
    职位:软件工程师
    月薪:9000

  • 就业学员

    姓名:陈建伟
    院校:南昌航空大学
    就职:SONY
    职位:嵌入式工程师
    月薪:8000

×
×
  • *真实姓名
  • *联系手机
  • *上课地址
  •    QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。

×
  • *真实姓名
  • *联系手机
  • *联系邮箱
  • * QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一的服务。

本站由 宽敬科技——创新企业的建站运营顾问 提供支持