进程全方位详解Java 后端前置底层前言一、进程/任务process/task介绍1.进程的定义2.通俗举例二、进程的五大基本特性1.动态性最核心特征2.并发性3.独立性4.异步性5.结构性三、进程在系统中是如何进行管理的四、PCB核心重要属性五、进程调度1.什么是进程调度2.并行并发六、PCB支持进程调度的核心属性1.进程的状态2.进程的优先级3.进程的上下文4.进程的记账信息七、进程的内存管理虚拟地址空间1.为什么需要虚拟地址空间2.虚拟地址空间原理八、全文总结前言1.我们平时打开的浏览器、IDEA、微信、画图板每一个运行中的软件都是操作系统里的一个进程。操作系统内核中涉及到很多的关键性概念进程只是其中一个。2.进程是操作系统资源分配的基本单位也是理解线程、并发、JVM 运行模型的基础本篇带你从底层讲透进程的核心概念。3.本文将从进程定义、PCB、状态、内存管理一步步为你拆解进程的底层逻辑。一、进程/任务process/task介绍1.进程的定义进程是程序的一次执行过程是操作系统进行资源分配和调度的基本单位。程序是静态代码进程是动态执行实体。核心定位每个进程都是操作系统资源分配的基本单位。每个进程要想执行就都需要消耗一定的系统资源硬件资源。2.通俗举例1.手机/电脑上的“WeChat.exe”或微信App安装包是程序静态文件。2.打开微信、登录账号后后台运行的微信实例就是一个进程。3.如果你在电脑上同时登录两个微信账号就会对应两个独立的微信进程它们的内存资源是相互隔离的互不干扰。二、进程的五大基本特性1.动态性最核心特征进程是程序的一次执行过程有创建、运行、终止的完整生命周期是动态产生、变化和消亡的。程序是静态的进程是动态的。2.并发性多个进程实体可同时驻留内存宏观上同时运行以提高资源利用率。引入进程的核心目的之一就是支持多进程并发执行提高系统资源利用率。3.独立性进程是操作系统进行资源分配和调度的基本单位拥有独立地址空间可独立运行和调度。4.异步性进程以各自独立、不可预知的速度推进执行顺序和完成时间不可预知需同步机制保障正确性。5.结构性进程实体由程序段、数据段和进程控制块PCB三部分组成PCB是进程存在的唯一标识记录了进程的所有管理信息。三、进程在系统中是如何进行管理的1.先描述系统中专门有一个结构体描述进程的属性这个结构体统称为“进程控制块”PCB。一个进程对应唯一的一个PCB结构体。2.后组织系统中就会使用类似双向链表这样的数据结构来组织多个PCB。创建新的进程就是创建PCB并且把PCB插入到链表中。销毁进程就是把PCB从链表上删除并释放。展示进程列表就相当于是遍历链表的每个节点。要想更明确认识进程的详细特性就要讨论一下PCB的属性。四、PCB核心重要属性PCB是一个非常庞大的结构体包含很多属性。PCB核心属性pid进程标识符(1) 进程的身份标识也是进程的唯一标识(2) 每个进程都会有一个pid同一时刻不同进程之间的pid是不同的(3) 就相当于每个人都有自己的身份证号内存指针一组属性(1) 描述了进程持有的内存资源是什么样子的(2) 每个进程在运行的时候都会分配一定的内存空间。对于这个进程内存空间具体在哪里以及分配的内存空间中有哪些部分每个部分都是干什么的有这么一组指针内存指针来进行区分(3) 最典型的进程的内存空间需要有专门的区域存储要执行的指令以及指令依赖的数据同时还需要存储一些运行时产生的临时数据文件描述符表(1) 类似于顺序表这样的数据结构有很多元素描述了进程持有的硬盘资源是什么样子的(2) 和文件有关 和硬盘有关(3) 一个进程也需要涉及到硬盘操作这时就需要按照文件的方式来操作那么当前进程关联了那些文件都能操作那些文件就是通过文件描述符表来进行表示的五、进程调度1.什么是进程调度进程调度就是操作系统依据调度算法从就绪队列中选取进程并为其分配CPU使其运行的过程。2.并行并发早期的操作系统是一个“单任务操作系统”同一时刻只有一个进程能运行运行下一个进程就会退出上一个无需考虑调度问题。现代的cpu都是多核心的。1.如果两个进程同时在两个CPU核心上微观上也是“同时执行”这个情况称为“并行”。2.一个cpu核心上通过快速轮转调度方式执行多个进程宏观上是“同时执行”微观上有先后这个情况称为“并发”。3.并发和并行都是系统内部完成调度的。并行多核真正同时执行也就是多个任务在同一时刻同时执行必须多核CPU才能实现。并发单核交替执行也就是多个任务在同一时间段内交替执行单核cpu也能实现。六、PCB支持进程调度的核心属性PCB中引入了一些属性用来支持操作系统实现进程调度效果和进程持有的CPU资源密切相关。1.进程的状态运行态进程正在CPU上执行。就绪状态虽然进程没在CPU上执行但是时刻准备着去CPU执行。阻塞状态某个进程某种执行条件不具备导致该进程暂时无法参与cpu的调度执行。比如一直等待着用户输入。暂停状态、僵尸状态、退出状态…进程状态的切换由操作系统内核调度用户程序无法直接干预。2.进程的优先级操作系统在调度多个进程时并非一视同仁有些进程会给更高的优先级优先调度。比如先来先服务调度、时间片轮转调度、优先级调度。3.进程的上下文1.进程从CPU离开之前需要保存现场把当前CPU中各种寄存器的状态都记录到内存中。2.等到下次进程回到CPU上执行的时候此时就可以把保存的这些寄存器的值恢复回去进程就会沿着上次执行到的位置继续向后执行。3.和游戏的读档、存档类似。CPU中有些寄存器没有特定含义就只是用来保存运算的中间结果还有些寄存器是有特定含义、特定作用的。4.进程的记账信息1.通过优先级机制对不同的进程分配了不同权重的资源。2.记账信息会记录当前进程持有CPU的情况作为操作系统调度进程的参考依据。七、进程的内存管理虚拟地址空间1.为什么需要虚拟地址空间早期的操作系统程序运行时分配的内存就是“物理内存”。此时如果B进程越界访问了A进程的内存把A的内存写成错误的值A进程可能崩溃。而操作系统要给进程提供稳定的运行环境。2.虚拟地址空间原理为了避免上述情况出现操作系统引入了“虚拟地址空间”不是直接分配物理内存而是分配虚拟的内存空间。A和B看到的内存都是抽象后的虚拟内存。当A操作内存中的某个数据时就把操作的虚拟地址交给系统系统再把虚拟地址翻译成物理地址再对物理地址操作。此时操作系统就可以进行检查校验了。进程的独立性。八、全文总结1.进程是资源分配的最小单位。2.操作系统通过PCB结构体链表统一管理所有进程。3.并发是交替执行并行是同时执行。4.进程上下文切换、进程状态、优先级是系统调度的核心。5.虚拟地址空间保证了进程独立性与系统稳定性。
进程全方位详解(Java 后端前置底层)
进程全方位详解Java 后端前置底层前言一、进程/任务process/task介绍1.进程的定义2.通俗举例二、进程的五大基本特性1.动态性最核心特征2.并发性3.独立性4.异步性5.结构性三、进程在系统中是如何进行管理的四、PCB核心重要属性五、进程调度1.什么是进程调度2.并行并发六、PCB支持进程调度的核心属性1.进程的状态2.进程的优先级3.进程的上下文4.进程的记账信息七、进程的内存管理虚拟地址空间1.为什么需要虚拟地址空间2.虚拟地址空间原理八、全文总结前言1.我们平时打开的浏览器、IDEA、微信、画图板每一个运行中的软件都是操作系统里的一个进程。操作系统内核中涉及到很多的关键性概念进程只是其中一个。2.进程是操作系统资源分配的基本单位也是理解线程、并发、JVM 运行模型的基础本篇带你从底层讲透进程的核心概念。3.本文将从进程定义、PCB、状态、内存管理一步步为你拆解进程的底层逻辑。一、进程/任务process/task介绍1.进程的定义进程是程序的一次执行过程是操作系统进行资源分配和调度的基本单位。程序是静态代码进程是动态执行实体。核心定位每个进程都是操作系统资源分配的基本单位。每个进程要想执行就都需要消耗一定的系统资源硬件资源。2.通俗举例1.手机/电脑上的“WeChat.exe”或微信App安装包是程序静态文件。2.打开微信、登录账号后后台运行的微信实例就是一个进程。3.如果你在电脑上同时登录两个微信账号就会对应两个独立的微信进程它们的内存资源是相互隔离的互不干扰。二、进程的五大基本特性1.动态性最核心特征进程是程序的一次执行过程有创建、运行、终止的完整生命周期是动态产生、变化和消亡的。程序是静态的进程是动态的。2.并发性多个进程实体可同时驻留内存宏观上同时运行以提高资源利用率。引入进程的核心目的之一就是支持多进程并发执行提高系统资源利用率。3.独立性进程是操作系统进行资源分配和调度的基本单位拥有独立地址空间可独立运行和调度。4.异步性进程以各自独立、不可预知的速度推进执行顺序和完成时间不可预知需同步机制保障正确性。5.结构性进程实体由程序段、数据段和进程控制块PCB三部分组成PCB是进程存在的唯一标识记录了进程的所有管理信息。三、进程在系统中是如何进行管理的1.先描述系统中专门有一个结构体描述进程的属性这个结构体统称为“进程控制块”PCB。一个进程对应唯一的一个PCB结构体。2.后组织系统中就会使用类似双向链表这样的数据结构来组织多个PCB。创建新的进程就是创建PCB并且把PCB插入到链表中。销毁进程就是把PCB从链表上删除并释放。展示进程列表就相当于是遍历链表的每个节点。要想更明确认识进程的详细特性就要讨论一下PCB的属性。四、PCB核心重要属性PCB是一个非常庞大的结构体包含很多属性。PCB核心属性pid进程标识符(1) 进程的身份标识也是进程的唯一标识(2) 每个进程都会有一个pid同一时刻不同进程之间的pid是不同的(3) 就相当于每个人都有自己的身份证号内存指针一组属性(1) 描述了进程持有的内存资源是什么样子的(2) 每个进程在运行的时候都会分配一定的内存空间。对于这个进程内存空间具体在哪里以及分配的内存空间中有哪些部分每个部分都是干什么的有这么一组指针内存指针来进行区分(3) 最典型的进程的内存空间需要有专门的区域存储要执行的指令以及指令依赖的数据同时还需要存储一些运行时产生的临时数据文件描述符表(1) 类似于顺序表这样的数据结构有很多元素描述了进程持有的硬盘资源是什么样子的(2) 和文件有关 和硬盘有关(3) 一个进程也需要涉及到硬盘操作这时就需要按照文件的方式来操作那么当前进程关联了那些文件都能操作那些文件就是通过文件描述符表来进行表示的五、进程调度1.什么是进程调度进程调度就是操作系统依据调度算法从就绪队列中选取进程并为其分配CPU使其运行的过程。2.并行并发早期的操作系统是一个“单任务操作系统”同一时刻只有一个进程能运行运行下一个进程就会退出上一个无需考虑调度问题。现代的cpu都是多核心的。1.如果两个进程同时在两个CPU核心上微观上也是“同时执行”这个情况称为“并行”。2.一个cpu核心上通过快速轮转调度方式执行多个进程宏观上是“同时执行”微观上有先后这个情况称为“并发”。3.并发和并行都是系统内部完成调度的。并行多核真正同时执行也就是多个任务在同一时刻同时执行必须多核CPU才能实现。并发单核交替执行也就是多个任务在同一时间段内交替执行单核cpu也能实现。六、PCB支持进程调度的核心属性PCB中引入了一些属性用来支持操作系统实现进程调度效果和进程持有的CPU资源密切相关。1.进程的状态运行态进程正在CPU上执行。就绪状态虽然进程没在CPU上执行但是时刻准备着去CPU执行。阻塞状态某个进程某种执行条件不具备导致该进程暂时无法参与cpu的调度执行。比如一直等待着用户输入。暂停状态、僵尸状态、退出状态…进程状态的切换由操作系统内核调度用户程序无法直接干预。2.进程的优先级操作系统在调度多个进程时并非一视同仁有些进程会给更高的优先级优先调度。比如先来先服务调度、时间片轮转调度、优先级调度。3.进程的上下文1.进程从CPU离开之前需要保存现场把当前CPU中各种寄存器的状态都记录到内存中。2.等到下次进程回到CPU上执行的时候此时就可以把保存的这些寄存器的值恢复回去进程就会沿着上次执行到的位置继续向后执行。3.和游戏的读档、存档类似。CPU中有些寄存器没有特定含义就只是用来保存运算的中间结果还有些寄存器是有特定含义、特定作用的。4.进程的记账信息1.通过优先级机制对不同的进程分配了不同权重的资源。2.记账信息会记录当前进程持有CPU的情况作为操作系统调度进程的参考依据。七、进程的内存管理虚拟地址空间1.为什么需要虚拟地址空间早期的操作系统程序运行时分配的内存就是“物理内存”。此时如果B进程越界访问了A进程的内存把A的内存写成错误的值A进程可能崩溃。而操作系统要给进程提供稳定的运行环境。2.虚拟地址空间原理为了避免上述情况出现操作系统引入了“虚拟地址空间”不是直接分配物理内存而是分配虚拟的内存空间。A和B看到的内存都是抽象后的虚拟内存。当A操作内存中的某个数据时就把操作的虚拟地址交给系统系统再把虚拟地址翻译成物理地址再对物理地址操作。此时操作系统就可以进行检查校验了。进程的独立性。八、全文总结1.进程是资源分配的最小单位。2.操作系统通过PCB结构体链表统一管理所有进程。3.并发是交替执行并行是同时执行。4.进程上下文切换、进程状态、优先级是系统调度的核心。5.虚拟地址空间保证了进程独立性与系统稳定性。