内核级线程和用户级线程

内核空间和虚拟空间

地址空间被分为内核空间和用户空间,为虚拟地址空间,内核维护虚拟地址空间到物理地址空间的映射。内核空间的访问比较严格,操作系统限制对其的访问,但是向外暴露了一些必要的接口访问。cpu权限被分为两种:内核态和用户态,如果需要调用内核接口就需要内核态权限,称为系统调用。系统调用就是操作系统内部定义的一些函数。

用户级线程和内核级线程

用户级线程

用户级线程由应用级别的线程库进行生成和管理,其不属于内核部分,线程的存在是内核无法感知的,其优点在于不需要内核的参与,没有内核态切换的开销。但是也造成了这种模型并不能实现真正的并发,假设进程中由一个线程阻塞,那么会造成整个进程的阻塞,即使由多个CPU可以使用。

内核级线程

内核级线程由内核直接创建和进行管理,对内核是可见的,可以对每一个线程进行调度,如果一个线程进行阻塞也不会影响其他线程的运行,但是开销相比用户级线程大的多,创建、切换、同步宪曾都需要更大的内核资源

两级线程

目前常用的线程模型就是采用两级线程的方式,Go中的实现方式就是goroutine。结合内核级线程和用户级线程的优点,由内核创建多个内核级线程对用户级线程进行管理,线程库对管理线程实现动态的内核级线程的关联。此种模型设计难度更大、编码难度更高,但是有效降低了内核开销,并且使多线程优点得到了发挥。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值