本文阐述操作系统的核心概念之一:进程(Process),主要内容:

  1. 什么是进程
  2. 进程的创建(Creation)
  3. 进程的终止(Termination)
  4. 进程的状态(State)

一、什么是进程

1.1 基本信息

进程是执行程序的一个实例,是对正在运行的程序的抽象(Abstraction),包含当前运行程序的所有程序计数器(PC),寄存器以及变量:程序运行所需要的指令和数据。

如果说程序是一个菜谱,那么进程就是做菜的过程。

我当前系统运行的进程实例(windows 10)

如果一个程序同时运行多次,操作系统会创建多个进程(互不影响),对于操作系统来说就是有多个进程恰好在运行相同的程序而已。上图的Google Chrome就是一个例子(多个实例,互不影响,但是消耗内存资源。。)

1.2 Why Process

为什么操作系统要引入进程的概念?上面提到了隔离,但是隔离不是进程引入的首要驱动力,引入进程的首要驱动力是:增加系统的响应时间。

CPU同一个时间只能做一件事情,只能有一个进程运行在CPU上,但是为什么我们感觉电脑在同时作者很多事情呢?我们一遍在Word中打字,一遍右下角收到邮件通知。

  1. Word是一个进程(当然,打开多个则是多个进程)
  2. 邮件是一个进程

操作系采用自己的调度策略让CPU在Word和Email之间切换,由于切换的非常快,所以用户感觉CPU同时在作者很多事情,从而达到了增加系统响应的效果。

用户感觉

a、b、c进程在同时执行

实际执行

a、b、c同一时间只有一个在执行

1.3 进程调度

用一个例子说明:有一个爸爸准备给儿子做一个蛋糕,他有一份做蛋糕的菜谱,他正在按照食谱做着蛋糕,突然他儿子进来对他说:“爸爸,我要喝牛奶”。这位爸爸停下手中正在做的蛋糕,去给儿子倒牛奶,然后在微波炉加热,最后把牛奶给了儿子。最终这位爸爸又回到原来做蛋糕的地方,继续完成蛋糕。

  1. 蛋糕菜谱: 是程序,先做什么,后做什么
  2. 做蛋糕的过程:是进程A
  3. 给儿子热牛奶的过程:是进程B
  4. 这位爸爸:CPU
  5. 儿子突然要喝牛奶:中断

CPU根据现有的情况(策略)在进程A、B之间切换。上面爸爸倒完牛奶后继续做蛋糕。这里的继续其实就是CPU在进程之间切换之前先保存当前进程的状态,当再次切换到这个进程时,会从之前保存的状态处进行运行(由此也能看出进程切换的开销)。

二、进程的创建(Creation)

2.1 进程创建时机

  1. 在系统启动时创建进程(boot)。这个时候创建的都是系统运行必须的进程,有些用于和UI进行交互,有些属于后台进程,比如Email接受进程
  2. 由现有的进程通过调用系统的Create Call进行创建。比如在一个web系统中,可以另外创建一个excel进程完成数据导入到excel的功能
  3. 当用户发起一个请求时进行创建,比如当用户点击鼠标,在command中输入时会创建相应的进程对用户的请求进行响应

2.2 创建过程

以上的所说的三种创建进程的时机最终创建进程的方式是一致的:由一个已有的进程跳过一个系统调用完成进程的创建。

  1. Unix:Fork
  2. Windows:CreateProcess

该系统调用会告知操作系统去创建一个进程。

发起系统调用的进程为父进程,被创建的进程为子进程,父子进程之间是相互独立的,他们的地址空间完全不同。

2.3 进程的层级关系(Hierarchy)

上面做了阐述,新的进程是已有进程通过像OS发送创建进程的call而完成的。被创建的进程暂且叫child process。这个child process接下来可能也会再次给os发请求创建子进程。。。。。以此类推,将会有一个进程继承链。

上面这种成为一个链的进程在unix中会作为一个进程组而存在。但是在Windows中,这些进程其实是完全独立的。继承关系在进程中不是很重要。

三、进程的终止(termination)

一个进程创建后最终都会终止的,进程会在以下几种条件下被终止,相对比较好理解:

  1. 正常终止:当进程完成自己的事情之后告诉操作系统(System Call)终止进程
  2. 出现错误的时候终止。当进程发现错误时,比如资源不存在或者所运行的程序有bug。比如被0除。
  3. 被其他进程Kill。比如在windows下可以通过任务管理器直接Kill系统的进程

在有些操作系统中当一个进程终止时,有其创建的进程也会被Kill 掉。

四、进程的状态(State)

4.1 状态

进程被创建后有三个状态:

  1. Running(运行中)
  2. Blocked(被阻塞)
  3. Ready(就绪)

Blocked是指进程在等待外部的刺激(与CPU无关),比如Console程序,一直在等待用户输入。

Ready是指进程可以运行,没有等待任何资源,但是CPU被其他进程占用,没有CPU资源

4.2 状态切换

如图:

Running-》Blocked:进程在运行过程中需要其他外部资源。

Blocked-》Ready:进程需要的资源得到了满足

Ready-》Running:由CPU的Scheduler决定,CPU可以给当前进程使用

Running-》Ready:由CPU的Scheduler决定,CPU分配给其他进程使用(比如上面的例子,爸爸停下正在做的蛋糕去给儿子热牛奶,这时候蛋糕处于ready状态)

Operating System-Process(1)什么是进程&&进程的创建(Creation)&&进程的终止(Termination)&&进程的状态(State)的更多相关文章

  1. 个人小爱好:Operating System: three easy pieces—第6章第3小节问题2#进程间的切换

    问题2#:进程间的切换 直接执行的下一个问题是如何实现进程的切换.进程的切换按理说是挺简单的,对吧?不就是决定哪一个进程应该停止,哪一进程应该开始而已,才多大点事情啊?但,事实上这还真的有点棘手:尤其 ...

  2. [Chapter 3 Process]Practice 3.3 Discuss three major complications that concurrent processing adds to an operating system.

    3.3  Original version of Apple's mobile iOS operating system provied no means of concurrent processi ...

  3. osquery An Operating System Instrumentation Framewor

    catalog . Getting Started . install guide for OS X and Linux . Features Overview . Logging . query e ...

  4. 如何定位“Operating system error 32(failed to retrieve text for this error. Reason: 15105)”错误中被占用的文件

      之前在这篇"Operating system error 32(failed to retrieve text for this error. Reason: 15105)"博 ...

  5. Operating system error 32(failed to retrieve text for this error. Reason: 15105)

    一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: DATE/TIME:    2018/7/30 12:10:52 DESCRIPTION: BackupDiskFi ...

  6. book-rev8 Chapter 0 Operating system interfaces

    Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...

  7. [No000035]操作系统Operating System之OS Interface操作系统接口

    接口(Interface) 仍然从常识开始… 日常生活中有很多接口:电源插座:汽车油门… 那什么是接口? 连接两个东西.信号转换.屏蔽细节… Interface: electrical circuit ...

  8. Operating System Concepts with java 项目: Shell Unix 和历史特点

    线程间通信,fork(),waitpid(),signal,捕捉信号,用c执行shell命令,共享内存,mmap 实验要求: 1.简单shell: 通过c实现基本的命令行shell操作,实现两个函数, ...

  9. cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法

    问题描写叙述:   这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cp ...

  10. Operating System 概述和学习图

    Operating System 概述和学习图 大神绕道,鄙人初入 OS . 一.想知OS,先知计算机系统概述 #图解 #基本指令和中断周期 #直接内存存取(Direct Memory Access, ...

随机推荐

  1. 【BZOJ3720】Gty的妹子树 块状树

    [BZOJ3720]Gty的妹子树 我曾在弦歌之中听过你,檀板声碎,半出折子戏.舞榭歌台被风吹去,岁月深处尚有余音一缕……Gty神(xian)犇(chong)从来不缺妹子……他来到了一棵妹子树下,发现 ...

  2. 爬虫入门【7】Python-文件的读写和JSON

    文本文档的读写 最重要的open()方法将返回一个file对象,经常使用的两个参数为open(filename,mode) 其中,filename为file保存的地址,可以是本地地址,相对地址或者绝对 ...

  3. java的小知识点

    1 获取当前路径 System.getProperty("user.dir") System.getProperty()参数大全# java.version            ...

  4. eclipse js调试

    问题: js经常会被浏览器给cache,不管怎么刷都是原来的. 解决: 暂时有一个方法,一刷新就好,下面的截图: 1)先打开 <开发者工具> 2)找到Sources 3)Page中找到你的 ...

  5. HTML相对路径与绝对路径

    在网页制作的过程中,少不了跟路径打交道,比如,包含一个文件,插入一个图片等,与路径都有关系,如果使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等).初学者可能会感到困惑 ...

  6. c的详细学习(1)C语言概述

        本节用来简要介绍c语言.     (1)C语言的特点: C语言是一种集汇编语言及高级语言为一身的,面向过程的结构化和模块化的程序设计语言. 特点: 兼具高级语言与低级语言的双重能力.C语言允许 ...

  7. nodejs模块之http&&url

    我们使用nodejs中的http模块来进行网络操作 一.什么是HTTP协议: 超文本传输协议(HyperText Transfer Protocol)HTTP假定其下层协议提供可靠传输. 因此,任何能 ...

  8. Maze迷宫问题(求最优解)

    迷宫地形我们可以通过读文件的形式,通过已知入口逐个遍历坐标寻找通路. 文件如图: 每个坐标的位置用结构体来记录: struct Pos //位置坐标 { int _row; int _col; }; ...

  9. 算法(Algorithms)第4版 练习 1.3.4

    主要思路: 遇到左括号则一直压栈,遇到右括号时则从栈中弹出一个元素. 如果此时栈为空,则返回false. 如果这个元素与右括号不匹配,则返回false. 重复此过程,最后判断栈是否为空,若为空则返回t ...

  10. HDU3294 Girls' research

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...