面试复习(操作系统)

用户态和内核态

  • 什么时候从用户态转为内核态
    • 程序在用户态执行时,当需要进行系统调用的时候,或者遇到异常,或者外围设备引发的中断,如文件读取与写入,程序报错,键盘输入,网络操作等行为时,程序会从用户态转为内核态,直到执行此行为结束时,再返回用户态
  • 为什么要转至内核态
    • 通过限制用户态的权利,使得有限的系统资源能够受到系统的控制与管理,由系统进行资源的分配
  • 用户态和内核态的切换原理
    • 实质上就是中断,保存当前用户态的所有寄存器信息等,然后将代码指针指向中断处理程序

进程和线程

  • 区别
    • 进程是相对于操作系统的最小单位,每个进程都有唯一一个 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/
作者
Shiroha
发布于
2021年2月23日
许可协议