zoukankan      html  css  js  c++  java
  • 操作系统设计与实现-第一章:序言

    1.4 系统调用

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

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

    1.4.1 进程管理的系统调用

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

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

  • 相关阅读:
    .NET版UEditor报请求后台配置项http错误,上传功能无法使用的错误解决
    [Asp.net mvc]Asp.net mvc 中使用LocalStorage
    Asp.net mvc Kendo UI Grid的使用(三)
    [Asp.net mvc]Asp.net mvc 使用Json传递数据
    Asp.net mvc Kendo UI Grid的使用(二)
    接口
    结构
    多态
    继承
    方法
  • 原文地址:https://www.cnblogs.com/wjundong/p/11568036.html
Copyright © 2011-2022 走看看