編寫PC操做系統的參考資料(不斷更新)

編寫PC操做系統的參考資料

編譯器等工具

彙編語言:php

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

FASM(跨平臺):http://flatassembler.net/前端

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

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

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

C語言:ios

Visual Studio(Windows)git

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

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

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

相關文章
相關標籤/搜索