文章目录

  • 1 进程的基本概念
  • 2 进程控制与进程同步
  • 3 经典进程同步问题
  • 4 进程通信与线程

1 进程的基本概念

前趋图(Precedence Graph),是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。


程序顺序执行时的特征
① 顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;
② 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
③ 可再现性:当程序重复执行时,都可获得相同的结果。

多道程序中,程序或程序段可以并发执行,但只有在不存在前趋关系的程序之间才有可能并发执行。


程序并发执行时的特征
  (1) 间断性。  (2) 失去封闭性。  (3) 不可再现性。
对于进程的定义,从不同的角度可以有不同的定义,其中较典型的定义有:  (1) 进程是程序的一次执行。  (2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。  (3) 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

进程和程序是两个截然不同的概念,除了进程具有程序所没有的PCB结构外,还具有下面一些特征:  (1) 动态性。  (2) 并发性。  (3) 独立性。  (4) 异步性。
每一个进程至少应处于以下三种基本状态之一: 
 (1) 就绪(Ready)状态:进程获得除处理机以外的所有资源,等待处理机。 
  (2) 执行(Running)状态:进程正在占有处理机,其对应的程序正在处理机上运行。单处理机系统中,只能有一个进程处于运行状态。
   (3) 阻塞(Block)状态:进程正在等待某件事情的发生无法继续运行下去而放弃处理机。

挂起(suspend)操作:为了系统和用户观察和分析进程的需要引入,某进程被挂起,意味着此时该进程处于静止状态。
如果进程正在执行,它将暂停执行。
如果进程原本处于就绪状态,则改进程不接受调度。
与挂起操作对应的是激活(active)状态

2 进程控制与进程同步

进程控制:系统使用一些具有特定功能的程序来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程、高效率、并发执行和协调、实现资源共享的目的。
进程控制是通过原语来实现。
原语:用于完成某种特定功能的不可分割的一段程序。原语是“原子操作”。即一个操作中的所有动作,要么全做,要么全不做。
实现进程控制的程序段被称作进程控制原语。

间接相互制约关系(互斥):源于资源共享,多个进程对共享的资源只能互斥的访问
直接相互制约关系(同步):源于进程合作,多个进程之间相互合作完成某个任务,多个进程存在是某种时序关系,必须按规定时序执行。
用于保证这种关系的机制称为进程同步机制。
OS的核心任务就是解决进程的同步与互斥。
同步机制遵循的规则  (1) 空闲让进:临界区空闲时,应允许一个请求进入临界区的进程立即进入自己的临界区,以便有效的利用资源。  (2) 忙则等待:当已有进程进入临界区时,临界资源正在被访问,其他想进入临界区的进程必须等待,以保证对临界资源的互斥访问。  (3) 有限等待:对于要求访问临界资源的进程,应保证在有限的时间内进入,以免进入“死等”状态。  (4) 让权等待:当进程不能进入临界区时,应立即释放处理机,以免进程进入“忙等”。
信号量机制是Dijkstra在1965年提出的一种同步机制,常见的有:
整型信号量
记录型信号量
信号量集


3 经典进程同步问题

1.用记录型信号量解决生产者—消费者问题
设有n个缓冲区,每个缓冲区存放一个消息,用互斥信号量mutex对缓冲池实现互斥访问;
利用资源信号量empty和full分别表示缓冲池中空缓冲区及满缓冲区的数量.又假定这些生产者和消费者相互等效,只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未空,消费者便可从缓冲池取走一个消息



有五个哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐毕,放下筷子又继续思考。

一个数据文件或记录可被多个进程共享。其中,有些进程要求读;而另一些进程要求可写或修改。
只要求读的进程称为“Reader进程”,其它进程称为“Writer进程”。
允许多个Reader进程同时读一个共享对象,不允许一个Writer进程和其它Reader进程或Writer进程同时访问共享对象。
所谓读者一写者问题是指保证一个Writer进程必须与其它进程互斥地访问共享对象的同步问题。

4 进程通信与线程

进程通信:进程之间的信息交换。
根据通信内容分类:
低级通信:传送控制信号的通信,例如:P,V操作
高级通信 :用户可直接利用操作系统提供的一组通信命令高效地在进程间传送大量数据

管道(pipe)通信系统
所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。
发送进程(即写进程)以字符流形式将大量的数据送入管道;接收进程(即读进程)则从管道中接收(读)数据。
发送进程和接收进程通信时必须实施同步和互斥

消息传递系统(Message passing system)
进程以格式化的消息 (网络中称作报文)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。
基于消息传递系统的通信方式属于高级通信方式,因其实现方式的不同,可进一步分成两类:  (1) 直接通信方式  (2) 间接通信方式


线程是进程中的一个实体,是系统独立调度和分派的基本单位
同一进程的多个线程可以访问进程的所有资源,线程之间的通信更方便
同一进程内的线程切换也因为线程的轻装变得方便很多

【408预推免复习】操作系统之进程的描述与控制相关推荐

  1. 【408预推免复习】操作系统之IO层次结构和IO控制方式

    [408&预推免复习]操作系统之IO层次结构和IO控制方式 文章目录 1 I/O设备 2 I/O系统的层次结构 3 I/O控制方式 4 IO设备分配与回收 文章目录 1 I/O设备 2 I/O ...

  2. 【408预推免复习】操作系统之虚拟存储器

    [408&预推免复习]操作系统之虚拟存储器 文章目录 1 虚拟存储器概述 2 请求分页存储管理方式 3 页面置换算法3.1 最佳(Optimal)置换算法3.2 先进先出(FIFO)页面置换算 ...

  3. 【408预推免复习】操作系统之存储器管理

    [408&预推免复习]操作系统之存储器管理 文章目录 1 基础部分 2 分页存储管理 3 分段存储管理 1 基础部分 物理地址空间(或物理空间.绝对空间):由内存一系列存储单元所限定的地址范围 ...

  4. 【408预推免复习】操作系统之处理机调度与死锁

    [408&预推免复习]操作系统之处理机调度与死锁 文章目录 1 作业调度和进程调度 2 实时调度和死锁概述 3 预防死锁和避免死锁 1 作业调度和进程调度 什么是处理机调度? 处理机调度:如何 ...

  5. 【408预推免复习】操作系统引论

    [408&预推免复习]操作系统引论 文章目录 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处理系统 4 操作系统基本特性 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处 ...

  6. 【408预推免复习】操作系统之文件管理

    文章目录 1 文件和文件系统 2 文件的逻辑结构 3 文件目录 4 文件共享 1 文件和文件系统 文件是具有文件名的一组相关信息的集合. 文件需要有文件名.基本内容和相关属性,如文件类型.文件长度.文 ...

  7. 【408预推免复习】计算机网络(谢希仁第七版)第六章——应用层

    文章目录 1 域名系统 DNS 2 文件传送协议 3 远程终端协议 TELNET 4 万维网 WWW 5 电子邮件 6 动态主机配置协议 DHCP 7 简单网络管理协议 SNMP 8 应用进程跨越网络 ...

  8. 【408预推免复习】计算机网络(谢希仁第七版)第五章——运输层

    文章目录 1 运输层协议概述 2 用户数据报协议 UDP 3 传输控制协议 TCP 概述 5 可靠传输的工作原理 6 TCP 报文段的首部格式 7 TCP 可靠传输的实现 8 TCP 的流量控制 9 ...

  9. 【408预推免复习】计算机网络(谢希仁第七版)第四章——网络层

    文章目录 1 网络层提供的两种服务 2 网际协议 IP 3 划分子网和构造超网 4 网际控制报文协议 ICMP 5 互联网的路由选择协议 6 IPv6 7 IP 多播 8 虚拟专用网 VPN 和网络地 ...

最新文章

  1. BERT, ELMo, GPT-2: 这些上下文相关的表示到底有多上下文化?
  2. 第十五届全国大学生智能汽车竞赛华东区赛程
  3. 在网上找了一些j2ee的视频教程,有需要的朋友可以看看
  4. 2.2 Logistic 回归-深度学习-Stanford吴恩达教授
  5. 记录下两个孩子在MineCraft里面还原公寓的经历
  6. 前端权限控制:实现思路分析-待修改
  7. 牛客 - 牛半仙的妹子Tree(按询问分块+RMQ求LCA)
  8. cf1132E. Knapsack(搜索)
  9. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...
  10. endnote怎么和word关联_endnote x9怎么和word关联?Word中用EndNote X9教程
  11. POJ 3050 Hopscotch
  12. 比较nio大体上优于io的方面
  13. (01)C++之设计模式演变
  14. Android 录音获取分贝值的办法
  15. 基于DL的目标检测技术:R-CNN、Fast R-CNN、Faster R-CNN
  16. EK算法(网络流,最大流)
  17. Mybatis-Plus实现逻辑删除
  18. 使用第三方类库对html进行解析
  19. 【报错】unknown error: DevToolsActivePort file doesn‘t exis
  20. R语言ggplot2可视化散点图(scatter plot)、aes函数中的fill参数为连续变量、使用scale_fill_distiller函数自定义指定连续变量的颜色填充方案

热门文章

  1. torch.Tensor和torch.tensor的区别
  2. 如何动态调试Python的第三方库
  3. opencv python 图片腐蚀和膨胀
  4. elecV2P实现任务定时通知
  5. IP协议号(TCP协议号/UDP协议号)
  6. 华为FusionCompute-VRM密码重置
  7. 59 Celery架构
  8. 20. 邮件提醒(接收邮件)
  9. html表格中添加修改和删除链接,jQuery实现为table表格动态添加或删除tr功能示例...
  10. python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...