【学习计划】操作系统(进程管理)(基本概念)(一)

本文介绍了操作系统中的并发、并行和串行的概念,深入探讨了进程和线程的基本原理,并提到了协程。内容包括操作系统的底层设计思路,部分资料和图片来源于网络。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本概念
并发并行串行
并发:指一个时间段内,几个进程都处于已启动运行到运行完毕之间,在时间上有交错或重叠的情况称为并发;
并行:并行执行的两个进程一定是并发的,它们并发地运行在不同的处理器或多核处理器上;
串行:多进程运行在同一个CPU上,只有当前一个进程执行完,才能执行后一个进程。
说明:并行概念是并发概念的一个子集。

例子:乘坐地铁,我们将 [ 进入车厢 ] 当作事件,从地铁进站开门到地铁关门出站为一个时间段;
并发:同一节车厢,很多乘客挤在门口进门上车就是并发(描述的还不是太准确);
串行:同一节车厢,乘客排队进门上车;
并行:多节车厢,乘客进门上车。

在这里插入图片描述

进程
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动;
当程序运行以后,会在内存空间里形成一个独立的内存体,它有自己独立的地址空间,有自己的堆;
操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。

说明:
	1. 操作系统在管理内存时,每个进程都有一个独立的进程地址空间,进程地址空间的地址为虚拟地址;
	2. 对于32位操作系统,该虚拟地址空间为2^32=4GB。其中0-3G是用户空间,3G-4G是内核空间;
	3. 实际上这4G的地址空间是不存在的,也就是我们所说的虚拟内存空间;
	4. 进程在执行的时候,看到和使用的内存地址都是虚拟地址。

进程地址空间

操作系统引入进程概念的原因:
	1. 对正在运行的程序过程的抽象;
	2. 是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。

进程特征:
	1. 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的;
	2. 并发性:任何进程都可以同其他进程一起并发执行;
	3. 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
	4. 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进;
	5. 结构特征:进程由程序、数据和进程控制块三部分组成。

进程状态:由于进程具有执行的间断性,因此进程可能具有以下三种基本状态;
	1. 就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行;
	2. 运行状态:进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目;
	3. 阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。

在这里插入图片描述

线程
线程是操作系统中进程能够独立执行的实体(控制流),是处理器调度和分派的基本单位;
线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),就是多线程;
同一个进程中的所有线程共享进程获得的进程地址空间和资源,进程自己不拥有资源。

线程包含以下内容:
	1. 线程执行状态(运行、就绪、等待...);
	2. 一个执行堆栈;
	3. 一个容纳局部变量的主存存储区;
	4. 当线程中断运行时,会有一个受保护的线程上下文,用于存储现场信息。

线程主要特征:
	1. 并发性:同一进程的多个线程可在一个/多个处理器上并发或并行地执行;
	2. 共享性:同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据;
	3. 动态性:线程是程序在相应数据集上的一次执行过程,由创建而产生,至撤销而消亡,有其生命周期,经历各种状态的变化;
	4. 结构性:线程是操作系统中的基本调度和分派单位,因此,它具有唯一的标识符和线程控制块,其中应包含调度所需的一切信息。

线程内存布局

说明:
1. 进程可以划分为两个部分:资源集合和线程集合;
2. 进程要支撑线程运行,提供了地址空间和各种资源,它封装了管理信息,包括对指令代码、全局数据和 I/O 状态数据等共享部分的管理;
3. 线程封装了执行信息,包括对 CPU 寄存器、执行栈(用户栈、内核栈)和局部变量、过程调用参数、返回值等线程私有部分的管理;
4. 由于线程具有许多传统进程所具有的特征,所以,也把线程称为轻量进程LWP(Light-Weight Process)。
协程
协程拥有自己的寄存器上下文和栈;
协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈;
保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,进入上一次离开时所处逻辑流的位置。

区分:
	1 .线程和进程的操作是由程序触发系统接口,最后的执行者是系统;
	2. 协程的操作执行者则是用户自身程序,go语言中的(goroutine是协程)。
操作系统的设计说明
1. 以多进程形式,允许多个任务同时运行;
2. 以多线程形式,允许单个任务分成不同的部分运行;
3. 提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
二、参考说明

大部分图片来源于网络
参考:操作系统——线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值