时间:2017-08-17 19:56:34来源:魔法系统之家下载作者:zhijie
线程相关
用户线程&内核线程
线程从一开始诞生就有两个分类:用户级线程 和 内核级线程。
我们在Linux上常见的是内核级线程, 即线程调度相关操作都在内核里实现, 不太常见的是用户级线程。
用户级线程的优势是:
1.线程切换成本低,不用内核操作
2.用户可以自定义线程调度策略
3.跟操作系统无关,可以很快移植到另外一台机器上
但是用户线程也有如下问题:
1.一个线程的阻塞会影响其他线程,因为操作系统看不到别的线程
2.不能很好的利用多核能力,因为操作系统会把一个内核进程放到一个CPU上
目前Linux上只使用内核级线程, Solaris上面两者都提供。
线程切换
一个进程的上下文主要有如下几个部分的信息构成:
1.程序计数器
2.寄存器信息
3.栈信息
一个进程切换的过程包含:
1.保存当前进程的上下文
2.将当前进程加入操作系统对应队列
3.通过调度算法选择另外一个进程
4.调整虚存映射
5.加载新进程的上下文
但是线程切换就不一样了,之需要切换PC寄存器指向的代码地址就好,其他操作都不用做,所以线程切换的成本比进程切换低多了。
互斥和同步
简介
当多个进程需要对同一个资源进行访问的时候, 为了避免同时使用这个资源造成的混乱, 所以需要考虑进程间的互斥。
典型的互斥实现方案如下:
方案介绍
中断禁用
杀敌一千, 自损八百。虽然能实现互斥, 但是大大降低了处理器的执行效率。而且再多处理器体系结构中, 他还不能达到互斥
专用机器指令
往往是通过一个不可中断的指令, 用于原子修改内存中的值, 常见的两个指令是testset和exchange, 其对应的demo代码如下图。该方案的好处是实现简单, 坏处是使用了忙等待, 可能出现饥饿, 可能死锁, 需要操作系统层进行管理和避免。
2017-08-17
如何修复一个Panic的Linux内核?2017-08-17
Linux删除文件(夹)、创建文件(夹)命令是什么?2017-08-17
Linux系统如何配置双显卡?为什么Arch Linux不适合当作服务器操作系统?可能很多用户都发现了,Linux服务器操作系统一般都是Ubuntu Server、Cent OS、Fedora或者Red Hat等,为什么很少看到Arch Linux呢?因为Arch Linux在服务方面确实存在一些劣势,下面...
2017-08-17
有些用户为了使桌面更好看、更具动感性,于是就想要设置系统的3D桌面特效,不过不少人却不知道Ubuntu 3D桌面特效怎么设置?其实方法很简单,如果你不知道的话,那就赶紧来看看小编整理的Ubuntu 3D桌面特效设置方法吧!...
2017-08-17