相关概念

进程定义

程序:程序就是一个指令序列

引入多道程序技术之后:为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。

内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。擦欧总系统要怎么才能找到各个程序的存放位置呢?

系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)

PCB、程序端、数据段三部分构成了进程实体(进程映像)。一般情况下,把进程实体就简称为进程;例如:所谓创建进程,市值上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB.

PCB是进程存在的唯一标志!!

从不同角度进程可以有不同的定义(但都在强调“动态性”):

  1. 进程是程序的一次执行过程。
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
  3. 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

进程的组成

PCB:

---进程描述信息:

----------进程标识符PID:

当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID、用于区分不同的进程

----------用户标识符UID:

标识进程所属的用户是谁

---进程控制和管理信息:

----------进程当前状态

----------进程优先级

---资源分配清单

----------程序段指针

----------数据段指针

----------键盘

----------鼠标

---处理机相关信息

----------各种寄存器值

当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示了当前程序执行到了哪一句。

进程的组织

在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。

注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题。

链接方式:

索引方式:

进程得特征

进程和程序是两个截然不同得概念,相比于程序,进程拥有以下特征:

  1. 动态性:进程是程序得一次执行过程,是动态得产生、变化和消亡的
  2. 并发性:内存中有多个进程实体,各进程可并发执行
  3. 独立性:进程是能独立运行、独立获得资源、独立接收调度的基本单位;资源分配和接受调度的基本单位
  4. 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
  5. 结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成

进程的状态

进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。

  1. 运行态:占用CPU,并在CPU上运行
  2. 就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行;(万事俱备,只欠CPU)
  3. 阻塞态(等待态):因等待某一事件而暂时不能运行(CPU是计算机中最昂贵的不见,为了提高CPU的利用率,需要先将进程需要的其他资源分配到位才能得到CPU的服务)
  4. 创建态:进程正在被创建,操作系统为进程分配资源、初始化PCB
  5. 终止态:进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB

操作系统需要完成创建进程。操作系统为该进程分配所需的内存空间等系统资源,并为其创建、初始化PCB(如:为进程分配PID)

进程状态的转换

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

简单理解:反正进程控制就是要实现进程状态转换

如果PCB的标识状态和这个进程所处的队列不一致就会发生很严重的问题,所以有了原语!

原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作即原子操作。

原语采用“关中断指令”和“开中断指令”实现

原语运行在核心态

显然,关/开中断指令的权限非常大,必然是允许在核心态下执行的特权指令

学习技巧:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:

1.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)

  • 所有的进程控制原语一定都会修改进程状态标志
  • 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
  • 某进程开始运行前必然要恢复运行环境

2.将PCB插入合适的队列

3.分配/回收资源

进程通信

进程通信就是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。

为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。

1.共享存储

2.管道通信

“管道”是指用于连接读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区

  • 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
  • 各进程要互斥地访问管道
  • 数据以字节流得形式写入通道,当管道写满时,写进程得write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程得read()系统调用将被阻塞。
  • 如果没写满,就不允许读。如果没读空,就不允许写。
  • 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据得情况。

3.消息传递

进程间得数据交换以格式化得消息为单位。进程通过操作系统提供得“发送消息/接收消息“两个原语进行数据交换。

操作系统重要知识清单:一起来搞懂进程呀!!相关推荐

  1. 【职场必备知识】一文搞懂五险一金(打工人必备)

    社保局电话:12333 五险一金非常重要的是:缴纳基数和缴纳比例! 文章目录 五险一金是什么 五险一金缴纳比例 北京职工社保缴费基数和比例 成都职工社保缴费基数和比例(2022年7月15日) 社保 养 ...

  2. jmeter进程和线程的区别_一文搞懂进程和线程的区别

    计算机系统是由硬件和软件组成的,它们共同协作以运行应用程序.先来看下面这张一个典型的计算机系统的硬件组成图 从上图中看出一个系统由 CPU.ALU(算术逻辑单元).PC(程序计数器).总线(贯穿整个系 ...

  3. 搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  4. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  5. linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  6. potplayer 多个进程_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?...

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  7. 不为人知的网络编程(十三):深入操作系统,彻底搞懂127.0.0.1本机网络通信

    本文作者张彦飞,原题"127.0.0.1 之本机网络通信过程知多少 ",首次发布于"开发内功修炼",转载请联系作者.本次有改动. 1.引言 继<你真的了解 ...

  8. 网络知识扫盲,一文搞懂 DNS

    在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象. 而网络知识,通常是很抽象,不容易理解的,有很多同学就在这里裁了跟头.为了更好地通过面试, ...

  9. 这个外挂要上天了!教一千遍都不会的数理技巧,还不如搞懂最根本的概念!

    ▲ 点击查看 数理化的学习对于很多孩子,包括家长都是一个大难题. 比如,我们要教孩子认识动物,一般是要给孩子看动物的图片或实体,孩子自然就对这个动物有个认知. 要教孩子数字,就会用一件玩具.两个苹果这 ...

  10. 别不承认!搞懂那些数理原理,才发现它们和枯燥根本不沾边!

    ▲ 点击查看 数理化的学习对于很多孩子,包括家长都是一个大难题. 比如,我们要教孩子认识动物,一般是要给孩子看动物的图片或实体,孩子自然就对这个动物有个认知. 要教孩子数字,就会用一件玩具.两个苹果这 ...

最新文章

  1. 使用hello word写小说
  2. SAP Retail 寄售门店关键配置
  3. systemd系统服务管理详解
  4. 如何从PostgreSQL json中提取数组
  5. 增加标 和增加其内容
  6. 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
  7. C语言getchar函数
  8. 为什么defineProperty不能检测到数组长度的“变化”
  9. Mysql 数字类型转换函数
  10. ExcelReport第二篇:ExcelReport源码解析
  11. 安防视频之web无插件播放视频
  12. Parse Server(含Dashboard)部署于Centos7.6 64位
  13. 运维工程师遇到的运维事件_运维、运维工程师的相关知识随记
  14. 怎么在服务器上接无线路由器,交换机怎么用 交换机接无线路由器设置教程【详解】...
  15. maven出现Process terminated
  16. java线程游戏之随机小球游戏V2
  17. 正点原子开发板STM32F407ZG-基于AD7606进行八路数据采集
  18. 【情报百科】一张照片就能精准锁定你的位置
  19. PyQt5在窗口上显示动态图表
  20. ubuntu 16.04 无法连接wifi

热门文章

  1. 上海亚商投顾:沪指缩量跌0.43%
  2. 常见名称解析_著名软件著名计算机语言
  3. 未缓存的IPv6路由项链表
  4. 【docker-gpu】报错:W: GPG error:xxx, InRelease: The following signatures couldn‘t be verified because th
  5. 我们的爱恨情仇:人性-关系-危机-和谐的科学研究
  6. python加载模型包_R中的错误:需要h5py Python包来保存和加载模型
  7. 3. INTEGER() can only be applied to a 'integer' , not a 'double'
  8. Java 处理英文文本标点符号去除
  9. Debezium系列之:永久保存history topic中的数据
  10. uniapp获取当前经纬度 地图 支持搜索