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

  • 相关阅读:
    C#发邮件
    C#循环遍历mysql
    【转】C#获取当前日期时间(转)
    C#设置DataGridView控件的标题行的高度并且居中显示
    c#窗体实现验证码
    Git 常用命令清单,掌握这些,轻松驾驭版本管理
    Vue 常见面试问题,你可能都知道,但能答好吗?
    Node 爬虫,批量爬取头条视频并保存
    Node 爬虫,批量下载并保存图片
    NodeJS MySql 执行多条sql语句
  • 原文地址:https://www.cnblogs.com/wjundong/p/11568036.html
Copyright © 2011-2022 走看看