【linux】进程概念|task_struct|getpid|getppid

目录

​编辑

1.进程的概念

进程的基本概念

进程与程序的主要区别  

进程的特征

进程的状态

 描述进程—PCB

task_struct中的内容

查看进程

1.创建一个进程,运行以下代码 

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

getpid()以及getppid() 


 

1.进程的概念

进程的基本概念

进程是计算机系统的一个执行实例,是正在执行的程序;每个进程都有自己的内存空间、代码、数据和执行状态。多个进程可以同时运行在计算机系统中,是担当分配系统资源cpu 时间内存)的实体。

 

进程与程序的主要区别  

  • 程序是永存的进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
  • 程序是静态的观念,进程是动态的观念;
  • 进程具有并发性,而程序没有;
  • 进程是竞争计算机资源的基本单位,程序不是。
  • 进程和程序不是一一对应的:
  • 一个程序可对应多个进程即多个进程可执行同一程序;
  • 一个进程可以执行一个或几个程序

进程的特征

进程的基本特征是对比单个程序的顺序执行提出的,也是对进程管理提出的基本要求。

  1. 动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。
  2. 并发性:指多个进程实体同存于内存中,能在一段时间内同时运行。引入进程的目的就是使进程能和其他进程并发执行。并发性是进程的重要特征,也是操作系统的重要特征
  3. 独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序,都不能作为一个独立的单位参与运行。
  4. 异步性:由于进程的相互制约,使得进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。 

进程的状态

  1. 运行状态:进程正在处理机上运行。
  2. 就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。
  3. 阻塞状态:又称等待状态:进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行。
  4. 创建状态:进程正在被创建,尚未转到就绪状态。
    1. 创建进程通常需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息;然后由系统为该进程分 配运行时所必需的资源;最后把该进程转入到就绪状态。
  5. 结束状态:进程正从系统中消失,这可能是进程正常结束或其他原因中断退出运行。当进程需要结束运行时,系统首先必须置该进程为结束状态,然后再进一步处理资源释放和 回收等工作。

 描述进程—PCB

进程的信息会被放到一个叫进程控制块的数据结构中,可以理解成它是进程属性的集合。linux中的PCB实际上是一个叫做task_struct的结构体

task_struct = PCB + 代码,数据;

task_struct中的内容

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

 

 

//截取源码部分
struct task_struct {
	volatile long state;//状态	/* -1 unrunnable, 0 runnable, >0 stopped */
	void *stack;//栈
	atomic_t usage;
	unsigned int flags;	/* per process flags, defined below */
	unsigned int ptrace;

	int lock_depth;		/* BKL lock depth */
    /* task state */
	int exit_state;
	int exit_code, exit_signal;
	int pdeath_signal;  /*  The signal sent when the parent dies  */
	/* ??? */
	unsigned int personality;
	unsigned did_exec:1;
	unsigned in_execve:1;	/* Tell the LSMs that the process is doing an
				 * execve */
	unsigned in_iowait:1;


	/* Revert to default priority/policy when forking */
	unsigned sched_reset_on_fork:1;

	pid_t pid;//标识符
	pid_t tgid;
    //...
};

查看进程

linux下进程的信息可以通过 /proc 系统文件夹查看,该文件夹存放了所有进程的信息,每一个进程的信息都是一个文件夹

1.创建一个进程,运行以下代码 

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

进程id–PID (进程的身份证号,唯一标识一个进程)
父进程id–PPID

getpid()以及getppid() 

观察以下代码:

哪个进程调用getpid(),就会得到哪个进程的PID

当我们运行以上代码,就会建立相应的进程,通过getpid()获取到当前进程的PID,getppid()获得当前进程的父进程的PID

 

程序的父进程是谁呢?  -》bash,基本上所有指令进程的父进程。 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JRT失控处理打印和演示

基于JRT完备的脚本化和打印基础,基于JRT的业务可以轻松的实现想要的打效果,这次以质控图的失控处理打印和月报打印来分享基于JRT的打印业务实现。 演示视频链接 失控报告打印 失控处理打印的虚拟M import JRT.Core.DataGrid.GridDto; import JRT.Co…

微信小程序开发-数据事件绑定

🐳简介 数据绑定 数据绑定是一种将小程序中的数据与页面元素关联起来的技术,使得当数据变化时,页面元素能够自动更新。这通常使用特定的语法(如双大括号 {{ }})来实现,以便在页面上展示动态数据。 事件绑…

分布式与一致性协议之ZAB协议(八)

ZAB协议 如何实现读操作 相比写操作,读操作的处理要简单很多,因为接收到度请求的节点只需要查询本地数据,然后响应数据给客户端就可以了。读操作的核心流程如图所示。 1.跟随者在FollowerRequestProcessor.processRequest()中接收到度请求…

Python深度学习基于Tensorflow(6)神经网络基础

文章目录 使用Tensorflow解决XOR问题激活函数正向传播和反向传播解决过拟合权重正则化Dropout正则化批量正则化 BatchNormal权重初始化残差连接 选择优化算法传统梯度更新算法动量算法NAG算法AdaGrad算法RMSProp算法Adam算法如何选择优化算法 使用tf.keras构建神经网络使用Sequ…

射频无源器件之电桥

一. 电桥的定义及作用 电桥主要用于实现微波大功率功放系统的功率合成分配,信号采集等功能,被广泛应用于中国及全球4G/5G基站、5G网络覆盖、北斗导航天线、车载高精度导航(无人驾驶)天线等。可将信号分成有相位差的两路,90度电桥相位差90,180度电桥相位差180。 常说的3d…

【CSS】认识CSS选择器及各选择器对应的用法

目录 一、什么是CSS? 二、CSS 选择器 1. 标签选择器 2. 类选择器 3. ID选择器 4. 通配符选择器 5. 复合选择器 一、什么是CSS? CSS(Cascading Style Sheet),层叠样式表。它与 HTML(超文本标记语言)一起使用&am…

c++11 的explicit关键字 -- 显示构建对象

概述: 在平时我们定义一个类,然后创建类对象可以有多种方式,主要分为两种: 声明一个Student类: class Student { public: Student(int age) { m_age age; } private: int m_age; }; 显示构建(explicit) Student s1(5); //…

全栈开发之路——前端篇(5)组件间通讯和接口等知识补充

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 辅助文档&…

WPF 图片显示某一部分区域

效果图&#xff1a; 代码&#xff1a; <Image Width"32"HorizontalAlignment"Right"Height"32"Source"../../Resources/Images/BLUEWOLF.jpg"><Image.Clip><PathGeometry><PathFigure StartPoint"32,32&quo…

重写muduo之Thread、EventLoopThread、EventLoopThreadPool

目录 1、概述 2、Thread 2.1 Thread.h 3、EventLoopThread 3.1 EventLoopThread.h 3.2 EventLoopThread.cc 4、 EventLoopThreadPool 4.1 EventLoopThreadPool.h 4.2 EventLoopThreadPool.cc 1、概述 管理事件循环线程的调度的 打包了一个EventLoop和线程&#xff0c;…

在ubuntu虚拟机中手动安装VMware Tools(VMware Workstation 17 player)

可参考官方文档&#xff1a;在 Linux 虚拟机中手动安装 VMware Tools 以下列出我在安装过程中遇见的问题&#xff1a; 1、“安装VMware Tools”选项为灰&#xff0c;无法选中 原因是VMware Tools的安装包镜像在Player的安装目录下&#xff0c;需要在虚拟机启动的时候加载这个…

【数字经济】上市公司供应链数字化数据(2000-2022)

数据来源&#xff1a; 时间跨度&#xff1a;2000-2022年 数据范围&#xff1a;各上市企业 数据指标&#xff1a; 样例数据&#xff1a; 参考文献&#xff1a;[1]刘海建,胡化广,张树山,等.供应链数字化的绿色创新效应[J].财经研究,2023,49(03):4-18. 下载链接&#xff1a;https:…

关系型数据库MySQL开发要点之多表查询2024详解

多表查询 准备测试数据 -- 部门管理 create table tb_dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时…

图神经网络综述和学习路径

应用邻域 应用举例 应用层面&#xff08;节点&#xff0c;连接&#xff0c;子图&#xff0c;全图&#xff09; 概念区别 图神经网络本质上解决了表示学习的问题 可以把神经网络看作一个黑箱&#xff0c;图中的f函数 困难与挑战 现代的深度学习&#xff0c;如何把图输入到神经…

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统&#xff1a;Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式&#xff1a; CMake 兼容配置&#xff1a; OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

QX-mini51单片机学习-----(3)流水灯

目录 1宏定义 2函数的定义 3延时函数 4标准库函数中的循环移位函数 5循环移位函数与左移和右移运算符的区别 6实例 7keil中DeBug的用法 1宏定义 是预处理语句不需要分号 #define uchar unsigned char//此时uchar代替unsigned char typedef是关键字 后面是接分号…

【Linux】线程的内核级理解详谈页表以及虚拟地址到物理地址之间的转化

一、线程的概念 对于进程来说&#xff0c;进程创建时间和空间成本较高&#xff0c;因为进程是承担分配系统资源的基本实体&#xff0c;所以线程的出现就成为了必然。Linux线程与进程非常相似&#xff0c;Linux设计者在设计之初觉得如果再为线程设计数据结构和调度算法就会使整个…

java--io流(一)

1. 前置知识 字符集是什么&#xff1f; 字符集&#xff08;Character Set&#xff09;是一组字符的集合&#xff0c;它定义了可以在计算机系统中使用的所有字符。字符集可以包括字母、数字、标点符号、控制字符、图形符号等。字符集使得计算机能够存储、处理和显示各种语言和…

idea 项目 修改项目文件名 教程

文章目录 目录 文章目录 修改流程 小结 概要流程技术细节小结 概要 原项目名 修改流程 关掉当前项目的idea页面 修改之后的文件名 重新打开idea。选择项目打开项目页面 技术细节 出现下面这个问题&#xff0c;可以参考作者新的一编文章idea开发工具 项目使用Spring框架开发解…

【智能楼宇秘籍】一网关多协议无缝对接BACnet+OPC+MQTT

在繁华的都市中心&#xff0c;一座崭新的大型商业综合体拔地而起&#xff0c;集购物、餐饮、娱乐、办公于一体&#xff0c;是现代城市生活的缩影。然而&#xff0c;这座综合体的幕后英雄——一套高度集成的楼宇自动化系统&#xff0c;正是依靠多功能协议网关&#xff0c;实现了…
最新文章