• 进程和线程详解


    目录

    前言:

    操作系统定位

    并发

    并行

    并发

    进程

    描述

    PCB

    管理

    内存管理

    进程间通信

    线程

    小结


    前言:

        当一个程序运行起来时,操作系统要为之分配一些资源,这样的运行起来的程序称之为一个进程。为了有效解决并发编程,多进程会对于系统的开销比较大,由之提出了多线程。

        进程包含线程,一个进程可有多个线程。多个线程是共享一块资源的,这样就可以大量减少系统的开销。

    操作系统定位

        应用程序 --> 系统调用 --> 操作系统内核 --> 驱动程序 --> 硬件设备

        注意:系统调用会为应用程序提供api,操作系统的核心功能对上和对下进行管理。

    并发

        由于cpu的资源有限,需要把多个进程进行合理的分配。让有限的资源可以执行多个进程。

    并行

        微观上同一时刻,两个核心上的进程就是同时执行的。

    并发

        微观上同一时刻,一个核心只能运行一个进程,但它对于进程间的切换是足够快的。

    进程

        一个运行起来的程序称为一个进程,没运行起来就不算。每个进程都会对应一些资源,进程是重要的“系统资源”,由操作系统负责管理。以组织和描述的方式进行管理。

    描述

        使用c语言中的结构体对进程的属性进行描述,每个这样的结构体称为“进程控制块”,简称:PCB。

    PCB

    1)pid

        进程的身份标识符,不同的进程有不同的pid(唯一的数字)。

    2)内存指针

        指向了这个进程使用的内存空间。

    3)文件描述符

        硬盘上的文件,等其他资源。

    4)进程调度相关属性(这里写一些重要的属性)

       1. 进程的状态

           就绪状态,运行状态,阻塞状态(进程正在其他地方运行)

       2.优先级

           对进程划分优先级,先执行哪个再执行哪个。

       4.上下文

           操作系统再对进程进行切换的时候,记录进程的中间状态。下一次进程执行的时候就可以恢复原来的状态。中间状态的数据是存储在寄存器上的,例如函数的返回值。

       5.记账信息

           操作系统统计每个进程在cpu上占用的时间和执行指令的条数,根据这个来决定下个阶段该如何调度。

    管理

        通过一个双向链表对进程管理起来,把每个进程的pcb通过双向链表连接起来(这里不是一个单纯的双向链表)

    内存管理

        如果有一个进程对内存的使用越界了,刚好影响到了另一个进程的内存空间,那么就有可能导致两个进程都崩溃。所以提出了虚拟内存的方法。

        针对进程使用的内存空间,进行隔离。代码里也不在使用物理内存,而使用虚拟内存。由操作系统专门的硬件设备负责虚拟内存到物理内存的转换。

     注意:操作系统中硬件设备一旦发现进程1的内存越界,就会反馈一个错误,使其进程崩溃。这样就不会影响其他进程了。

    进程间通信

        这样对进程隔离起来,但是进程间需要数据交互。实现的核心思想:对进程间提供一个公共可以访问的空间,基于这个公共空间实现数据交互。

        这里列举一些主流操作系统提供的进程间通信机制:管理,共享内存,文件,网络,信号量,信号。

    线程

        进程对于系统资源的开销比较大,因此提出了多线程,共用一个进程的资源。

        一个进程包含多个线程,多线程对一个进程间的资源进行共享(内存,文件描述符表等),这样就节省了资源,但是会引发线程安全问题。

        线程安全,多个线程争取同一块资源,一个进程间某个线程抛异常可能导致整个进程的崩溃。

    注意:

       1)每个线程都对应不同的pcb,当pcb被cpu调度时,这个线程就启动了。

       2)操作系统调度时,是以线程为单位的。

       3)一个进程里面的线程,pid,内存指针,文件描述符表都是相同的。

       4)线程之间是同时进行的,我们看起来貌似没有规则。其实在操作系统内核中,是有一定的规律(取决于操作系统调度器策略的实现)。

       5)进程专门负责资源分配,线程接管和调度一切相关内容。

    小结:

        这块的内容我们需要理解,这样会加深我们对其的记忆。

  • 相关阅读:
    Android Camera性能分析 - 第25讲 CameraServer LatencyHistogram简介
    Vue---$nextTick、$set、$ref、$event、$bus详细理解
    cesium 实现三维无人机航拍过程实景效果
    数字营销中台和全渠道的数字化精耕,快消老品牌实现数字营销焕新生
    普乐蛙VR航天航空体验馆VR双人旋转座椅元宇宙VR飞船
    Opus 1.4 编译脚本
    豆瓣电影信息爬虫实战-2024年6月
    第一章 绪论
    加热垫美国站UL130测试项目及周期
    计算机毕业设计(附源码)python游戏推荐系统
  • 原文地址:https://blog.csdn.net/weixin_62353436/article/details/127999600