当前位置: 首页 > news >正文

进程入门与PCB基础知识.

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸
在这里插入图片描述

文章目录

  • 一、进程概述
  • 二、PCB(进程控制块的统称)
    • Linux的PCB task_struct
    • tast_struct内容分布
  • 三、查看进程
    • 1.ps
    • 2.top
  • 四、总结

一、进程概述

进程其实就是系统中正在运行的一个程序
在这里插入图片描述
启动一个软件,本质上就是启动一个进程
在Linux下,执行一条命令也是在系统层面创建了一个进程,pwd,ls,也是一个进程
被加载到内存当中的程序 ,就叫做进程,变成进程之后,才能被操作系统所管理
进程= 文件的代码和数据 + PCB

二、PCB(进程控制块的统称)

PCB process control block进程控制块
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的结合

Linux是可以同时加载多个程序,同时存在大量的进程在系统中
进程=对应的代码和数据+进程对应的PCB结构体
对进程的管理,也就变成了对PCB结构体链表的增删查改

一个可执行程序本质就是 文件代码+数据 ,运行一个程序,也就是为对应的程序新创建了一个进程控制块,交给操作系统管理,PCB结构体用来描述进程的属性。

Linux的PCB task_struct

在不同的操作系统中,PCB的名字就不同,所有运行在系统里的进程都以task_struct链表的形式存在于内核中

//Linux中:
struct tast_struct 
{
	....
};

在Linux中描述进程的结构体叫做task_struct ,task_struct 是PCB的一种,是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

tast_struct内容分布

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

三、查看进程

测试代码:
在这里插入图片描述

1.ps

ps Process Status
ps只能看到当前终端的进程,要想看到所有的进程就用ps axj

ps 
ps axj
//a表示所有的进程
//x表示按照特定风格去显示

ps axj再利用管道和grep查看指定内容
在这里插入图片描述
想把头部带上也行,展示头部是ps axj | head -1

ps  axj | head -1 && ps axj | grep "process"

在这里插入图片描述
这里的第二个进程其实就是grep

2.top

除了ps外还有top命令,top就相当于是windows下的任务管理器,还是建议用ps看
在这里插入图片描述

四、总结

    以上是对进程的入门以及对PCB的认识和进程的查看相关知识,之后还会继续更新,觉得有帮助的话就点一点吧!
    感谢大家的支持,在提升自我的过程中不断更新!!

在这里插入图片描述

相关文章:

  • 【云原生】设备云之基于FlexManager的C#SDK开发案例代码
  • Rust(7):数组类型
  • STM32——FLASH闪存编程原理与步骤
  • 计算机毕业设计之java+javaweb的大学生就业帮助系统-就业招聘网站
  • 跳表论文解读
  • 1061:求整数的和与均值
  • Day04JavaWeb第四次笔记---Maven的使用
  • Unrecognized option: --no-transfer-progress
  • 加载指定 having lines separator 时max_data_processor 不起作用
  • 高薪程序员面试题精讲系列150之电商专题(上)-你们的电商项目有什么特色?是B2B还是B2C、还是C2C的?直播电商你了解吗?
  • kafka是啥?虽然很难学,但是实验入门很简单
  • MySQL8.0 索引优化-invisible index
  • 基于java仓库管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • C++对象内存故事, 一个对象是如何由子对象来构成的?
  • 软件过程模型(软件开发模型)
  • 【笔记】你不知道的JS读书笔记——Promise
  • emacs初体验
  • ERLANG 网工修炼笔记 ---- UDP
  • NSTimer学习笔记
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • yii2权限控制rbac之rule详细讲解
  • 阿里云购买磁盘后挂载
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 浮动相关
  • 前端设计模式
  • 前端之Sass/Scss实战笔记
  • 实战|智能家居行业移动应用性能分析
  • 算法系列——算法入门之递归分而治之思想的实现
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • linux 淘宝开源监控工具tsar
  • 如何正确理解,内页权重高于首页?
  • #android不同版本废弃api,新api。
  • #git 撤消对文件的更改
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (03)光刻——半导体电路的绘制
  • (26)4.7 字符函数和字符串函数
  • (4)(4.6) Triducer
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET : 在VS2008中计算代码度量值
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET 设计模式初探
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net6 webapi log4net完整配置使用流程
  • .net专家(高海东的专栏)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化