月度归档:2016年11月

操作系统概念——存储和文件系统接口

第十章 大容量存储设备

10.1 总览
永久大容量存储设备常见的由磁盘、固态硬盘(SSD)、磁带等.
磁盘是机械的,速度较慢且容易损坏;
SSD是电子的速度较快且不容易坏,耗电更低,但成本较高寿命有限.

10.2 存储盘结构
磁密度一致(CLV):外侧扇区比内侧要多,磁头越靠中心......

继续阅读

操作系统概念——虚拟内存

第九章 虚拟内存

9.1 背景
有些情况下进程的空间不需要全部都在内存当中,比如:部分异常处理代码不会被用到;
申请的内存如数组只用了较小的一部分;部分特性或模块一般不启用等.
即使全部都要用到,一般也不会在同一时间访问.
虚拟内存提供一种机制,让进程只有部分按需加载内存中运行,并且不......

继续阅读

操作系统概念——内存管理

第八章 内存管理
8.1 相关背景
从硬件角度来看,首先需要解决主存读取速度问题.
访问内存比寄存器等指令慢很多,所以会造成瓶颈,主要通过cache来缓解,另外还有超线程调度等手段.
其次硬件要解决地址保护问题,防止用户进程访问到内核或其他进程等非法地址.
一个简单的办法是通过设置base......

继续阅读

Linux内核数据结构(链表、队列、红黑树)

Linux和其他大型软件项目一样,需要用到各种各样的数据结构.
在内核场景下,对数据结构的实现主要有以下几点要求:
1) 高性能:作为内核基本库一定要快.
2) 通用性:内核开发者尽可能复用,不重复造轮子防止膨胀.
3) 易用性:接口和参数尽量少,用法明确.
4) 安全性:主要指并发访问等......

继续阅读

Linux内核代码统计

用的是当前最新的4.8.7版本.
之前一直听说内核代码上千万行一辈子看不完云云,初衷应该是体现分布式协作开发的力量吧,但同时也容易打击到入门者的积极性.
实际上占比大的都是平行扩展出来的部分或可加载模块,简单统计下即可看出:

total=0
cd ${src_home}
echo......

继续阅读