进程

  • 前言
  • 一、进程的相关概念
    • 1.进程与程序的区别
    • 2.并发与并行的区别
  • 二、进程管理
    • 1.进程的描述(PCB(Process control black))
      • 1.进程的结构体(PCB)的属性(与进程有关)
      • 2.进程的状态(与CPU相关的属性)
      • 3. 进程的优先级(与CPU相关的属性)
      • 4.进程的上下级
      • 5.进程的记账信息
    • 2.PCB的组织
    • 3.进程之间的通信
  • 三.小知识:
  • 总结

前言

对于一个后端程序员,在操作系统中,我们与之打交道最多的可能就是进程管理,而对于进程管理,我们首先最重要的就是去了解什么是进程,这篇博客将会仔细讲讲什么是进程,揭开进程的面纱


一、进程的相关概念

我们都知道,我们写的代码,只是一个存储在硬盘的静态文件,只有通过编译后才会变成可执行的二进制文件,当我们运行这个文件时,它会被加载到内存上,然后CPU就去执行每一条指令,那么这个运行中的程序就被称为"进程"

1.进程与程序的区别

  1. 在上面我们有说到,一个运行中的程序就被称为进程,所以从这点可知,程序是静态的观念,进程是动态的观念;
  2. 程序是永存的,进程是暂时的(有创建,销毁)
  3. 进程具有并发性,程序没有
  4. 进程是竞争计算机资源的基本单位,程序不是
  5. 进程和程序不是一 一对应的,多个进程可执行一个程序,当然一个进程也可以执行多个程序(比如网易双开)

2.并发与并行的区别

经过上面学习,我们知道了进程就是在内存上通过CPU去执行可执行文件中的每一条指令,每个指令都有不同的功能,当我们执行到的指令是去硬盘读取文件的时候,这个时候就涉及到了访问磁盘了,也就是IO操作,这个过程是非常慢的,这个时候难道我们就在这等着?当然不是,CPU那么伟大的发明,怎么可能傻傻的去等呢。这时候CPU就会去执行其他进程,当原本读取文件的进程读取结束,发送一个中断,然后CPU回来继续执行。因为这多个程序,交互执行,就产生了CPU管理多个进程的想法,进程交替速度很快,就像并行一样

并发:是一个处理器核交替处理多个进程,但交替很快,就像是多个进程同时执行(但不是并行)
并行:是两个处理器核分别处理一个进程,没有交替(两个进程同时运行)
所以他们的区别在于宏观上和微观上:宏观上并发就是并行,微观上却是不相同的

二、进程管理

所谓的进程管理,其实就分为两步
1.描述一个进程:使用结构体/类,把一个进程有哪些信息,表示出来
2.组织这些进程:使用一定的数据结构,把这些给构体/类,放到一起(双向链表)

1.进程的描述(PCB(Process control black))

1.进程的结构体(PCB)的属性(与进程有关)

  1. PID(Process Identification)每一个进程都需要一个唯一的身份标识(当这个进程终止后,这个标识码会被回收,然后可能赋值给下一个进程)
  2. 内存指针:当前这个进程使用的内存是哪一部分,进程要运行起来,就会消耗一定的硬件资源,比如内存,这个内存指针指代使用了哪些内存资源
  3. 文件描述符表:硬盘上存储的数据大多都是一文件格为单位进行整理的;进程每打开一个文件,就会产生一个“文件描述符”,一个进程可能会打开多个文件,也就产生了多个“文件描述符”,把这些组合起来放在一个表里保存下来,就形成了一个文件描述符表

2.进程的状态(与CPU相关的属性)

在上面讲到,当一个进程去访问磁盘的时候,会非常耗时,这时CPU就会去执行其他进程,但是在这之前,会保存这个进程的信息(进程的上下文),进程的状态。优先级等

  • 运行状态:这个时刻这个进程占用CPU。
  • 就绪状态:可以运行,但是CPU上有其他进程在运行,所以进入暂时等待
  • 阻塞状态:因为某一原因进入阻塞状态(比如要拿的资源还没获取到)

此外还有另外4种状态
1.创建状态:顾名思义也就是进程创建的那一会儿的状态(准备资源)
2.结束状态:一个进程运行结束后的那一刻状态
3.就绪挂起等待:当内存中阻塞状态的进程很多时。会占用内存空间,于是会把它放入磁盘中等待(等待拿到资源),当拿到资源就会变成就绪挂起等待(等待从磁盘进入内存)
4.阻塞挂起等待:这个状态就是在磁盘中等待拿到资源

3. 进程的优先级(与CPU相关的属性)

进程之间的调度不一定是公平的,也会有优先级之分(即进程抢占 CPU 时的优先级)

比如有的进程比较重要,那么它的优先级会比较高,所以它在CPU上运行的时间占CPU总运行时间的百分比就会很高,而不是很重要的,只需要时不时让他上CPU运行一会就好了,毕竟该程序打开运行了,总得运行一下吧。

4.进程的上下级

上下文,就是描述了当前进程执行到哪里这样的“存档记录”,进程在离开CPU的时候就要把当前运行的中间结果“存档”,等到下次进程在回到CPU上时,再恢复之前的存档,从上次的执行结果继续执行

举例:身为一个居家好男人,做菜是必不可少的技能,当然作者也属于这一类人,于是暑假在家做饭就成了我的小任务,有一天,我在家炖鸡汤,当我把鸡洗干净之后,准备下锅的时候,我的老妈叫我去车库提一下菜,有点重,于是我就记录下现在炖鸡汤到了哪一步(已经洗干净),当我把菜提回来后,我们通过记录(上下文)可知现在鸡应该下锅了。这就是进程上下文的作用了。

然而进程中当然不是记录炖鸡,所谓上下文具体指的就是进程运行过程中,cpu内部的一系列寄存器的值.
寄存器
存档: 进程离开cpu就需要将寄存器的值保存在PCB上下文字段中
读档: 进程下次回来,cpu再把PCB中的值恢复到寄存器中.

5.进程的记账信息

统计了每个进程在cpu上执行了多久
可以作为调度的参考依据.

2.PCB的组织

对于上面讲到的结构体(PCB),我们通常使用双向链表来组织这些PCB
根据进程的状态不同分类,
把所有就绪状态的进程连在一起,组成了就绪队列
把所有阻塞状态的进程连在一起,组成了阻塞队列

对于双向链表,这是我们组织PCB常用的组织结构,此外还有索引方式的组织,但是这种不太好,把所有相同状态的进程放入一个索引表。而进程有创建和销毁,即数据结构中的插入和删除,索引方式中的插入和删除很麻烦,但是对于链表就很方便,所以通常选用链表

3.进程之间的通信

(进程并不是直接操作物理内存地址,会产生大问题)

一个进程无法直接干预另一个进程的内容
“进程的独立性”
每个进程有自己的独立空间(大大提升了操作系统的稳定性)

但是有时候,需要进程之间进行交互,相互配合
如果每个进程可以直接访问物理内存,其实是没有隔离性的,也就不需要进程间的通信了,进程1直接把计算的结果写到进程2里就好了

所谓的进程间通信,就是在隔离性的前提下,找一个公共的区域,让两个进程借助这个区域来完成数据的交换

此外操作系统提供的进程之间的通信具体方式有很多种:管道,消息队列,共享内存,信号.....

三.小知识:

CPU寄存器:CPU 内部一个容量小,但是速度极快的内存;
程序计数器:存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。

总结

通过写这篇博客,我理解到了什么是进程,知道了进程与程序的区别,并发与并行的区别,知道了PCB的许多属性,且它们的作用,还对组织这些PCB的数据结构有了理解,知道了进程之间为什么
要有进程之间的通信。受益很大,加油!!!

【操作系统之进程了解】相关推荐

  1. 【操作系统】进程 与 线程 详解(以及二者的比较)

    目录 1.CPU基本组成原理 2. 进程(process) 1.1 操作系统管理进程的方式 1.2 PCB中的属性 1.3 实现进程调度相关属性 1.3.1 状态 1.3.2 优先级 1.3.3 记账 ...

  2. linux六种进程状态,Linux操作系统中进程的七种状态

    Linux操作系统中进程的七种状态 发布时间:2018-05-07 20:43, 浏览次数:741 , 标签: Linux 1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进 ...

  3. 我的操作系统复习——进程(下)

    上一篇博客是复习操作系统进程篇的上篇,包括进程状态.PCB.进程控制等--我的操作系统复习--进程(上),本篇博文是进程篇的下篇,开始复习进程同步.进程通信,以及重要的线程概念. 一.进程同步 什么是 ...

  4. 失败的windows系统服务调用readfile():管道已结束?_操作系统之进程详解(一)

    一.进程的概念和特征 进程知识拓扑图 进程的定义 1. 进程是程序的一次执行过程. 2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动. 3.进程是具有独立功能的程序在一个数据集合上运行的过 ...

  5. 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行

    文章目录 2.1 前趋图和程序执行 2.1.1 程序的顺序执行及其特征 1. 程序的顺序执行 2.程序顺序执行时的特征 2.1.2 前趋图 2.1.3 程序的并发执行及其特征 1. 程序的并发执行 2 ...

  6. 操作系统(二): 进程与线程

    操作系统(二): 进程与线程 本章解读 进程管理是操作系统重点中的重点,涵盖了操作系统中大部分的知识和考点.其主要包括四部分:进程与线程,处理器调度,同步与互斥,死锁.所以我准备分四个部分来解释这四个 ...

  7. 操作系统之进程和线程

    操作系统也是软件,区别于应用软件的最大特点具有进程管理.内存管理等功能. 一 进程 1.1 什么是进程(process) 进程指的就是正在运行中的程序.进程也是有生命周期,当程序运行结束,则进程结束. ...

  8. 操作系统OS进程(一)初识

    OS进程 什么是进程 进程状态 中断 信号 什么是进程 逻辑上,执行程序的过程 操作系统加载程序,执行程序,产生一个进程 物理上,操作系统分配的资源 程序执行过程中需要的程序,数据,以及内存.寄存器等 ...

  9. Linux操作系统下进程讲解(史上最强总结)

    Linux操作系统下进程讲解 一.进程的基本概念: 1. 什么是进程 在传统的操作系统中,程序不可以独立的运行,作为资源分配和独立运行的基本单位都是进程.进程的定义是一个可执行中程序的实例,系统中每一 ...

  10. 【操作系统】—进程的状态与转换

    [操作系统]-进程的状态与转换 一.进程的三种基本状态 进程的另外两种状态 三.进程状态的转换

最新文章

  1. Redis的主从复制与高可用搭建(哨兵模式)
  2. BCH区块链上启动新应用程序Chainfeed
  3. GridView中DropDownList联动
  4. tmp ubuntu 自动删除吗_Linux tmp目录自动清理总结
  5. NYOJ 257 郁闷的C小加(一)
  6. 如何利用 Myflash 解析 binlog ?
  7. 直接插入排序(C语言)实现
  8. Leecode刷题热题HOT100(3)——无重复字符最长子串
  9. python层次聚类_python中做层次聚类,使用scipy.cluster.hierarchy.fclusterdata方法 | 学步园...
  10. 1091.二进制矩阵中的最短路径(力扣leetcode) 博主可答疑该问题
  11. idea谷歌翻译插件translation失效问题(可行)
  12. 记忆训练 0-100的110个数字对应编码
  13. Python求解二元二次函数梯度
  14. 多维时序 | MATLAB实现CNN-LSTM多变量时序预测
  15. Android矩阵运算总结
  16. Android安卓——实现发短信功能的代码
  17. 网站服务器防御怎么查,如何查看服务器被攻击
  18. 客客威客系统,任务发布接受网站
  19. 爬取某电影网站(未写完)
  20. 高级架构师_Redis_第1章_缓存原理与设计

热门文章

  1. php libjpeg,Linux 安装php-5.2.17出现 libjpeg.(a|so) not found
  2. 安徽专升本计算机基础【柳青版】书后全部名词解释习题+部分课后答案
  3. visualGDB配合VS2015使用,出现函数内部局部变量无法跳转到定义的解决方法。
  4. opencv3_java 修改图像大小Resize Imgproc.resize
  5. JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
  6. 移动办公oa管理软件的五大选择要素有哪些?
  7. 小轮子 ios 获取语言
  8. navicat mysql视图_Navicat使用教程:了解关系数据库中的视图
  9. Clion 打包exe无法运行 且 cmd窗口中文乱码
  10. 平面设计中有哪些视觉引导的方法