【操作系统】了解Linux操作系统中PCB进程管理模块与进程PID

本篇要分享的内容是有关于操作系统中进程的内容。

目录

1.进程的简单理解

2.了解task_struct(进程控制模块)内容分类

3.task_struct(进程控制模块)中的PID

4.调用查看PID的函数


1.进程的简单理解

首先我们需要理解的是什么是程序、什么是进程。

简单理解进程就是可执行程序+内核数据结构(PCB);

这里的PCB所指的就是process control block(进程控制模块),也可以称作为task_struct,也就是们运行中的程序所对应的各种信息都会被存放在PCB中。

我们先从最简单的部分开始理解,在我们平时写完代码时,将代码运行起来时会在我们的磁盘上生成.exe文件,同时生成窗口,我们可以随便运行一些程序再打开我们的任务管理器,就可以看到这些进程的信息

我们都直到操作系统是帮助我们管理进程、文件、内存、设备等等方便于我们能更好的和我们的计算机交互,那么接下来我们深入研究操作系统如何对进程管理和组织。

2.了解task_struct(进程控制模块)内容分类

task_struct是Linux下的进程管理模块,我们需要了解一下它的内容

1.标示符: 描述本进程的唯一标示符,用来区别其他进程。
2.状态: 任务状态,退出代码,退出信号等。
3.优先级: 相对于其他进程的优先级。
4.程序计数器: 程序中即将被执行的下一条指令的地址。
5.内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
6.上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
7.I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
8.记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
...其他信息

这些信息我们可以对比windows系统下的PCB查看

但是因为windows操作系统的设置当前我们只能看到进程任务的名称 。

3.task_struct(进程控制模块)中的PID

首先需要理解的一个概念是进程所对应的标识符又叫做 PID (process id),他是描述本进程的唯一标示符,用来区别其他进程。

由于一些原因我们无法在Windows系统中查看进程的PID,所以需要打开我们的Linux操作系统;

那么本章要分享的内容与进程有关

所以在命令行中输入ps axj,即可查看Linux系统中的进程

 

那这一行就是进程所对应的属性的信息,其中就有我们上面提到过的PID,所以我们这里关注PID。

在文章开始时我们简单对进程有过了解,就是将我们敲的代码通过操作系统运行起来就是一个进程,那我们不妨写一个简单的代码让他跑起来;

 如上时一个循环打印;将他运行起来

可以看到他已经循环打印

接下里我们复制再我们的操作台用来查看刚刚运行起来的进程

这里使用  ps axj | grep 运行起来的文件名

可以看到再使用查看进程的命令后出现了两行我们并不懂的信息,我们一一对其解释。 

同时还要介绍另一个命令

ps axj | head -1

这个指令可以查看我们的标头的信息;

所以我们不妨将这两个命令一起使用,就可以看到标头信息和它对应的数值

 

可以看到我们运行起来的程序,也就是进程的PID就是821311

那在下面PID为821630的进程又是什么呢?其实当我们使用指令查进程时,查进程本身的动作也会变成进程,我要去追你,我自己也要动起来,所以在查进程时会将自己也查出来。

下面我们将右边的进程,也就是循环打印终止,再输入查进程的命令

 可以看到结果查找不出刚刚的进程了。

所以根据以上结论我们就可以得出结论:我们所写的所有指令,软件,程序最终都是进程。

那么在Windows操作系统下更容易看到

比如这里打开微信

 可以看到任务管理器中就有了微信的进程,自然结束进程后相对应的进程也会被终止。

4.调用查看PID的函数

当然除了上述方法可以看到进程的PID之外,还可以通过函数来查看PID;

我们在Linux中查看PID的使用手册

简单理解这个手册中所说的用法就是

调用PID可以可以使用

getpid()

可以将它理解为一个函数,它的作用就是获取进程的标识符,返回值是PID(在此意为哪个进程调用了它,就返回哪个进程的PID),那么头文件<sys/types.h>就告诉着我们这是一个有关于系统的函数和头文件。

在代码中使用

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{int i=0;while(i<=100){pid_t id=getpid();printf("这是一个进程,PID为:%d\n",id);sleep(1);}
}
~        

将其运行起来

这个进程会一直调用函数获取PID;

那直到了PID之后我们就可以使用PID方便对其管理 ,比如我们需要结束一个进程

kill -9 PID

简单使用

可以看到我们使用kill -9  加上PID命令时就可以结束PID对应的当前的进程 ;

就像Windows操作系统中在任务管理器中结束进程,在手机上杀后台。

以上就是有关PCB的简单理解和对PID简单的理解和使用,如果对你有所帮助,还请多多三连支持,感谢您的阅读。

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

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

相关文章

C++指针的使用

文章目录 1.C指针1.1 定义指针1.2 使用指针 2.空指针和野指针2.1 空指针2.2 野指针 3.指针所占空间4.使用const修饰指针4.1 const修饰指针4.2 const修饰常量4.3 const 既修饰指针也修饰常量 5.指针操作数组6.指针做函数参数7.使用指针知识实现冒泡排序 1.C指针 指针其实就是一…

SpringBoot整合数据库连接

JDBC 1、数据库驱动 JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;即Java数据库连接。简而言之&#xff0c;就是通过Java语言来操作数据库。 JDBC是sun公司提供一套用于数据库操作的接口. java程序员只需要面向这套接口编程即可。不同的数据库厂商&…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

计算机竞赛 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

数据结构:复杂度分析

目录 1 算法效率评估 1.1 实际测试 1.2 理论估算 2 迭代与递归 2.1 迭代 1. for 循环 2. while 循环 3. 嵌套循环 2.2 递归 1. 调用栈 2. 尾递归 3. 递归树 2.3 两者对比 3 时间复杂度 3.1 统计时间增长趋势 3.2 函数渐近上界…

MySQL学习笔记26

MySQL主从复制的搭建&#xff08;AB复制&#xff09; 传统AB复制架构&#xff08;M-S)&#xff1a; 说明&#xff1a;在配置MySQL主从架构时&#xff0c;必须保证数据库的版本高度一致&#xff0c;统一版本为5.7.31 环境规划&#xff1a; 编号主机名称主机IP地址角色信息1ma…

盛最多水的容器 接雨水【基础算法精讲 02】

盛雨水最多的容器 链接 : 11 盛最多水的容器 思路 : 双指针 &#xff1a; 1.对于两条确定的边界&#xff0c;l和r,取中间的线m与r组成容器&#xff0c;如果m的高度>l的高度&#xff0c;那么整个容器的长度会减小&#xff0c;如果低于l的高度&#xff0c;那么不仅高度可…

Flink安装及简单使用

目录 转载处&#xff08;个人用最新1.17.1测试&#xff09; 依赖环境 安装包下载地址 Flink本地模式搭建 安装 启动集群 查看WebUI 停止集群 Flink Standalone搭建 安装 修改flink-conf.yaml配置文件 修改workers文件 复制Flink安装文件到其他服务器 启动集群 查…

cesium 热力图(CesiumHeatmap)

cesium 热力图 可添加、删除、显示、隐藏 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="utf-8">

mac如何卸载应用并删除文件,2023年最新妙招大公开!

大家好&#xff0c;今天小编要为大家分享一些关于mac电脑的小技巧&#xff0c;特别是关于如何正确卸载应用程序以及清理卸载后的残留文件。你知道吗&#xff1f;很多人都不知道&#xff0c;mac系统默认的卸载方式可能会导致一些残留文件滞留在你的电脑上&#xff0c;慢慢地占用…

openGauss学习笔记-86 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署配置

文章目录 openGauss学习笔记-86 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署配置86.1 总体原则86.2 重做日志&#xff08;MOT&#xff09;86.3 检查点&#xff08;MOT&#xff09;86.4 恢复&#xff08;MOT&#xff09;86.5 统计&#xff08;MOT&#xff09;86…

进入IT行业:选择前端开发还是后端开发?

一、前言 开发做前端好还是后端好&#xff1f;这是一个常见的问题&#xff0c;特别是对于初学者来说。在编程世界中&#xff0c;前端开发和后端开发分别代表着用户界面和数据逻辑&#xff0c;就像城市的两个不同街区一样。但是&#xff0c;究竟哪个街区更适合我们作为开发者呢…

Mapfree智驾方案,怎样实现成本可控?

整理|睿思 编辑|祥威 编者注&#xff1a;本文是HiEV出品的系列直播「智驾地图之变」第二期问答环节内容整理。 元戎启行副总裁刘轩与连线嘉宾奥维咨询董事合伙人张君毅、北汽研究总院智能网联中心专业总师林大洋、主持嘉宾周琳展开深度交流&#xff0c;并进行了答疑。 本期元…

【算法|贪心算法系列No.3】leetcode334. 递增的三元子序列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

oracle分组合并数值带顺序

比如&#xff1a;有如下一张设备电子围栏位置坐标的表&#xff08;tb_equ_point&#xff09;。 equ_name:设备电子围栏名称 point_id:点位坐标id point_x:点位x坐标 point_y:点位y坐标。 附数据&#xff1a; INSERT INTO "tb_equ_point" ("EQU_NAME",…

番外3:下载+安装VMware(前期准备)

step1: 查看自己笔记本电脑配置&#xff1b; step2: 下载并安装VMware&#xff08;下载地址www..kkx.net/soft/16841.html&#xff09;这里选择本地普通下载&#xff1b; step3: 安装VMware过程中需要填写密钥&#xff08;本人用的最后一个&#xff09;; #UU54R-FVD91-488PP-7N…

友思特案例|友思特 Ensenso 3D相机:汽车工业自动化的革命性力量

01 内容摘要 在竞争激烈的汽车行业&#xff0c;自动化生产至关重要。友思特 Ensenso 3D相机为汽车制造商提供了可靠的工具和技术支持&#xff0c;助力多个关键环节。它在汽车座位泡棉切割中提高精确度&#xff0c;降低浪费&#xff0c;提高生产效率&#xff1b;在汽车压铸零部…

<泛型>带你更详细的认识泛型

了解泛型 现在有一个需求&#xff1a;写一个打印类&#xff0c;用来打印不同类型的数据 //类1 &#xff1a;打印Integer类型的数据 public class IntegerPrint {Integer content;public void Integer(Integer content) {this.content content;}public void print(){System.o…

Python3数据科学包系列(二):数据分析实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 一&#xff1a;通过read_table函数读取数据创建(DataFrame)数据框 #…

九、GC收集日志

JVM由浅入深系列一、关于Java性能的误解二、Java性能概述三、了解JVM概述四、探索JVM架构五、垃圾收集基础六、HotSpot中的垃圾收集七、垃圾收集中级八、垃圾收集高级👋GC收集日志 ⚽️1. 认识GC收集日志 垃圾收集日志是一个重要的信息来源,对于与性能相关的一些悬而未决的…