本科的时候就学过OS了,但当时更多是一种无目的的学习,一整本厚厚的书,对我来说全是知识点。
因为读研后,还是要面临找工作,而网上零零碎碎的面试题,知识点又太稀碎。
所以打算面向找工作,好好地再学习一遍OS。不会过于详细,但也不会一知半解。
一、概述
1.操作系统是什么?
本质是软件,为用户提供一个更简单的计算机模型,达到响应用户指令控制硬件的效果。
那用户为什么不直接控制硬件?因为计算机系统太复杂,包含了处理器,主存等多个设备。
2.计算机的运行模式
1)内核态:OS的运行状态,可以执行任何的指令,访问计算机的任何资源(类似管理员的地位,有特权)
2)用户态:其他软件(例如浏览器,杀毒软件,用户自己写的程序)的运行状态,只能执行非特权的指令,访问该软件自己的存储空间
为什么需要两种运行模式?
为了安全,如果一个用户软件可以直接访问计算机的所有资源,那它就可以随意盗取信息,控制硬件了。
处于用户态的软件如何执行内核态下才允许执行的指令?
使用系统调用,这样系统会转为内核态,并交由操作系统处理,执行完命令后,会切回用户态。
二、硬件
1.CPU
功能:从内存中提取指令并执行。
每个CPU有特定的一组指令集,不通用。(例如:ARM x86指令集不同)
1)为什么CPU里有寄存器?
因为CPU执行指令的速度比从内存中提取指令或数据来得快,为了提升性能,就有了可以快速读取内容的寄存器,一般用于保存关键变量和临时结果。
2)有哪些特殊的寄存器?
程序计数器PC(Program Counter) : 存储下一条要提取的指令地址,当CPU提取指令后,会自动指向下一条指令地址。
堆栈指针: 指向当内存栈顶
3)CPU还有哪些设计用于提升性能?
流水线:并行执行 读取指令,执行指令等操作
超标量:有多个执行单元,用于执行不同的指令
多线程:并发处理,宏观上好似是有多个CPU,其实是交替运行不同的线程
2.内存
寄存器:在CPU中,访问速度快
高速缓存: 存储更频繁使用的资源
主存:容量大,存储大部分内容
磁盘:价格便宜,机械装置,所以随机访问速度慢
1)为什么存储器用的是分层次结构?
因为没有一类存储器可以同时满足读写快速且便宜。
3.IO设备
OS --> 设备驱动程序 --> 设备控制器 --> 设备