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

Linux -- 进程初印象

目录

预备知识

切入点

PCB

看见进程

pid

getpid 函数


预备知识

Linux -- 冯诺依曼体系结构(硬件)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2301_76973016/article/details/143598784?spm=1001.2014.3001.5501

Linux -- 操作系统(软件)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2301_76973016/article/details/143606208?spm=1001.2014.3001.5501

切入点

电脑是不是一次只能启动一个程序?不是的,电脑可以同时启动多个程序,我们打开微信的同时,也可以打开音乐软件听歌,不会因为打开了微信就不能听歌了。

每个程序都要加载到内存中才能执行,操作系统要不要管理被加载到内存的多个程序呢?显然是需要的。

那么操作系统如何管理加载到内存的程序呢?先描述再组织!

PCB

我们需要定义结构体 PCB(Process Control Block,即进程控制块),结构体中通常包含以下信息:

  1. 进程标识符:每个进程有一个唯一的标识符,以便操作系统可以区分不同的进程。
  2. 处理器状态信息:包括程序计数器、寄存器集合、条件码等,这些信息在进程切换时会被保存起来,以便进程重新获得CPU时间时恢复执行。
  3. 内存管理信息:比如进程地址空间的描述符,页表基址等,用于支持虚拟内存管理。
  4. 会计信息:例如进程开始时间、结束时间、使用的资源量等,用于性能监控和计费。
  5. 优先级信息:用于决定进程调度策略,高优先级的进程会优先得到CPU时间。
  6. 状态信息:进程的状态(如运行、就绪、等待等),这决定了进程在系统中的处理方式。
  7. I/O状态信息:包括打开文件列表、I/O缓冲区等,用于管理进程的输入输出操作。
  8. 其他信息:可能还包括安全信息、进程关系(父进程、子进程)等。

把程序加载到内存之后,操作系统并不认识这些程序,为了更好的管理这些程序,每一个进程都有自己的 PCB,PCB 中记录了进程的信息和属性,这样操作系统才可以管理这些进程,从此之后,对进程的管理,就变成了对 PCB 链表的增删查改

PCB 链表组成了运行队列,运行队列中排队的是 PCB,每个 PCB 都会指向自己的可执行程序,CPU 在进程调度时,让进程去排队,本质上是让进程的 PCB 去排队,而不是可执行程序在排队,CPU在调度一个进程,只要找到PCB就可以,找到PCB就可以找到可执行程序,程序就可以执行了。

在Linux中,PCB 叫做 task_struct.

看见进程

pid

在计算机操作系统中,每个正在运行的进程都会被分配一个唯一的PID。当用户或应用程序需要与某个特定的进程交互时,可以通过PID来指定目标进程。例如,在 Linux 中,可以使用 kill命令加上PID来终止某个进程;使用 ps命令查看当前系统中所有进程的信息,其中包括每个进程的PID。

getpid 函数

getpid 是一个系统调用,用于获取当前进程的进程标识符 PID,需要包含  unistd.h 头文件 ,函数的返回值类型为 pid_t,它是一个整型类型,专门用于存储和处理进程ID,pid_t 通常在 <sys/types.h> 头文件中定义,有时也会在 <unistd.h> 中定义。

用以下代码来查看 pid: 

#include<iostream>
using namespace std;
#include <unistd.h>int main()
{while(1){cout<<"process pid:"<<getpid()<<endl;sleep(1);}return 0;
}
testProcess:test.ccg++ -o $@ $^ -std=c++11.PHONY:clean
clean:rm -f testProcess

 运行代码:

可以看出当前进程的 pid 为 75735,每个进程的 pid 都是不一样的,当我们再次运行同一份代码时,会重新创建进程,此时进程的 pid 和上一次运行时的 pid 是不一样的:

当代码运行起来的同时,命令 while :;do ps ajx | head -1 && ps ajx | grep testProcess | grep -v grep;sleep 1;done 可以帮助我们看到进程的开始和结束:

相关文章:

Linux -- 进程初印象

目录 预备知识 切入点 PCB 看见进程 pid getpid 函数 预备知识 Linux -- 冯诺依曼体系结构&#xff08;硬件&#xff09;-CSDN博客https://blog.csdn.net/2301_76973016/article/details/143598784?spm1001.2014.3001.5501 Linux -- 操作系统&#xff08;软件&#xf…...

【超级简单】Facebook脸书视频下载一键保存手机

Facebook作为目前服务全球30亿用户&#xff0c;尤其是出海和跨境用户没有办法忽视的平台&#xff0c;提供了一个在线平台&#xff0c;使用户分享照片、视频、状态更新和链接等内容&#xff0c;然而&#xff0c;令人遗憾的是&#xff0c;用户没有办法直接将照片和视频保存到本地…...

昇思大模型平台打卡体验活动:项目2基于MindSpore通过GPT实现情感分类

昇思大模型平台打卡体验活动&#xff1a;项目2基于MindSpore通过GPT实现情感分类 1. 载入与处理数据集 在情感分类任务中&#xff0c;我们使用了IMDB数据集&#xff0c;首先需要对数据进行加载和处理。由于原数据集没有验证集&#xff0c;我们将训练集重新划分为训练集和验证…...

【JAVA】会员等级互通匹配数据库表设计

1、使用数据库&#xff1a;mysql数据库 设计四张表&#xff1a; 会员互通合作商配置表 会员互通合作商会员等级配置表 会员互通合作日志表 会员互通合作等级映射表 CREATE TABLE user_level_partner ( id bigint NOT NULL AUTO_INCREMENT, partner_novarchar(100) DE…...

论文阅读:基于语义分割的非结构化田间道路场景识别

论文地址&#xff1a;DOI: 10.11975/j.issn.1002-6819.2021.22.017 概要 环境信息感知是智能农业装备系统自主导航作业的关键技术之一。农业田间道路复杂多变&#xff0c;快速准确地识别可通行区域&#xff0c;辨析障碍物类别&#xff0c;可为农业装备系统高效安全地进行路径规…...

linux部分问题以及解决方式

目录 1.ubuntu桌面不显示了&#xff0c;只有命令行1.1启动gdm3服务1.2安装lightdm桌面管理包 1.ubuntu桌面不显示了&#xff0c;只有命令行 有如下两种解决方式。 1.1启动gdm3服务 这种方法只能临时生效&#xff0c;每次重启都要手动启动 sudo service gdm3 restart 1.2安装…...

qt QTreeWidget详解

1、概述 QTreeWidget 是 Qt 框架中的一个类&#xff0c;用于以树形结构展示数据。它基于 QTreeView 并提供了更高级别的接口&#xff0c;使得添加、删除和管理树形结构中的项变得更加简单。QTreeWidget 支持多级嵌套&#xff0c;每个项&#xff08;QTreeWidgetItem&#xff09…...

注意力机制的目的:理解语义;编码器嵌入高纬空间计算;注意力得分“得到S*V”;解码器掩码和交叉注意力层用于训练;最终的编码器和输出实现大模型

目录 注意力机制的目的:理解语义中的它是小白兔 词编码器嵌入高纬空间 计算注意力得分“得到S*V” 权重QKV:连接权重 训练阶段使用解码器:翻译后的语句 解码器掩码和交叉注意力层用于训练 最终的编码器和输出实现大模型 Transformer模型中,QKV QKV的作用 举例说明…...

[java][jdk]JDK各个版本的核心特性

JDK 8至JDK 21的主要新特性概览&#xff1a; JDK 8 Lambda表达式&#xff1a;引入了函数式编程的特性&#xff0c;使得代码更加简洁和灵活。Stream API&#xff1a;提供了一种新的抽象&#xff0c;可以让你以声明性方式处理集合数据。新的日期和时间API&#xff1a;引入了jav…...

双十一”买买买!法官告诉你注意这些法律问题

“双十一”等购物节来临之际&#xff0c;某些电商平台为了吸引消费者提前下单预订商品&#xff0c;通过大力宣传付定金可享受更多优惠等方式开启预售模式。那么&#xff0c;如果消费者在支付定金后&#xff0c;因各种原因最终没有支付尾款&#xff0c;能否要求商家退还定金&…...

PyQt5

基于PyQt5的重绘机制实现加载页面 效果预览代码说明控件初始化超时回调重绘事件缩放事件 代码获取 效果预览 直接看图&#xff0c;效果展现为跟随黑点顺时针转动&#xff0c;且有明暗变化 代码说明 控件初始化 initUI主要用于初始化用户界面(UI)。它创建了一个具有特定样式…...

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令&#xff08;help&#xff09;2.4. 命令说明书&#xff08;man&#xff09;2.5. 切换用户&#xff08;su&#xff09;2.6.历史指令 3.目录…...

Vue3-06_路由

路由 后台路由是根据请求url&#xff0c;匹配请求处理的后台模块&#xff08;路径&#xff09; 前台根据访问路径&#xff0c;决定显示的内容。 路由就是&#xff1a; 访问hash 与内容的对应关系 路由的工作方式 用户点击页面的路由链接导致url地址栏中的Hash值发生了变化前…...

物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?

SMIC家工艺的数字后端实现PR chipfinish写出来的带PG netlist如下图所示。我们可以看到标准单元没有VNW和VPW pin的逻辑连接关系。 前几天小编在社区星球上分享了T12nm ananke_core CPU低功耗设计项目的Calibre LVS案例&#xff0c;就是关于标准单元VPP和VBB的连接问题。 目前…...

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技&#xff08;300491&#xff09;。 周末国家新政策&#xff0c;要大力支持军工行业&#xff0c;我用工具挖掘了两个低位股&#xff0c;供大家参考。通合科技&#xff08;300491&#xff…...

windows和linux验证MD5码方式

一、linux linux自带MD5码验证&#xff1a; $ md5sum target_file.txt 二、windows windows自带的MD5码验证&#xff1a; $ certutil -hashfile target_file.txt MD5...

构造函数原型对象语法、原型链、原型对象

目录 一、前言 二、编程思想 面向过程 面向对象 三、构造函数 四、原型对象 constructor 属性 对象原型 原型继承 原型链 一、前言 通过本篇博客&#xff0c;我们将了解面向对象编程的一般特征&#xff0c;掌握基于构造函数原型对象的逻辑封装&#xff0c;掌握基于原…...

鸿蒙UI开发——自定义UI绘制帧率

1、概 述 随着设备屏幕的不断演进&#xff0c;当前主流设备采用LTPO屏幕&#xff08;可变刷新率屏幕&#xff09;&#xff0c;此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容&#xff0c;如射击游戏&#xff0c;交互动画等&#xff0c;显示帧率越高&#xff0…...

鸿蒙基本组件结构

组件结构 1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构&#xff0c;构成一个自定义组件 自定义组件中提供了一个build函数&#xff0c;开发者需要在函数内以链式调用的方式进行基本的UI描述&#xff0c;UI描述的方法请参考UI描述…...

柔性鞋材振动刀智能视觉裁切机市场报告:未来几年年复合增长率CAGR为5.4%

震动刀切割设备是一种利用振动刀片在各种非金属材料表面上切割的设备&#xff0c;振动刀切割机利用刀片高频振动和360度旋转&#xff0c;能保证每分钟上万次的振动频率&#xff0c;可在平面进行垂直切割&#xff0c;锋利裁剪。震动刀切割设备切割速度快&#xff0c;可以单层切割…...

多模态数据挖掘前沿:生物医学与情感分析领域论文深度解析

多模态数据挖掘前沿&#xff1a;生物医学与情感分析领域论文深度解析 在人工智能与大数据技术飞速发展的当下&#xff0c;多模态数据因能更全面、立体地刻画研究对象&#xff0c;已成为科研领域的核心研究方向。本文将深度解析两篇聚焦多模态数据挖掘的重磅论文——《多模态生物…...

FPGA Multiboot翻车实录:从XDC配置到ICAPE2,我的W25Q128分区血泪史与避坑指南

FPGA Multiboot实战&#xff1a;从配置陷阱到Flash分区优化的全流程解析 第一次在量产产品中实现FPGA远程更新功能时&#xff0c;我盯着实验室里突然变砖的开发板&#xff0c;后背渗出一层冷汗。原本以为按照官方文档配置就能万无一失&#xff0c;没想到Multiboot这个看似简单的…...

FPGA商用级ISP:动态坏点校正(DPCC)的滑窗架构与并行判决实现

【写在前面&#xff1a;为什么要写这个专栏&#xff1f;】在数字图像处理领域&#xff0c;ISP&#xff08;图像信号处理器&#xff09;的算法原理并不罕见&#xff0c;但真正能够支持 4K60fps 实时处理、并经过商用验证的 Verilog 硬核实现思路 却往往秘和封装在黑盒之中。我手…...

从DVWA存储型XSS看Web安全:开发者常踩的坑与Impossible级别的启示

从DVWA存储型XSS看Web安全&#xff1a;开发者常踩的坑与Impossible级别的启示 在Web应用开发中&#xff0c;安全漏洞就像隐藏在代码中的定时炸弹&#xff0c;而存储型XSS&#xff08;跨站脚本攻击&#xff09;无疑是其中最具破坏力的一种。不同于反射型XSS的一次性攻击&#xf…...

通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南

通用GUI编程技术——Win32 原生编程实战&#xff08;十八&#xff09;——GDI 设备上下文&#xff08;HDC&#xff09;完全指南 前面一系列文章我们聊了对话框、控件、资源这些内容&#xff0c;我们的窗口已经能够显示各种控件了。但你可能已经发现了一个问题&#xff1a;我们所…...

深度解析 ConcurrentHashMap 1.8:put 与 get 核心流程全解

在 Java 并发编程中&#xff0c;ConcurrentHashMap 是线程安全的高频使用集合&#xff0c;相比线程不安全的 HashMap、效率低下的 HashTable&#xff08;全锁&#xff09;&#xff0c;JDK 1.8 版本的 ConcurrentHashMap 做了底层结构重构和锁机制优化&#xff0c;成为高并发场景…...

如何高效使用AsrTools:快速上手指南与实用功能详解

如何高效使用AsrTools&#xff1a;快速上手指南与实用功能详解 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...

别再硬编码了!Qt QTabBar标签宽度自适应窗体的5种实战方案对比(附完整代码)

Qt QTabBar标签宽度自适应窗体的5种实战方案深度评测 每次看到Qt界面中那些挤在一起或稀疏分布的标签页&#xff0c;总让人想起超市货架上摆放不齐的商品——既影响美观又降低使用效率。作为中级Qt开发者&#xff0c;你一定遇到过这样的困境&#xff1a;当窗体尺寸变化时&#…...

基尼系数 vs 信息增益:决策树划分标准选哪个?实测对比告诉你答案

基尼系数 vs 信息增益&#xff1a;决策树划分标准选哪个&#xff1f;实测对比告诉你答案 决策树算法作为机器学习中最直观的可解释模型&#xff0c;其核心在于如何选择最优特征进行节点划分。面对基尼系数&#xff08;Gini Index&#xff09;与信息增益&#xff08;Informatio…...

HarmonyOS 5 + UniApp 真机调试保姆级教程:从HBuilderX配置到ArkUI Inspector查错

HarmonyOS 5 UniApp 真机调试全流程实战指南 第一次在HarmonyOS设备上调试UniApp应用时&#xff0c;我盯着HBuilderX里那个灰色的"运行到鸿蒙设备"按钮整整半小时。设备明明连着USB线&#xff0c;开发者模式也开了&#xff0c;但工具就是识别不到我的MatePad Pro。…...