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()完全流程,返回一个整数。

  • 相关阅读:
    Linux下JDK安装位置
    Oracle中的User与Schema
    MFC中不同窗口间的切换
    MFC 动态的画线 画当前的线是清除上一次画的线
    VC ADO连接ACCESS步骤及错误处理
    虚继承和虚函数继承
    虚拟机无法连接连接U盘
    未能找到类型或命名空间
    VS2008 重构 封装字段 出错 无法使用
    vs2010 Visual Studio 遇到了异常。这可能是由某个扩展导致的
  • 原文地址:https://www.cnblogs.com/wjundong/p/11568036.html
Copyright © 2011-2022 走看看