【Linux】linux进程概念(冯洛伊曼体系、操作系统、进程详解)

【Linux】linux进程概念(冯洛伊曼体系、操作系统、进程详解)

本文是小编巩固自身而作,如有错误,欢迎指出!

目录

一、冯洛伊曼体系结构

二、操作系统(Operator System)

操作系统的概念

设计os的目的

os核心功能

三、进程

进程的基本概念

进程的核心特征

1. 独立性

2. 动态性

3. 并发性

进程控制块——PCB

PCB核心作用

task_struct

task_struct 里存了什么?

总结


一、冯洛伊曼体系结构

我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系

存储器:指的是内存,在冯诺依曼体系结构中处于核心地位,是硬件级别的缓存空间输入设备:鼠标,键盘,摄像头,话筒,磁盘,网卡……输出设备:显示器,播放器硬件,磁盘,网卡……运算器:对我们的数据进行计算任务(算数运算,逻辑运算)控制器:对我们计算机硬件流程进行一定的控制

而我们平时所熟知的cpu,就是运算器和控制器的结合

关于冯诺依曼,必须强调⼏点:

• 这里的存储器指的是内存

• 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)

• 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。

• ⼀句话,所有设备都只能直接和内存打交道。

二、操作系统(Operator System)

操作系统的概念

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。就比如我们常见的ios,

centos,cloros等等。

笼统的理解,操作系统包括:

• 内核(进程管理,内存管理,⽂件管理,驱动管理)

• 其他程序(例如函数库,shell程序等等)

设计os的目的

• 对下,与硬件交互,管理所有的软硬件资源

• 对上,为⽤⼾程序(应⽤程序)提供⼀个良好的执⾏环境

os核心功能

在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的“搞管理”的软件。

总的来说操作系统就像一个管理层,就好像大学中的领导、校长,他只需要获取信息进行管理、下达指令、比如默某同学挂科,管理层得到消息,并不会直接联系某同学,通知你的导员与你进行交流,而导员在其中就充当一个“驱动程序”的功能,而我们则更类似于底层硬件。

三、进程

进程的基本概念

通俗来讲:一个已经加载到内存中的程序叫做进程(任务),正在运行的程序叫做进程
细致来讲:进程是由内核PCB(process control block)数据结构对象加上你自己的代码和数据构成
通俗比喻程序 = 菜谱(静态的文本 / 代码,存在硬盘里,不会自己动)进程 = 厨师按照菜谱做菜的全过程(动态的、占用资源、有生命周期)一个菜谱(程序)可以被多个厨师同时做(多个进程),比如你开两个微信窗口,就是两个微信进程。

进程的核心特征

1. 独立性

每个进程都有自己独立的内存空间、CPU 时间片、系统资源(比如文件句柄、网络端口),一个进程崩溃不会影响其他进程(比如浏览器崩溃,微信还能正常用)。

2. 动态性

进程有完整的生命周期:

  • 就绪:进程准备好了,就等 CPU 分配时间片
  • 运行:CPU 正在执行该进程的代码
  • 阻塞:进程在等外部资源(比如读文件、网络请求),暂时让出 CPU
3. 并发性

操作系统通过 “时间片轮转” 让多个进程 “同时” 运行(比如你一边听歌,一边写代码,一边聊微信)——CPU 快速切换不同进程,人类感知不到停顿,看起来像并行。

进程控制块——PCB

一句话来解释

pcb就是操作系统用来描述、管理、记住一个进程的 “档案本”。

进程 = 一个人PCB = 这个人的身份证 + 档案 + 病历 + 状态记录

PCB核心作用

进程切换靠的就是 PCB

进程 A 跑一半,CPU 要切去跑进程 B操作系统把 A 的寄存器、PC、状态存到 A 的 PCBB 的 PCB 里的内容恢复到 CPU 寄存器继续跑 B

没有 PCB,操作系统就无法实现多任务。

task_struct

task_struct:Linux 内核里的「进程身份证 + 档案本」

task_struct 是 Linux 内核中对 PCB(进程控制块) 的具体实现 —— 简单说,PCB 是「进程控制块」的通用概念,而 task_struct 就是 Linux 内核里实实在在存放进程所有信息的结构体,是 Linux 系统中进程存在的唯一标志.

task_struct 里存了什么?

task_struct 是个超大结构体,内核源码里定义在 include/linux/sched.h 中,核心字段可以分为 6 类,

总结

  1. task_struct 是 Linux 内核中 PCB 的具体实现,是进程的 “完整档案”;
  2. 核心作用是存储进程的 ID、状态、优先级、内存、资源等所有管理信息;
  3. Linux 内核通过 task_struct 链表管理所有进程,进程切换 / 调度都依赖它。

本次分享就到这里结束,后续会继续更新,感谢阅读!

Read more

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战 * 引言 * 正文 * 一、工业物联网设备状态监测概述 * 二、基于 Java 的大数据实时流处理技术 * 2.1 技术架构与原理 * 2.2 状态管理与故障恢复 * 三、应用案例分析 * 四、引入边缘计算优化架构 * 五、面临的挑战与应对策略 * 5.1 数据质量问题 * 5.2 系统性能瓶颈 * 5.3 安全与隐私保护 * 结束语 * 🗳️参与投票和联系我: 引言 亲爱的 Java 和 大数据爱好者们,大家好!在科技引领产业变革的时代,大数据技术已成为推动各行业智能化转型的核心引擎。此前,我们通过一系列文章,深入探讨了 Java 大数据在金融、

By Ne0inhk
Java static避坑:静态与非静态访问规则全解析

Java static避坑:静态与非静态访问规则全解析

🏠个人主页:黎雁 🎬作者简介:C/C++/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、游戏、规划、程序人生 ✨ 从来绝巘须孤往,万里同尘即玉京 文章目录 * Java static避坑:静态与非静态访问规则全解析 * 📝 文章摘要 * 一、先搞懂:访问规则的底层逻辑 🧠 * 二、三大核心访问规则(必记)✅ * 规则1:静态方法 → 静态成员 ✅ 允许 * 正确案例:静态方法调用静态变量/方法 * 规则2:静态方法 → 非静态成员 ❌ 禁止(直接访问) * 错误案例:静态方法直接访问非静态成员 * 特殊情况:静态方法间接访问非静态成员(不推荐) * 规则3:非静态方法 → 静态/非静态成员 ✅ 全允许

By Ne0inhk
Java 中间件:Dubbo 服务降级(Mock 机制)

Java 中间件:Dubbo 服务降级(Mock 机制)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java中间件这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 中间件:Dubbo 服务降级(Mock 机制) * 什么是服务降级? * Dubbo Mock 机制简介 * Mock 的触发条件 * Dubbo Mock 的配置方式 * 1. XML 配置方式 * 2. 注解配置方式(推荐) * 3. 自定义 Mock 类 * 4. 强制 Mock(force) * Mock 机制的工作原理 * 实战案例:电商系统中的服务降级 * 场景描述 * 1. 定义服务接口 * 2. 实现

By Ne0inhk
打破AI调用壁垒:Antigravity Tools如何用Rust+Tauri重构你的AI工作流

打破AI调用壁垒:Antigravity Tools如何用Rust+Tauri重构你的AI工作流

当Claude Code遇上Gemini配额,当协议鸿沟阻碍创新,一个开源项目正在悄然改变游戏规则 引子:一个真实的痛点 你是否遇到过这样的场景:手握多个Google账号的Gemini免费配额,却无法在Claude Code CLI中使用?想要统一管理十几个AI账号,却被各家厂商的协议壁垒搞得焦头烂额?或者,你的团队需要一个本地化的AI网关,既要保护隐私,又要实现智能调度? 如果你点头了,那么今天要聊的这个项目,可能会让你眼前一亮。它叫Antigravity Tools——一个用Rust和Tauri打造的"反重力"AI调度系统,正在以一种优雅的方式,解决开发者们长期面临的多账号管理和协议转换难题。 一、项目背景:为什么需要"反重力"? 1.1 AI时代的新痛点 2024年以来,AI工具呈现爆发式增长。Claude、Gemini、GPT-4各有千秋,但问题也随之而来: * 协议碎片化:OpenAI用/v1/chat/completions,Anthropic用/

By Ne0inhk