操作系统
本文最后更新于14 天前,其中的信息可能已经过时,如有错误请发送邮件到3368129372@qq.com

进程间如何通信

  1. 管道连接内核空间。缺点:管道效率低,不太适合通信。
  2. 使用消息队列:内核中的消息链表。
    缺点:

    • 链表有长度上限,不太适合较大数据的传输
    • 内核态与用户态间拷贝数据存在开销
  3. 共享内存,两个应用写的虚拟内存映射到同一个物理内存中
  4. 信号量
  5. socket(socket支持同一个服务器不同进程间通信)

进程间上下文切换

在操作系统中,进程和线程的切换是多任务处理的核心部分,涉及到上下文切换。上下文切换是指操作系统在保存当前执行的进程或线程的状态,并恢复另一个进程或线程的状态,使其能够继续执行。以下是进程和线程切换的详细过程和区别:

进程切换

  1. 保存当前进程的上下文

    • 当操作系统决定切换进程时,它会保存当前进程的上下文,包括程序计数器(PC)、寄存器状态、内存管理信息(如页表)、文件描述符表等。
    • 这些信息通常存储在进程控制块(PCB, Process Control Block)中。
  2. 更新进程调度队列

    • 操作系统将当前进程的状态更新为等待(waiting)或就绪(ready),并将其放入相应的调度队列中。
    • 选择下一个要运行的进程,并将其状态更新为运行(running)。
  3. 加载新进程的上下文

    • 操作系统从新进程的 PCB 中恢复其上下文,包括程序计数器、寄存器状态、内存管理信息等。
    • 切换到新进程的地址空间(虚拟内存)。
  4. 切换到新进程

    • 更新 CPU 的程序计数器,使其指向新进程的下一条指令。
    • 开始执行新进程。

线程切换

线程切换与进程切换类似,但由于线程共享同一进程的地址空间和资源,切换的开销较小。

  1. 保存当前线程的上下文

    • 当操作系统决定切换线程时,它会保存当前线程的上下文,包括程序计数器、寄存器状态等。
    • 这些信息通常存储在线程控制块(TCB, Thread Control Block)中。
  2. 更新线程调度队列

    • 操作系统将当前线程的状态更新为等待或就绪,并将其放入相应的调度队列中。
    • 选择下一个要运行的线程,并将其状态更新为运行。
  3. 加载新线程的上下文

    • 操作系统从新线程的 TCB 中恢复其上下文,包括程序计数器、寄存器状态等。
  4. 切换到新线程

    • 更新 CPU 的程序计数器,使其指向新线程的下一条指令。
    • 开始执行新线程。

区别

  1. 上下文切换的开销

    • 进程切换的开销较大,因为需要切换整个地址空间和相关资源,如内存页表、文件描述符等。
    • 线程切换的开销较小,因为线程共享进程的地址空间和大部分资源,只需切换寄存器和程序计数器等少量信息。
  2. 调度粒度

    • 进程调度是操作系统的核心功能,涉及到进程的创建、销毁、同步和通信等。
    • 线程调度可以在用户态或内核态进行,用户态线程库(如 Pthreads)可以实现用户级线程的调度,而内核态线程则由操作系统内核调度。

上下文切换的触发条件

  1. 时间片到期

    • 操作系统使用时间片轮转调度算法时,当当前进程或线程的时间片用完,会触发上下文切换。
  2. 阻塞操作

    • 当前进程或线程执行阻塞操作(如 I/O 操作、等待信号量等)时,会触发上下文切换。
  3. 优先级调度

    • 操作系统根据进程或线程的优先级进行调度,当有更高优先级的进程或线程需要运行时,会触发上下文切换。
  4. 中断处理

    • 硬件中断(如时钟中断、I/O 中断)会触发操作系统进行上下文切换,以处理中断事件。

总之,进程和线程的切换是操作系统实现多任务处理的关键机制,通过上下文切换,操作系统能够在多个进程或线程之间高效地分配 CPU 资源。

感谢您的收看~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇