DAY9:进程与线程 | 并行与并发 | 用户态与核心态(内核态)

目录

进程与线程

并行与并发

用户态与核心态(内核态) 


进程与线程

进程是资源分配和调度的基本单位。

线程是程序执行的最小单位,线程是进程的子任务,是进程内的执行单元。 一个进程至少有一个线程,一个进程可以运行多个线程,这些线程共享同一块内存。

两者的区别如下:

1.资源开销

  • 进程:由于每个进程都有独立的内存空间,创建和销毁进程的开销较大。进程间切换需要保存和恢复整个进程的状态,因此上下文切换的开销较高。
  • 线程:线程共享相同的内存空间,创建和销毁线程的开销较小。线程间切换只需要保存和恢复少量的线程上下文,因此上下文切换的开销较小。 

2.通信与同步:

  • 进程:由于进程间相互隔离,进程之间的通信需要使用一些特殊机制,如管道、消息队列、共享内存等。
  • 线程:由于线程共享相同的内存空间,它们之间可以直接访问共享数据,线程间通信更加方便。

3.安全性:

  • 进程:由于进程间相互隔离,一个进程的崩溃不会直接影响其他进程的稳定性。
  • 线程:由于线程共享相同的内存空间,一个线程的错误可能会影响整个进程的稳定性。

并行与并发

并行是同一时刻执行多个任务。

并发是相同的时间段内执行多个任务,任务可能交替执行,通过调度实现。

并行是指在同一时刻执行多个任务,这些任务可以同时进行,每个任务都在不同的处理单元(如多个CPU核心)上执行。在并行系统中,多个处理单元可以同时处理独立的子任务,从而加速整体任务的完成。

并行是指在同一时刻执行多个任务,这些任务可以同时进行,每个任务都在不同的处理单元(如多个CPU核心)上执行。在并行系统中,多个处理单元可以同时处理独立的子任务,从而加速整体任务的完成。


用户态与核心态(内核态)

1.用户态和内核态的区别:

用户态和内核态是操作系统为了保护系统资源和实现权限控制而设计的两种不同的CPU运行级别,可以控制进程或程序对计算机硬件资源的访问权限和操作范围。

  • 用户态:在用户态下,进程或程序只能访问受限的资源和执行受限的指令集,不能直接访问操作系统的核心部分,也不能直接访问硬件资源。
  • 内核态:核心态是操作系统的特权级别,允许进程或程序执行特权指令和访问操作系统的核心部分。在核心态下,进程可以直接访问硬件资源,执行系统调用,管理内存、文件系统等操作。

2.在什么场景下,会发生内核态和用户态的切换 

  • 系统调用:当用户程序需要请求操作系统提供的服务时,会通过系统调用进入内核态。
  • 异常:当程序执行过程中出现错误或异常情况时,CPU会自动切换到内核态,以便操作系统能够处理这些异常。
  • 中断:外部设备(如键盘、鼠标、磁盘等)产生的中断信号会使CPU从用户态切换到内核态。操作系统会处理这些中断,执行相应的中断处理程序,然后再将CPU切换回用户态。

你可能感兴趣的:(开发语言,c++,缓存)