【Linux】进程的基本概念(进程控制块,ps命令,top命令查看进程)

       

目录

01.进程的基本概念

程序与进程

进程的属性

02.进程控制块(PCB)

task_struct的内容分类

组织进程

03.查看进程

ps命令

top指令


        在计算机科学领域,进程是一项关键概念,它是程序执行的一个实例,是操作系统的基本单位。本文将从进程的基本概念到内核观点的深入理解,以及Linux操作系统下的具体实现等方面逐步探讨进程的相关知识。

01.进程的基本概念

程序与进程

程序与进程之间存在着密切的关系,但并不是同一个概念。

程序

  • 程序是一组指令的集合,是静态的代码文件,通常存储在磁盘或其他存储介质中。
  • 程序是计算机执行特定任务的指令序列,它描述了如何处理输入数据以产生输出结果。

进程

  • 进程是程序的执行实例,是操作系统中的基本执行单位。
  • 进程包括了程序的执行状态、内存空间、资源分配情况等信息。
  • 每个进程都有自己的唯一标识符(PID),并且可以独立运行和被操作系统调度。

        用生活中的例子来解释,程序就像是一本菜谱,描述了如何准备一道菜的步骤、所需的食材以及烹饪方法,但它本身并不会做任何事情而进程则是根据菜谱准备食物的实际过程,它是程序在执行过程中的动态实例。就像你可以同时烹饪多道菜一样,操作系统可以同时执行多个进程,每个进程都在独立地执行它们的指令,拥有自己的资源和状态。

进程的属性

        进程的属性包括了唯一标识符、状态、优先级、程序计数器、内存指针、上下文书籍、I/O状态信息、记账信息等。这些属性描述了进程在执行过程中的各个方面,是操作系统进行进程管理的基础。进程信息存放在名为进程控制块的数据结构中,也可以称之为进程属性的集合。

02.进程控制块(PCB)

        在内核观点中,进程被认为是担任分配资源的实体。而进程的信息被存放在一个称为进程控制块的数据结构中,它是进程属性的集合,包含了进程在执行过程中所需的所有信息。

        在LInux操作系统中,描述进程的结构体称为"task_struct".它被装载到内存中,并包含了进程的所有信息。"task_struct"是Linux内核的一种数据结构。

task_struct的内容分类

标示符

描述本进程的唯一标识符,通常是一个PID(进程ID),用来区别其他进程。

状态

包括任务状态、退出代码、退出信号等,描述了进程当前所处的状态和执行情况。

优先级

相对于其他进程的优先级,用来决定进程在调度时的执行顺序。

程序计数器

记录了程序中即将被执行的下一条指令的地址,用来指示进程当前执行的位置。

内存指针

包括了程序代码和进程相关数据的指针,以及与其他进程共享的内存块的指针,用来管理进程的内存空间和数据共享。

上下文数据

指进程执行时处理器的寄存器中的数据,包括了寄存器的状态、程序计数器等,是进程从一个状态切换到另一个状态时需要保存和恢复的信息。

I/O状态信息

包括显示的I/O请求、分配给进程的I/O设备和被进程使用的文件列表等,用来描述进程的I/O操作情况。

记账信息

包括了处理器时间总和、使用的时钟数总和、时间限制、记账号等,用于统计和记录进程的运行情况和资源消耗情况。

组织进程

在Linux内核源代码中,所有运行在系统中的进程都以"task_struct"链表的形式存在内核中。这种组织形式方便了操作系统对进程的管理和调度。

03.查看进程

进程的信息可以通过 /proc系统文件夹查看

大多数进程信息同样可以使用ps或top工具来获取

ps命令

ps命令用于显示系统中当前运行进程的信息。它提供了许多选项,可以根据需要显示不同的进程信息。以下是它的常用选项:

  • -e:显示所有进程信息。
  • -f:显示详细的进程信息,包括父进程的PID、CPU利用率等。
  • -u user:显示指定用户的进程信息。
  • -aux:显示所有用户的所有进程信息,并且以更详细的方式显示。
  • -p pid1,pid2,...:显示指定PID的进程信息。
  • -N:显示与指定条件不匹配的进程信息。
  • -o format:指定显示的输出格式。

 示例:

在使用ps命令查找某一进程的信息时,可以结合“grep”命令,例如

ps aux | grep proc

这样就会筛选出名称为proc的进程的信息

此时为什么会用两个进程的信息呢,第一行时proc进程的信息,第二行其实是grep的进程信息,grep命令在输出时会给匹配的文本添加高亮颜色,如果不想看到grep进程信息,可以使用-v选项

此时就只有proc进程的信息了。

        注意:有时候可能因为没用正确方式终止程序导致留下一个僵尸进程或者后台进程,这个时候虽然程序没有在运行,但是进程信息仍然会显示在ps命令的输出中。这个时候就需要使用“kill”命令终止程序(一般的程序只需要ctrl+c就可以终止)下面看一个例子:

还是proc程序,运行时加入选项&,此时就会生成一个后台程序,ctrl+c无法进行终止

此时复制一个当前窗口,获取该进程PID并输入kill指令

这样进程就终止了

 

top指令

        top命令是一个用于实时监测系统进程的工具,它可以显示系统当前正在运行的进程以及它们的资源占用情况。运行top命令后,会在终端显示一个实时更新的进程列表,包括进程的PID、用户、CPU占用率、内存占用率等信息。

top命令以交互方式运行,可以在列表中执行一些命令:

  • q 键退出 top 命令。
  • k 键输入一个进程的 PID 并按回车,然后输入一个信号值(例如 9 表示 SIGKILL),可以杀死指定的进程。
  • u 键输入一个用户名,可以过滤显示属于该用户的进程。
  • ? 键可以查看更多可用的命令列表。
  • P 键按 CPU 占用率排序。
  • M 键按内存占用率排序。

        还可以通过在命令行中指定选项来修改 top 命令的默认行为。例如,你可以使用 -d 选项指定更新间隔时间,使用 -n 选项指定显示进程的数量等。

以上就是进程的一些相关知识的整理了~

总结:

        进程作为计算机系统中的基本概念,承载着程序的执行实例,是操作系统进行资源分配和管理的核心。通过对进程的基本概念、内核实现以及创建和调度的深入探讨,我们能够更好地理解操作系统中进程管理的机制。觉得博客对你有帮助的,点赞关注支持一下吧~😉

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

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

相关文章

如何保证缓存与数据库的双写一致性?

如何保证缓存与数据库的双写一致性? 概述同步策略更新缓存还是删除缓存:先操作数据库还是缓存:案例一、先删除缓存,在更新数据库案例二 先操作数据库,再删除缓存 延时双删策略(不推荐)使用分布式…

《数据安全技术 数据分类分级规则》及典型行业标准指南要点提炼

数据分类分级发布新国标 千呼万唤,国家标准GB/T 43697-2024《数据安全技术 数据分类分级规则》于3月21日正式发布。作为全国网络安全标准化技术委员会更名后,发布的第一部以“数据安全技术”命名的国家标准,《数据安全技术 数据分类分级规则…

K8s+Nacos实现应用的优雅上下线【生产实践】

文章目录 前言一、环境描述二、模拟请求报错三、配置优雅上下线1.修改nacos配置2.修改depolyment配置3.重新apply deployment后测试4.整体(下单)测试流程验证是否生效 四、期间遇到的问题 前言 我们在使用k8s部署应用的时候,虽然k8s是使用滚动升级的,先…

【CXL协议-事务层之CXL.cache (3)】

3.2 CXL.cache 3.2.1 概述 CXL.cache 协议将设备和主机之间的交互定义为许多请求,每个请求至少有一个关联的响应消息,有时还有数据传输。 该接口由每个方向的三个通道组成: 请求、响应和数据。 这些通道根据其方向命名,D2H&…

【笔记】深入理解JVM机制

🎥 个人主页:Dikz12📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 JVM 运⾏流程图 JVM 中内存区域划分 方法区 / 元数据区 堆 栈 程序计数器 本地方法栈 内存区域总结 JVM 中类加载过程 …

Go第三方框架--gin框架(一)

序言 Gin框架作为go语言使用最多的web框架,以其快速的响应速度和对复杂http路由配置的支持受到程序员和媛们的喜爱,几乎统治了web市场。但作为一名合格的程序员,要知其然更要知其所以然,不然八股文背的也没有啥意思。本着这个原则…

【Java程序设计】【C00368】基于(JavaWeb)Springboot的箱包存储系统(有论文)

TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…

【MySQL数据库】数据类型和简单的增删改查

目录 数据库 MySQL的常用数据类型 1.数值类型: 2.字符串类型 3.日期类型 MySQL简单的增删改查 1.插入数据: 2.查询数据: 3.修改语句: 4.删除语句: 数据库 平时我们使用的操作系统都把数据存储在文件中&#…

3.3 数据定义 数据库与系统概论

目录 3.3.1 模式的定义与删除 1. 定义模式 2. 删除模式 CASCADE(级联) RESTRICT(限制) 3.3.2 基本表的定义、删除与修改 表的定义 2.数据类型 3. 模式与表 4. 修改基本表 5. 删除基本表 3.3.3 索引的建立与删除 1. …

如何备考2024年AMC10:吃透2000-2023年1250道真题(限时免费送)

我们今天继续来随机看5道AMC10真题,以及详细解析,这些题目来自1250道完整的官方历年AMC10真题库。通过系统研究和吃透AMC10的历年真题,参加AMC10的竞赛就能拿到好名次。即使不参加AMC10竞赛,掌握了这些知识和解题思路后初中和高中…

2015年认证杯SPSSPRO杯数学建模C题(第一阶段)荒漠区动植物关系的研究全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 C题 荒漠区动植物关系的研究 原题再现: 环境与发展是当今世界所普遍关注的重大问题, 随着全球与区域经济的迅猛发展, 人类也正以前所未有的规模和强度影响着环境、改变着环境, 使全球的生命支持系统受到了严重创伤, 出现了全球变暖…

Flutter 旋转动画 线性变化的旋转动画

直接上代码 图片自己添加一张就好了 import dart:math;import package:flutter/material.dart;import package:flutter/animation.dart;void main() > runApp(MyApp()); //旋转动画 class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {re…

RMAN 备份恢复、删除归档

RMAN冷备全库 rman target / list backup shutdown immediate startup mount #不要自动备份control file set nocfau; #注意要先备份数据库,然后备份控制文件,因为数据库的备份位置记录在控制文件中。 #备份数据库 backup database format /mnt/disk01/r…

vue 中实现下载后端返回的流式数据

验证是否是blob /*** Event 验证是否为blob格式* */export async function blobValidate(data) {try {const text await data.text();JSON.parse(text);return false;} catch (error) {return true;}}get请求 /*** Event: get请求下载后端返回的数据流* description: url[Stri…

Redis-指定配置启动

基础篇Redis 3.3.5.指定配置启动 如果要让Redis以后台方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf: 我们先将这个配置文件备份一份…

利用 Scapy 库编写 ARP 缓存中毒攻击脚本

一、ARP 协议基础 参考下篇文章学习 二、ARP 缓存中毒原理 ARP(Address Resolution Protocol)缓存中毒是一种网络攻击,它利用了ARP协议中的漏洞,通过欺骗或篡改网络中的ARP缓存来实施攻击。ARP协议是用于将IP地址映射到物理MAC…

警务数据仓库的实现

目录 一、SQL Server 2008 R2(一)SQL Server 的服务功能(二)SQL Server Management Studio(三)Microsoft Visual Studio 二、创建集成服务项目三、配置“旅馆_ETL”数据流任务四、配置“人员_ETL”数据流任…

OM6626低功耗M4内核低睡眠电流BLE5.3 SoC国产ESL蓝牙方案芯片

目录 OM6626简介OM6626主要特性射频特性PUM特性安全性SDK代码微信号:dnsj5343OM6626最小系统Demo板 OM6626简介 OM6626是功能强大、性能稳定、超低功耗的蓝牙SoC芯片,适用于各种低功耗蓝牙和专有的2.4GHz应用场景。OM6626还集成了电源管理单元 (PMU)&am…

机器视觉检测设备的组成要素

机器视觉检测设备是一种先进的自动化检测技术工具,它利用光学、图像处理和计算机硬件及软件技术模拟并扩展人类的视觉功能,以实现对产品或目标物体进行自动化的尺寸测量、缺陷检测、表面质量评估、颜色识别、形状匹配以及位置判断等功能。这种设备通常包…

PyCharm环境下Git与Gitee联动:本地与远程仓库操作实战及常见问题解决方案

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言下载及安装GitGit的使用设置用户签名设置用户安全目录Git基本操作Git实操操作 Pyc…