【JavaSE】进程是什么?

2024-04-01 1272阅读

文章目录

  • ✍进程的概念
  • ✍进程存在的意义
  • ✍进程在计算机中的存在形式
  • ✍进程调度

    ✍进程的概念

    每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之⼀。

    进程是操作系统对⼀个正在运行的程序的⼀种抽象,换言之,可以把进程看做程序的⼀次运行过程;

    同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

    举例子来说,打开的csdn网站就是一个进程

    打开任务管理器,可以看到计算机中的进程。

    包括后台进程(计算机自动打开的,不需要你手动打开)

    【JavaSE】进程是什么?

    想要运行一个程序,就需要为程序分配资源。

    所以说在操作系统内部,进程又是操作系统进行资源分配的基本单位。

    【JavaSE】进程是什么?

    ✍进程存在的意义

    进程主要是用来解决程序不能并发执行从而导致 CPU 利用率低下这个问题。

    随着科技的发展,人们对计算机的需求也越来越大,同时对计算机性能的要求也越来越高。但事务的发展总是有所限制的。对于计算的CPU来说,现在的科技水平只能达到4nm的精度,这对于庞大的需求来说,确实是有些吃力,所以人们开始思考,当CPU的制造水平有了一定限制时,一个CPU解决不了的事情,我们可以交付给多个CPU来处理,也就是我们现在所谓的多核计算机。

    使用多个核心来处理问题,当然要对这些核心进行管理规划,使这些核心可以并发执行程序。

    这里的并发涵括:并发和并行

    在后续会讲解到的。

    ✍进程在计算机中的存在形式

    在操作系统中,通常用PCB(程序控制块 Program Control Block)这样的结构体来描述进程。

    不同的操作系统的称呼不相同。

    PCB中存储的很多的信息

    在操作系统中,通常使用‘链表’这样的数据结构来使PCB串接起来。

    有很多这样的链表存在于操作系统中。

    1. 任务管理器查看进程列表

      遍历链表的每个结点,并获取每个结点的信息。

    2. 创建新的进程(双击执行程序)

      进程创建出新的PCB结构体,形成新的结点并插入到链表中

    3. 删除进程(关闭程序)

      在链表中删除对应的PCB结点

    PCB结构体中包含的内容

    1. pid – 进程唯一标识

      跟身份证一样,可以唯一的确定进程。

      同一个机器,同一时刻,进程id一定是不同的

    如下,我打开了五个Typora程序,也就执行了五个Typorad的进程,可以看到他们五个的PID是各不相同的。

    【JavaSE】进程是什么?

    1. 内存指针

      进程运行时,需要消耗一定的硬件资源,其中内存就是一个非常关键的资源!

    一个程序在运行的时候,就会被从硬盘(xxx.exe)加载到内存中

    加载这个程序的指令/依赖的数据

    注意:这里的内存指针是一组指针

    这一组指针告诉操作系统,要运行的指令都在内存的什么位置

    也告诉系统,进程需要依赖的数据又存于什么位置

    …等等

    总之,内存指针是给操作系统知名下一步需要做什么

    【JavaSE】进程是什么?

    1. 文件描述符表

      一个进程运行的时候,会操作一些文件。

      就通过一个类似于“顺序表”这样的数据结构,来记录这个进程打开了哪些文件

    2. 进程调度

      打开任务管理器可以看到,有100+的进程在执行

      而执行就需要消耗资源,而我们的计算机并没有那么多的核心(CPU)以供得每个进程分配到一个CPU,这时就需要并行+并发来解决资源的分配问题

    【JavaSE】进程是什么?

    一个核心,同一时刻,只能执行一个进程

    (以我的计算机为例,我的计算机中拥有16个核心)

    也就是说,同一时刻我的计算机最多可以同时执行16的进程

    这叫做并行执行这是完全的同时执行

    一个核心,不同时刻,可以执行不同进程

    CPU把总的时间切割成小的片段,每个片段执行一个进程,每个片段成为“时间片”

    由于时间片比较短,CPU切换进程的速度非常快,人感知不到

    所以站在使用者的角度来看,这些进程就是“同时执行”的,本质上并不是同时的

    这叫做并发执行。

    操作系统会按照并行和并发互相搭配,来执行一个进程。

    总结:

    并行,微观时间上,也是同时执行

    并发,宏观时间上,是“同时执行”,微观时间上,是串联执行。但由于速度之快,人感知不到。

    因此就将,并行和并发统称为“并发”

    ✍进程调度

    PCB提供了几个属性,来支持进程调度

    1. 状态

      分为“就绪状态”和“阻塞状态”

      区别在于CPU调用时,是否可以立即执行

    2. 优先级

      我们知道调用进程时,需要为其分配资源

      但在分配资源时,并非是均等的分配

      例如在打游戏时,此时你打开的网页就不需要分得那么多的资源

    3. 上下文

      在上文中,我们提到“并发执行”,在执行过程中,会产生很多的“中间结果”,在进程切出于CPU之前,需要把这些“中间结果”(CPU的寄存器中的各种值),保存到PCB的上下文中。

      这个过程是将寄存器的数据存放到内存中,也就是我们平时所见的【存档】

    当下一次CPU再次调度这个进程时,就要把之前的数据读取出来,放入寄存器中,也就是所谓的【读档】。

    具体操作过程:有一个PC程序计数器,他会记录上一次执行到哪一个位置,在下一次执行时,就从这个位置继续执行。

    1. 记账信息

      基于优先级,我们可以知道每个进程分配的资源并不相同

      引入记账信息,我们可以记录每个进程所分配的资源

      进而后续对资源的分配做出调整。

    以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]