当前位置: 代码迷 >> 综合 >> OSDev——主页
  详细解决方案

OSDev——主页

热度:84   发布时间:2023-11-13 22:04:11.0

前言

这里是操作系统开发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