【Linux】对进程PCB的理解查看进程信息的方法

一、学习准备:对操作系统工作模式的理解

        首先我们要清楚的是,操作系统是一个进行软硬件资源管理的软件。操作系统对下要管理好底层硬件。每一个硬件的生产产商都会给他们的产品提供对应的驱动程序,驱动程序是特定于某一硬件或系统设备的软件组件,它为系统提供管理硬件的各种功能。当软件需要实现某些功能,而这些功能无法通过应用程序单独实现或难以实现时,驱动程序就能派上用场。操作系统通过驱动程序对底层的硬件进行管理。

        对上要给用户提供良好的使用体验,用户所进行的任何操作都不能越过操作系统。在任何一门语言中,如果一个函数运行的结果会影响到硬件,比如说printf打印数据到显示屏上,scanf从键盘中读取数据,那这个函数底层一定会封装系统调用函数。系统调用函数即保证了操作系统中数据的安全性,又方便了用户操作。

        那为什么我们好像很少见到系统调用接口呢?原因是如果我们要使用系统调用接口的话,我们本身就应该对操作系统有一定的认知和了解,所以有人就对系统调用接口进行了封装,形成了库(例如C标准库),方便使用者直接使用库函数就可以达到使用系统调用接口同样的使用效果。进一步的说,正是对系统调用函数进行了封装,才使诸如C语言,C++等各种编程语言具有了跨平台性,我上层同样都是调用printf函数,在linux操作系统下我就去调用linux下的系统调用函数(封装在C标准库),在Windows操作系统下我就去调用Windows下的系统调用函数(封装在C标准库),这样我即使不了解操作系统,只通过上层的语言也可以和操作系统进行交互,不同操作系统的差异已经在封装这一层被屏蔽掉了,这就是我们所说的语言的跨平台性。下面是计算机的层状结构图:

二、进程的理解

        可执行程序被加载到内存,加载的是程序的代码和数据,可是操作系统并不认识哪些代码和数据对应哪些进程。所以,操作系统在加载可执行程序形成进程的同时,会创建一个描述该进程的结构体,称为PCB(process control block,进程控制块),linux操作系统下称之为task_struct。操作系统通过PCB中的各种属性信息(状态,优先级,内存指针字段,标识符......),就能够了解到这个进程的属性信息,进而控制进程的运行。此后,操作系统对于进程的管理,就转换成了对于PCB链表的增删查改。进一步的,我们可以了解到,进程就等于内核数据结构加可执行程序。未来,所有对进程的操作和控制,都只和进程的PCB有关,和进程的可执行程序没有关系。

PCB的大致属性信息

标示符: 描述本进程的唯一标示符,用来区别其他进程。

状态: 任务状态,退出代码,退出信号等。

优先级: 相对于其他进程的优先级。

程序计数器: 程序中即将被执行的下一条指令的地址。(扩展:CPU 有pc指针,pc指针存放的是当前执行指令的下一条指令的地址,pc指针指向那个进程的代码,哪个进程就被调度执行。当进程被切换出去(例如,由于时间片用完或发生中断)时,其当前的PC指针值会被保存到对应PCB的程序计数器中。当进程再次被调度执行时,操作系统会从这个程序计数器中恢复PC指针的值,从而确保进程可以从之前中断的地方继续执行。程序计数器是进程上下文切换的关键部分,它使得多个进程可以共享同一个CPU,而每个进程看起来都像是在独占CPU上执行。)

内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。

上下文数据: 进程执行时处理器的寄存器中的数据。

I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

其他信息......

三、查看进程

ps axj:在Linux系统中用于查看关于进程的更多信息

其中pid就是进程对应的标识符,ppid就是进程的父进程对应的标识符

ps ajx | head -1 && ps ajx | grep 关键字:查看和包含关键字的进程的信息

         ps ajx | head -1就是把ps ajx内容的第一行取出来,&&是合并的意思,ps ajx | grep 关键字查看和包含关键字的进程的信息。

         以上就是包含了myprocess关键字的进程的信息,第一个就是我刚刚运行起来的myprocess可执行程序,那有人就会问了,那这里的第二个进程又是什么呢?grep本身在进行信息提取的时候,它的提取关键字是包含了myprocess的,在grep提取信息的时候它自己也要变成进程,所以grep进程本身也被显示出来了。通过这里我们也可以知道,几乎所有的独立的指令,就是程序,运行起来也要变成进程。

while :; do ps ajx | head -1 && ps ajx | grep 关键字 | grep -v grep; sleep 1; done

        这一串指令可以对含有关键字的进程进行实时的监控。 grep -v grep是把上面的grep对应的进程过滤掉的意思。

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

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

相关文章

angularjs 指令实现自定义滚动条

场景:横向商品栏,把原有的滚动条改成自定义的样式,并且给两边加上箭头可以调整,可以拖动商品和滚轮实现滚动条效果。 js appService.directive(customScrollbar, function() {return {restrict: A,transclude: true,scope: {ena…

Linux编程4.8 网络编程-建立连接

1、服务器端 #include <sys/types.h> #include <sys/socket.h>int listen(int sockfd, int backlog);返回&#xff1a;成功返回0&#xff0c;出错返回-1。参数&#xff1a;sockfd:套接字的文件描述符backlog:定义了sockfd的挂起连接队列可能增长的最大长度。…

关于udp能跨局域网传输的问题

UDP&#xff08;用户数据报协议&#xff09;以其独特的传输特性在多种应用场景中都有着极其重要的作用。然而&#xff0c;关于UDP是否能跨局域网&#xff08;LAN&#xff09;进行传输&#xff0c;以及这一传输过程中的优缺点&#xff0c;一直是网络技术领域讨论的热点。本文将详…

Unity中PICO中手柄按键返回值

文章目录 前言一、我们看一下每个按键返回值获取按键返回值的方法 二、我们实现一个左摇杆控制平滑移动的功能1、创建一个左摇杆控制移动的脚本2、传入XR Origin对象&#xff0c;并且定义一个公开变量控制移动速度3、获取到摇杆是否移动&#xff0c;以及移动的偏移量4、如果摇杆…

Modeling Influence Diffusion over Signed Social Networks

关键词——社会系统、影响力扩散、建模、签名社交网络、影响力最大化 Abstract 在离线或在线世界中&#xff0c;许多社交系统可以表示为签名社交网络&#xff0c;包括积极和消极关系。尽管由于独特极性特征的巨大应用价值&#xff0c;人们对签名社交网络进行了各种研究&#x…

【Docker篇】自定义Dockerfile的操作

文章目录 &#x1f354;镜像结构&#x1f6f8;什么是Dockerfile⭐基于Ubuntu镜像构建一个新镜像&#xff0c;运行一个java项目&#x1f50e;使用 java:8-alpine &#x1f354;镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 我们以MySQL为例&am…

QT网络编程之实现UDP广播发送和接收

推荐一个不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;内容全面&#xff0c;作为入门科普和学习提升都不错&#xff0c;分享一下给大家&#xff1a;前言https://www.captainbed.cn/ai 一.UDP通信 1.QT中实现UDP通信主要用到了以下类&#xff1a;QUdpSocket、QHost…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FolderStack)

FolderStack继承于Stack(层叠布局)控件&#xff0c;新增了折叠屏悬停能力&#xff0c;通过识别upperItems自动避让折叠屏折痕区后移到上半屏 说明&#xff1a; 该组件从API Version 11开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件…

深度学习——数据预处理

一、数据预处理 为了能用深度学习来解决现实世界的问题&#xff0c;我们经常从预处理原始数据开始&#xff0c; 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中&#xff0c;我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样…

【LeetCode每日一题】310. 最小高度树

文章目录 [310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/)思路&#xff1a;拓扑排序代码&#xff1a; 310. 最小高度树 思路&#xff1a;拓扑排序 首先判断节点数量n&#xff0c;如果只有一个节点&#xff0c;则直接返回该节点作为最小高度树的根节点…

阿里云ECS服务器u1通用算力型CPU性能、限制使用及收费价格表

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

【解读】Gartner 2023 DevOps平台魔法四象限

2023年6月5日Gartner发布了DevOps平台魔法四象限洞察报告&#xff08;Magic Quadrant for DevOps Platforms DevOps&#xff09;&#xff0c;Gartner指出&#xff0c;DevOps平台正在成为DevOps工具链的一种更简单的替代品&#xff0c;为组织提供一套整合的集成能力。软件工程领…

Python:文件的操作

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; Python的os库主要用于与操作系统进行交互&#xff0c;它提供了多种功能&#xff0c;使得在Python程序中处理操作系统级任务变得容易。这里是一些…

【Linux】Ubuntu使用Netplan配置静态/动态IP

1、说明 Ubuntu 18.04开始,Ubuntu和Debian移除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件,转而使用ip link set或者/etc/netplan/01-netcfg.yaml模板和sudo netplan apply命令实现网络管理。 Netplan 是抽象网络配置描述器,用于配置Linux网络。 通过netpla…

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主+前端

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主前端程序源码 程序介绍 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&…

适口性猫粮哪个牌子肉源好性价比高?主食冻干性价比排行前十分享

随着科学养猫知识的普及&#xff0c;主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性&#xff0c;还能提供均衡的营养&#xff0c;有助于维护猫咪的口腔和消化系统健康。然而&#xff0c;许多猫主人在选择主食冻干产品时感到迷茫。本文将深入探讨如何为猫…

蓝桥杯刷题 Day36 倒计时26天 纯练题的一天

[蓝桥杯 2022 省 B] 积木画 题目描述 小明最近迷上了积木画&#xff0c;有这么两种类型的积木&#xff0c;分别为 I 型&#xff08;大小为 2个单位面积) 和 L 型 (大小为 3 个单位面积): 同时&#xff0c;小明有一块面积大小为2N 的画布&#xff0c;画布由2N 个 11 区域构成。…

一些很实用的技巧提高自动化测试覆盖率

自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写&#…

大模型知识积累——幻觉

什么是大模型幻觉 在大语言模型的文本生成场景下&#xff0c;幻觉是指一本正经的胡说八道。逻辑连贯的自然表述中&#xff0c;有理论或者事实错误&#xff0c;捏造事实等问题。 幻觉问题的危害 LLM幻觉可能产生传播错误知识的后果。对于医疗应用中结果安全和可信AI尤为重要&a…

气液分离器的概念和原理

气液分离器也叫低压储液器&#xff0c;在热泵或制冷系统中使用&#xff0c;主要是将出蒸发器、进压缩机气流中的液滴分离出来&#xff0c;防止压缩机发生液击&#xff0c;用于工质充注量较大、压缩机进气可能带液且压缩机对湿压缩较敏感的情况 。 液击主要出现在活塞式压缩机中…