【进程篇】进程

进程    

进程概念:一个正在运行的程序

pid:唯一标识一个进程/pcb:进程控制块(进程描述符),描述一个进程的属性信息的结构体

进程状态:就绪 运行 阻塞

僵死进程:1.子进程先结束,2.父进程没有调用wait获取子进程的状态信息(退出码)-》(系统不删子进程的PCB)

1.fork复制进程流程  复制PCB,重新分配新的pid(修改才重新分配,其他先共享(提高效率))

1)在父进程中,fork返回新创建子进程的进程ID;

2)在子进程中,fork返回0;

3)如果出现错误,fork返回一个负值-1;

其实就相当于链表,进程形成了链表,父进程的fpid(p 意味point)指向子进程的进程id, 因为子进程没有子进程,所以其fpid为0.

fork与vfork的区别?

1. fork要拷贝父进程的数据段;而vfork则不需要完全拷贝父进程的数据段,在子进程没有调用exec和exit之前,子进程与父进程共享数据段

 

 

2. fork不对父子进程的执行次序进行任何限制;而在vfork调用中,子进程先运行,父进程挂起,直到子进程调用了exec或exit之后,父子进程的执行次序才不再有限制

2.系统最多能够运行多少进程?不考虑内存够不够,int上限,宏定义:32768,到了回头找(从300开始)

3.fork使用

int main()

{

   fork||fork;

   printf(“A\n”);

} //搞清楚  几道题

 

4.fork什么被复制,什么在共享

文件共享:父进程打开的文件,在fork后可以在子进程中访问

子进程复制父进程的数据空间(数据段)、栈和堆,父、子进程共享正文段。对于程序中的数据,子进程要复制一份,但是对于指令,子进程并不复制而是和父进程共享。

文件共享:父进程打开的文件,在fork后,可以在子进程中访问

写实拷贝(以页为单位):一个页中的数据发生改变,整个页要重新拷贝

 

Exec系列  替换进程

主函数:int main(int argc,char* argv[],char* envp[])

Argc:参数个数  argv:参数内容  envp:环境变量

文件描述符:每打开一个文件,就得到一个文件描述符

Open read write close

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值