操作系统与进程

1.操作系统

操作系统是计算机中的一个重要软件,它是一个专门进行管理的软件。操作系统可以通过驱动程序来间接管理外部硬件,也可以为计算机中的程序提供一个稳定的运行环境,从而来方便管理各种程序的运行,让程序之间的运行互不影响。

1.2 驱动程序

驱动程序,简单来说就是搭配外部硬件使用的程序码。

比如,我们将一个特殊鼠标插入计算机中,而此时计算机只会将这个鼠标单作一个普通的鼠标,如果我们想要使用这个特殊鼠标的其他功能,我们就要去官网下载特殊的软件。而这个软件,和我们所说的驱动程序差不多。

一个计算机可以同时运行很多个程序,那么计算机是如何对多个运行的程序进行有效的管理呢?这里就涉及到了进程这个东西。

2. 进程

进程可以理解运行的程序,一个进程对应一个运行的程序,多个进程对应多个运行的程序。

2.1 进程的创建

步骤一:将程序文件存储一份到内存中

当我们点击一个.exe文件时,操作系统会将该文件存储一份到内存中,并将运行该程序所需要的指令和数据也存储一份到内存中。

步骤二:创建PCB

创建PCB是一个关键步骤,PCB(后面会介绍PCB)可以理解为一个很大结构体,里面存储着进程中的很多属性,创建完一个PCB之后,就会根据事先存储的数据将PCB初始化,一个进程就创建完成了。创建完PCB之后就会将该进程链接到存储PCB的数据结构的末端。

 注意事项:内存中可以同时存储多个进程。

2.2 进程的运行

PCB创建完成之后,操作系统就要运行进程。进程的运行涉及到内存与CPU的交涉。操作系统通过与内存交互,找到对应的PCB里面的内存指针,CPU可以通过内存指针找到指令内存区域,此时CPU就会一条一条的读取,分析,运行内存区域里面的指令,此时,这时PCB就运行完成了。

进程的运行会依赖网盘,硬盘等资源,并且进程运行的过程中,涉及到指令的读取,分析和运行,这些涉及指令的操作设计到CPU,所以,进程的运行也占用了CPU的资源。 

所以说,进程是操作系统分配资源的基本单位。

2.3 CPU对进程的分时复用

我们知道一个CPU的逻辑核心一次只能运行一个进程,但是一个计算机中的CPU是有限的,CPU是如何应对多个进程的运行呢?

这里就涉及到了CPU的分时操作。

所谓的分时操作,就是CPU将一段时间分为好几个时间段,每一个时间段用来运行一个进程,由于CPU的计算速度那是相当快,已经远远超出了人类得反应速度,以至于看起来好像是同时执行一样。

像上面一个CPU,通过分时复用的方式来运行多个进程,我们称之为"并发执行”。

多个CPU同时执行多个进程的方式,我们称之为“并行执行”。

2.PCB的介绍 

通过前面C语言的学习,我们知道,结构体是可以存储一些自定义类型数据的属性的。由于PCB也是用来存储进程的各种属性,所以PCB可以看作是一个很大的结构体,里面存储了很多关于PCB的属性。

1.PCB的一些关键要点

1.Pid(进程id)

每一个进程都有属于自己的进程id,可以用来区分其他进程。

如下图

2. 内存指针

由于CPU要运行进程时,要使用运行该进程的指令,所以,在PCB中就存在一个内存指针,该指针指向指令的内存区域,CPU就可以通过该指针来找到并运行指令。

3.文件描述符表

进程在运行的过程中,要经常与硬盘上数据进行交互,由于硬盘上的数据都是以文件的形式存储,所以访问硬盘上的数据时,要先进行打开文件的操作,打开文件获得到的数据都会存储到文件描述符表中,则文件描述符表中的每一项都对应了一个打开的文件。

2. PCB的进一步属性

要完成上面的分时复用,就涉及到了PCB的进一步属性,也就是进程调度。

1.进程状态

进程中有很多状态,其中就绪状态和阻塞状态最为典型。

(1)就绪状态,进程处于就绪状态时,说明该进程可以随时到CPU上执行。

(2)阻塞状态,进程处于阻塞状态,说明该进程此时不适合到CPU上执行。

2.进程的优先级

进程的运行也是有优先级的,有些进程的优先级高,就可以多吃到一些CPU的资源。

比如,假如我们电脑上在同时运行着黑悟空和qq两个进程,这时肯定是黑悟空的这个进程的优先级高,它就能多吃到CPU上的资源点。这就好比我们宁愿qq消息的接受延迟几秒,也不要游戏延迟几秒,因为可能就是这几秒,会导致游戏的失败。

3.进程的上下文

当一个进程执行了一段时间,失去CPU之后。过一段时间,当该进程重新运行之后,它会接着上次的状态继续执行,而不是重新开始执行。

这就涉及到了进程中的上下文机制。

由于CPU中有很多寄存器,寄存器中存储了进程运行的中间状态,当一个进程失去CPU时,操作系统就会将寄存器存储的中间状态的值填写到内存(该内存是指PCB中对应的属性)中,当这个进程重新执行时,操作系统就会重新将PCB对应的属性值重新填写到寄存器中,使得该进程能够接着上次的状态去执行,而不是冲头开始执行。

4.进程的记账信息

进程的记账信息主要用于统计功能,当一个进程已经长时间没有吃到CPU的资源时,此时,CPU就会倾斜一些资源给该进程。

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

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

相关文章

上交所服务器崩溃:金融交易背后的技术隐患暴露杭州BGP高防服务器43.228.71.X

一、上交所宕机事件始末 2024 年 9 月 27 日,上交所交易系统突发崩溃,这一事件犹如一颗巨石投入平静的湖面,引起了轩然大波。当天上午,众多投资者反馈券商交易出现延迟问题,随后上交所发布了《关于股票竞价交易出现异常…

AI驱动的Java开发框架:Spring AI Alibaba实战部署教程

前言 随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言&a…

敏感字段加密 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 【敏感字段加密】给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线 进行分割; 3、可…

【JavaSE系列】IO流

目录 前言 一、IO流概述 二、IO流体系结构 三、File相关的流 1. FileInputStream 2. FileOutputStream 3. FileReader 4. FileWriter 四、缓冲流 五、转换流 1. InputStreamReader 2. OutputStreamWriter 六、数据流 七、对象流 八、打印流 九、标准输入输出流…

Apache APISIX学习(2):安装Grafana、prometheus

一、Grafana安装 1、介绍 Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它…

Deep Learning for Video Anomaly Detection: A Review 深度学习视频异常检测综述阅读

Deep Learning for Video Anomaly Detection: A Review 深度学习视频异常检测综述阅读 AbstractI. INTRODUCTIONII. BACKGROUNDA. Notation and TaxonomyB. Datasets and Metrics III. SEMI-SUPERVISED VIDEO ANOMALY DETECTIONA. Model InputB. MethodologyC. Network Archite…

基于Python实现的国庆节庆祝小程序

祖国母亲即将迎来75周年华诞,在这个特殊的日子里,我们可以用编程的方式来表达对祖国的祝福。本文将使用Python编写一个简单的国庆节庆祝小程序,通过一些编程技巧和设计为国庆节增添一些程序员的特色。 ⭕️庆祝国庆 ⭐️ 程序设计思路&#x…

828华为云征文|部署个人知识管理系统 SiyuanNote

828华为云征文|部署个人知识管理系统 SiyuanNote 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 SiyuanNote3.1 SiyuanNote 介绍3.2 SiyuanNote 部署3.3 Siyua…

大数据毕业设计选题推荐-重庆旅游景点数据分析系统-Python-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

基于微信开发助手企鹅音乐微信小程序的设计与实现(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

这条挣钱的路,离我好遥远啊

近日,笔者在发表的《乱篇弹(54)让子弹飞》一文中写道:“ 当然,笔者在《博客中国-狼头长啸的作家专栏》耕耘期间,也赚了一些用以补贴自己养老的‘ 散碎银两’。那么笔者是否可以依照知乎网的‘申请开通权限’…

支付宝远程收款跳转码接口api之工作证跳转收款码

1、在制作工作证跳转收款之前需要在支付宝上开通工作证 2、然后获取支付宝账户信息、收款码等信息 3、将所需信息填入如下代码之中 const axios require(axios); const authCode 从客户端接收到的授权码;axios({method: post,url: https://openapi.alipay.com/alipay.syst…

用通义灵码如何快速合理解决遗留代码问题?

本文首先介绍了遗留代码的概念,并对遗留代码进行了分类。针对不同类型的遗留代码,提供了相应的处理策略。此外,本文重点介绍了通义灵码在维护遗留代码过程中能提供哪些支持。 什么是遗留代码 与过时技术相关的代码: 与不再受支持的…

Python如何配置环境变量详解

一、概述 前提:已安装 Python,如下图: 1.1 检查是否已配置成功(选) 1 2 3 4 5 1. 打开运行窗口 (1) 快捷键 : Win r,并输入 cmd (2) 直接输入: Python 2. 若有下列提示,即为 安装成功…

星辰计划04-深入理解kafka的消息存储和索引设计

消息存储 提到存储不得不说消息的读写,那么kafka他是如何读写数据的呢? 读取消息 1.通过debug(如何debug) 我们可以得到下面的调用栈,最终通过FileRecords来读取保存的数据 写入消息 1.通过debug(如何debug) 我们可以得到下面的调用栈&am…

【HTTP 和 HTTPS详解】3

HTTP 状态代码 HTTP 状态代码是服务器发送给客户端的三位数字,用于指示客户端请求的结果。它们分为五类:信息性(100-199)、成功(200-299)、重定向(300-399)、客户端错误&#xff08…

怎么不用付费直接编辑pdf?5款pdf在线编辑器免费推荐给你!

在我们日常工作中,可能会经常需要直接编辑修改pdf内容,例如,在将文档发送给其它人之前,您可能需要进行一些修改;或者当扫描的文本出现错误时,您也需要进行修正。此时,如果有一款在线编辑器&…

【C++笔记】初始模版和STL简介

【C笔记】初始模版和STL简介 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】初始模版和STL简介前言一.初始模版1.1泛型编程1.2函数模版1.3类模板 二.STL简介2.1什么是STL2.2STL的版本2.3STL的六大组件2.4STL的重要…

Vue项目之Element-UI(Breadcrumb)动态面包屑效果 el-breadcrumb

效果预览 需要导航的页面Vue.js 最笨的方法就是在每个需要面包屑的页面中固定写好 <template><div class="example-container"><el-breadcrumb separator="/"

Tableau数据可视化入门

目录 一、实验名称 二、实验目的 三、实验原理 四、实验环境 五、实验步骤 1、Tableau界面引导 2、数据来源 3、数据预处理操作 4、制作中国各个地区的利润图表 4.1条形图 4.2气泡图 5、制作填充地球图 一、实验名称&#xff1a; 实验一&#xff1a;Tableau数据可视…