Monthly Archives: 11月 2017

RCU

一、 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就说获得锁的开销与访存速度相关,另外在大部分非x86架构上获取锁使用了内存栅(Memory Barrier),这会… Read More »

MCS SpinLock

引言 自旋锁(Spinlock)是一种在 Linux 内核 [1] 中广泛运用的底层同步机制,长期以来,人们总是关注于自旋锁的安全和高效,而忽视了自旋锁的“公平”性。排队自旋锁(FIFO Ticket Spinlock)是内核开发者 Nick Piggin 在Linux Kernel 2.6.25 版本中引入的一种新型自旋锁,它通过保存执行线程申请锁的顺序信息解决了传统自旋锁的“不公平”问题 [4]。 排队自旋锁仍然使用原有的 raw_spinlock_t 数据结构,但是赋予 slock 域新的含义。为了… Read More »

关于TTY

TTY应该说是TeleTYpe的缩写,teletype中文叫做“电传打字机”,最初被用于传输一些商业电报。当计算机技术发展起来之后,teletype被用于了其输入输出设备。对于多种teletype模型的存在,操作系统内核对一些底层的细节进行了封装,比如word length(字长), baud rate(波特率), flow control(流控制), parity(奇偶校验), 以及一些基本行编辑(line editing)的控制码(control code)。而对于一些比如Fancy cursor m… Read More »