编写PC操作系统的参考资料(不断更新)

更新日期:2015年3月12日

编写PC操作系统的参考资料

编译器等工具

汇编语言:

MASM 6.11,MASM 11(Windows):http://www.masm32.com/

FASM(跨平台):http://flatassembler.net/

NASM(跨平台):http://www.nasm.us/

TASM:http://turbo.brothersoft.com/turbo-assembler.html

YASM:http://yasm.tortall.net/

C语言:

Visual Studio(Windows)

C-Free 5.0(Windows,包含MinGW):http://dl.vmall.com/c0dkzg38o7

GCC,G++(跨平台):http://gcc.gnu.org/

GCC与FASM代码链接:http://board.flatassembler.net/topic.php?t=5989

GCC链接器LD脚本:http://www.math.utah.edu/docs/info/ld_3.html

 

反汇编与调试:

IDA pro(Windows)

WinDBG(Windows,包含在驱动开发工具WDK中):http://msdn.microsoft.com/en-US/windows/hardware/gg463009/

GDB(包含在GCC中)

DOS的Debug的命令:http://technet.microsoft.com/library/cc722863.aspx

代码编辑器:

Notepad++(Windows):http://notepad-plus-plus.org/

Emacs(Linux):http://www.gnu.org/software/emacs/

Vim(Linux):http://www.vim.org

汇编IDE:http://www.oby.ro/rad_asm/

二进制查看与修改:

WinHex(Windows)

ghex/khex(Linux):http://directory.fsf.org/wiki/Ghex

Okteta:http://utils.kde.org/projects/okteta/

Hexer:http://www.the-interweb.com/serendipity/index.php?/categories/11-Hexer

虚拟机:

VMware Station:http://www.vmware.com

Oracle Virtual Box:https://www.virtualbox.org/

压缩解压缩与虚拟机磁盘文件查看:WinMount(Windows,中文版免费):http://cn.winmount.com/

Bochs(跨平台):http://sourceforge.net/projects/bochs/?source=directory

Bochs的图形前端Peter-Bochs:https://code.google.com/p/peter-bochs/

Xen:http://xenproject.org/

 

总体

于渊《自己动手写操作系统》:http://dl.vmall.com/c0oltefkkm

于渊《Orange’s一个操作系统的实现》

川合秀实 著,周自恒、李黎明、曾祥江、张文旭 译《30天自制操作系统》

Andrew S. Tanenbaum《现代操作系统》

Abraham Silberschatz, PeterBaer Galvin, Greg Gagne《操作系统概念》:http://dl.vmall.com/c0ouk7h52g

OSDEV:http://wiki.osdev.org/Main_Page

http://www.osdever.net/tutorials/

http://www.osdever.net/papers/

https://wiki.kernel.org/index.php/Main_Page

毛德操《漫谈兼容内核》:http://ishare.iask.sina.com.cn/f/21633826.html

全FASM写成的软盘操作系统:http://MenuetOS.net/

兼容POSIX的Dynacube OS:http://www.dynacube.net/

ScorchOS:http://sourceforge.net/projects/scorchos/

MouseOS技术小站:http://www.mouseos.com/index.html

国人写的Skelix OS:http://skelix.net/skelixos/index_zh.html

http://www.walshcomptech.com/ohlandl/index.htm

Randal E. Bryant, David O'Hallaron《深入理解计算机系统》:http://dl.vmall.com/c03ppaaacv

POSIX.1-2008标准:http://pubs.opengroup.org/onlinepubs/9699919799/

 

数据结构

http://zh.wikipedia.org/wiki/红黑树

http://en.wikipedia.org/wiki/B-tree

http://en.wikipedia.org/wiki/B%2B_tree

http://en.wikipedia.org/wiki/Bx-tree

SGI STL 红黑树(Red-Black Tree)源代码分析:http://blog.chinaunix.net/uid-26818262-id-3219065.html

红黑树的插入与删除 详细整理资料:http://wenku.baidu.com/view/d07e8e0216fc700abb68fc40.html

红黑树和B树:http://www.eli.sdsu.edu/courses/fall95/cs660/notes/RedBlackTree/RedBlack.html

树堆:http://en.wikipedia.org/wiki/Treap

C++ STL:http://zh.wikipedia.org/wiki/标准模板库

 

算法

校验和:

CRC32:http://www.repairfaq.org/filipg/LINK/F_crc_v3.html

探究CRC32算法实现原理:http://blog.csdn.net/zhaodm/article/details/3711034

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

哈希:

http://zh.wikipedia.org/zh-cn/MD5

http://zh.wikipedia.org/wiki/SHA家族

加密通讯:

http://en.wikipedia.org/wiki/RSA_(algorithm)

 

 

Linux参考

Linux内核源代码下载:https://www.kernel.org/

Linux内核源代码:https://github.com/torvalds/linux

《Linux内核设计的艺术——图解Linux操作系统架构设计与实现原理》:http://dl.vmall.com/c0tl4202j5

深入分析Linux内核源码:http://oss.org.cn/kernel-book/

Linux i386 Boot Code HOWTO byFeiyun Wang:http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/index.html

毛德操、胡希明《Linux内核源代码情景分析》

Linux C编程一站式学习:http://learn.akae.cn/media/index.html

 

BSD、Unix参考

FreeBSD:

《FreeBSD操作系统设计与实现》:http://dl.vmall.com/c0ad41bvan

FreeBSD源代码:http://www.oschina.net/code/explore/freebsd

NetBSD:

NetBSD源代码:http://cvsweb.netbsd.org/bsdweb.cgi/?only_with_tag=MAIN

OpenBSD:

http://www.openbsd.org/

Apple XNU源代码:http://www.opensource.apple.com/source/xnu/

 

Microsoft的OS参考

http://research.microsoft.com/en-us/projects/singularity/

http://zh.wikipedia.org/zh-cn/Singularity

Windows Research Kernel:http://www.microsoft.com/education/facultyconnection/articles/articledetails.aspx?cid=2416&c1=en-us&c2=0

Vista及后续Windows引导启动过程:http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/windows-nt-6-boot-process.html

http://www.starman.vertcomp.com/asm/mbr/W7MBR.htm

http://www.starman.vertcomp.com/asm/mbr/W7VBR.htm

ReactOS:http://www.reactos.org/

毛德操《Windows内核情景分析:采用开源代码ReactOS》

潘爱民《Windows内核原理与实现》

《DOS原理与结构》:http://dl.vmall.com/c010mlo8ay

 

CPU架构

Intel 64(x64)和IA32(x86)架构: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

http://software.intel.com/en-us/node/183990?wapkw=cpuid+utility

http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/

Universityof San Francisco - Intel EM64T and VT Extenions:http://www.cs.usfca.edu/~cruse/cs686s07/

http://en.wikipedia.org/wiki/Cpuid

MultiProcessor Specification(MP Spec), version 1.4: http://www.intel.com/design/archives/processors/pro/docs/242016.htm

Bringing SMP to Your UPOperating System: http://www.cheesecake.org/sac/smp.html

关于多处理器初始化:http://forum.osdev.org/viewtopic.php?t=11564

x86-x64在线汇编器:https://defuse.ca/online-x86-assembler.htm

x86Microsoft stdcall调用约定:http://msdn.microsoft.com/en-us/library/zxk0tw93.aspx

Microsoftx64调用约定:http://msdn.microsoft.com/zh-cn/library/ms235286.aspx

IntelItanium(安腾)架构:http://www.intel.com/content/www/us/en/processors/itanium/itanium-processor-software-specifications.html

ARM文档:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.architecture.reference/index.html

ARM模拟器:http://armulator.sourceforge.net/

SPIM MIPS模拟器:http://spimsimulator.sourceforge.net/

MARS MIPS模拟器:http://courses.missouristate.edu/KenVollmar/MARS/

MIPS架构:http://www.imgtec.com/mips/architectures/

MIPS寄存器:http://msdn.microsoft.com/zh-cn/library/ms253512(v=vs.90).aspx

AVR架构Atmel公司:http://www.atmel.com

AVR32架构手册:http://www.atmel.com/zh/cn/Images/doc32000.pdf

SPARC:http://www.sparc.org/technical-documents-test-2/specifications/#ARCH

 

进程和线程

POSIX Threads Programming:https://computing.llnl.gov/tutorials/pthreads/

 

多线程同步

Linux的自旋锁:http://blog.chinaunix.net/uid-25871104-id-3052138.html

Linux中的信号量和互斥量:http://blog.csdn.net/lihenair/article/details/6597080

 

BIOS中断

Ralf Brown实模式中断:http://www.ctyme.com/intr/int.htm

16色模式颜色对应:http://en.wikipedia.org/wiki/BIOS_color_attributes

BIOS视频、键盘、磁盘中断:http://wenku.baidu.com/view/61ed6c175f0e7cd1842536f9.html

Trusted Computing Group PCClient Implementation for Conventional BIOS:http://www.trustedcomputinggroup.org/resources/pc_client_work_group_specific_implementation_specification_for_conventional_bios_specification_version_12

 

EFI/UEFI

UEFI官网:http://www.uefi.org

Intel关于EFI和UEFI的文档:http://www.intel.cn/content/www/cn/zh/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html

MSDN中关于UEFI固件的文档:http://technet.microsoft.com/en-us/library/hh824898.aspx

BIOS人论坛UEFI学习讨论区:http://www.biosren.com/forum-19-1.html

《Beyond BIOS: Developing with the Unified Extensible FirmwareInterface》

System Management BIOS:http://www.dmtf.org/standards/smbios

Trusted Computing Group EFIPlatform Specification:http://www.trustedcomputinggroup.org/resources/tcg_efi_platform_specification

Trusted Computing Group EFIProtocol Specification:http://www.trustedcomputinggroup.org/resources/tcg_efi_protocol_specification

 

IO

端口:http://www.stanislavs.org/helppc/ports.html

8259AProgrammable Interrupt Controller:http://www.brokenthorn.com/Resources/OSDevPic.html

Intel 82093AAIO APIC Datasheet:http://www.intel.com/design/chipsets/datashts/290566.htm

PCI官方组织PCI-SIG:http://www.pcisig.com/

PCI规范2.2:http://www.ics.uci.edu/~harris/ics216/pci/PCI_22.pdf

PCI database:http://www.pcidatabase.com

Intel X58Express Chipset Datasheet北桥手册:http://www.intel.com/content/www/us/en/chipsets/x58-express-chipset-datasheet.html

Intel I/OController Hub 10 (ICH 10) Family Datasheet南桥手册:http://www.intel.com/content/www/us/en/io/io-controller-hub-10-family-datasheet.html

西安交通大学微机原理与接口技术:http://mcit.xjtu.edu.cn/wlkj/new_page_main.htm

中山大学微机原理与接口技术:http://sist.sysu.edu.cn/wjyl/index.html

8042键盘控制器:http://stanislavs.org/helppc/8042.html

键盘扫描码:http://www.mouseos.com/os/doc/scan_code.html

http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html

MicrosoftWindows Keyboard Scan Code Specification:http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc

Intel 8253PIT:http://en.wikipedia.org/wiki/Intel_8253

8254Programmable Interrupt Timer:http://ftp.utcluj.ro/pub/users/calceng/PMP/231164.pdf

提供多媒体计时器支持的指南(关于高精度计时器HPET):http://msdn.microsoft.com/zh-cn/windows/hardware/gg463347.aspx

高级配置与电源接口ACPI:http://www.acpi.info/

ACPI规范5:http://www.acpi.info/spec50.htm

USB:http://www.usb.org/developers/docs/

 

保护模式中断

PIC:http://en.wikipedia.org/wiki/Intel_8259

APIC:http://en.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller

IA32中断研究:http://wenku.baidu.com/view/d3ada6dd5022aaea998f0f1b.html

Linux内核中断内幕:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/index.html

Linux的中断:http://www.biosren.com/viewthread.php?tid=391

调用门、中断门和陷阱门的区别:http://stackoverflow.com/questions/3425085/the-difference-between-call-gate-interrupt-gate-trap-gate

不可屏蔽中断:http://en.wikipedia.org/wiki/Non-maskable_interrupt

The x86 NMI iret problem:http://lwn.net/Articles/484932/

 

磁盘

主引导记录(MBR)数据结构:http://blog.csdn.net/firas/article/details/8665366
FAT、NTFS卷引导记录数据结构:http://blog.csdn.net/firas/article/details/8787506

http://en.wikipedia.org/wiki/Master_boot_record

硬盘知识大概:http://wenku.baidu.com/view/c17688c7bb4cf7ec4afed04d.html

关于ATA:http://www.ata-atapi.com/

负责ATA/ATAPI的技术委员会T13官方网站:http://www.t13.org/

SATA官方网站:http://www.sata-io.org/

负责SCSI的技术委员会T10官方网站:http://www.t10.org/

ATA/ATAPI 8命令集草稿:http://www.t13.org/documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf

http://www.t13.org/documents/UploadedDocuments/docs2011/d2015r7-ATAATAPI_Command_Set_-_2_ACS-2.pdf

http://www.t13.org/Documents/UploadedDocuments/docs2013/d2161r5-ATAATAPI_Command_Set_-_3.pdf

SATA规范3.2草稿:http://www.knowledgetek.com/graphicsNew/SerialATA_Revision_3_2_Gold(with%20Links).pdf

SATA规范3.0草稿:http://www.lttconn.com/res/lttconn/pdres/201005/20100521170123066.pdf

SATA的AHCI接口规范:http://www.intel.com/content/www/us/en/io/serial-ata/ahci.html

关于保护模式读写磁盘:http://bbs.pediy.com/showthread.php?t=171927

使用DMA读写硬盘:http://occh.net/wordpress/?p=324

 

内存管理

What every programmer shouldknow about memory: http://lwn.net/Articles/250967/

吴晓勇,曾家智。操作系统内核中动态内存分配机制的研究。成都信息工程学院学报,第20卷第1期,2005年2月:27~30

徐蓉。实时系统的内存管理技术研究与实现。电子科技大学硕士学位论文,2004年

谢长生,刘志斌。Linux 2.6内存管理研究。计算机应用研究,2005年:58~60

沈勇,王志平,庞丽萍。对伙伴算法内存管理的讨论。计算机与数字工程,第32卷:40~43

伙伴算法:http://blog.csdn.net/orange_os/article/details/7392986

胡兆阳,谢余强,舒辉。Windows下堆内存管理机制研究。计算机工程与应用,2005.17:59~61

Mengxiao Liu, Weixing Ji, ZuoWang, Jiaxin Li, Xing Pu. “High Performance Memory Management for A Multi-coreArchitecture”. IEEE Ninth International Conference on Computer and InformationTechnology. 2009. pp. 63-68.

 

页面置换

http://en.wikipedia.org/wiki/Page_replacement_algorithm

 

文件系统

http://zh.wikipedia.org/wiki/FAT

http://zh.wikipedia.org/zh-cn/NTFS

http://zh.wikipedia.org/wiki/ReiserFS

http://zh.wikipedia.org/wiki/XFS

http://zh.wikipedia.org/wiki/ZFS

各种文件系统的比较:http://en.wikipedia.org/wiki/Comparison_of_file_systems

MSWIN4.1OS Boot Record:http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm

Boot Record of FAT:http://home.freeuk.net/foxy2k/disk/disk3.htm

FAT32:http://wenku.baidu.com/view/add07dfc910ef12d2af9e751.html

超通俗FAT32:http://wenku.baidu.com/view/e2fb140590c69ec3d5bb7543.html

NTFS File System Overview:http://www.c-jump.com/bcc/t256t/Week04NtfsReview/index.html

The New Technology FileSystem:http://link.springer.com/content/pdf/10.1007/978-1-84628-732-9_6.pdf

NTFS:http://wenku.baidu.com/view/0a467b175f0e7cd184253652.html

NTFS文件系统:http://wenku.baidu.com/view/d26bec1ca76e58fafab00390.html

Master File Record(主文件记录):http://msdn.microsoft.com/en-us/library/bb470206(v=vs.85).aspx

Inside Win2K NTFS, Part 1: http://msdn.microsoft.com/en-us/library/ms995846.aspx

Inside Win2K NTFS, Part 2: http://windowsitpro.com/systems-management/inside-win2k-ntfs-part-2

Ext3/4磁盘布局:http://wenku.baidu.com/view/db827320192e45361066f5ad.html

Ext2和Ext3文件系统:http://wenku.baidu.com/view/72b04d7302768e9951e738b8.html

CDFS(ISO 9660):http://zh.wikipedia.org/wiki/ISO_9660

通用光盘格式(UDF):http://zh.wikipedia.org/wiki/通用光盘格式

 

可执行文件格式

ELF文件格式:http://www.sco.com/developers/devspecs/gabi41.pdf

ELF-64文件格式:http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf

PE文件格式:http://msdn.microsoft.com/library/windows/hardware/gg463125

PE文件格式详解:http://www.vckbase.com/index.php/wv/1057
http://www.vckbase.com/index.php/wv/1058

map文件介绍及使用查错:http://blog.csdn.net/mark_chan/article/details/5104952

BSS段:http://en.wikipedia.org/wiki/.bss

 

显示与显卡

VESA BIOS Extension(VBE) 3.0标准:http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf

最新VESA显示器时序标准(DMT_v1.0_r12p):http://wenku.baidu.com/view/e4ac87956bec0975f465e2ea.html

http://en.wikipedia.org/wiki/VESA_BIOS_Extensions

http://jelleybee.com/projects/software/pc_asm/int_10h/INT_10h_4Fxx_VESA.txt

http://www.stanford.edu/class/cs140/projects/pintos/specs/freevga/vga/crtcreg.htm

http://www.stanford.edu/class/cs140/projects/pintos/specs/freevga/vga/vga.htm

在保护模式中显示文字(需有C语言库):http://blog.csdn.net/guzhou_diaoke/article/details/8459541

GPU:

http://www.nvidia.com/object/cuda_home_new.html

http://developer.amd.com/resources/heterogeneous-computing/opencl-zone/

http://gpgpu.org/

 

图形界面

X.org:http://www.x.org/wiki/

GNOME:http://www.gnome.org/

GNOME源码:http://www.oschina.net/code/explore/gnome-2.91.3

KDE:http://www.kde.org/

KDE源码:http://www.oschina.net/code/explore/kde-4.5.4

Xfce:http://www.xfce.org

 

谢煜波《做一个支持图形界面的操作系统》

 

Unicode编码:http://www.unicode.org

International Components forUnicode:http://site.icu-project.org/home

 

字体

龚兵、张凤凌《True Type字体应用技术》五邑大学学报(自然科学版)1998年第12卷第1期第46~50页

史磊、吕强《True Type字形描述技术和TTF文件》中文信息产业化1995年第五期第54~59页

王瑜、黄源、张福炎《Windows中TrueType字形数据的存取技术》小型微型计算机系统1997年11月第18卷第11期

 

输入法

Fcitx输入法框架:https://fcitx-im.org/wiki/Fcitx

赵杨《XIM协议的原理及其实现》:http://www.ibm.com/developerworks/cn/linux/i18n/xim/xim-2/index.html

吴海辉《笔画码汉字输入法软件设计与实现》安徽大学硕士学位论文

图片文件格式

http://zh.wikipedia.org/wiki/BMP

BMP文件格式详解:http://blog.csdn.net/o_sun_o/article/details/8351037

JPEG文件编码解码详解:http://blog.csdn.net/lpt19832003/article/details/1713718

PNG文件格式详解:http://blog.csdn.net/bisword/article/details/2777121

 

你可能感兴趣的:(操作系统)