线程和进程,以及用户线程映射

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值