跳至主要內容

进程管理

LincZero大约 2 分钟

进程管理

(更详细的见 “《小林coding》” 笔记部分)

【概念】进程 线程 协程(复制自个人的Go语言笔记)

介绍

  • 程序 (Program):用某种语言写的为了完成特定任务的一组指令集合,静态的

  • 进程 (Process):程序一次执行过程。每个进程有不同的内存区域(虚拟内存),有产生、存在、消亡的生命周期

    • 系统相关:计算机系统资源的分配单位
    • 上下文切换需要保存和恢复
      • (都要部分,见下总结)
      • 内存管理信息:页表、内存分段信息等
      • I/O状态信息:打开的文件描述符、网络连接等
      • 系统资源信息:CPU使用时间、内存使用量等
      • CPU调度信息:如进程优先级、调度队列等,确保调度策略的一致性
  • 线程 (Thread):进程可细分为线程。可同一时间执行(并发)

    • 系统相关:CPU调用的单位
    • 上下文切换需要保存和恢复
      • (都要部分,见下总结)
      • 线程栈
      • 线程栈 状态:包括线程的优先级、线程标识符(TID)、线程的状态(运行、就绪、阻塞等)等
      • 线程栈帧 特有的同步数据
  • 协程 (Goroutine):又称微线程,纤程、轻量级线程。本质还是一个线程

    • 系统相关:无关,纯用户态的
    • 上下文切换需要保存和恢复
      • (都要部分,见下总结)
      • 协程栈
      • 协程栈 通道和调度信息
      • 协程栈帧 用户定义的数据
  • 总结

    • 上下文切换需要保存和恢复:“都要” 指:
      • 寄存器:程序计数器(PC)、堆栈指针(SP)、状态寄存器、通用寄存器等。
      • 状态信息:包括进程或线程的优先级、标识符、状态等