- 内核空间:供操作系统内核使用
- 用户空间:供各个进程使用,并且所有进程共享
- 进程:一个CPU上有多个线程,代表一个应用程序,是系统进行资源分配和调度的基本单位,在CPU上使用时间片轮转法进行切换调用,多个进程共享所有的系统资源
- 线程:一个进程包含多个线程,共享进程资源.线程是CPU上被调度执行的试题,线程共享进程的地址空间,但线程也有独立栈帧用于存放被调用还没返回的过程使用
- 内核态:操作系统内核所运行的模式,运行在该模式的代码,可以无限制地对系统存储、外部设备进行访问。运行于内核空间
- 用户态:以处理器的最低特权级别进行调用,运行于用户空间
- 陷入内核:当一个任务(进程)执行系统调用或触发异常而中断时会陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)
在用户空间实现线程: - 第一种方法,用户线程:将整个线程包放在用户空间中,内核对线程一无所知.CPU认为该进程只有一个线程,已经out
- 优点:用户级线程可以在不支持线程的操作系统上实现
- 切换迅速,比在内核中调用内核指令快很多
- 每个线程都有自己的调度算法
- 缺点:无法阻塞系统调用,例如等待输入输出的时候,整个进程都会被阻塞.
- 无法处理页面故障,当页面故障时CPU会到磁盘上寻找指令,这时候进程会被阻塞
- 只有一个线程可以在CPU上运行,除非这个线程放弃CPU,单独进程内部,没有时钟中断,所以不能用轮转调度. 解决方法开销也大,速度慢
- 优点:用户级线程可以在不支持线程的操作系统上实现
- 第二种方法,用户线程 在内核中实现线程,
- 优点,所有阻塞都可以通过系统调用的形式实现.但是代价可观,当一个进程中的线程被阻塞时,CPU可能会执行当前线程中的其他线程,但也有可能执行其他进程中的线程.
- 缺点:系统调用的开销大,
- 混合实现
- 一般是用户线程1:1轻量级进程(内核线程的高级接口),
- 优点:线程的创建,切换,析构等操作一样廉价,并且可支持大规模的用户线程并发
- 使用轻量级进程,当做用户线程和内核线程的桥梁.这样可以使用系统提供的线程调度功能及处理器映射,并且线程的系统调用通过轻量级线程完成,不会发生进程完全被阻塞.
- 优点:线程的创建,切换,析构等操作一样廉价,并且可支持大规模的用户线程并发
- 一般是用户线程1:1轻量级进程(内核线程的高级接口),
线程和进程,以及用户线程映射
最新推荐文章于 2022-02-07 19:30:47 发布