前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Linux课程学习】:进程描述---PCB(Process Control Block)

【Linux课程学习】:进程描述---PCB(Process Control Block)

作者头像
用户11396661
发布于 2024-12-09 07:24:56
发布于 2024-12-09 07:24:56
22400
代码可运行
举报
文章被收录于专栏:C++开发C++开发
运行总次数:0
代码可运行

1.操作系统OS也是一个软件,在开机的时候被加载到内存进行运行,到这里才能让操作系统帮我们去运行其他的程序。

2.为什么要有PCB?(先描述,再组织)

因为操作系统要管理进程,管理系统之前就必须对进程进行描述。

3.命令也是一个进程,过滤查看的时候能查到。

4.让程序运行起来,本质就是启动了一个进程。命令也是系统中的一个命令,所以我们执行命令的时候,也是启动了一个进程。

5.ps查看进程的信息其本质也是去/proc目录下查找。

6./proc不是磁盘级的文件,是内存级的。

7.命令行执行,都是bash进程创建子进程,然后通过子进程程序替换达到要运行程序的目的。

这样当执行的程序发生错误,也不影响bash进程。

8.(void)取消编译器对不用变量的警告。

9.Linux进程时树形结构。

1.基本概念:

🥝进程的概念

进程的概念

课本概念

程序的一种执行实例,正在执行的程序。

内核观念

担当分配系统资源的实体(CPU,内存)。

🥝进程描述的引入

我们写的程序(code.c)首先要编译成二进制程序(code.exe)。这两个程序都是文件,保存在磁盘中。

要想让code.exe文件运行,首先code.exe要加载到内存中,加载的本质是拷贝,也就是把code.c拷贝到内存中。(input)

在计算机中,会有很多的进程,要管理进程,就要对进程进行描述。把对应的文件加载到内存中,不单单要加载它的代码和属性,还有为它创建一个struct进行描述。进程的描述有进程的一系列属性。

🥝PCB的概念:

进程信息会放到一个叫进程控制块的数据结构中,可以理解为进程属性的集合。包含进程的属性。

Linux操作系统中的PCB是task_struct。

每一个进程都会有一个PCB进行管理。 进程=PCB(task_struct)+代码和数据。

所以一个进程被加载到内存,最本质的操作系统为其在进程管理列表中创建了一个PCB(task_struct)。

进程在等待被运行,其也是task_struct在进行等待。task_struct中有属性信息,可以根据这些信息进行先后排队。

PCB(Process Control Block)

🍒Linux最早版本的task_struct有那些属性:

🍒查看进程的信息:

方法一:

ps ajx | grep (进程名):查看此时进程信息。 ps ajx |head -1:打印属性名称, ;或者&&:可以执行多条命令。 ps ajx | head -1 && ps ajx | grep code | grep -v grep :只查看./code的信息。 ps的底层就是去/proc中查找。

为什么我们查code程序的时候,会有code?

上面我们执行的命令也是一个进程,执行到code命令的时候,也是一个进程,它的关键字也有code,所以也过滤出来了。

方法二:

在更目录下的proc目录中查看进程的信息:

ls /proc:查看所有进程的信息。

每一个目录代表一个进程,目录里面就是该进程的信息。

每次我们新建一个进程,就会在这个文件夹中新建一个以该进程pid为名称的文件夹,这个文件夹存放我们新建进程的信息。

当我们删掉这个进程时,刚刚新建的文件被删除了,所以这个文件的信息是动态更新的。(所以它是内存级的)

🍒进程里的两个重要信息:

cwd(current work dir):可以更改

表示当前的工作路径,如果我们不表示路径,直接新建一个文件,会用cwd的路径进行文本拼接,就让新建的文件在当前的目录。

当进程启动的时候,就会记录当前所在的路径。

改变cwd

chdir:可以改变进程的cwd路径 通过这样的方法,可以验证程序是根据cwd路径进行创建文件的。

代码语言:javascript
代码运行次数:0
运行
复制
 #include <stdio.h>                                                                                                                                                                                             
 #include <unistd.h>
 #include <stdlib.h>
 
 int main()
 {
     chdir("/home/kym/linux-code");
     FILE* fp=fopen("log.text","w");
 
     while(1)
     {
         printf("我的pid是:%d\n",getpid());
         sleep(1);
     }
     fclose(fp);
     return 0;
 }
exe:

表示该可执行程序在磁盘的哪个位置。当程序启动的时候,如果我们根据这个路径去删除可执行文件。此时刚刚执行的文件不会停止。因为当程序运行,它会拷贝到内存中,而我们删除的是磁盘中的文件。

此时的exe显示文件被delete


进程的分类

⚽️常驻进程:

用户不主动关闭,就一直存在。比如我们启动的应用。

⚽️非常驻程序:

执行完就会退出的程序。比较一系列的指令:ls,pwd指令。


PCB中标识符---pid(Process Identifier):

🏀pid的引入:

我们使用的系统中,会有很多的进程,但是靠进程的名字字符串去区分不同的进程有点不方便,而且可能还会有相同名字的进程,这样就更不好区分了。所以给每个进程都引入了一个唯一的标识符pid。

标识符(pid):描述本进程的唯一标识符,用于区分别的进程。

🏀如何在程序中获得pid:

通过函数getpid获得,返回值就是该进程的pid值。一个程序只要不是重新被加载到内存进行运行,它的pid是不变的,所以只要getpid一次,保存好pid就可以了。

pid_t定义的一种类型,其本质就是整数。

头文件: #include <sys/types.h> #include <unistd.h> 函数原型: pid_t getpid(void); pid_t getppid(void);

🏀如何通过进程pid杀死一个进程:

kill -9 (进程pid):-9表示SIGKILL

通过信号进行杀死进程。


PCB---ppid:

ppid代表父进程的pid值。

新建的进程都是由父进程创建的,每一个进程都会有父进程,bash进程除外。

当我们每次运行同样一个程序,发现每次的ppid都是一样的。然后我们通过ps查的这个pid是bash进程的pid。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
在Mac下使用MindMaster画思维导图(脑图)
    众所周知,老牌的脑图软件是xmind,这里我们使用MindMaster,二者有什么异同呢?
用户9127725
2022/08/08
1.8K0
在Mac下使用MindMaster画思维导图(脑图)
mind-map ,一个开源的思维导图
今天,来分享一个开源的思维导图-mind-map。它支持web页面访问,作者提供的在线地址如下:https://wanglin2.github.io/mind-map/ 。如果你觉得访问比较慢,那么可以部署到自己的服务器上,你也可以在这里下载它的客户端版本:https://github.com/wanglin2/mind-map/releases 客户端的版本的内容会比较滞后,所以使用网页版本的是一个不错的选择。mindmap它支持的特性如下:
huolong
2023/10/09
4.6K1
mind-map  ,一个开源的思维导图
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
coze-discord-proxy 是一款代理Discord-Bot对话Coze-Bot,实现API形式请求GPT4对话模型/微调模型工具。
Python兴趣圈
2024/02/17
6250
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
Xmind下载 XMIND 思维导图 怎么操作使用 Xmind安装教程
XMind是一款强大的思维导图制作工具,它可以帮助用户更好地组织和展示复杂的商业信息。XMind提供了丰富的主题和样式,用户可以根据自己的需求进行个性化的设计,让思维导图更具有艺术性。此外,XMind还支持多种文件的导入和导出,包括Microsoft Office文档、PDF文件等,使得用户可以方便地与其他软件进行数据交换。通过XMind,多个用户可以同时编辑同一张思维导图,实现实时协作和远程办公,提高团队协作和效率。同时,XMind可以帮助用户创建各种类型的思维导图,包括结构图、流程图、鱼骨图等,满足不同用户的需求。
网创青年阿金
2023/04/15
9150
Xmind下载 XMIND 思维导图 怎么操作使用 Xmind安装教程
思维导图工具推荐:幕布
“在互联网时代,信息量爆炸性增长,我们需要有效地整理和呈现这些信息。思维导图是一个非常有用的工具,可以帮助我们组织思路、整理知识、规划任务和解决问题。”
做数据的二号姬
2023/09/06
4580
思维导图工具推荐:幕布
用 Markdown 写思维导图?Markmap 让你的想法“动”起来!
你是否曾为如何将零散的思绪整理成清晰的逻辑框架而苦恼?你是否在寻找一种既能保持文字的简洁,又能直观呈现信息关系的工具?今天,我要给大家介绍一个宝藏工具——Markmap。它能将 Markdown 格式的文字瞬间转化为可交互的思维导图,让你的思维不仅有条理,还能“动”起来!
程序那些事儿
2025/03/03
8960
用 Markdown 写思维导图?Markmap 让你的想法“动”起来!
mindoc制作思维导图
mindoc是基于editor.md的适合写技术文档的工具,我将它整合到engineercms里,我觉得它的重要性仅次于onlyoffice的在线协作,因为网络写作方面非常适合。
hotqin888
2022/09/08
6000
mindoc制作思维导图
Web思维导图实现的技术点分析(附完整源码)
思维导图是一种常见的表达发散性思维的有效工具,市面上有非常多的工具可以用来画思维导图,有免费的也有收费的,此外也有一些可以用来帮助快速实现的JavaScript类库,如:jsMind、KityMinder。
街角小林
2022/06/15
3.5K0
Web思维导图实现的技术点分析(附完整源码)
使用ChatGPT生成思维导图
在当今信息爆炸的时代,我们经常需要整理和梳理大量的信息,思维导图是一个非常强大的工具,可以帮助我们更好地理清思路。那么,有没有一种简单而高效的方式,通过一键操作就能生成思维导图呢?在本文中,我们将介绍如何利用ChatGPT和Xmind来实现这一愿景。
人不走空
2024/02/21
4700
使用ChatGPT生成思维导图
AI绘制思维导图:使用SpringBoot和Vue实现智能可视化
在当今快节奏、信息量巨大的社会中,有效地组织和呈现信息变得至关重要。思维导图作为一种强大的视觉工具,能够帮助我们捕捉、整理和分析复杂信息,从而提高工作效率和创造力。本文将探讨如何利用人工智能(AI)技术来增强思维导图的绘制过程,并介绍一个具体的实现案例,该案例使用SpringBoot作为后端框架,Vue.js作为前端框架,共同构建一个智能思维导图绘制系统。
正在走向自律
2024/12/18
7430
AI绘制思维导图:使用SpringBoot和Vue实现智能可视化
Xmind 2022 for Mac(思维导图创建软件)
Xmind 2022 for Mac是一款全功能的思维导图软件,拥有专业实用的功能,包括思维管理、商务演示、与办公软件协同工作等功能,让您的办公更有效,还加入了演讲模式,在演说模式可自动生成转场动画和布局,一键即可展示你的思维导图。
Mac小小心
2023/03/28
5570
Xmind 2022 for Mac(思维导图创建软件)
【愚公系列】《高效使用DeepSeek》017-知识点思维导图生成
📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!
愚公搬代码
2025/03/26
1860
你真的会使用思维导图吗?四个方面阐释思维导图的运用
思维导图,作为一个工具而言,目前关于它的使用已经深入到各行各业中,就以互联网和软件工程来说,思维导图就常出现在:需求访谈,需求分析,概要和详细设计等环节,作为设计辅助手段使用。
杨源鑫
2020/05/21
1.4K0
工具|如何使用思维导图快速学习?
“思维导图”是一种应用于记忆、学习、思考等的有效思维模式,利于人脑的扩散思维的展开。近两年,“思维导图”已然成为大家经常挂在嘴边的“时尚词汇”。教案怎么写,题目不会做,怎么办?先画个思维导图呗! 思维
用户1756920
2018/06/20
7110
Xmind 2022 for Mac(思维导图软件)
Xmind 2022 for Mac是一款功能强大的思维导图软件,它可以帮助用户更好地组织和展示自己的思路和想法。该软件具有丰富的功能,包括多种主题和样式、图像和链接插入、标签和注释等。它还支持各种文件格式的导入和导出,如MindManager、XMind、Freemind、Microsoft Office等。
对影三人
2023/03/14
1K0
Xmind 2022 for Mac(思维导图软件)
如何使用思维导图整理测试点?
思维导图又称脑图、心智地图、脑力激荡图、灵感触发图、概念地图、树状图、树枝图或思维地图,是一种图像式思维的工具以及一种利用图像式思考辅助工具。思维导图是使用一个中央关键词或想法引起形象化的构造和分类的想法;它用一个中央关键词或想法以辐射线形连接所有的代表字词、想法、任务或其它关联项目的图解方式。
张树臣
2018/07/24
2.7K0
如何使用思维导图整理测试点?
超好用的思维导图XMind软件激活版,XMind思维导图中文版下载安装
XMind是一款非常实用的思维导图软件,可以帮助用户将复杂的信息和思维组织成清晰的思维导图。下面是对XMind软件的介绍。
用户10413399
2023/03/24
1.3K0
超好用的思维导图XMind软件激活版,XMind思维导图中文版下载安装
Freedgo工具-思维导图介绍
随着思维导图使用越来越普及,人们通过思维导图来对知识进行归纳总结,整理思路,Freedgo推出一款思维导图工具,通过这篇文章记录下来,把简单的功能和用法说明一下,让大家一目了然。用熟之后,可以自己再慢慢摸索进阶用法。以下讲的是网页版的介绍和用法。
用户5442762
2019/12/23
1.5K0
15款最好用的思维导图工具
今天给大家推荐15个常用的思维导图软件,帮助大家更快捷的完成工作,简化工作工作流程,非常的实用。 思维导图也叫心智图,是一项流行的全脑式学习方法,用来表示词,思路,任务或其他与围绕着一个中央关键词或想法项目的示意图。通过径向,图形和非线性的方式提出意见,思维导图鼓励头脑风暴的方法来规划和组织任务。虽然思维导图的分支表示分层树形结构,其放射状排列扰乱通常与呈现更加线性的视觉线索层次相关概念的优先次序。 在这里,我们选择了一些最好的思维导图工具,让您能够快速探索思路,与同事协作和编辑你的内容。下面的大多数工具是
机器学习AI算法工程
2018/03/09
16K1
15款最好用的思维导图工具
思维导图不难,只需要3步
今天简书首页《21天,见证思维的成长》中,作者分享了21张她自己读书学习的思维导图。非常精彩,可惜的是字体不太清楚。随后我看到评论里有很多读者并不会画或者用思维导图,下面我就简单的讲解一下如何快速的创建自己的思维导图。
顾宇
2018/08/17
6260
相关推荐
在Mac下使用MindMaster画思维导图(脑图)
更多 >
目录
  • 1.基本概念:
    • 🥝进程的概念
    • 🥝进程描述的引入
    • 🥝PCB的概念:
  • PCB(Process Control Block)
    • 🍒Linux最早版本的task_struct有那些属性:
    • 🍒查看进程的信息:
      • 方法一:
      • 方法二:
      • cwd(current work dir):可以更改
      • exe:
  • 进程的分类
    • ⚽️常驻进程:
    • ⚽️非常驻程序:
  • PCB中标识符---pid(Process Identifier):
    • 🏀pid的引入:
    • 🏀如何在程序中获得pid:
    • 🏀如何通过进程pid杀死一个进程:
  • PCB---ppid:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档