操作系统-1.学习资料 2.面试题 3.知识点

547 阅读4分钟

学习资料

书籍

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是三级映射

段页映射

虚拟文件系统

虚拟文件系统为不同的底层文件系统提供了一个门面模式,统一对外提供服务,屏蔽不同底层文件系统的不同。


参考
blog.csdn.net/iter_zc/art…

缓存

文件缓存

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.三级缓存和内存通信


参考
blog.csdn.net/iter_zc/art…