操作系统设计与实现-第一章:序言

1.4 系统调用

从某种意义上说,发出一个系统调用类似于发出一个特殊的函数调用,两则的区别仅在于,发出系统调用之后,将进入内核或其他的特权操作系组件,而系统调用则不会这样。如一个进程正在用户态下运行一个程序,然后它需要一个系统服务,如读取文件数据,那么它就必须执行一个 陷阱或者系统调用,把控制权交个操作系统。操作系统通过检查此次系统调用的参数,判断出该进程所需要的服务类型,然后其执行相应的服务功能,并把控制权交给用户进程,从系统调用后面的那条指令开始

MINIX 3 共有53条系统调用,被分为6大类。

1.4.1 进程管理的系统调用

pid = fork() 创建一个与父进程相同的子进程

如果返回0,表明当前进程是子进程。返回一个整数则是父进程,该整数即为子进程的标识号PID。
我的理解是父进程在fork()后,系统创建一个父进副本并运行,因为是完全拷贝,包括进程状态,变量,以及运行到了哪个位置都完全一致,父进程在执行fork()函数到达函数末尾时应该就把子进程创建出来了,所以子进程刚好从fork()函数结尾处开始运行,准备返回,又因为系统标记为子进程,所以在子进程中,从fork()返回的是0。子进程本身并没有执行fork()的全部,它只是从结尾处开始运行,最后返回了一个0。而在父进程则走完了fork()完全流程,返回一个整数。

转载于:https://www.cnblogs.com/wjundong/p/11568036.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值