模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制

097fec4e9c281c2f46a91ce7a6645549.png

abd62e237f99519d6654a9c9df8c3f65.png

操作系统第二章--进程的描述与控制

前趋图和程序执行

    • 前趋图
      • 前趋图是一个有向无循环图DAG,用来描述进程之间执行的前后关系
      • 初始结点:没有前趋的结点
      • 终止结点:没有后继的结点
      • 重量:表示该结点所含有的程序量或结点的执行时间
    • 程序执行
      • 顺序执行
        • 顺序性
        • 封闭性:程序运行时独占全机资源
        • 可再现性
      • 并发执行
        • 间断性
        • 失去封闭性
        • 不可再现性

进程的描述

    • 进程的定义和特征
      • 进程定义
        • 进程是程序的一次执行
        • 进程是一个程序及其数据在处理机上顺序执行时发生的活动
        • 进程是系统进行资源分配和调度的一个独立单位
      • 进程结构
        • 进程控制块PCB:使程序能独立运行
        • 程序段、相关的数据段、PCB
      • 进程特征
        • 动态性:它由创建而产生,由调度而执行,由撤销而消亡
        • 程序是指令集是静态的,进程是动态的
        • 并发性:多个进程实体在一段时间内同时进行
        • 独立性:进程实体是独立运行、独立分配资源和独立接受调度的基本单位
        • 异步性:各进程独立、异步(速度不一致)地运行
    • 进程的基本状态和转换
      • 基本状态
        • 就绪状态:万事俱备,只差CPU资源
        • 执行状态:获得CPU资源,正在执行
        • 阻塞状态:由于突发事件,进程放弃处理机而处于暂停状态
      • 转换
        • 进程调度:就绪态-->运行态
        • 被高优先级任务抢占或超时:运行态-->就绪态
        • I/O请求:运行态-->阻塞态
        • I/O完成:阻塞态-->就绪态
    • 挂起操作
      • 执行的进程暂停下来,处于静止状态
    • 进程管理中的数据结构
      • 进程控制块的作用PCB
        • 独立运行基本单位的标志
        • 间断性运行:保护CPU现场
        • 进程管理:OS通过CPU对进程实施控制和管理
        • 进程调度:提供进程状态、优先级等信息
        • 进程同步与通信:消息队列指针,信号量
      • 进程控制块的内容
        • 进程标识符:唯一标识一个进程
          • 内部标识符:Pid
          • 外部标识符:进程的名字
        • 处理机状态:由各种寄存器内容构成
          • 通用寄存器
          • 指令计数器PC
          • 程序状态字PSW
          • 用户栈指针SP
        • 当进程切换时需要把当前进程的状态的内容保存在进程控制块中
        • 进程调度信息
          • 进程状态:sched.h定义了6个进程状态
          • 可运行状态
          • 可中断阻塞状态
          • 不可中断阻塞状态
          • 僵死状态
          • 暂停态
          • 交换态
          • 进程优先级
          • 其他信息:进程已执行时间
          • 事件:阻塞原因
        • 进程控制信息
          • 程序和数据地址:基地址
          • 进程同步和通信机制
          • 资源清单
          • 链接指针
      • 进程控制块的组织方式
        • 链接方式:指针指向PCB地址
        • 索引方式:通过不同状态的索引表指向PCB地址
        • 多级队列:按照不同状态组织PCB队列,同一状态按照优先级链接

进程控制

    • 原语:由若干条指令组成,用于完成一定功能
      • 是原子操作,一个操作中的所有动作要么不做,要么全做
    • 进程的创建
      • 进程图:描述一个进程的家族关系的有向图
        • 子进程可以继承父进程所拥有的资源
        • 当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程
        • 在撤销父进程时,也必须同时撤销其所有的子进程
      • 引导进程创建另一个进程的事件
        • 用户登录
        • 作业调度
        • 提供服务
        • 应用请求
      • 进程创建 fork()函数
        • 申请空白PCB
        • 为新进程分配资源
        • 初始化进程控制块
        • 将进程插入就绪队列,启动调度
    • 进程终止 exit()函数
      • 根据被终止进程的PID,找到PCB,读取进程状态
      • 若处于执行状态,则终止执行,重新调度
      • 若有子孙进程,则终止所有子孙进程
      • 归还所有资源给父进程或系统
      • 所在队列移除终止进程PCB
    • 进程的阻塞与唤醒
      • 阻塞过程 block
        • 调用阻塞原语block把自己阻塞
        • 状态由执行改为阻塞,将PCB插入阻塞队列
        • 重新调度,将处理机分配给另一就绪进程
      • 唤醒过程 wakeup
        • 阻塞队列中移除
        • 状态由阻塞改为就绪
        • PCB插入到就绪队列
    • 进程的挂起与激活
      • 挂起原语 suspend
        • 检查被挂起进程的状态
          • 活动就绪:静止就绪
          • 活动阻塞:静止阻塞
        • PCB复制到指定区域
      • 激活原语 active
        • 检查激活进程的状态
          • 静止就绪:活动就绪
          • 静止阻塞:活动阻塞

进程的同步

    • 进程同步的基本概念
      • 临界资源:互斥使用的资源
      • 临界区:访问临界资源的那段代码
    • 信号量机制
      • 按照功能分为
        • 互斥信号量:0或1
        • 资源信号量:数字表示资源的可用个数
      • 按照机制分为
        • 整型信号量:定义一个整型量,wait、signal,P、V操作
        • 记录型信号量:不存在忙等现象
        • AND型信号量:同步机制,原子操作
        • 信号量集:分配多个资源
    • 管程机制

经典进程的同步问题

    • 生产者/消费者问题
      • 生产者和消费者进程共享一个大小固定的缓冲区n
      • 分别设置两个指针in和out
        • in指向生产者将存放数据的存储单元
        • out指向消费者将取出数据的存储单元
      • 创建信号量实现生产者和消费者进程的同步
        • 互斥信号量mutex:进程对缓冲池互斥使用
        • 资源信号量empty:空缓冲区的数量
        • 资源信号量full:满缓冲区的数量
    • 读者/写者问题
      • 允许多个读者进程可以同时读数据
      • 写者进程互斥写数据
      • 若有写者进程正在写数据,则不允许读者进程读数据
      • 读者优先:只有当全部读者退出,才允许写者进入写数据
    • 哲学家进餐问题
      • 记录型信号量:wait、signal考虑左筷子和右筷子(可能存在死锁)
      • AND信号量:Sswait、Ssignat

进程通信

    • 进程通信的类型
      • 共享存储器系统
        • 基于共享数据结构的通信方式
        • 基于共享存储区的通信方式
      • 管道Pipe通信
        • 用于连接读写进程以实现通信的共享文件
      • 消息传递方式
        • 直接通信:利用OS提供的发送命令Send、Receive
        • 间接通信
          • 信箱:通过中间实体(如共享数据结构)
          • 消息队列:msgsnd、msgrcv、msgget

线程VS进程

    • 调度:线程是调度分配的基本单位,进程是拥有资源的基本单位
    • 并发性:线程并发执行效率更高
    • 拥有资源:线程仅有少量资源来完成运行需求,不拥有系统资源
    • 独立性:线程独立性更低
    • 系统开销:切换线程系统开销低

网站阅读

https://geminiplanet.cn/Operating-System-4/​geminiplanet.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对没有标记为安全的activex控件进行初始化和脚本运行_RASP攻防 —— RASP安全应用与局限性浅析...

文|【腾讯安全平台部数据安全团队】 qiye & baz 前言随着Web应用攻击手段变得复杂,基于请求特征的防护手段,已经不能满足企业安全防护需求。在2012年的时候,Gartner引入了“Runtime application self-protection”一词&#x…

java中堆和栈有什么区别?

堆和栈都是Java用来在RAM中存放数据的地方。 一、堆 (1)Java的堆是一个运行时数据区,类的对象从堆中分配空间。这些对象通过new等指令建立,通过垃圾回收器来销毁。 (2)堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译…

台式机dp接口_精品导购:你想要的商务台式机 都在这里了!

不少公司都会为员工配备办公电脑,而公司在采购这些电脑时,兴许可能对电脑性能、存储容量等都没有研究过,只是图了价格便宜便批量采购,这就导致电脑在使用一段时间后,会频繁出现死机、运行卡顿和硬盘容量不够等情况的发…

roc曲线怎么绘制_ROC曲线和PR曲线

在机器学习中,ROC曲线被广泛应用于二分类问题中来评估分类器的可信度,当处理一些高度不均衡的数据集时,PR曲线能表现出更多的信息。在二分类问题中,分类器将一个实例的分类标记为正例还是负例,这可以用一个混淆矩阵来表…

华三交换机路由器图标_弱电箱网口不够用,用华三8口千兆交换机搞定

如题,公司租的办公室刚装修完,安了弱电箱,无奈联通只给了一个2口的光猫,如何不自己花钱买光猫的前提下,分配三间屋子的五个有线成了问题。之前考虑过直接路由器内置在弱电箱里,不过电箱金属盒有屏蔽和弱电箱…

i2c hid 触摸板不能用_零基础学硬件(6):I2C总线的用处

I2C总线的用处,什么时候需要用I2C总线这东西太简单了,我还有点不想说..不就是一个start一个STOP一个ACK嘛,,简单得不能在简单.他可以根据器件地址进行通信..当年在学校时看了很多这资料..什么时候需要用I2C总线,你的器件是IIC的器件,我就得用IIC总线..什…

problem a: 简单的整数排序_python里的排序

本篇文章主要讲:自定义规则排序 多字段排序开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如:sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3, 4, 5]另一个呢a [5, 2, 3, 1, 4] a.sort() a # 输出…

c++ 多态 运行时多态和编译时多态_C++核心编程 第十一节 多态

前言:多态是C面向对象三大特性之一。多态,指的是一个类实例的相同方法在不同情形有不同表现形式。具有不同内部结构的对象可以共享外部接口。C多态就是用一个更通用的基类指针指向不同的子类实例,为了能调用正确的方法,我们需要用…

多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程

1.多线程原理:(1)概述:多线程是指CPU可以在一段时间中并行执行多个程序,比如我们可以一边听音乐、一边写代码(这两个程序可以“同时进行”,我们称之为多进程,而多进程实现的本质就是…

打开git界面_使用 Gitea 快速搭建私有 Git 版本控制服务

1. 前言分布式版本控制工具 Git 已经是现代软件源代码版本控制首选方案之一。公有 Git 服务提供商 国外知名如 GitHub 国内网络延迟高,Gitlab 涉嫌对中国的歧视不推荐。国内有 Gitee、Coding 生态还不错。但是一般公司的源代码除非开源项目是不会放在公有 Git 服务上的。所以我…

dev项目属性按钮是灰色_Spring Boot 中的项目属性配置

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了Spring Boot 如何使用 SLF4J 进行日志记录,今天跟大家分享一下 Spring Boot 中的项…

diskgenius扩容c盘重启电脑卡住_电脑开机显示:reboot and select proper boot device怎么办?...

今天就碰到有一个知友问,自己电脑开机就提示:reboot and select proper boot device,整个人都懵了,不知道怎么办?其实对于电脑出现问题,大家不要着急,坚哥就来为大家分析下原因以及试着去解决。第一种原因…

大并发下程序出错_Python并发编程理论篇

前言其实关于Python的并发编程是比较难写的一章,因为涉及到的知识很复杂并且理论偏多,所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚,在学习之前首先要记住一个点: 并发编程永远的宗旨就是提高程序的运行效率&am…

月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !

上次发过一个俄罗斯方块的游戏源码,由于是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去之后,运行报错,我这次发的扫雷, 也是通过Easy X实现,…

用python写web网页_从零开始,使用python快速开发web站点(1) | 学步园

环境:ubuntu 12.04 python版本: 2.73 ok,首先,既然是从零开始,我们需要的是一台可以运行的python的计算机环境,并且假设你已经安装好了python, 然后,既然是快速开发,必不可少的需要用到框架,py…

修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?

货代是货物代理(freight forwarding agent)的简称,是指经营受他人委托,为其提供代办运输手续,代提、代发、代运货物服务的业务。货物代理,有些是中间商就是自己没有船或者飞机的或者船公司、航空公司&#…

一行代码蒸发64亿人民币!黑客盯上区块链漏洞!Python真的变态!

此前认为,区块链技术由于分布存储、加密算法等技术的应用,拥有了不可篡改、可追溯等被认为是“万无一失”的特性。然而,该特性主要针对存储在区块中的信息来说,以文中开头的案例为例,区块链技术保障了可以追溯到这64亿…

太吾绘卷第一世攻略_建平中学高二数学周练卷(2020.09)

试卷图片仅供学习交流使用,答案仅供参考【往期内容】高一是坎, 高二是坡, 高三是峰! 最全学习攻略新高一数学教材必修第一册第一章习题答案往年高中9月开学考月考数学试卷汇总2020上海高考复交综评录取率top202020北京大学强基计划数学试题2020上海16区零志愿、名额…

自动补足算法是什么_数据、算法岗的几点经验分享!

learners | 作者Datawhale | 来源目录有哪些好的秋招经验分享?机器学习中常用的最优化方法有哪些?想通过数据竞赛来提升实践能力,作为小白有什么入门经验?(今日问题)有哪些好的秋招经验分享?1李玲 - 携程算法工程师(…

我精心珍藏的Python代码技巧

01.****简洁的表达式 image 点评:Python因为简洁高效而出名,就是因为语法非常简单,而且内置了很多强大的数据结构: 比如我们可以大量用推导列表来生成很多简洁的代码 比如我们可以用if else组合,本来需要2-3行代码写…