网站注册可以免费吗,中国特种做业人员备案考核是什么网站,苏州互联网公司工资,网站建设和维护需要学的东西个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得#xff0c;欢迎大家在评论区交流讨论#x1f48c; 目录 一、… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得欢迎大家在评论区交流讨论 目录 一、什么是进程进程和可执行文件的关系 二、计算机如何管理进程进程管理并行和并发 三、PCB中关于进程调度的相关属性四、进程的隔离性和进程间通信 一、什么是进程
我们来看一下进程的概念进程是操作系统中正在执行的程序的实例。它是计算机执行任务的基本单位。一个进程包含了程序代码、数据和资源包括内存、文件、网络连接等。
眨眼一看进程概念其实是比较抽象的我们来举个例子比如QQ.exe就是一个.exe的可执行程序(存储在硬盘中属于静态的)。当我们没有双击运行QQ的时候这个.exe程序肯定是没有在运行的此时我们就不能称之为是一个进程。 但是一旦我们双击运行QQ.exe这个可执行的程序时这时才能被称之为是一个进程。再比如如果我们要同时运行多个相同的.exe可执行程序的时候即一个程序运行多次此时就可能产生多个进程。 我们看一下下图就是程序运行时候的进程。 当我们双击程序(即.exe可执行文件)时操作系统就会把可执行文件中的指令和数据加载到内存中然后cpu去执行其中的指令并完成一系列的工作这是一个动态的过程我们称之为进程。 另外进程是操作系统中分配硬件资源的基本单位。当一个程序被执行时操作系统会为其创建一个独立的进程每个进程都拥有自己的虚拟地址空间、执行堆栈、文件描述符表等资源。进程可以独立地访问和管理这些资源而不会与其他进程发生冲突。
进程和可执行文件的关系
进程是操作系统中正在运行的程序的一个实例所以进程是程序的实例化。
一个个可执行文件只是存储硬盘上是一个静态的而进程之所以是动态的是因为进程会消耗cpu资源、内存资源、硬盘、网络带宽等资源来完成一系列的工作。
进程的运行状态是不断变化的包括进程的创建、运行、挂起、恢复、终止等操作。操作系统会根据进程的状态和运行环境来调度进程的执行并分配必要的系统资源如内存、CPU时间片、I/O操作等。
二、计算机如何管理进程
计算机管理进程的核心思路是先对进程进行描述然后再对进程进行再组织。
在描述进程方面
操作系统通常会为每个进程分配一个唯一的标识符PID并记录进程的状态、程序计数器、寄存器状态、内存管理信息、打开文件列表以及资源分配信息等。这些描述信息通常会被存储在进程控制块Process Control BlockPCB在Linux中称为task_structPCB只是一个通用的叫法中。
在组织进程方面
一般是使用双向链表来对进程进行组织的这里是针对Linux操作系统来说的比如查看进程列表相当于遍历这个链表创建进程相当于先创建一个结构体然后再把这个结构体插入到链表中销毁进程就相当于把这个结构体从链表中删除当然不同的操作系统所使用的数据结构肯定多多少少是有些区别的。
进程管理 1.PID进程标识 同一个系统中的同一个时刻每个进行的PID标识都是不一样的。有时我们运行一个QQ.exe文件时可能会涉及到多个进程。 2.内存指针 内存指针表示该进程所需要所对应的内存资源时怎样的。其中内存资源中最主要的就是从.exe文件加载过来的指令先将指令从.exe文件中加载到内存中然后进一步交给CPU去执行和数据执行指令过程中依赖的一些数据其中运行过程的一些中间结果也是存储到内存资源中。总之内存指针要对指令、数据、以及进程中的一些中间结果要有一个区域划分。 3.文件描述符表 首先我们要知道硬盘是硬件而应用程序是没法直接接触到硬盘的。实际上是操作系统把硬件抽象成文件程序操作的是文件而文件是存储在硬盘上的这样的话相当于应用程序间接接触到硬盘这一层面了。 另外每个文件都会有文件描述符表来记录当前进程正在使用哪个文件。操作系统每打开一个文件就会产生一个文件描述符这个文件描述相当于文件的身份标识同时要注意这个文件描述符只在当前进程内部生效。操作系统会使用文件描述符表类似于数组把文件描述符组织起来。 并行和并发
并行同一时刻两个进程同时运行再两个cpu逻辑核心上。
并发两个进行在同一个cpu逻辑核心上轮着运行。但是由于cpu切换进程的速度极快在微观上是串行执行但是在宏观上是同时进行的。注意并发执行并不意味着进程在同一时间点上真正地同时运行。它更强调的是在一段时间内交替执行而每个进程只是在短时间内运行。
操作系统在调度这些进程的时候可能是按照并行的方式也可能是按照并发的方式但是无论是并行的方式还是并发的方式在应用程序这一层面是感知不到的只有在cpu内核中才可以感知的到。
所以由于在应用程序方面感知不到到底是用哪种方式进行调度的所以宏观上并行和并发这两种调度方式的体现方式是一样的所以我们一般用“并发”来代指并行和并发。所以我们平时看到并发的话如果不进行特殊说明的话我们一般将其理解为并行和并发。
三、PCB中关于进程调度的相关属性
PCB中关于进程调度相关的属性描述了对应的CPU资源的使用情况。 1.进程状态Process State描述进程当前的状态例如就绪Ready即一个进程已经做好了随时在CPU中执行的准备、运行Running、阻塞Blocked有些时候进程没有准备好被调度到CPU中等状态进程在系统中的状态有很多种其中最关键的状态就是运行和阻塞。 2.优先级Priority标识进程的优先级通常以数字或其他形式表示较高的优先级将更容易获得 CPU 时间片以便把系统资源调配给更重要的进程上。 3.上下文切换为了确保进程能够在下次 CPU 运行时从上次的位置继续往后运行操作系统会使用一种称为上下文切换的机制。 当一个进程的时间片用完或者遇到某个阻塞事件时操作系统将触发上下文切换将当前进程的状态保存到其对应的 PCB 中并选择下一个要执行的进程进行调度。下次轮到该进程运行时操作系统会从其 PCB 中恢复之前保存的状态并从上次的位置继续执行。上下文切换过程中PCB 记录了进程执行过程中 CPU 的寄存器中相关的数据。 这些寄存器中有的是存储的是中间过程的一些结果有的是存储的一些特殊含义的数据比如说下一条指令在哪里、当前函数的调用关系是什么这些寄存器中的数据需要在进程离开CPU之前要保存好即保存到对应进程的PCB中的上下文字段中也就是内存中。这样的话就方便该进程下次再次回到CPU中运行了即把CPU上下文字段中也就是内存中的数据恢复到寄存器中此时进程就和上次执行的状态一模一样了。 4.通过查看每个进程的 PCB可以获取其总执行时间和指令计数器的值即可统计每个进程在 CPU 上执行的时间和指令数。 四、进程的隔离性和进程间通信
虚拟地址空间并非是物理内存上真是存在的地址而只是在进程内存在。不同的进程中可以存在相同的虚拟地址空间但实际上对应到的是不同的真实物理地址。
这样的话进程使用该虚拟地址的内存都需要操作系统进行一个把虚拟地址转换为真实物理地址的一个过程在这个转换过程中就可以针对虚拟地址是否有效做出一个校验。
另外操作系统在执行进程过程中会检查是否存在非法内存的使用如果进程访问了未被分配的内存或者越界访问了已经分配的内存那么操作系统就会通知这个进程甚至是强制终止该进程以避免对其它进程产生影响。 进程隔离性 所以在虚拟地址空间的加持下每个进程都有自己独立的虚拟地址空间并且每个进程无法直接访问或者修改其它进程的虚拟地址空间进而提高了系统的稳定性。 进程间通信 在进程隔离性的基础上进程之间是可以进程有限制的通信的。进程之间进行通信之间的方式是由很多种的但是无论是哪一种方式都是找到一块共同的区域即多个进程都可以访问到的区域那么这多个进程就可以通过这个公共的区域来进行数据的交换。
好了本文到这里就结束了希望友友们可以支持一下一键三连哈。嗯就到这里吧再见啦