什么是进程?
- 概念:一个正在运行的程序。
- 示例
进程也叫做任务, 任务管理器中就存在很多进程。
为什么要引入进程?
- 希望能够执行多个任务,也就是多个进程。
什么意思呢?也就是说,同一台电脑上,现在可以边打 LOL,一遍看直播,一遍聊天等等一系列的事。
而在以前,只能打游戏,退出,看直播,退出,聊天,退出。(功能机了解一下)。- 充分利用 CPU 资源。
随着 CPU 的发展,CPU 的性能已经得到了巨大的提升,而如果继续执行单任务的话,无疑是比较浪费 CPU 资源的。
怎样概述进程?
- 描述进程:task struck 结构
因为操作系统内核是由 c 语言写的,那怎么理解 struck ?
可以理解为一个 Java 中的类,但是这个类只有属性,没有方法。- 组织进程:使用双向链表把很多 task struck 变量串起来
创建一个进程,就在这个双向链表中添加一个节点代表该进程。
打开任务管理器,可以看到很多进程,可以认为是操作系统内核遍历了这个双向链表,然后获取每个节点的信息并展示出来。
而结束一个进程,就删除代表这个进程的节点。
task struck 中存在哪些信息?
- PID:进程的 ID。
点击右键,就可以选择是否显示 PID。
- 进程内存的指针
描述进程持有的内存资源范围(进程依赖的代码和数据在哪)- 时间片
进程执行的一小段时间叫时间片。
操作系统的任务调度采用时间片轮转的抢占调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
每个程序不知道自己什么时候能够获取到 CPU 执行,也不知道自己什么时候失去 CPU ,更不知道自己下次获取到 CPU 是什么时候,一切听从操作系统。- 进程的优先级
- 进程的上下文
- 进程的记账信息
- 进程的状态
…
对于4、5、6和 7 这几个点,用一个小故事来理解。
逍遥对今天一天的时间进行了规划
9:00 — 12:00,打游戏
13:00 — 15:00 ,午睡
16:00 — 20:00,约会
- 进程的优先级
对于不同时间干不同的事情,就是进程的优先级;- 进程的上下文(记录今天活动的相关状态)
早上打游戏队友太坑,明天早上不打游戏了;
中午午睡睡得很香,明天继续午睡;
晚上约会吵架了,明天不约会了。
记录的目的:下次运行的时候,就能够回复之前的状态。(明天早上不打游戏,晚上不约会)- 进程的记账信息
过了一段时间后,统计逍遥对自己一天的活动的信息。
发现中午午睡特别合适,于是每天中午多分配点时间午睡;
记账信息相当于一种统计信息,每个进程在 CPU 上执行了多久,调度了多>少次。- 进程的状态
经常吵架,分手了,以后不约会了。
上下文只是记录信息,不产生影响,但是状态会产生影响。
进程状态图:
什么是并行与并发?
- 并行
从微观角度来说,每个进程与进程之间,是同时执行的。例如 8 个 CPU 核心(拥有 8 个核的一个 CPU),可以同时执行 8 个进程。- 并发
从微观角度来说,进程是串行的(功能机,完成一个进程结束后再执行另外一个程序); 从宏观角度来说,进程是同时执行的。CPU 处理完当前进程马上切换到下一个进程…速度很快,从从宏观上看起来像是同时执行的。
并行与并发的观念并不一样,但是一般概述的时候,用 并发 代指 并行 + 并发。
用户态与内核态
操作系统对执行权限进行了分级,内核态与用户态。
- 内核态
操作系统内核来执行任务。
一旦某个操作进入内核态执行,此时这个操作就变得不可控,往往意味着比较低效。- 用户态
应用程序来执行任务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)