【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

HDFS数据块机制深度解析:块大小设计与存储哲学

HDFS数据块机制深度解析:块大小设计与存储哲学

HDFS数据块机制深度解析:块大小设计与存储哲学 * 引言:块——HDFS存储的核心抽象 * 一、HDFS默认块大小 * 1.1 版本演进与默认值 * 1.2 查看和验证块大小 * 1.3 配置文件中的设置 * 二、为什么HDFS采用块存储? * 2.1 核心设计思想 * 2.2 详细解析:为什么块存储如此重要? * **2.2.1 减少寻址开销,提升I/O效率** * **2.2.2 支持超大文件,超越单机限制** * **2.2.3 简化存储设计,降低元数据复杂度** * **2.2.4 便于数据复制,增强容错性** * **2.2.5 支持数据本地性,

By Ne0inhk
【算法通关指南:数据结构与算法篇】二叉树相关算法题:1.二叉树深度 2.求先序排列

【算法通关指南:数据结构与算法篇】二叉树相关算法题:1.二叉树深度 2.求先序排列

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《算法通关指南》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、二叉树深度 * 2.1题目 * 2.2 算法原理 * 2.3代码 * 二、 求先序排列 * 3.1题目 * 3.2 算法原理 * 3.3代码 * 总结与每日励志 前言 本专栏聚焦算法题实战,系统讲解算法模块:以《c++编程》,《数据结构和算法》《基础算法》《算法实战》 等几个板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力ps:本章节题目分两部分,比较基础笔者只附上代码供大家参考,其他的笔者会附上自己的思考和讲解,希望和大家一起努力见证自己的算法成长 一、二叉树深度 2.

By Ne0inhk
【3D图像算法技术】如何在Blender中对复杂物体进行有效减面?

【3D图像算法技术】如何在Blender中对复杂物体进行有效减面?

在Blender中对复杂物体进行减面(也称为“简化模型”)是平衡Web游戏性能与视觉效果的核心步骤。Web游戏受限于浏览器渲染能力和网络传输效率,通常要求模型面数尽可能低(一般单个模型面数控制在1万面以内,复杂场景需更低),但需保留关键视觉特征(如轮廓、结构细节)。以下是具体流程及算法化实现思路: 一、复杂物体减面的核心流程(手动操作) 1. 准备与分析阶段 * 模型检查:删除冗余数据(如隐藏顶点、孤立顶点、重复材质),确保模型是“流形”(无破面、非流形边)。 * 结构分析:识别模型的“关键区域”(如角色面部、物体轮廓、高曲率细节)和“可简化区域”(如平坦表面、被遮挡部分)。 * 示例:角色模型中,面部和手部是关键区域(需保留细节),背部或衣物内侧是可简化区域。 2. 分阶段减面(核心步骤) 根据模型复杂度,采用“先整体简化,再局部修复”的策略,优先使用Blender内置工具:

By Ne0inhk
贪心算法篇——万千抉择中的唯一考量,最优解追寻的跬步累积(1)

贪心算法篇——万千抉择中的唯一考量,最优解追寻的跬步累积(1)

文章目录 * 引言:在选择的海洋中 * 贪心算法的哲学:局部最优,全球最优 * 贪心算法的经典应用 * 贪心算法的局限与挑战 * 结语:智者的选择,最优的未来 引言:在选择的海洋中 在人生的旅途上,每个人都要面临无数的选择。每一个选择,都是一次抉择;每一次抉择,都是命运的交汇点。数学与计算机科学的世界里,贪心算法正是对这种“选择”的一种深刻体现。在一系列的选择面前,贪心算法如同一位睿智的旅行者,始终秉持着最优的哲学:每一次决策都应基于局部最优,以期在最后抵达全局最优的境地。 贪心算法(Greedy Algorithm),正如其名所示,是一种每次都选择当前看起来最优解的算法。这种算法策略简单却充满智慧,常常能够解决很多看似复杂的问题。它通过一种局部的、贪婪的方式,一步步走向最终解。然而,正如智慧的旅行者需要对道路有所预见一样,贪心算法也有其适用的范围,只有在满足某些条件时,它才能发挥出最优解的魅力。 在这篇报告中,我们将深入探讨贪心算法的基本理念、适用范围、经典应用,并通过具体的代码示例,揭开这一算法的神秘面纱。 贪心算法的哲学:

By Ne0inhk