当前位置: 首页 > 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;可以单层切割…...

【计算机网络】基础知识,常识应用知识

局域网使用的是广播技术&#xff0c;广域网使用的是点对点技术&#xff0c;使用的协议不同。局域网工作在数据链路层&#xff0c;可以不要网络层&#xff0c;不存在路由选择问题。1968年6月&#xff0c;世界上最早的计算机网络是ARPAnet服务原语&#xff1a;请求、指示、相应、…...

【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)

--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤&#xff1a; 用这生命中的每一秒&#xff0c;给自己一个不后悔的未来。 -----------------------------------------------…...

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候&#xff0c;按照产品的要求&#xff0c;输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性&#xff0c;设置类型为number时&#xff0c;乍一看没啥问题&#xff0c;但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…...

高级sql使用技巧

窗口函数&#xff08;Window Functions&#xff09;&#xff1a; 窗口函数可以在结果集的行之间进行计算&#xff0c;例如计算移动平均值、排名等。在使用时&#xff0c;可以使用 OVER() 语句来定义窗口。例如&#xff1a; sql SELECT employee_id,salary,AVG(salary) OVER (P…...

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障&#xff0c;说是测试环境的附件上传功能报了 403 的错误&#xff0c;错误信息&#xff1a;403 Request Entity Too Lager。我尝试复现问题&#xff0c;发现传个几兆的文件都费劲啊&#xff0c;一传一个失败。不用说&#xff0c;项目用到 ng 代理&#x…...

Flutter 正在切换成 Monorepo 和支持 workspaces

其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布&#xff0c;全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会&#xff0c;创始人分享 Flutter 十年发展史》 就有简单提到过&#xff0c;而目前来说刚好看到 flaux 这个新进展&#xff0c;所以就再…...

小白初入Android_studio所遇到的坑以及怎么解决

1. 安装Android_studio 参考&#xff1a;Android Studio 安装配置教程 - Windows(详细版)-CSDN博客 Android Studio超级详细讲解下载、安装配置教程&#xff08;建议收藏&#xff09;_androidstudio-CSDN博客 想下旧版本的android_studio的地址&#xff08;仅供参考&#xf…...

NetCore使用Aop和内存缓存对接口、方法进行数据缓存

通过Aop内存缓存对接口、方法进行缓存 源码地址https://gitee.com/wangbenchi66/nuget 1. nuget包引入 必须引入包 至少在2024.11.7以上 <PackageReference Include"WBC66.Cache.Core" Version"2024.11.7" />必须开启内存缓存 否则后续步骤无法正…...

playwright学习记录2--定位方式

快捷导航 定位方式&#xff1a;元素操作断言方式自动等待 定位方式&#xff1a; csspage.get_by_role() 通过显式和隐式可访问性属性进行定位。page.get_by_text() 按文本内容定位。page.get_by_label() 通过关联标签的文本定位表单控件。page.get_by_placeholder() 通过占位符…...

响应式网页设计--html

一&#xff0c;HTML 文档的基本结构 一个典型的 HTML 文档包含了几个主要部分&#xff0c;基本结构如下(本文以下出现的所有代码都可以套入下面示例进行测试)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&q…...

网站制作评价指标/seo关键字优化

Windows Mobile平台有一款比较强大的网络共享软件&#xff0c;WMWifiRouter&#xff0c;通过这个软件用户可以用5种方式将网络共享。在这里小编抛砖引玉&#xff0c;给大家介绍一下如何通过Wifi共享手机GPRS或3G网络上网。1、安装软件首先下载WMwifiRouter(下载地址&#xff1a…...

网站的优化和推广方案/网页设计免费模板

我的其他博客&#xff0c;说经济&#xff0c;说变革。引用三大招五年根除雾霾 现在的事实&#xff0c;同左派政治经济说法&#xff0c;恰好相反。 先说&#xff0c;所有独裁&#xff0c;都用一套维稳的教材&#xff0c;这个为低级的唯心。想别人想的&#xff0c;为了他自己。 …...

排版设计工作内容/seo zac

Redis默认配置是不需要密码认证的&#xff0c;也就是说只要连接的Redis服务器的host和port正确&#xff0c;就可以连接使用。这在安全性上会有一定的问题&#xff0c;所以需要启用Redis的认证密码&#xff0c;增加Redis服务器的安全性。 1. 修改配置文件 Redis的配置文件默认在…...

室内设计知名网站/2022年度关键词

我们在前面的文章里学习了被动语态的基本用法&#xff0c;今天给同学们总结了被动语态的特殊用法及考点&#xff0c;大家可以收藏以备复习。初中阶段&#xff0c;被动语态的特殊用法主要有两种形式分别是&#xff1a;主动形式表示被动意义&#xff0c;被动形式表示主动意义。我…...

手机网站域名开头/企业网站排名优化

知识趣记-线性代数&#xff0c;高数&#xff0c;机器学习&#xff0c;计网-2020年9月 矩阵的秩&#xff1a; 矩阵非零子式的最高阶数。 确定矩阵的秩&#xff0c;采用消元法。 等价矩阵&#xff1a; BQAP A可以通过有限次的初等变换得到B 特征向量&#xff1a; 在A的作用下&…...

织梦做网站教程/seo推广优化

首先在头文件中声明要实现的功能;标头.h#ifndef game_h #define game_h #define MAX_SIZE 10 typedef unsigned int size_t; typedef int DataType;typedef struct SeqList {DataType _array[MAX_SIZE];int _size; // 顺序表中有效元素的个数 }SeqList, *PSeqList; // 初始化…...