Operating System-Process(1)什么是进程&&进程的创建(Creation)&&进程的终止(Termination)&&进程的状态(State)
本文阐述操作系统的核心概念之一:进程(Process),主要内容:
- 什么是进程
- 进程的创建(Creation)
- 进程的终止(Termination)
- 进程的状态(State)
一、什么是进程
1.1 基本信息
进程是执行程序的一个实例,是对正在运行的程序的抽象(Abstraction),包含当前运行程序的所有程序计数器(PC),寄存器以及变量:程序运行所需要的指令和数据。
如果说程序是一个菜谱,那么进程就是做菜的过程。
我当前系统运行的进程实例(windows 10)

如果一个程序同时运行多次,操作系统会创建多个进程(互不影响),对于操作系统来说就是有多个进程恰好在运行相同的程序而已。上图的Google Chrome就是一个例子(多个实例,互不影响,但是消耗内存资源。。)
1.2 Why Process
为什么操作系统要引入进程的概念?上面提到了隔离,但是隔离不是进程引入的首要驱动力,引入进程的首要驱动力是:增加系统的响应时间。
CPU同一个时间只能做一件事情,只能有一个进程运行在CPU上,但是为什么我们感觉电脑在同时作者很多事情呢?我们一遍在Word中打字,一遍右下角收到邮件通知。
- Word是一个进程(当然,打开多个则是多个进程)
- 邮件是一个进程
操作系采用自己的调度策略让CPU在Word和Email之间切换,由于切换的非常快,所以用户感觉CPU同时在作者很多事情,从而达到了增加系统响应的效果。
用户感觉
a、b、c进程在同时执行

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

1.3 进程调度
用一个例子说明:有一个爸爸准备给儿子做一个蛋糕,他有一份做蛋糕的菜谱,他正在按照食谱做着蛋糕,突然他儿子进来对他说:“爸爸,我要喝牛奶”。这位爸爸停下手中正在做的蛋糕,去给儿子倒牛奶,然后在微波炉加热,最后把牛奶给了儿子。最终这位爸爸又回到原来做蛋糕的地方,继续完成蛋糕。
- 蛋糕菜谱: 是程序,先做什么,后做什么
- 做蛋糕的过程:是进程A
- 给儿子热牛奶的过程:是进程B
- 这位爸爸:CPU
- 儿子突然要喝牛奶:中断
CPU根据现有的情况(策略)在进程A、B之间切换。上面爸爸倒完牛奶后继续做蛋糕。这里的继续其实就是CPU在进程之间切换之前先保存当前进程的状态,当再次切换到这个进程时,会从之前保存的状态处进行运行(由此也能看出进程切换的开销)。
二、进程的创建(Creation)
2.1 进程创建时机
- 在系统启动时创建进程(boot)。这个时候创建的都是系统运行必须的进程,有些用于和UI进行交互,有些属于后台进程,比如Email接受进程
- 由现有的进程通过调用系统的Create Call进行创建。比如在一个web系统中,可以另外创建一个excel进程完成数据导入到excel的功能
- 当用户发起一个请求时进行创建,比如当用户点击鼠标,在command中输入时会创建相应的进程对用户的请求进行响应
2.2 创建过程
以上的所说的三种创建进程的时机最终创建进程的方式是一致的:由一个已有的进程跳过一个系统调用完成进程的创建。
- Unix:Fork
- Windows:CreateProcess
该系统调用会告知操作系统去创建一个进程。
发起系统调用的进程为父进程,被创建的进程为子进程,父子进程之间是相互独立的,他们的地址空间完全不同。

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

上面这种成为一个链的进程在unix中会作为一个进程组而存在。但是在Windows中,这些进程其实是完全独立的。继承关系在进程中不是很重要。
三、进程的终止(termination)
一个进程创建后最终都会终止的,进程会在以下几种条件下被终止,相对比较好理解:
- 正常终止:当进程完成自己的事情之后告诉操作系统(System Call)终止进程
- 出现错误的时候终止。当进程发现错误时,比如资源不存在或者所运行的程序有bug。比如被0除。
- 被其他进程Kill。比如在windows下可以通过任务管理器直接Kill系统的进程
在有些操作系统中当一个进程终止时,有其创建的进程也会被Kill 掉。
四、进程的状态(State)
4.1 状态
进程被创建后有三个状态:
- Running(运行中)
- Blocked(被阻塞)
- 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)的更多相关文章
- 个人小爱好:Operating System: three easy pieces—第6章第3小节问题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 ...
- osquery An Operating System Instrumentation Framewor
catalog . Getting Started . install guide for OS X and Linux . Features Overview . Logging . query e ...
- 如何定位“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)"博 ...
- Operating system error 32(failed to retrieve text for this error. Reason: 15105)
一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: DATE/TIME: 2018/7/30 12:10:52 DESCRIPTION: BackupDiskFi ...
- book-rev8 Chapter 0 Operating system interfaces
Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...
- [No000035]操作系统Operating System之OS Interface操作系统接口
接口(Interface) 仍然从常识开始… 日常生活中有很多接口:电源插座:汽车油门… 那什么是接口? 连接两个东西.信号转换.屏蔽细节… Interface: electrical circuit ...
- Operating System Concepts with java 项目: Shell Unix 和历史特点
线程间通信,fork(),waitpid(),signal,捕捉信号,用c执行shell命令,共享内存,mmap 实验要求: 1.简单shell: 通过c实现基本的命令行shell操作,实现两个函数, ...
- cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
问题描写叙述: 这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cp ...
- Operating System 概述和学习图
Operating System 概述和学习图 大神绕道,鄙人初入 OS . 一.想知OS,先知计算机系统概述 #图解 #基本指令和中断周期 #直接内存存取(Direct Memory Access, ...
随机推荐
- SpringMVC结合REST
一.什么是REST REST即 Representational State Transfer,也就是(资源)表现层状态转化.资源是指网络上的一个实体或者说是网络上的一个具体信息. 每种资源对应一个特 ...
- 【网络与系统安全】20179209 wireshark和nmap实验
TCP三次握手包 在进行实验前,先梳理一遍TCP三次握手的过程,这个图是我本科学网络时画过不少于十遍的图,我觉得非常有纪念意义. 稍作解释,第一次握手,客户端发起请求连接,发送一个标志位为SYN的ip ...
- python爬虫之Selenium
Selenium的使用 #!/usr/bin/env python # -*- coding:utf-8 -*- """ Selenium是一个第三方模块,可以完全模拟用 ...
- Linux修改网络配置
修改:/etc/sysconfig/network-scripts/ifcfg-eth0 重启网卡/etc/rc.d/init.d/network restart
- C#自己写的第一个小程序,庆祝一下
Packages.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; na ...
- shell基础part3
shell基础 一.环境变量配置文件简介 1.source命令的作用就是将环境变量配置文件强制生效,其格式为: source 环境变量配置文件或者 . 环境变量配置文件 2.环境变量配置文件中主要是定 ...
- linux基础part2
linux基础 一.linux基础命令 1.pwd:用来显示当前目录位置 2.cd:用来切换目录位置.(eg:cd...cd../...cd-.cd~) 3.ls:用来查看目录或文件信息(eg:ls ...
- cache:annotation-driven" 的前缀 "cache" 未绑定
问题: Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 29 in XML ...
- 工作中你肯定会有关于 Yii2 的小贴士用法,在下面评论分享出来吧。
场景: 数据库有user表有个avatar_path字段用来保存用户头像路径 需求: 头像url需要通过域名http://b.com/作为基本url 目标: 提高代码复用 此处http://b.com ...
- sass表达式前后出现空格
最近发现一个问题,当我用mixin将px转rem时: @mixin pxToRem($remVal: 1){ font-size: ($remVal/75)rem; }.a { @include px ...