关于进程、线程相关知识详解

本文详细介绍了进程和线程的相关知识,包括进程的定义、状态、控制结构以及上下文切换,同时阐述了线程的优势、类型和上下文切换的区别。通过对进程与线程的深入探讨,帮助读者理解操作系统中并发执行的基本单元及其管理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 进程

    • 运行中的程序,就被称为「进程」(Process)

    • 多个程序、交替执行的思想,就有 CPU 管理多个进程的初步想法。

    • 虽然单核的 CPU 在某一个瞬间,只能运行一个进程。但在 1 秒钟期间,它可能会运行多个进程,这样就产生并行的错觉,实际上这是并发。

    • 进程与程序的关系类比

      • 女生说她想喝可乐,那么男生只好把做菜的事情暂停一下,并在手机菜谱标记做到哪一个步骤,把状态信息记录了下来。

      • 这体现了,CPU 可以从一个进程(做菜)切换到另外一个进程(买可乐),在切换前必须要记录当前进程中运行的状态信息,以备下次切换回来的时候可以恢复执行。

    • 进程的状态

      • 运行状态(Running):该时刻进程占用 CPU

      • 就绪状态(Ready):可运行,由于其他进程处于运行状态而暂时停止运行;

      • 阻塞状态(Blocked):该进程正在等待某一事件发生(如等待输入/输出操作的完成)而暂时停止运行,这时,即使给它CPU控制权,它也无法运行;

      • 创建状态(new):进程正在被创建时的状态;

      • 结束状态(Exit):进程正在从系统中消失时的状态;

      • 在虚拟内存管理的操作系统中,通常会把阻塞状态的进程的物理内存空间换出到硬盘,等需要再次运行的时候,再从硬盘换入到物理内存。

      • 需要一个新的状态,来描述进程没有占用实际的物理内存空间的情况,这个状态就是挂起状态

        • 阻塞挂起状态:进程在外存(硬盘)并等待某个事件的出现;

        • 就绪挂起状态:进程在外存(硬盘),但只要进入内存,即刻立刻运行;

      • 导致进程挂起的原因不只是因为进程所使用的内存空间不在物理内存,还包括如下情况:

        • 通过 sleep 让进程间歇性挂起,其工作原理是设置一个定时器,到期后唤醒进程。

        • 用户希望挂起一个程序的执行,比如在 Linux 中用 Ctrl+Z 挂起进程

    • 进程的控制结构

      • 进程控制块process control block,PCB)数据结构来描述进程的。

      • PCB 是进程存在的唯一标识

      • PCB 具体包含什么信息呢?

        • 进程描述信息:

          • 进程标识符:标识各个进程,每个进程都有一个并且唯一的标识符;

          • 用户标识符:进程归属的用户,用户标识符主要为共享和保护服务;

        • 进程控制和管理信息:

          • 进程当前状态,如 new、ready、running、waiting 或 blocked 等;

          • 进程优先级:进程抢占 CPU 时的优先级;

        • 资源分配清单:

          • 有关内存地址空间或虚拟地址空间的信息,所打开文件的列表和所使用的 I/O 设备信息。

        • CPU 相关信息:

          • CPU 中各个寄存器的值,当进程被切换时,CPU 的状态信息都会被保存在相应的 PCB 中,以便进程重新执行时,能从断点处继续执行。

      • 每个 PCB 是如何组织的呢?

        • 通过链表的方式进行组织,把具有相同状态的进程链在一起,组成各种队列

        • 将所有处于就绪状态的进程链在一起,称为就绪队列

        • 把所有因等待某事件而处于等待状态的进程链在一起就组成各种阻塞队列;

        • 另外,对于运行队列在单核 CPU 系统中则只有一个运行指针了,因为单核 CPU 在某个时间,只能运行一个程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值