计算机操作系统

警告
本文最后更新于 2023-07-13,文中内容可能已过时。

操作系统(一)

1.1 进程和线程的区别?

进程和线程都是操作系统中进行任务调度的基本单位,二者之间的主要区别如下:

  • 资源占用:进程是操作系统资源分配的基本单位,一个进程可以拥有多个线程,而线程是进程中的执行单元,是CPU调度的基本单位。每个线程共享所属进程的资源,如代码段、数据段、打开的文件等。而进程之间互相独立,互不干扰,每个进程有自己独立的资源空间,不同进程之间需要通过IPC(进程间通信)来进行通信和数据共享。
  • 调度和切换:操作系统在调度和分配CPU时,将进程作为基本的调度和分配单位,即进程拥有自己的调度队列。而线程是依附于进程而存在的,一个进程中的多个线程共享进程的时间片和资源,因此在调度和切换时,线程切换比进程切换更快,也更加轻量级。
  • 创建和销毁:进程的创建和销毁比线程更加复杂,创建一个进程需要为其分配资源、建立PCB(进程控制块)、建立内核对象等,而销毁进程需要回收资源、关闭打开的文件等。而线程的创建和销毁相对简单,只需要为其分配线程栈、建立TCB(线程控制块)等即可。
  • 通信和同步:进程之间通过IPC(管道、套接字、消息队列等)进行通信和数据共享,而线程之间可以直接访问同一进程的共享数据区,也可以通过锁机制实现同步。

综上所述,进程和线程在资源占用、调度和切换、创建和销毁、通信和同步等方面有着不同的特点,开发者在实际编程时需要根据具体的情况选择使用进程还是线程来完成任务。

1.2 协程与线程的区别?

协程和线程都是用于实现多任务的技术,但是它们的实现方式有所不同,具体区别如下:

  • 调度方式不同:线程由操作系统内核进行调度,而协程则是在用户空间中进行调度,不需要切换到内核态。
  • 并发性不同:线程是操作系统调度的最小单位,多个线程可以并行执行;协程则是在单线程内部通过协作式调度实现并发。
  • 内存使用不同:线程是由操作系统内核创建的,需要占用一定的系统资源,而协程则是由用户程序创建,不需要占用额外的系统资源。
  • 上下文切换开销不同:线程在切换时需要保存和恢复所有的寄存器状态和内核堆栈,而协程只需要保存和恢复少量的寄存器状态,开销较小。
  • 编程难度不同:线程的编程难度相对较大,因为多线程之间需要共享资源并进行同步,而协程则是在单线程内部调度,因此编程难度相对较小。

总之,线程是操作系统内核的调度对象,具有独立的系统资源,可以并行执行多个任务;而协程是用户程序的调度对象,不需要占用额外的系统资源,通过协作式调度实现任务之间的切换。

1.3、并发和并行的区别?

并发和并行都是指同时处理多个任务的方式,但是它们有不同的含义。

并发是指一个处理器同时处理多个任务,这些任务通常是通过在不同的时间间隔内交替进行的,这样在同一时刻可以看到有多个任务在运行。这些任务可以是在同一个程序内的不同线程,也可以是在不同程序之间的交互,例如客户端与服务器之间的通信。

并行是指使用多个处理器同时处理多个任务,这些任务在同一时刻可以看到有多个任务在同时运行。与并发不同的是,并行需要多个处理器或多个计算核心,而并发则可以在单个处理器上执行多个任务。

简单来说,并发是在一个处理器上同时执行多个任务,而并行是在多个处理器或计算核心上同时执行多个任务。

1.4 进程与线程的切换流程?

进程与线程的切换流程如下:

  1. 当前进程或线程执行到阻塞状态(如等待I/O完成)时,触发切换操作。
  2. 操作系统内核保存当前进程或线程的上下文(即当前的寄存器值和程序计数器等信息),并将处理器分配给另一个进程或线程。
  3. 内核从调度队列中选择另一个进程或线程,并恢复其保存的上下文信息。
  4. 处理器开始执行新的进程或线程,从之前保存的状态恢复执行。

在进程切换时,需要将整个进程的上下文信息保存下来,包括进程的虚拟内存、全局变量等,切换时还需要进行内存映射,开销比较大。

在线程切换时,只需要保存当前线程的上下文信息即可,线程共享进程的虚拟内存,切换时不需要进行内存映射,开销较小。

1.5 为什么虚拟地址空间切换比较耗时?

虚拟地址空间切换的耗时是因为它涉及到了硬件和操作系统的复杂操作。当进程或线程切换时,需要保存当前的程序状态(寄存器值、堆栈指针等)和上下文信息(当前指令位置、程序计数器等)。然后,内核必须选择另一个进程或线程,并将它的状态和上下文信息装入内存,这样才能保证程序能够继续运行。这个过程涉及到多个操作系统的内核和硬件机制,例如上下文切换、内存管理和硬件中断等。

在这个过程中,为了切换到另一个进程或线程,需要保存和恢复大量的状态信息,包括内核上下文和硬件寄存器等。这些操作需要耗费大量的CPU时间和内存带宽,因此切换过程通常是相对比较耗时的。

ref:
[1].https://zhuanlan.zhihu.com/p/616080301

Buy me a coffee~
支付宝
微信
0%