OS复习笔记ch3-1

news2024/11/20 6:14:56

引言

学到第三章,就正式步入我们OS的大门了

本章我们将围绕以下几个问题去解决

  1. 什么是进程?
  2. 进程状态有哪些?
  3. 进程如何描述?
  4. 进程如何控制?

本节内容主要是回答前两个问题,第二节回答后两个问题。

进程

众所周知,硬件家族过于庞杂,以CPU为例,我们熟知的电脑端有Intel和AMD,当然手机有麒麟和骁龙等,各大厂商产品标准不一,差异很大。如果说,我们的程序开发要适配这么多的硬件,为每一种硬件开发一种应用可想而知得多难(从上而下)。

根据所学,我们都知道OS是操作和协调各种硬件,为上层应用提供服务的一个“大管家”。
于是,为了给上层应用提供服务的统一和便利,OS解决了硬件适配的问题。程序开发者就只需要向OS去申请和释放资源就可以实现对底层硬件的控制了。

我们换一个角度,从OS的视角来看,我为上层应用提供了统一的接口,但是程序成千上万,我不可能对每一种特定的程序开发一种管理模式(自下而上)。于是,OS引入了进程,它是对正在运行的程序过程的抽象,即不管是什么样的程序,只要是在OS下运行的程序过程统称为“进程”。

进程的定义

可并发执行的程序在某个数据集合的一次计算活动,是操作系统进行资源分配和保护的基本单位
从上面的定义可知,进程是OS资源分配和保护的基本单位。它为上层应用服务的时候,是以进程为基本单位的。一个程序往往对应着一个进程。

这样自然引入多进程,提高了对硬件资源的利用率,但又带来额外的空间和时间开销,增加了OS 的复杂性。

必要元素

一个进程至少要有程序代码和与之相关的数据集合组成。

  • 程序代码(Program code):有可能与其他执行同一个程序的进程共享,比如打开多个QQ.exe
  • 与代码相关的数据集合(A set of data associated with that code):包括进程向OS申请的各种资源,比如处理机

进程和程序

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

举个简单的例子,如果说我们打开了QQ,那么OS就会为QQ创建一个进程,如果说QQ需要传输文件,那么OS就会把文件和网络资源给到QQ对应的进程,至于QQ怎么使用这些资源那是另外一回事了。当我们打开多个QQ.exe(静态),需要登录多个账号的QQ时,此时OS就会为我们创建多个进程分别管理每一个QQ(动态)。

进程状态

两个基本状态

image-20231025145615178

每个程序运行很难一气呵成的完成(同时有I/O,网络报文等),进程都是在OS的调度下交替进行,所以从这个角度来说,进程可分成两种状态。

  • Running运行状态:占用处理机资源;
  • Not-running未运行状态:等待进程调度分配处理机资源;
    其中
  • dispatch :从等待进程队列中选择一个进程(要求已完成I/O操作),进入运行状态
  • pause:用完时间片或启动I/O操作后,放弃处理机,进入等待进程队列

image-20231025150035847

进程由OS的分派程序分派到CPU,然后回到队列,反复直到任务完成
本质上就是不同进程的PCB(Process Control Block,即进程控制块)这个结构体在排队。

进程的创建和终止

image.png

如图所示,有四种创建和终止进程的方式,简单了解一下即可

三状态模型

image-20231025151259985

有三个基本状态:就绪(Ready),阻塞(Blocked)和运行(Running)态,这三个状态是后面多状态模型的核心。
每个状态的含义及可能的状态转换如下:

  1. 运行状态(Running):表示进程正在执行。进程在运行状态时,可能发生以下状态转换:

    • 运行 → 就绪:当进程的时间片用完或被其他高优先级进程抢占时,进程从运行状态转换为就绪状态,等待下一次调度。
    • 运行 → 阻塞:当进程需要等待某个事件(如输入/输出操作,读磁盘等)完成时,进程从运行状态转换为阻塞状态,暂时停止执行,直到事件完成。
  2. 就绪状态(Ready):表示进程已准备好执行,但由于调度算法或其他原因尚未被分配到CPU执行。进程在就绪状态时,可能发生以下状态转换:

    • 就绪 → 运行:当调度算法选择该进程并将其分配给CPU时,进程从就绪状态转换为运行状态,开始执行。
  3. 阻塞状态(Blocked):表示进程由于某个事件的发生而无法继续执行,需要等待事件完成。进程在阻塞状态时,可能发生以下状态转换:

    • 阻塞 → 就绪:当等待的事件完成时,进程从阻塞状态转换为就绪状态,等待下一次调度。

五状态模型

image-20231025152721016

  • 新建状态(New):进程刚创建但还不能运行
  • 就绪态(Ready):一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态
  • 运行态(Running):进程占有CPU并在其上运行
  • 阻塞/等待态(Blocked/Waiting):指进程因等待某种事件的发生而暂时不能运行的状态
  • 退出状态(Exit):进程已结束运行,回收除PCB之外的其他资源,并让其他进程从PCB中收集有关信息

PS:
注意这里面的进程状态转换过程,单向和双向的区别。

事实上,所有的状态都可能直接进入退出状态,在图中尚未体现。

进程挂起

image-20231025154140379

挂起(Suspend):把一个进程从内存换出到外存;有以下几种情况:

  • 阻塞→阻塞/挂起:没有进程处于就绪状态或就绪、运行进程要求更多内存资源时
  • 就绪→就绪/挂起:空间需要;高优先级阻塞进程即将就绪,挂起低优先级就绪进程
  • 运行→就绪/挂起:对可抢占式系统,当有高优先级阻塞/挂起进程因事件出现而进入就绪/挂起时,抢占CPU,运行进程让出内存、CPU

挂起发生的原因有以下几种:

  • 进程均处于等待状态,需要把一些阻塞进程对换出去,腾出足够内存装入就绪进程运行。
  • 进程竞争资源,导致系统资源不足,负荷过重,需要挂起部分进程以调整系统负荷,保证实时性或让系统正常运行(负载均衡)。
  • 定期执行的进程(如审计、监控、记账程序)对换出去,以减轻系统负荷。
  • 用户要求挂起自己的进程,以便进行某些调试、检查和改正。
  • 父进程要求挂起后代进程,以进行某些检查和改正,或协调各子进程。
  • 操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏时,需要挂起某些进程以排除故障。

进程激活

激活(Activate):把一个进程从外存换进内存;

可能有以下几种情况:

  • 就绪/挂起→就绪:当没有就绪进程或就绪/挂起进程优先级高于就绪进程

  • 阻塞/挂起→阻塞:很少见。当一个进程释放足够内存,系统会把高优先级阻塞/挂起进程(高于所有就绪/挂起进程,事件很快发生)激活

其他状态

这里简单了解一下即可,一般考试不会考得这么细。

  • 事件出现(Event Occurs)
    这里的事件主要是指阻塞的进程等待的事件,可能会引起以下两种状态变化
  1. 阻塞→就绪
  2. 阻塞/挂起→就绪/挂起
  • 收容(Admit)
    收容主要是指新建的进程进入就绪队列的状态变化
  1. 新建→就绪
  2. 新建→就绪/挂起
  • 释放(Release)
    任意状态→退出

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

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

相关文章

windows环境下安装Apache

首先apache官网下载地址:http://www.apachelounge.com/download/按照自己的电脑操作系统来安装 这里我安装的是win64 主版本是2.4的apache。 然后解压压缩包到一个全英文的路径下!!!一定一定不要有中文 中文符号也不要有&#xff…

详细分析PyInstaller打包python为exe执行文件(附Demo)

目录 前言1. 基本知识2. Demo 前言 需要将python文件打包成exe文件,变成rpa自动化形式 1. 基本知识 PyInstaller是一个用于将Python应用程序打包成独立可执行文件的工具 可以将Python脚本打包成Windows、Linux和Mac OS X上的可执行文件,这个作用可以将…

【Linux】软硬链接与动静态库(理解软硬链接的特点及使用场景、如何建立动静态库与使用第三方库)

一、软链接 1.1 如何建立软链接 //建立软链接 -s代表soft ln -s 目标文件名 链接文件名//删除软链接 rm 链接文件 或 unlink 链接文件 1.2 软链接的特点与功能 通过ls -i指令可以查看文件的inode编号 、 可以看出目标文件与软链接文件各自有自己的inode,所以软…

揭秘App全渠道统计服务:如何精准追踪你的用户来源?

在移动互联网时代,App的推广和运营至关重要,而渠道统计则是衡量推广效果的关键一环。近日,xinstall推出了一款全新的App全渠道统计服务,该服务旨在帮助开发者和运营者更全面地了解用户来源,优化推广策略,从…

前端JS加密库CryptoJS的常用方法

CryptoJS是前端常用的一个加密库&#xff0c;如MD5、SHA256、AES等加密算法。 官方文档&#xff1a;https://www.npmjs.com/package/crypto-js 安装方法 方法一&#xff1a;直接在html文件中引入 <script type"text/javascript" src"path-to/bower_componen…

C# 项目:导线计算 / 坐标转换 / 曲线放样 / 水准网 / 导线网平差

文章目录 Part.I IntroductionPart.II 软件简介Chap.I 导线计算Chap.II 坐标转换Chap.III 曲线放样Chap.IV 水准网 / 导线网平差 Part.III 软件使用过程中可能遇到的问题Reference Part.I Introduction 本文将对几个基于 C# 开发的软件进行简要的介绍&#xff0c;这些软件都是…

前端更优雅的使用 jsonp

前端更优雅的使用 jsonp 背景&#xff1a;最近项目中又使用到了 jsonp 这一项跨域的技术&#xff0c;&#xff08;主要还是受同源策略影响&#xff09;&#xff0c;下面有为大家提供封装好的函数及对应使用示例&#xff0c;欢迎大家阅读理解 文章目录 前端更优雅的使用 jsonp同…

SAP-ERP TM运输管理模块详解-1

简介 SAP中的运输功能(即TM模块,属于SD的子模块)是后勤执行的一部分,用于自动计算交货成本。也就是说,SAP可以让系统自动对销售发货的商品计算运费,对于运费占这个成本很大比重的销售模式,可以使用该功能。运输功能相对于SD其他模块,相对比较独立的,应用面不是很广。其…

【算法一则】【贪心】数组中的数可以拼装成的最大数

题目 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例 1&#xff1a; 输入&#xff1a;nums [10,2] …

使用 frp 通过云厂商公网IP实现内网穿透

写在前面 有小伙伴推荐&#xff0c;简单了解博文内容涉及 内网穿透 工具 frp 的安装以及2个Demo内网的静态文件服务访问 Demo内网多端口映射 Demo理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的…

【数据分析面试】32.矩阵元素求和 (Python: for…in…语句)

题目&#xff1a;矩阵元素求和 &#xff08;Python) 假设给定一个整数矩阵。你的任务是编写一个函数&#xff0c;返回矩阵中所有元素的和。 示例 1&#xff1a; 输入&#xff1a; matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]]输出&#xff1a; matrix_sum(matrix) -> 45…

判断n以内的素数个数的五种方法+时间对比

目录 方法一&#xff1a;暴力法 复杂度 方法二&#xff1a;跨度为6的倍数的优化 复杂度 方法三&#xff1a;埃氏筛法 复杂度 方法四&#xff1a;埃氏筛法的改良 复杂度 方法五&#xff1a;线性筛 复杂度 性能对比测试 练习 方法一&#xff1a;暴力法 就是写一个函…

STL--string详解

STL基本内容 string是什么 string实质上是一个对象 string可看作一个串&#xff0c;类似字符数组 可以扩容&#xff0c;可以增删查改 可用下表访问操作符[]引用&#xff0c;修改某值 构造函数 默认构造 拷贝构造&#xff1a;参数为(string 或 char*) 求string对象的长度不…

锂电池SOH预测 | 基于SVM的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

C语言学习/复习36

一、程序的环境与预处理 二、翻译环境与执行环境 三、运行环境 四、预编译(预处理)详解

【Hadoop】-Apache Hive使用语法与概念原理[15]

一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的&#xff1a;/user/hive/warehouse内 创建数据库并指定hdfs…

SVN--基本原理与使用(超详细)

目录 一、SVN概述二、SVN服务端软件安装三、SVN服务端配置四、SVN客户端软件安装与使用五、SVN三大指令六、SVN图标集与忽略功能6.1 图标集6.2 忽略功能 七、SVN版本回退八、SVN版本冲突九、SVN配置多仓库与权限控制9.1 配置多仓库9.2 权限控制 十、服务配置与管理十一、模拟真…

JAVASCRIPT+PHP+GB2312字库文件实现浏览器LED滚动效果

一、效果 二、源码 1、test_led.html <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>MATRIX LED</title> <script src"https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js"></script…

渗透攻击思考题

目录 问题一&#xff1a; 存储过程&#xff1a; 密文存储&#xff1a; 问题二&#xff1a; 问题三&#xff1a; 问题四&#xff1a; LM Hash的加密: NTLM Hash 的加密&#xff1a; 问题一&#xff1a; windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff0…

数据聚类:Mean-Shift和EM算法

目录 1. 高斯混合分布2. Mean-Shift算法3. EM算法4. 数据聚类5. 源码地址 1. 高斯混合分布 在高斯混合分布中&#xff0c;我们假设数据是由多个高斯分布组合而成的。每个高斯分布被称为一个“成分”&#xff08;component&#xff09;&#xff0c;这些成分通过加权和的方式来构…