面试复习(操作系统)
用户态和内核态
- 什么时候从用户态转为内核态
- 程序在用户态执行时,当需要进行系统调用的时候,或者遇到异常,或者外围设备引发的中断,如文件读取与写入,程序报错,键盘输入,网络操作等行为时,程序会从用户态转为内核态,直到执行此行为结束时,再返回用户态
- 为什么要转至内核态
- 通过限制用户态的权利,使得有限的系统资源能够受到系统的控制与管理,由系统进行资源的分配
- 用户态和内核态的切换原理
- 实质上就是中断,保存当前用户态的所有寄存器信息等,然后将代码指针指向中断处理程序
进程和线程
- 区别
- 进程是相对于操作系统的最小单位,每个进程都有唯一一个 PID 与之对应,每个进程都有独立的内存空间,代码段,数据段。进程之间相互独立且不会相互影响,一个进程可以包含多个线程。CPU在多个进程之间切换时会带来较大的开销。进程可以由CPU单独启动
- 线程是相对于处理器的最小单位,单个CPU只能同时处理一个线程,相同进程的线程之间共用内存空间,共用代码段和数据段,线程不可以单独执行,线程没有 PID 用于区别,线程出现错误或者异常时会影响此进程内的所有线程,CPU在同一个进程的线程内切换所带来的开销相对较小
- 进程之间的通信
- 管道(无名和有名管道)
- 消息队列
- 共享内存
- 不同的进程可以同时将同一个内存页面映射到自己的地址空间中
- 信号
- 套接口(网络)
- 线程之间的通信
- 锁机制(互斥锁、读写锁)
- wait 和 notify
- violate
- 进程切换代价
- 切换页目录
- 切换内核栈
- 切换上下文
- 线程切换代价
- 切换内核栈
- 切换上下文
内存
- 内存寻址是如何实现的
- 段页式,程序进行分段,包括代码段,数据段等等,每一段再分页,并由 MMU 保存页表
- MMU 通过页表将逻辑地址转为物理地址
缓存
- 缓存列
- 每次计算机读取数据放入缓存的单位长度
文件系统
- iNode 结构
- 文件树结构保存了一个目录的子文件/目录的名称以及对应的 iNode 号码
- 需要访问文件内容时,需要通过 iNode 号码来获取文件的详细信息
- iNode 不包含文件名信息,指包含文件的 “元信息”
中断
面试复习(操作系统)
https://blog.mauve.icu/2021/02/22/interview/operating-system/