Linux:进程(1)
一、前言在学习进程这个Linux的系统篇前,我们先了解计算机的硬件和软件·的关系和基本操作原理能更好的让我们理解进程和以后的知识二、冯诺依曼体系结构我们常⻅的计算机如笔记本。我们不常⻅的计算机如服务器⼤部分都遵守冯诺依曼体系。截⾄⽬前我们所认识的计算机都是由⼀个个的硬件组件组成• 输⼊单元包括键盘,⿏标扫描仪,写板等• 中央处理器(CPU)含有运算器和控制器等• 输出单元显⽰器打印机等问题一:为什么不直接从输入设备-CPU-输出设备,为什么要储存器呢?1.因为输入设备和输出设备的速率是ms级的,而CPU的运算是纳米级的,两者的速度相差几十万倍,不在一个量级,直接走那样的形式的话会使整个系统彻底低效瘫痪2.储存器是纳米级的速率,并且当断断续续的数据或零散的数据过来时可以临时储存,当凑齐一整块再给CPU运算,而不是来几个字节就去运算,减少CPU频繁与数据交互。并且整体看来也加快了整个系统的速率。也就是说CPU只要和内存交互数据就行了!!!下面是一些更细节的知识三、操作系统我们对硬件的输入有个缺点就是要输入对应的机器码也就是二进制的数据,我们普通用户一般不了解,所以它的上层还要能把我们人输入的东西自动转化为机器码减少我们的学习成本与用户体验,所以操作系统就是做这门工作的,而且做的更多3.1概念任何计算机系统都包含⼀个基本的程序集合称为操作系统(OS)。笼统的理解操作系统包括• 内核进程管理内存管理⽂件管理驱动管理• 其他程序例如函数库shell程序等等我们对电脑手机的操作就是在使用广义上的操作系统,就是套了一层图形化界面让我们忽略了底层的指令的使用,而我们现在要讲的是狭义上的操作系统,我们要了解内核是怎么工作的才能学好Linux的系统的知识3.2OS的目的• 对下与硬件交互管理所有的软硬件资源• 对上为⽤⼾程序应⽤程序提供⼀个良好的执⾏环境这也是我们比如在xshell中的指令的操作要经历的过程问题二:为什么不直接用户操作接口直接调用对操作系统的相关函数接口,而是要加一个system call?因为直接对操作系统的函数接口的使用是不安全的,因为你不知道使用者是好人还是坏人,万一他对操作系代码进行修改或者进行一些不好的操作就会使操作系统直接瘫痪,所以上层用户不允许直接与操作系统的内部函数打交道,而是价格系统调用接口,通过对内部函数的一层封装让用户调用,这样就能既保证好人的使用,也能避免坏人破环也就是说:在整个计算机软硬件架构中操作系统的定位是⼀款纯正的“搞管理”的软件问题三:如何理解管理二字呢?我们操作系统的第内存对进程等的管理是靠什么东西弄在一起的呢? 答案是数据结构类比到我们的语言层面,我们写一个程序什么扫雷、贪吃蛇,我们的首先下手步骤是什么?那肯定是先定义结构体或类呀!也就是把要得属性先定义好,然后的步骤就是在用数据结构给组织起来!整个步骤就是先描述再组织!承上启下那在还没有学习进程之前就问⼤家操作系统是怎么管理进⾏进程管理的呢很简单先把进程描述起来再把进程组织起来四、进程的初步了解4.1进程的概念进程它其实又称任务(task),所为的进程就是运行在内存中的一个个程序,我们那我们最熟悉的C语言来举例看一下过程首先code.c通过编译器或在Linux上gcc编译-可执行程序(如.exe)-然后写入进内存(其实本质是拷贝进去)-然后组织起来-组织的数据结构程序-进程PCB上面说的管理程序的属性的结构体在操作系统是上就叫做PCB。概念:进程信息被放在⼀个叫做进程控制块的数据结构中可以理解为进程属性的集合。Linux操作系统的PCB叫做task_struct也就是进程内核的数据结构(task_struct)自己的程序代码和数据4.2task_struct内容分类:• 标⽰符:描述本进程的唯⼀标⽰符⽤来区别其他进程。• 状态:任务状态退出代码退出信号等。• 优先级:相对于其他进程的优先级。• 程序计数器:程序中即将被执⾏的下⼀条指令的地址。• 内存指针:包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针• 上下⽂数据:进程执⾏时处理器的寄存器中的数据[休学例⼦要加图CPU寄存器]。• I∕O状态信息:包括显⽰的I/O请求,分配给进程的I∕O设备和被进程使⽤的⽂件列表。• 记账信息:可能包括处理器时间总和使⽤的时钟数总和时间限制记账号等。• 其他信息• 具体详细信息后续会介绍也就是这些都是结构体中的一个个变量或结构体,描述着进程的相关属性,下面我先简单介绍当前能初步了解的变量的简单作用标识符有了它才可以知道两个或多个进程是不同的进程,在task_struct中叫做pid也就是我们不同的人是有不同身份证的,学生是用学号的不同来区分的等日常生活实例状态大白话就是检测当前进程在干什么,比如是在等用户用户输入数据进去,还是该进程在等被调度优先级具体的优先级是不清楚的(后面会细讲),但可以用常识来看吃饭排队先来的先吃后来的后吃,但Linux肯定做了优化算法的后面学了再来讲程序计数器比如CPU解析代码,CPU怎么知道执行到哪一行呢?通过eip(x32位)也就是程序计数器执行一行就嘛上下文数据它在task_struct是一个结构体类型,程序计数器(32位的eip)就是结构体里面的,它保存着寄存器的数据,寄存器有很多类型比如建立栈帧要的esp ebp等下面的问题能很好解释它的作用问题四:那是不是要先运行完一个程序再去运行下一个程序呢?不是一般是当前程序运行一个时间片(很短比如10ms),他就会暂停当前进程去执行下一个进程。那怎么找到上一个进程呢?那就要通过保存的上一个进程的上下文数据,能通过保存的数据恢复到上一个进程的数据。就好比如张三大二想参军,他跟导员说明后导员就保存你的当前档案不变,也就是让他处于休学状态,等当了两年兵之后回来继续读到毕业,转化为这里的知识就是当兵时一个进程,先暂停这个进程去完成另一个进程-当兵,那通过保存的档案就能迅速知道你是大几学生什么专业-也就是通过保存的上下文数据恢复出原来的数据,然后再执行。注意:寄存器只有一套,所以想要多个进程运行就是大概这样的流程更详细的对每一个task_struct的变量详细解释再看下篇文章!!!

相关新闻

AI生成代码内存泄漏检测与预防实战指南

AI生成代码内存泄漏检测与预防实战指南

1. 项目概述:当AI成为你的编程搭档,内存泄漏的“锅”谁来背?最近几个月,我身边越来越多的同事开始把Qwen3-Coder、Cursor这类AI编程工具当作日常开发的“副驾驶”。确实,它们生成代码的速度快得惊人,一个复…

2026/10/12 20:13:46 阅读更多 →
LabVIEW 通过以太网控制 Yokogawa WT3000 功率分析仪:tmctl.dll 与原始套接字方案

LabVIEW 通过以太网控制 Yokogawa WT3000 功率分析仪:tmctl.dll 与原始套接字方案

阅读时间:约6分钟适用人群:需要在 LabVIEW 环境中通过以太网(LAN)控制 Yokogawa WT3000 系列功率分析仪,且已具备 GPIB 或串口控制经验的测试与测量工程师。一、背景与问题现象Yokogawa WT3000 是一款高精度的交流功率…

2026/10/12 22:10:27 阅读更多 →
WarcraftHelper:三步让经典魔兽争霸3在现代电脑上焕发新生

WarcraftHelper:三步让经典魔兽争霸3在现代电脑上焕发新生

WarcraftHelper:三步让经典魔兽争霸3在现代电脑上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代电脑上的…

2026/10/12 22:16:37 阅读更多 →

最新新闻

多智能体协作系统实战:架构设计与落地经验

多智能体协作系统实战:架构设计与落地经验

1. 从单兵作战到团队协同:为什么我们需要重新思考开发模式做过几年开发的人都有一个共同感受:项目越做越大,代码越写越多,但真正让人头疼的往往不是某个技术难点,而是协作本身。需求在变、接口在变、文档永远滞后于代码…

2026/10/13 6:22:46 阅读更多 →
auto-deep-researcher-24x7核心代码拆解:THINK→EXECUTE→REFLECT自主循环如何7×24不间断运转

auto-deep-researcher-24x7核心代码拆解:THINK→EXECUTE→REFLECT自主循环如何7×24不间断运转

人工智能AI Agent大模型深度研究自主智能体深度学习 【免费下载链接】auto-deep-researcher-24x7 🔥 An autonomous AI agent that runs your deep learning experiments 24/7 while you sleep. Zero-cost monitoring, Leader-Worker architecture, constant-size m…

2026/10/13 6:22:46 阅读更多 →
火车售票系统数据库课设:表结构、事务与并发避坑指南

火车售票系统数据库课设:表结构、事务与并发避坑指南

简介:这是面向数据库课程设计场景的C#火车售票系统完整工程包,适用于课程设计、毕业设计、期末大作业或项目练手。压缩包共165个文件,整体18.14MB,核心包含C#源码(cs)、窗体资源(resources/resx…

2026/10/13 6:22:46 阅读更多 →
邓宁-克鲁格效应与技术认知四阶段模型解析

邓宁-克鲁格效应与技术认知四阶段模型解析

1. 认知偏差的典型表现:邓宁-克鲁格效应解析2000年康奈尔大学心理学教授大卫邓宁和贾斯汀克鲁格发表的经典研究,揭示了人类自我评估能力与真实能力之间的系统性偏差。这种认知偏差表现为:能力不足者会高估自己的实际水平,而能力出…

2026/10/13 6:22:46 阅读更多 →
CMake 3.27.6 Linux离线安装避坑指南

CMake 3.27.6 Linux离线安装避坑指南

简介:本资源是一份专为Linux系统用户设计的CMake 3.27.6一键安装脚本,面向C开发者、嵌入式工程师及需要本地构建工具链的技术人员,解决在无包管理器或受限环境中快速部署新版CMake的痛点。脚本已预编译适配x86-64架构,支持静默安装…

2026/10/13 6:22:46 阅读更多 →
Windows SDK 8.1 离线安装包完整指南:从组件选型到静默部署

Windows SDK 8.1 离线安装包完整指南:从组件选型到静默部署

简介:Windows SDK 8.1离线安装包面向需要在无网络环境下搭建Windows开发环境、或安装SQL Server 2012时遭遇依赖缺失的开发者与运维人员。它整合了编译器与构建工具、WinDbg等调试工具、API参考文档、示例代码模板、性能分析器及Windows Runtime组件,可满…

2026/10/13 6:21:46 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →