【王道·操作系统】第二章 进程管理【未完】

news2024/11/29 18:43:42

一、进程的基本概念

1.1 进程的概念

  • 程序:静态的,存放在磁盘里的可执行文件,是一系列的指令集合
  • 进程Process:动态的,是程序的一次执行过程

1.2 进程的组成

  • 数据结构PCB(process control block),即进程控制块
    1. PID(进程ID,process ID:os为进程分配的唯一的、不重复的号,是进程存在的唯一标志)
    2. UID(进程所属用户:基本进程描述信息,可以让os区分各个进程)
    3. 分配的资源(内存、I/O设备、使用那些文件等:用于实现os对资源的管理)
    4. 运行情况(CPU运行时间、磁盘使用情况、网络流量使用情况:用于实现os对系统进程的控制、调度)
  • 一个进程实体(进程映像)由PCB、程序段、数据段组成,进程实体反应了进程在某一时刻的状态
  • 进程是动态的,进程实体(进程映像)是静态的
  • 进程是进程实体的运行过程,是系统进行资源分配和调度(os让进程在CPU上运行)的独立单位
    在这里插入图片描述

1.3 进程的特征

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

1.4 进程的状态

  • 三种基本状态:
    1. 运行态Runing:占有CPU,并在CPU上运行
    2. 就绪态Ready:已具备运行条件,但没有空闲CPU暂时不能运行
    3. 阻塞态/等待态Waiting/Blcoked:因等待某一事件而暂时不能运行
  • 其他两种状态:
    1. 创建态/新建态New:进程正在被创建,os为进程分配资源、初始化PCB
    2. 终止态/结束态Terminated:进程正从系统中撤销,回收进程拥有的资源、撤销PCB
  • 进程PCB中有变量state表示当前状态
    在这里插入图片描述

1.5 进程的组织方式

  • 链式方式:
    1. 按照进程状态将PCB分为多个队列:执行指针、就绪队列指针、阻塞队列指针(等待打印机的阻塞队列、等待磁盘的阻塞队列…)
    2. 操作系统持有指向各队列的指针
  • 索引方式:
    1. 根据进程状态不同,建立几张索引表:执行指针、就绪表指针、阻塞表指针
    2. 操作系统持有指向各索引表的指针

二、进程的行为

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

  • 更新PCB中的信息
    1. 所有的进程控制原语一定都会修改进程状态标志
    2. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    3. 某进程开始运行前必然要恢复期运行环境
  • 将PCB插入合适的队列
  • 分配/回收咨源

2.1 进程控制的基本概念

  • 进程控制的主要功能:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程转换等功能
  • 如何实现进程控制?原语
    1. 原语的执行具有原子性,即执行过程一气呵成、期间不允许被中断
    2. 通过“关中断指令”和“开中断指令”这两个特权指令实现其原子性

2.2 进程控制相关的原语

2.2.1 进程的创建

在这里插入图片描述

2.2.2 进程的终止

在这里插入图片描述

2.2.3 进程的阻塞与唤醒

在这里插入图片描述

2.2.4 进程的切换

在这里插入图片描述

2.3 进程通信IPC

  • 进程间通信Inter-Process Communication,IPC:两个进程之间产生数据交互
  • 进程通信需要操作系统支持:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

2.3.1 共享存储

  • 基于数据结构的共享
  • 基于存储区的共享

2.3.2 消息传递

  • 直接通信方式
  • 间接通信方式

2.3.3 管道通信

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

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

相关文章

再谈sqlserver事务

事务没提交时,自增字段的数据已经生成 id 3, 此时 脏读数据 select with(nolock) 你获取的id是3 如果 rollback后 我重新提交插入数据,id3 的数据没了,变成了 4 因此,nolock允许脏的语句…

如何在华为OD机试中获得满分?Java实现【查找重复代码】一文详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 小陈负责维护项目中的代…

电子劳动合同如何签订才能生效呢?四步就能教会你!

根据人力资源社会保障部发布的《电子劳动合同订立指引》规定:用人单位与劳动者订立电子劳动合同的,要通过电子劳动合同订立平台订立。 电子劳动合同订立平台要通过有效的现代信息技术手段提供劳动合同订立、调取、储存、应用等服务,具备身份…

前端正确处理“文字溢出”的思路

目录 前言 一. 组件效果预览 二. 单行溢出的处理 三. 前期准备 四. 理清思路 五. 完成 autoEllipsis 函数 六. 保留后缀的实现 七. 源码 八. 优化点 前言 最近在项目中需要做到类似于 Mac 下这种,当屏幕宽度足以容下当前文件名称的时候,文件名称…

小心!认证中的这几个坑别再踩了

【小心!认证中的这几个坑别再踩了】 1.三天拿证不可信! 想要今天办理、明天拿证是不可能实现的。一个认证需要经过前期的材料准备、现场审核、提交报告、颁发证书这一整套流程,拿FSC认证来说,就算所有环节都顺利完成,也…

网络安全入门学习路线,CSDN最全!建议收藏!

前言 网络安全行业热度越来越高,我也因此对这个领域充满了好奇。但是我也是一个完全的门外汉,从零开始学习网络安全有多难?下面是我的经验总结。 第一阶段:入门 我的第一步是寻找网络安全的入门书。推荐《黑客攻防技术宝典&…

Revit被遮挡的基础及快速构件显隐

一、Revit被遮挡的基础 在设计中,常常会有某些构件被上部的其他构件遮挡住的情况。在当前的多数样板中,这类构件会以隐藏线的模式表示出来。如下图所示,某设备下有四个条形设备基础。 这些基础被设备挡住的部分就以虚线的”隐藏线“样式显示在…

开发敏捷高效 | 云原生应用开发与运维新范式

5 月 18 日,腾讯云举办了 Techo Day 腾讯技术开放日,以「开箱吧!腾讯云」为栏目,对外发布和升级了腾讯自研的一系列云原生产品和工具。其中,腾讯云开发者产品中心总经理刘毅围绕“开发敏捷高效”这一话题,分…

三天吃透Java面试八股文(2023最新整理)

文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Java的特点 Java是一门面向对象的编程语言。面…

属实不赖!Alibaba开源GitHub星标114K微服务架构全彩进阶手册

开篇必读: 在当今的数字化经济时代,微服务架构已经成为公司业务构建的主流架构模式,代表了未来的技术发展趋势,同时微服务也成为开发者的必备技能。 本书从微服务架构的设计理念和方法论切入,从不同角度全面介绍微服…

Flink第七章:状态编程

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) Flink第四章:水位线和窗口 Flink第五章:处理函数 Flink第六章:多流操作 Flink第七章:状态编程 文章目录 系列文章目录前言一、Keyed State(按键分区)1.KeyedStateTest.scala2.PeriodicPVEx…

土壤热通量传感器的应用

土壤热通量传感器又称“土壤热通量板”、“热流计”,主要用于测量土壤的能量平衡和土壤层的热导率。土壤热通量传感器采用热电堆测量温度梯度,该热电堆有两种不同的金属材料组成。热电堆探测器接受热辐射,热辐射能使两个不同材料的结点之间产…

如何在华为OD机试中获得满分?Java实现【单核CPU任务调度】一文详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 现在有一个CPU和一些任务…

每天一道面试题之==和equals的区别是什么?

==和equals的区别是什么? ""是一个关系运算符,关系运算符可以用来进行数据和数据之间的比较,而在java中数据类型大致可以分为两大类分别是基本数据类型和引用数据类型。 基本数据类型包含 byte&#xff0c…

谢谢所有可爱的粉丝友友们

前言: 其实我很早之前就申请了CSDN账号,其中陆陆续续也在写博客,但是没有坚持下来,大家可以看到我的前期博客,少之又少,我甚至只要看一下我的博客内容,我就知道我当时在哪里,我当时在…

[RSA议题分析] eBPF Warfare - Detecting Kernel eBPF Rootkits with Tracee

文章目录 简介议题分析基础知识用户空间与内核空间hookrootkit追踪技术 eBPF架构Tracee - 一个运行时安全检查工具 RootKit种类与各个阶段的攻防LD_PRELOAD RootKitKernel Module RooKitKernel RootKit HidingKernel RootKit Hooksyscall table hookingfile operations hooking…

<数据结构>NO6.堆的实现|堆的应用

🐇本文用到的所有代码都放在我的gitee仓库了🐇syseptember的gitee仓库https://gitee.com/syseptember/data-structure/tree/4f0b1f9f56e3b0bee72fa0563c23a6917b3252e8/Heap/Heap 目录 堆的概念 堆的实现 堆的应用 堆排序 时间复杂度分析 TopK问题 …

做功能测试好几年,一直都像是给人“打杂”的!直到这天我开始……

“做功能测试这几年,一直都像是给人打杂的!”这句话,想必很多测试人员都有过同感。曾经,我们每天要重复执行繁琐的测试流程,手动输入大量数据、进行各种操作、检查每一个细节,整个过程反复无常,…

用 AI 轻松管理数据收集和分布! #TallyForms

工作中需要面对各种各样让人眼花缭乱的表格🤯 此时一款让数据收集和整理变得轻松的平台简直就是打工人们的福音,TallyForms 就拥有自定义表单、实时分析和高效管理的全方位解决方案! TallyForms TallyForms 是一个免费的在线表单生成器&am…

[论文阅读] Explicit Visual Prompting for Low-Level Structure Segmentations

[论文地址] [代码] [CVPR 23] Abstract 我们考虑了检测图像中低层次结构的通用问题,其中包括分割被操纵的部分,识别失焦像素,分离阴影区域,以及检测隐藏的物体。每个问题通常都有一个特定领域的解决方案,我们表明&am…