学习资料
书籍
1.纯理论
操作系统之哲学原理(第2版) //中国人写的,文字流畅
book.douban.com/subject/268…
操作系统概念(原书第9版)
book.douban.com/subject/302…
操作系统概念——Java 实现(第七版)//java版本
book.douban.com/subject/470…
现代操作系统(原书第4版) book.douban.com/subject/270…
Operating Systems: Three Easy Pieces pages.cs.wisc.edu/~remzi/OSTE…
深入理解计算机系统(原书第3版) book.douban.com/subject/269…
2.理论和实践相结合
操作系统:设计与实现(第三版)//下册全部是源码
book.douban.com/subject/123…
操作系统:精髓与设计原理(原书第6版) book.douban.com/subject/506…
3.怎么实现操作系统
一个操作系统的实现
book.douban.com/subject/373…
操作系统真象还原 //文字口语化,读起来很轻松
book.douban.com/subject/267…
深度探索Linux操作系统:系统构建和原理解析 book.douban.com/subject/257…
Linux 内核设计的艺术(第2版) : -图解Linux操作系统架构设计与实现原理-第2版 //完全看不懂,前置知识太多
book.douban.com/subject/247…
网络资料
计算机底层知识拾遗
这个主题是对计算机的底层知识进行总结,整理,深入计算机组成原理,操作系统,网络等基础知识,并和上层应用层进行结合,打通底层知识和应用层知识的通道
blog.csdn.net/ITer_ZC/col…
操作系统是如何管理内存的 limboy.me/tech/2018/0…
荐书:Operating Systems: Three Easy Pieces //开源书籍,官网有pdf
zhuanlan.zhihu.com/p/49286109
面试题
知识点
内存管理
两个目标
1.每个程序的内存独立
2.虚拟内存和物理内存的独立
两个程序之间的数据,是放在不同的内存,不能互相影响。这是第一个目标。
物理内存的地址在不同的机器/cpu情况下,怎么读写地址是不一样的,所以必须有一个抽象,对物理内存。这是第二个目标。
发展史
1.每个程序直接分一块内存
2.页映射
3.段页映射
每个程序分一块内存,很容易出现内存碎片。
于是,就出现了页式内存,没有内存碎片。具体是虚拟内存地址和物理内存地址的映射,每个虚拟地址就是一个页的大小,比如16KB。一个程序最多浪费了平均半个页的内存。
一个程序在逻辑上分为多个段,每个段独立的内存空间,相当于是多个进程。每个段的内部又使用页映射。
我们在引入分页系统时已经讲过,分页系统不会产生外部碎片,一个进程占用的内存空间可以不是连续的,并且一个进程的虚拟页面在不需要的时候可以放在磁盘上。这样,在分页系统下,进程空间的增长和虚拟内存的实现都解决了。
邹恒明. 操作系统之哲学原理 第2版 (Chinese Edition) (p. 269). 机械工业出版社. Kindle 版本.
架构图
映射:页映射,即虚拟地址和物理地址的映射

映射细节

映射
发展史
1.一级映射数据
2.多级
一级的缺点是数据太多,太占内存。所以,有了多级,多级一开始只把顶级放在内存,其他用的时候再读磁盘数据到内存。多级的缺点是,需要从磁盘读数据到内存,速度慢。
多级映射
多级映射架构图

比如,linux是三级映射

段页映射

虚拟文件系统

虚拟文件系统为不同的底层文件系统提供了一个门面模式,统一对外提供服务,屏蔽不同底层文件系统的不同。
缓存
文件缓存
1.页缓存
2.块缓存
在 Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache,另一个 Buffer Cache,每一个 Page Cache 包含若干 Buffer Cache。
page cache大小4k,buffer cache大小1k。

区别
页是逻辑(文件系统)的缓存。
磁盘块是物理(磁盘)的缓存。
页是针对文件系统。
磁盘块是针对磁盘,写入数据到磁盘的时候。
参考
www.ibm.com/developerwo…
zhuanlan.zhihu.com/p/35277219
cpu的缓存

1.cpu的核只和寄存器和一级缓存通信
2.一级缓存共用二级缓存
3.二级缓存共用三级缓存
4.三级缓存和内存通信