进程之理解进程的概念

你必须非常努力,才能看起来毫不费力。

文章目录

  • 进程的基本概念
  • 描述进程——pcb
    • test_struct pcb的一种
    • task_struct 内容分类
  • 组织进程
  • 查看进程
  • 通过系统调用获取进程标示符
  • 总结

进程的基本概念

课本概念:进程是一个执行实列,正在执行的程序等。
内核观点:担当分配系统资源(CPU时间,内存)的实体

上面两个观念呢我们同学们可能会比较难以理解想着那到底什么是进程呢?这里我们要指出首先一个正在被执行的程序是进程,一个正在后台运行的软件也是进程,他们其实都是进程。在这里我想说其实进程真正概念应该是。
***进程=内核pcb的数据结构对象+你自己写的代码。***那么什么是pcb呢?pcb其实就是描述进程的所有属性值的结构,我们的操作系统他是用c语言实现的所以pcb本质上就是一个结构体。在这个pcb结构体中包含着一个指针这个指针用来指向着进程的前后关系那么我们用图画出来就是下图这个关系
在这里插入图片描述
首先pcb描述的是一个进程的属性这个属性里面包括了代码和数据,并且有一个指针表述了一个运行的链表,那么最终进程的调度就变成了对链表的增删改查。相信同学们看到这里头脑还是比较懵的但是没有关系我们在接下来会一个一个的解决疑惑。这里同学们只需要记住首先进程的管理也是先描述在组织的,而描述进程的是用一个结构体进行描述的这个结构体的统称为pcb(进程控制模块)在Linux下pcb这个结构体的名字是叫test_strcut(pcb是课本上的一个概念)也就是说test_strcut是pcb的一种不同系统下的不同叫法而已。而进程的调度会转化为数据结构的一种列如栈啊链表啊最终转化为对某一个数据结构的增删改查。

描述进程——pcb

上面一直提到pcb这个名词这里我们做一个系统的学习。
首先我们在上篇文章提到过对任何事务进行管理都是先描述在组织进程也不例外,那么对进程的管理,也是先描述,在描述的时候我们要描述进程的哪些特点呢?这些描述出来的内容放在哪儿呢?这就是我们重点要说的pcb中文名称进程控制块。其实这个进程控制块就是一个进程属性值的集合。

test_struct pcb的一种

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

task_struct 内容分类

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

组织进程

可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。

查看进程

进程的信息可以通过 /proc 系统文件夹查看
列如想获取pid为1的进程信息你需要查看/proc/1这个文件夹。
在这里插入图片描述
大多数进程信息同样可以使用top和ps这些户级工具来获取。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{while(1){sleep(1);}return 0;
}

在这里插入图片描述

通过系统调用获取进程标示符

进程id(pid)
父进程的id(ppid)

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{printf("pid: %d\n", getpid());printf("ppid: %d\n", getppid());return 0;
}

总结

通过上面的陈述我们可以知道进程其实就是我们写的代码加上操作系统为描述该进程信息创建的pcb。这两个东西,而我们这里对进程管理的思路正是先描述再组织,也正因此我们的操作系统才会创造pcb进行描述,然后通过组织pcb来实现对进程的管理,就像校长管理学生一样,校长不需要认识所有学生只需要管理描述这个学生的数据就可以了,而不同的进程会有不同的进程描述符也就是pid,pid。

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

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

相关文章

C语言——1.入门须知

文章目录 1.C语言的简要概述1.1.C语言类比自然语言1.2.计算机语言的发展1.3.C语言在当今的地位1.4.C语言的优势和劣势1.4.1.C语言的优势1.4.2.C语言的劣势 2.C语言的应用场景3.C语言的学习路径3.1.学习目的3.2.学习路径3.3.学习资源3.3.1.推荐书籍3.3.2.推荐课程3.3.3.推荐题库…

Codeforces Round 910 (Div. 2)(D~F)

1898D - Absolute Beauty 题意&#xff1a;给定长度为n的数组a和b&#xff0c;定义b数组的价值为&#xff0c;现可以交换一次b数组中的任意两个元素&#xff0c;求b数组的价值最大值。 思路&#xff1a;绝对值问题可以放在数轴上去解决。绝对值即为区间长度 观察上述三种情况&…

《微信小程序开发从入门到实战》学习十九

3.3 开发创建投票页面 3.3.7 wx:for列表渲染 接下来为创建的投票页面添加一个“添加选项”的功能。需要用户输入文字&#xff0c;应该使用input组件。头投票的数量是不确定的&#xff0c;面对不确定数量的组件的情况时&#xff0c;可以使用wx:for属性对组件进行列表渲染。 使…

【腾讯云 HAI域探秘】——即时职场生存指南小游戏以及【自行搭建Stable Diffusion图片AI绘制 | ChatGLM2-6B AI进行智能对话 | Pytorch2.0 AI框架视频处理】

利用HAI的ChatGLM2 6B做一个即时对话小游戏 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了更强大的性能、更长的上下文、更高效的推理&#xff0c;…

git使用及常用命令

在初入公司中&#xff0c;若使用的是git管理工具&#xff0c;需要做以下步骤&#xff1a; 1&#xff0c;常用命令在&#xff1a; &#xff08;1&#xff09;&#xff0c;git config --global user.name xxx(名字) //若不设置 那么下次提交代码时会报错 其次该设置名字和…

【运维篇】Redis常见运维命令详解

文章目录 1. 前言2. 连接管理命令详解2.1 AUTH命令2.2 PING命令2.3 SELECT命令2.4 QUIT命令 3. 服务器管理命令详解3.1 FLUSHALL命令3.2 SAVE/BGSAVE命令3.3 SHUTDOWN命令 4. 安全管理命令详解4.1 CONFIG命令4.1.1 CONFIG SET命令用法4.1.2 CONFIG GET命令用法 4.2 AUTH命令 5.…

六、文件上传漏洞

下面内容部分&#xff1a;参考 一、文件上传漏洞解释 解释&#xff1a;文件上传漏洞一般指的就是用户能够绕过服务器的规则设置将自己的木马程序放置于服务器实现远程shell&#xff08;例如使用蚁剑远程连接&#xff09;&#xff0c;常见的木马有一句话木马(php) 无需启用sho…

【C++】【Opencv】霍夫直线检测即cv::HoughLinesP()函数详解和示例

cv::HoughLinesP()&#xff08;函数霍夫直线&#xff09;功能分析是一种用于检测图像中直线的算法&#xff0c;它基于霍夫变换的原理。通过该算法&#xff0c;我们可以从图像中提取出直线信息&#xff0c;从而对图像进行分析和处理。主要经理边缘检测和霍夫直线处理两个步骤。本…

EDA实验-----4*4矩阵键盘与数码管显示测试(Quartus ‖)

目录 一、实验目的 二、实验仪器设备 三、实验原理 四、实验要求 五、实验步骤 六、实验报告 七、实验过程 1.矩阵键盘按键原理 2.数码管原理 3.分频器代码 4.电路图连接 5.文件烧录 一、实验目的 了解数码管的工作原理&#xff1b;掌握4*4矩阵键盘和数码管显示的编…

[python]python筛选excel表格信息并保存到另一个excel

目录 关键词平台说明背景所需库1.安装相关库2.代码实现sourcetarget1 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 背景 从一个excel表中遍历删选信息并保存到另一个excel表 所需库 1.openpyxl &#xff1a;是一个用于读写 Excel 文件的 Pyt…

C/C++统计数 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C统计数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C统计数 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定一个数的序列S&#xff0c;以及一个区间[L, R], 求序列…

【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]

阅读导航 引言一、新的类功能1. 默认成员函数2. 类成员变量初始化3. 强制生成默认函数的关键字default4. 禁止生成默认函数的关键字delete5. override 和 final&#xff08;1&#xff09;override&#xff08;2&#xff09;final 二、可变参数模板递归函数方式展开参数包逗号表…