• 进程和线程


    目录

    1、进程

    1.1、什么是进程?

    1.2、管理进程

    1.3、PCB中都包含哪些信息

    1.4、虚拟内存空间

    1.5、并发和并行

    2、线程

    2.1、为什么会有线程

    2.2、线程和PCB


    1、进程

    1.1、什么是进程?

    进程就是一个静态的程序在运行的过程。

    1.2、管理进程

    PCB(进程管理块)中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。

    一般我们使用结构体来描述PCB,而且一个进程中会有一个或多个PCB(当使用多线程时就会有多个PCB)。

    进程一般在操作系统中是使用双向链表进行管理的,也就是说我们创建和销毁进程就是链表的增加和删除,当然一般的也不只是使用一张双向链表,一般会根据操作系统自己去分配。

    1.3、PCB中都包含哪些信息

    我们上面知道了PCB是用来记录进程的信息的,PCB中就包含以下的信息:

    资源信息:

    1、PID(进程的唯一身份标签);每一台主机的每个一进程PID是唯一的。

    2、内存指针;进程拥有的内存资源。

    3、文件描述符;可以记录进程打开的文件信息,也就是进程的文件资源。

    调度信息:

    4、进程的状态;

    5、进程的优先级;字面意思,当多个进程同时就绪时操作系统会根据优先级分配资源,但是不只是根据优先级。

    6、进程的上下文;当进程运行到一半终止时,PCB会记录下当前寄存器中的数据,在下一次重新启动当前进程时,进行读档。

    7、进程的记账信息;辅助调度作用,防止优先级低的进程运行时间太短。

    1.4、虚拟内存空间

    进程在运行时会分配一定的内存空间,但是如果在进程的调用中出现了野指针等的情况,就会导致当前进程干扰其他进程的正常运行,可能会使其他进程崩溃。我们如何去解决这样的问题?

    为了解决这样的问题错做系统引入了虚拟内存空间和MMU管理这样的方法。如下图所示:

     当我们在使用进程所分配的内存时,使用的是虚拟内存,当运行时通过MMU检查在分配真正的物理内存空间,一旦我们访问到了非法的内存(虚拟内存)MMU会及时警告(杀死进程),防止在物理内存上面非法访问而干扰其他进程。

    使用虚拟内存的好处:提高了各个进程之间的隔离性,提高了安全性。

    但是也似乎产生了新问题,

    我们有些进程的调度是需要与其他的进程进行交互的,而这种隔离性似乎就使得这种交互变得很难。

    为了解决这种问题,我们又引入了进程间通信机制,不同的操作系统具体的实现方法不同,但是核心思想是找一块多个进程都可以访问的公共资源,基于公共资源交互,一块内存,一个文件,也可能是一个网卡。

    1.5、并发和并行

    我们的CPU都是有多个核心的,如何充分的利用CPU资源就要各个进程之间并发执行(宏观)。

    并发:每个CPU核心都可以执行一条进程,多个CPU核心同时执行多条进程。

    并行:已足够快地速度切换进程,达成类似于同时执行多个进程。

    一般各个进程都是以并发+并行的方式调度,但是并行时的进程切换速度非常迅速所以我们在宏观上观察似乎也是并发执行。所以我们一般就看做是并发执行,但其实操作系统还是通过并发+并行两种方式来执行多任务操作。

    2、线程

    2.1、为什么会有线程

    因为进程的资源分配这一工作非常的消耗时间和资源,所以我们频繁的创建和销毁进程是非常的低效的。所以我们简化了进程,创造出了线程这个东西,

    所以,线程又被叫做轻量化进程,一个进程中默认包含一个线程,也可以包含多个线程。也就是一个线程搜是一个单独的执行流,可以单独的在CPU上面调度,在同一个进程中的线程都是共用同一分的资源(内存资源,文件资源)。

    2.2、线程和PCB

    前面我们说到PCB是用来描述进程的,准确的来说一组PCB是用来描述进程的,每一个PCB描述一个线程,一个进程中含有一个或者多个线程,这一组PCB的内存指针和文件描述符表时使用的同一份,而状态,上下文,优先级,几张信息,则是每个PCB(每个线程)独有一份。类似下图

     

  • 相关阅读:
    从零开始安装 stable diffusion webui v1.9.3 (windows10)
    Java数组
    数字化转型升级必备—数据思维与应用
    线程崩溃为什么不会导致 JVM 崩溃
    探索8个顶级的绘图工具
    【1】前端学习笔记
    计算机毕业设计 基于SpringBoot智慧养老中心管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
    DCOM升级OPCDA客户端(Java-utgrad)失效处理
    SQLZOO——5 SUM and COUNT
    等保主机测评防骗指南(资产调研)
  • 原文地址:https://blog.csdn.net/dghehe/article/details/126611909