【Linux】PCB(进程控制块)
进程控制块
- PBC-描述
- 进程号
- 进程状态
- 内存指针
PBC-描述
我们知道,进程就是运行起来的代码,而操作系统就是通过对进程进行描述,然后将所有的进程使用双向链表串联到一起,实现对计算机软硬件资源的管理的。
那么,PCB到底是什么呢?
PCB也被称为进程控制块,实际上在内核中是一个庞大的结构体,这个结构体的外貌看起来是struct task_struct{…};
在这个PCB当中,包含许多描述进程的信息
例如:
1.进程号PID
2.进程状态
3.内存指针
等许多内容
进程号
进程号有一些特点:
每一个进程都会有一个进程ID,并且互不重复
通过进程ID,就能够标识当前操作系统中的某一个进程
当某个进程结束的时候,这个进程的资源会被释放,同时这个进程的进程ID也会被释放,那么这个进程ID就可以被其他进程所使用。
我们需要查看某个进程的进程ID,可以通过ps aux获取进程ID

USER指的是这个进程的所属用户,PID是进程号,%CPU为CPU占用率,TIME为占用CPU时间
还有一个问题,当使用ps aux时,展示了当前操作系统中所有的进程,数量非常多,不便于我们查看指定的进程,因此我们可以使用管道过滤,将我们想看到的进程信息过滤出来,ps aux | grep 自己想要的内容

我们会发现出现了两个进程,这不是有问题吗?
其实通过ps aux将当前运行的进程结果筛选出来,通过管道|将结果传输给grep,作为grep的输入,而grep也是一个程序,启动grep也会产生grep进程,就会将grep也展示出来。
进程状态
进程运行起来之后,其实是有它的状态的,就像人一天的生活,有工作状态,摸鱼状态,睡眠状态。
对于进程来说,也存在几种不同的状态

一个进程,正在被操作系统调度来实现自己的运算,那么它就是运行状态,(在时间片轮转策略中)而当这个进程的时间片用完之后,会被操作系统切出去,这时候它就处于阻塞状态(当需要进行运算的数据还没有到来时)。如果它的运算数据已经准备好了,等待操作系统进行调度,那么它就处于就绪状态。
我们还可以从命令行指令来看进程的不同状态
R为后台运行状态,R+为前台运行状态
S为后台可中断睡眠状态,S+为前台可中断睡眠状态
D为不可中断睡眠状态
T为暂停状态(ctrl+z)
t+为跟踪状态,在调试程序的时候可以看到
x为死亡状态,z为僵尸状态
内存指针
此外,PCB中还有一个内存指针,它指向的是程序地址空间

其中有一些概念性的东西,(在默认最上面是高地址,最下面是低地址)栈区是向下生长的,堆区是向上生长的,此外还有数据段和代码段。
注意:实际上这里的程序地址空间并不是真正物理意义上的内存空间,而是操作系统对每一个进程都分配了一个4g的进程虚拟地址空间,当进程有了实际的内存修改之后,才会将进程虚拟地址空间中修改的内存通过页表映射的方式映射到真实的物理内存中,而这样做的好处是可以精准分配内存,即进程需要多少内存,就分配多少内存
相关文章:
【Linux】PCB(进程控制块)
进程控制块PBC-描述进程号进程状态内存指针PBC-描述 我们知道,进程就是运行起来的代码,而操作系统就是通过对进程进行描述,然后将所有的进程使用双向链表串联到一起,实现对计算机软硬件资源的管理的。 那么,PCB到底是…...
风电的Weibull分布及光电的Beta分布组合研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
《Effective Objective-C 2.0 》 阅读笔记 item11
第11条:理解objc_msgSend的作用 1. 动态语言特性 在Objective-C中,如果向某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数,然而对象收到消息之后,究竟该…...
Python常见装饰器使用(实用向)
目录1.staticmethod2.classmethod3、classmethod 与staticmethod比较4. property5.abstractmethod6.wraps7.lru_cache8.timeout9.retrystaticmethod:将一个方法转换为静态方法,可以在不创建类实例的情况下调用。classmethod:将一个方法转换为…...
集合详解之(三)单列集合接口Set及具体子类HashSet、TreeSet
文章目录🐒个人主页🏅JavaSE系列专栏📖前言:🎀Set集合接口🎀HashSet实现类🎀TreeSet实现类🪅HashSet类常用方法:🪅TreeSet类常用方法:ὁ…...
力扣刷题笔记22—— 矩阵中的路径(回溯)/pair的学习
矩阵中的路径(回溯)/pair的学习问题分析示例代码pair学习问题 来自力扣: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按…...
Spring学习1
一、Spring简介 Spring翻译过来就是春天的意思,其实也就是给软件行业带来了春天2002年,首次推出Spring框架的雏形,interface21框架Spring框架就是以interface21框架为基础,经过重新设计,并不断丰富,在2004年…...
Keep再闯IPO,三年亏损16亿,会员留存率跌破70%
“运动科技第一股”来了? 3月28日,线上健身平台的运营方、北京卡路里科技有限公司(下称“Keep”)更新招股书,再次闯关港股IPO。 Keep是一家在线健身平台,主要产品包括在线健身内容、智能健身设备和配套运…...
软件测试分类详解
一图看清软件测试分类 一、按测试技术分(是否查看代码) **1. 黑盒测试**:软件功能是否正常使用【功能的测试】 **2. 白盒测试**:代码逻辑是否正确【结构的测试】 **3. 灰盒测试**:介于两者之间的测试,也…...
网站怎么优化出排名
网站怎么优化出排名,独立站SEO优化应该怎么做?#独立站#推广优化#SEO优化 今天跟大家聊一下独立站的SEO,是指个人或者小型的企业对独立站进行一个优化,以提高他在搜索引擎中的排名和流量,从而吸引更多的这个客户和用户。…...
h5|web页面嵌套iframe传参给cocosCreator
h5|web页面嵌套iframe传参给cocosCreator 目录 一、快速浏览 二、详细实现与项目代码 三、安全性评估——iframe 实现效果: 一、快速浏览 在h5页面中,使用JavaScript获取需要传递的参数,如下: var token ZHESHINIDETOKEN; var phone 11…...
阿里云安全产品Web应用防火墙是什么?有什么作用?
Web应用防火墙是一款网站Web应用安全的防护产品,拦截针对您网站发起的Web通用攻击(如SQL注入、XSS跨站等)或是应用资源消耗型攻击(CC),同时也可以满足您网站从流量管理角度来防御业务风险,例如B…...
【SSM】Spring6(九.代理模式)
文章目录1.代理模式2. 静态代理3. 动态代理3.1 JDK动态代理3.2 CGLIB动态代理1.代理模式 代理模式主要有两种: 静态代理模式 动态代理模式 2. 静态代理 有这样一个业务:订单的生成,修改,查看详情。实现如下 package com.sdnu.…...
【1017. 负二进制转换】
来源:力扣(LeetCode) 描述: 给你一个整数 n ,以二进制字符串的形式返回该整数的 负二进制(base -2)表示。 注意, 除非字符串就是 "0",否则返回的字符串中不…...
C语言实现插入排序与希尔排序
目录 一,插入排序 插入排序C语言实现(升序) 1,将新元素插入到有序序列 2,循环的开始与终止 二,希尔排序 希尔排序C语言实现(升序) 1,单趟: 2&#x…...
第九章-DOM与CSS
style属性 文档中每个元素节点都有一个属性style。style属性包含着元素样式,查询这个属性将返回一个对象而不是一个简单的字符串。样式都存放在这个style对象的属性里。 var element getElementById("example") //查看颜色属性 element.style.color //…...
蓝桥杯真题练习
小蓝在玩一个寻宝游戏, 游戏在一条笔直的道路上进行, 道路被分成了 nn 个方格, 依次编号 1 至 nn, 每个方格上都有一个宝物, 宝物的分值是一个整数 (包括正数、负数和零), 当进入一个方格时即获得方格中宝物的分值。小蓝可 以获得的总分值是他从方格中获得的分值之和。 小蓝开始…...
插入排序的简单理解
详细描述 插入排序的基本思想是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增 1 的有序表。 在其实现过程中使用双层循环,外层循环针对除了第一个元素之外的所有元素,内层循环针对当前元素前面的有序表进行…...
Springboot框架集成Websocket通信方式
Websocket实现了“服务器”主动向“客户端”发送数据,改变了以往通过轮询、长轮训、长连接等方式获取服务器端数据的方式。 一、Websocket有三种不同的用场景,单播、广播和组播; (一)、单播(Unicast) 单播是客户端与服务器之间的“一对一”的连接。是在一个单个的发送…...
将json数据分组
在工作中有时需要根据业务需要,将大量数据进行处理分成几个一组 // 例如要将下方数据进行处理 var stuCount [{"id": "1612321835288","libraryCode": "D","regionCode": "A","positionCode&qu…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...




