操作系统管理:进程解析

发布时间:2026/10/17 13:25:27

操作系统管理:进程解析 前言❤️❤️hello hello这里是洋不写bug~欢迎大家点赞关注收藏上篇博客从计算机组成cpu指令操作系统分析了计算机是如何工作的这篇文章会对计算机的操作系统以及系统对进程的管理进行解析进一步了解计算机的内部工作个人主页洋不写bug的博客所属专栏JavaEE学习铁汁们对于JavaEE的各种常用核心语法都可以在上面的JavaEE专栏学习专栏正在持续更新中有问题可以写在评论区或者私信我哦~1操作系统的管理谈到计算机的工作那当然是离不开操作系统的操作系统不仅要管理所有的硬件设备还要给各种软件提供稳定的运行环境例如在Windows系统中steam程序运行出现问题是不会影响其他程序的运行的大不了就是自己崩溃那既然Windows系统能保证一个程序出问题不影响其他程序的运行那为什么电脑还会出现蓝屏的情况呢这个就要提到另一个东西那就是驱动程序驱动程序是直接在操作系统内部运行的如果驱动程序遇到bug电脑就很可能会蓝屏例如买了个罗技鼠标一般就要在罗技官网上去下载驱动程序计算机的音响键盘、游戏耳机都需要驱动程序那为什么这些驱动程序还要再下载不能直接就安装好吗是因为计算机可以连接的外置设备太多了除了各种鼠标、键盘、音响还有医院的心电图机器核磁共振控制手柄这些这些设备的功能也不同因此操作系统就允许这些硬件开发商在研发硬件的同时提供一套对应的驱动程序通过开发商提供的驱动让操作系统“认识、理解”硬件进而对硬件进行管理操作系统驱动程序硬件设备就类似于这样一个关系校长并不熟悉每个班的同学例如要开运动会校长会先通知辅导员辅导员再管理同学进行备赛组队辅导员对同学是比较了解的如下图所示操作系统在管理硬件设备和软件资源的时候会有一个个的“类”来表示各个软件/硬件的各种属性类是Java中的定义主流操作系统都是C语言编写的因此更准确来说使用的是结构体来表示属性操作系统的管理具体是怎样进行的描述通过“类”来表示硬件/软件的属性管理把这若干个类的对象通过数据结构给串起来方便后面的增删改查总之操作系统管理的资源是非常多的例如CPU资源、内存资源、硬盘资源、网络资源…2进程介绍说到操作系统的管理就要提到进程“运行起来的程序”用计算机的专业术语来说就叫做进程每个进程都要消耗一定的系统资源操作系统给进程分配了硬件资源进程才能运行以win11为例打开任务管理器刚进入的就是进程界面如下图那操作系统是如何管理进程的呢这个其实前面已经提到过就是通过描述和组织管理过程描述操作系统使用 结构体 把一个进程的关键属性给表示出来这个结构体就称之为PCBProcess Control Block进程控制块这个称呼适用于各种操作系统但是如果具体到某个操作系统就会有专门的具体的结构体的名字来对应例如Linux上对应结构体的名字是task_struct组织操作系统使用一定的数据结构把上述数据体的变量对象给串起来大部分情况下使用的都是链表因为进程一会要终止一些一会要添加一些链表的增删比较方便创建进程创建PCB变量插入到链表上销毁进程把链表中对应的PCB删除掉释放在任务管理器中查看进程列表遍历链表打印每个PCB中的属性那铁汁们想一下组织的时候大部分是把进程的信息存到链表中的那在数据库中建个表存储这些进程的信息增删改查不是更方便吗像MySQLOracle等数据库本质都是一个运行在操作系统上的应用程序打开数据库这个应用程序就需要先有操作系统而这些进程的描述和组织过程实现操作系统的时候就得先实现出来了因此没法用数据库存储这些进程的信息3 PCB中的关键属性前面提到PCB结构控制块中存储了进程的关键属性方便系统进行管理下面就解析下具体有哪些属性。1PID进程id进程在系统上的身份标识不会重复在当前的计算机上这个时刻不会重复就类似与我们在大学的学号在这里博主运行微软浏览器这个程序启动了13个进程如下图2内存这里有个内存列如下图可以看出来在进程运行时需要申请一系列的内存资源这些内存资源分为两部分指令和数据下图在上篇博客中有提到过0123地址处里面存储的是指令131415地址处存储的是纯数据那操作系统如何知道每个进程的内存空间中分成了哪些部分的区域呢以及每个区域存储的到底是数据还是指令这就需要通过一个叫做内存指针的东西通过内存指针操作系统就知道在哪里找数据哪里找指令那铁汁们想下既然程序的指令是存储在内存中的那有没有办法直接修改内存中的指令内容让程序的逻辑发生变化呢当然是可以的这个一般有两种情况会这样做一种是外挂一种是病毒就拿做外挂而言比如做PUBG的无敌锁血挂大概就是分析出内存中的哪条指令在判定死亡然后修改这条指令让系统永远不会判定玩家被击杀如下图hp就是血量这里只是简单举个例子实际肯定不会这么简单注做游戏外挂是犯法行为要做遵纪守法的好公民3文件描述符表我们平时在计算机都是直接访问文件这就相当于访问了硬盘上的某一块空间操作系统就是通过文件这样的概念来管理硬盘的进程在使用文件的时候需要先打开才能使用就像在C语言中要先通过fopen打开文件再通过fwrite和fread这些真正访问硬盘进程打开文件成功之后会得到一个文件描述符整数类似于身份标识一个进程可以打开多个文件使用多个文件的硬盘资源这些文件的文件描述符就可以通过一个数组来进行表示这个数组就体现了进程访问的内存资源4进程状态要理解这个概念要先大概了解进程的运行打开任务管理器会发现这里有很多进程如下图所示打开性能部分看下面的信息博主的计算机中现在有296个进程如下所示博主的计算机有28个逻辑处理器一个逻辑处理器在同一时间只能处理一个进程铁汁们想一下这28个逻辑处理器全部使用也只能分别同时处理28个进程这也就是并行那这296个进程是如何处理的呢一个处理器核心可以一会运行线程1一会运行线程2一会运行线程3这样进行快速的切换铁汁们看下上面这个图里面的速度是4.03GHz也就是1s可以进行40亿次运算因此切换线程的速度我们是感受不到的现在这296个线程看起来是在同时执行但实际上还是“串行执行”这种操作模式就叫做并发现在的操作系统实际执行的时候都是并发并行就是不同处理器可以执行不同线程互不干扰 这两种模式同时存在的这种多任务操作系统同一个处理器快速切换线程的模式在windows 95系统上就已经使用了还是比较经典的诺基亚使用的塞班系统比较老就是单任务操作系统已经淘汰十多年了这些进程有个状态有的方便调到cpu上执行有的不方便最关键的两个进程状态就是就绪状态和阻塞状态:就绪状态就可以理解为是随叫随到进程随时可以调到cpu上来执行阻塞状态表示现在进程暂时不方便调度到cpu上执行比如说控制台上等待用户输入的情况scanner.next()用户不输入就一直处于阻塞状态5优先级操作系统会给进程分配cpu资源分配并不一定是平分的会根据进程的优先级就好比在电脑上玩三角洲同时电脑也运行着QQ那QQ的消息延迟个几s问题不大但是三角洲如果延迟几s如果正在和别人打架那就很炸缸了因此优先级还是比较重要的6上下文就好比铁汁们玩那些黑神话这次打到哪里了存个档下次接着这次打总不可能每次都重新打进程也是类似进程在运行时会有一系列的中间状态因为cpu是会切换进程的当进程从cpu中调走的时候就需要把中间状态保存起来当进程下次被cpu运行的时候就可以把中间状态恢复过来继续上次执行进程的中间状态就叫做上下文7记账信息PCB会统计该进程在cpu过去一共执行了多少条指令可以识别出某一条指令是不是太久没有执行了结语在JavaEE初学基础概念时还是比较简单的不涉及代码什么的还是比较好理解的后面线程部分就要上强度了会写很多的代码铁汁们要做好准备以上就是今天的所有内容啦完结撒花
延伸阅读

更多相关文章

2026/10/17 13:25:27

Ubuntu 18.04下编译FFmpeg实现H.265 RTMP推流完整指南

1. 为什么非要自己编译一份FFmpeg如果你只是想推 H.264 的 RTMP 流,Ubuntu 18.04 上通过 apt 直接安装的 FFmpeg 完全够用,系统源里那个 3.4 版本虽然老,但推流 H.264 一点问题没有。可需求一旦变成“把 H.265 画面推成 RTMP”,自…

2026/10/17 13:25:27

PyTorch数据管道入门:Dataset、TensorDataset与DataLoader详解

1. 搞懂这三个组件,数据管道才算真正入门刚接触深度学习那会儿,我写训练脚本最怕的不是模型不收敛,而是数据加载这一环。明明手里有几千张图、几万条文本,却不知道怎么把它们规规矩矩地喂给网络。后来踩了不少坑才明白&#xff0c…

2026/10/17 14:40:32

ComfyUI自定义节点实战:数值转字符串转换器开发与类型映射解析

1. 为什么值得动手写这个节点最近在折腾ComfyUI工作流的时候,我发现一个很实际的问题:工作流里经常需要把数字类型的数据(比如自定义步数、种子值、某个节点的评分输出)转成字符串,用作文件名后缀、提示词拼装或者API参…

2026/10/17 14:40:32

AI如何重构kernel优化:编译器演进与硬件感知优化新范式

1. 这不是“AI取代编译器”的标题党,而是底层软件工程正在发生的静默迁移“AI 能写出更快的 kernel,然后编译器就该退场了?”——这句话在某技术社区刷屏那天,我正蹲在一台老款A100服务器前调一个CUDA kernel的shared memory bank…

2026/10/17 14:40:32

用MiniCPM做GitHub开发者行为分析:轻量级代码作者画像实践

1. 项目概述:一个轻量级代码作者画像工具的诞生逻辑 “ghfind用MiniCPM模型,锐评了上千开发者”——这个标题乍看像段子,实则藏着一套非常务实的技术路径:它不是在搞AI玄学,而是在解决一个长期被忽视的工程现实问题——…

2026/10/17 14:40:32

计算机网络期末复习题高效拆解指南:从分层模型到协议对比

1. 从“背了忘、忘了背”说起:期末复习题到底该怎么用每到期末,计算机网络的复习资料满天飞,但真正让人头疼的不是资料太少,而是资料太多、太散、太不成体系。我见过太多同学把复习题当成“背诵清单”,一道一道往下刷&…

2026/10/17 14:35:32

JDK 1.8u45 64位官方版部署指南:生产环境Java运行时基线

简介:本资源为Oracle官方发布的JDK 1.8.0_45 64位Linux平台标准开发套件,面向Java初学者、Linux环境开发者及企业级应用维护人员,解决Java 8开发环境快速部署与稳定运行的核心需求。压缩包共1666个文件,以717个核心jar包&#xff…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/17 14:20:58

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑