前言
这里是操作系统开发Wiki(OSDev Wiki)翻译
之前我做过Windows桌面应用程序系列的翻译,但是因为懒主要是用的机翻
这次学习操作系统,看到别人推荐OSDev,也就来翻译一波
我会尽量在机翻的基础上改进,让大家能看得更舒服~
列表中没有给链接的大概率是还没翻……
耐心等候~我会赶的
如果有人愿意帮忙翻译,提出修改意见也可以联系我
email: lrcno6@foxmail.com
原文链接:https://wiki.osdev.org/Main_Page
欢迎来到OSDev.org
这个网站提供有关创建一个操作系统的信息,并为那些对操作系统开发感兴趣的人提供了一个社区,其中包含692篇wiki文章
OSDev Wiki需要你的帮助!有关更多信息,请参阅愿望清单
介绍
基本信息
- 介绍
- 所需知识
- 初学者易犯错误
- 入门
- 如何提问
- GCC交叉编译器
- 学习顺序
- 许可证
- 教程
- 常见问题
环境
- 内核、编译器和C库如何协同工作
- 使用C以外的其他语言
- UEFI和legacy BIOS
- 内联汇编
- 内联汇编示例
- 目标文件与重定位
Bare Bones
这个标题有亿点难翻……大概指最简单或最基础的东西
- C & C++
- Ada
- C#
- D
- FreeBasic
- Go
- Pascal
- Stivale
新手教程
- 新手教程1
- 新手教程2
- 新手教程3
- 新手教程4
- 新手教程5
- 新手教程6
- 新手教程7
- 新手教程8
操作系统示例
- Meaty Skeleton
引导与设置
- 引导流程
- 无盘引导
- 全局描述符表(GDT)
- GDT教程
- 中断
- 获取键盘输入
测试与调试
- 排除故障
- 测试
- 单元测试
- 内核调试
进阶
原文是Development,而进阶其实是Advancement,但个人觉得进阶更贴合下面文章
- 深入了解x86
- 编写一个操作系统
- 代码管理
编译器
原文是Compiler Development,多一个Development,但同上翻译的矛盾选择省去
- 什么是编译器?
- 自己写编译器(原文未完成)
- 代码生成与优化技术
- 条件与循环
- 尾递归和尾调用优化
原文已删,说其是完全错误的
Design Considerations
不会翻 +1
内核模型
- 宏内核
- 微内核
- 外内核及相关模型
- 模块化内核
任务模型
- 单任务系统
- 多任务系统
- 实时系统
内存和资源管理
- 内存管理——概述与介绍
- 内存分段
- 内存分页
- 内存分配
- 页框分配
- 内存管理单元/递归映射的深入描述
- 文件管理
- 文件系统
系统调用
- ARM
任务调度
- 进程与线程
- 上下文切换
- 调度算法
- 多处理器调度
- 进程阻塞——进程休眠和等待
进程同步
- 同步基元——信号量、互斥锁、自旋锁……
- 信号
进程通信
- 消息传递
- 共享内存
- 远程过程调用
资源
- 操作系统开发相关书籍
- 理论与设计的学术论文
- 汇编
- 预装GRUB的磁盘镜像
- 弃用但保留的标志位
- 芯片编号与首字母缩写索引
- 资源
工具
引导加载程序
- 引导加载理论
- GRUB
- Limine
- LILO
- XOSL
- System Commander
- Boot Magic
- 使用自己的引导加载程序
编译器
- GCC
- Cygwin
- MinGW
- Dev-C++
- DJGPP
- 构建GCC交叉编译器
- 可以使用的交叉编译组合
- 将GCC移植到你的操作系统
- 调用约定
- System V ABI
- Watcom C/C++
- Visual Studio
- Visual C++ Runtime
- TCC
- Smaller C
- 其他编译器
汇编编译器
- GAS(GNU as,已包含在binutils)
- FASM
- NASM
- YASM
- AT&T与Intel风格的差异
链接器
- LD(GNU ld,已包含在binutils)
- Link Archiver(GNU ar,已包含在binutils)
模拟器/虚拟机
- Bochs
- QEMU
- Virtual PC
- VMware
- VirtualBox
- SimICS
使用磁盘镜像
- 磁盘镜像
- 类Unix系统的回环设备
- MacOS X的hdiutil
- Windows工具
硬件
- 硬件分类
- 硬件资源
CPU
综述
- 寄存器机模型
- 内存架构
- 指令集架构
- 复杂指令集计算机(CISC)和精简指令集计算机(RISC)的历史
- 执行架构
- 多重处理架构
X86
模式
- 实模式
- 保护模式
- 虚拟8086模式
- x86-64
其他
- IA32架构族
- 特殊模块寄存器(MSR)
- 检测CPU速度
- 内联汇编
- 内联汇编示例
- CPU Bug
- SSE
- 在哪里可以找到端口信息?
- 寄存器
- x86
- x86-64
ESA/390
- Barebone内核
- 程序状态字(PSW)
- 执行存储区(PSA)映射
- z/OS 数据集文件系统(ZDSFS)
- 批处理IO通道子系统
ARM
- ARM概览
- 树莓派Bare Bones
内存
- 检测内存(x86)
- A20地址线
IRQ,异常,PIC,NMI,APIC和OPIC
- 中断无法工作
- 中断描述符表(IDT)
- 相关问题
- 终端服务程序(ISR)
- 中断
- 不可屏蔽中断(NMI)
- APIC
- PIC
- OPIC
时钟,计时器和计数器
- HPET
- APIC计时器
- 可编程间隔计时器(PIT)
- CMOS时钟和RTC芯片
- 检测CPU速度
显示
- 显卡加速
- Intel原生显卡
- 检测彩色和单色显示器
- 在保护模式打印字符串
- 文本模式的光标
- 在线性帧缓冲区绘图
- 内核输入输出
- VGA
- 资源
- 硬件文档
- 用VGA Fonts在图形模式下绘制字符
- 显示信号和计时
- 对Bochs和QEMU的BGA图形设备编程
音频
- 声音
- PC扬声器
- Sound Blaster 16
存储设备
- ATA(硬盘)
- ATAPI(光盘)
- AHCI(原生SATA)
- DMA
- NVMe
- 软盘控制器(FDC)
IO
- PS/2键盘
- 鼠标
- 串行端口(主要是RS-232)
即插即用
- 即插即用(PNP)
- 保护模式下的PNP调用
PCI与USB
- PCI
- PCIe
- USB
UEFI
- UEFI
- UEFI有问题的系统
ACPI
- ACPI
- RSDP
- AML
网卡和通信设备
- 以太网及其他有线网络
- 3c90x
- Intel 8254x
- Ne2000
- RTL8139
- RTL8169
- Intel Ethernet i217
- AMD PCnet
- 无线网络
- 802.11(WiFi标准)
非x86架构
- PowerPC
- MIPS
- Sparc
- ARM
参考信息
可执行文件类型
- 64位
- ELF
- PE
- COFF
- 32位
- ELF
- PE
- COFF
- 16位
- COM
- MZ
- NE
文件系统
- FAT
- Ext2
- SFS
- NTFS