Github 开源了:实战操作系统的硬核笔记!
扫描二维码
随时随地手机看文章
部分截图《给操作系统捋条线》根据 主要讲述了以下问题问题:
- 启动的大概过程, 这五个步骤是怎样的?
- 实模式保护模式的特点,如何过渡?
- ,段寄存器,段选择子,段描述符,分段,平坦模式的简单认识?
- 分页机制的特点,如何开启的?
- 逻辑地址,虚拟地址,线性地址,物理地址各类地址什么意思,如何转化?
- 操作系统如何自举,内核如何从磁盘加载到内存的?
- 文件的简单认识?
- 多处理器的情况下计算机是如何启动的,什么是 什么是 ,通用启动算法是啥?
- 磁盘的简单认识,磁盘驱动程序如何实现(如何读写磁盘)?
- 如何设计一个简单的日志系统,为什么日志系统能够保证数据的一致性?
- ,文件,目录,目录项,文件描述符,文件结构体,硬链接,软链接各种名词到底什么意思,它们之间又有什么关系?
- 如何理解一切皆文件,为什么 , 这两个系统调用就可以读写任意类型的文件?
- 一些常见的文件系统调用比如 , 等等如何实现的?
-
中断和异常有什么区别?
-
什么是软件中断? 软件中断和软中断是一个东西吗?
-
中断控制器 、(、) 的简单认识,了解其基本工作原理?
-
中断的处理过程是怎样的?
- 向量号,,门描述符(中断门、陷阱门等)的简单认识
- 如何定位中断服务程序(向量号,,,门描述符,段描述符等之间的关系)?
- 所谓的保存现场与恢复现场到底什么意思?
- 中断期间栈是如何变化的(用户栈如何变化到内核栈,内核栈又如何变化到用户栈)?
-
多处理器下中断有何不同,又是如何处理的?
-
系统调用大致过程是怎样的?
-
系统调用时用户态下程序的参数如何传递给内核?
- 系统调用是如何实现的(如何创建一个进程)?
- 第一个进程又是如何创建的?
- 系统调用是如何实现的,程序是如何从磁盘加载到内存然后运行的?
- 程序与进程的区别?
- 调度器如何实现,一个进程如何被调度上 ?
- 常见的调度算法及其优缺点?
- 进程如何切换的,一些资源如寄存器,,页表是如何变化的?
- 如何实现进程的休眠和唤醒,, 函数如何实现?
- 如何实现的等待与退出,, 函数如何实现?
- 僵尸进程,孤儿进程什么意思,如何解决?
- 进程是啥,有什么作用,如何实现?
- 程序是从 开始执行的吗(简单了解了解运行库)?
- 堆到底是个什么玩意儿?如何实现?如何组织管理?
- 的物理内存是如何管理的,虚拟内存又是如何管理的,如何分配与回收内存?
- 虚拟地址空间物理地址空间应该如何理解?
- 为什么一般情况下 0 地址不能访问,事实上 0 地址就真的不能访问吗?
- 常见的两种锁,自旋锁、休眠锁如何设计?
- 常见死锁判断,如何解决
- 键盘、显卡、串口的简单认识,键盘驱动,显卡驱动,串口驱动如何实现?
- 按下一个键到输出到屏幕这之间发生了什么?
- 组合键的特殊功能是如何实现的?
- 打印函数 是如何实现的, 和 两系统调用的完整过程?
- 为什么文件描述符 0、1、2 就表示标准输入输出错误呢?
- 如何实现一个简单的 ?
- 重定向什么意思,如何实现?
- 管道什么意思,如何实现?
- 一些常用命令如 、等等如何实现的?