博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户级线程,内核级线程和硬件线程
阅读量:5258 次
发布时间:2019-06-14

本文共 574 字,大约阅读时间需要 1 分钟。

1.用户级线程在用户层通过线程库来实现。对它的创建,撤销和切换都不利用系统的调用。

2.核心级线程由操作系统直接支持,即无论是在用户进程中的线程,还是系统进程中的线程,它们的创建,撤销和切换都由核心实现。

3.硬件线程就是线程在硬件执行资源上的表现形式。单个线程一般都包括上述三个层次的表现:用户级线程通过操作系统被作为核心级线程实现,再通过硬件相应的接口作为硬件线程来执行。

对用户级线程来讲,内核也并不知道它的存在,所以所有对用户级线程的管理和调度都是在用户空间来进行的。用户级线程的切换通常是发生在一个应用进程的诸线程之间,这是,不仅无需通过中断进入操作系统的内核,而且切换的规程也远比进程调度和切换的规则来得简单。例如,当一个线程封锁后会自动切换到下一个具有相同功能的线程。因此,用户级线程的切换速度特别快。但是用户线程也有它自身的缺点,例如,如果内核是单线程的,那么任何一个用户级线程若执行了阻塞系统调用就会导致该线程所属的进程阻塞。此时如果采用的是内核级线程,则调度室以线程为单位。当一个线程调用一个系统调用时,内核把系统调用只看做是该线程的行为,因而封锁该线程,于是可以再调度该进程中的其他线程执行。

转载于:https://www.cnblogs.com/phquan/archive/2011/12/27/2303921.html

你可能感兴趣的文章
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>