Windows 95 系統程式設計大奧秘学习笔记

原创 2001年12月09日 15:37:00

 

书名:  Windows 95 系統程式設計大奧秘(一)(Windows 95 SystemProgramming SECRETS)
作者:  Matt Pietrek
译者:  侯俊杰
整理者:高永庆(大连轻工业学院计982)


目錄提要
1.  Windows 95 有三個非常基礎的核心元件: 16 位元的KRNL386 、32 位元的
KERNEL32 、以及ring0 的VWIN32.VXD。如果你把它們放在一起, 就得到了
VWINKERNEL32386。
2.  如果要充份瞭解Windows 95,你就必須瞭解Portable Executable(PE) 檔案格式.

第1章  透視Windows 95
1.  這個新的可執行檔格式稱為PE(Portable Executable)格式,係從UNIX
系統的common object file format V(COFF)衍生而來.
2.  Windows NT 的主要目標在強固性與移植性(移植到其他硬體平台)。大部份碼是以C 和C++(而非組合語言)完成.
3.  NT 之所以穩定,一個主要原因是其「受保護的子系統」(protected subsystem)架構。在此子系統中,實作出API 的那些系統碼,係在與應用程式不同的位址空間中執行.
4.  NT 把16 位元程式放在所謂的WOW(Windows On Windows)行程中跑。
5.  Win32s 的限制很大。第一個同時也是最大的限制是,它不支援執行緒。第二是它把所有Win16 程式和Win32 程式都擺在同一個位址空間中。第三個缺點是Win32s 缺乏每一行程專屬的DLL 資料空間。Win32s 的另一個問題是行程的排程和訊息傳遞系統。
6.  Windows 95 的最底層是ring0 系統碼,包括虛擬機器管理器(VMM)和輔助的VxDs。在CPU ring0 執行的碼理論上是最穩定也最能夠信賴的。所以它負擔較多的系統資料和硬體的處理。
7.  不論是Win16 的NE 檔或Win32 的PE 檔,都內含一個DOS 程式,稱為DOS
stub 程式。你在Windows 3.1 之下看到的"This Program Requires Microsoft Windows" 輸出便是DOS stub 程式的傑作。

第二章 Windows 95 有些什麼新東西
1.  Windows 95 有兩個基本條件(雖然也許有點矛盾):
    (1.)  提供存在於Windows NT 上的所有Win32 API(執行緒、分離位址空間、虛擬記憶體等等等),但捨棄安全防護性(security)和unicode。
    (2.)  在4MB 機器上執行既有的MS-DOS 和16 位元Windows 程式,效率要和在相同機器上的Windows 3.1 一樣好,或甚至更好。
2.  我要聲明,Windows 95 是DOS 和Windows 3.1 的組合。
3.  WIN.COM 是把機器從真實模式(或虛擬86 模式)切換到保護模式Windows 環境的整個程序源頭。
4.  但Windows 95 對於以前的DOS/Windows3.1 組合的最大改
善就是以VxD 取代過去我們對DOS 的呼叫.
5.  在Windows 95,一旦VMM32.VXD 載入並運行,幾乎所有對DOS 的呼叫都改由VMM32 內全新的32 位元碼負責。VMM32 由Windows 95 中的一大堆ring0元件組成。VMM32 相當於Windows 3.1 的WIN386.EXE。(整理者:用vxd程序代替dos的呼叫,
这是windows95的先进之处,98应该是大大减少了dos的呼叫)
6.  Windows 95 在相容性方面有更高的標準,因此把視窗管理系統保持在16位元
所有的視窗(是的,甚至是由32 位元程式產生出來的視窗)都是由16 位元的
USER.EXE 管理。
7.  Windows95 USER 事實上是以一種不尋常的佈局,使用一個混合了16- 和32- 位元的heaps。16 位元的USER.EXE 仍舊使用16 位元DGROUP 節區,USER 產生了一個特殊的32 位元heap 用來儲存WND 結構.

 

gnugk系統設計

作者姓名:黃志偉 高清视频会议MCU gnugk系統設計 採用多執行緒架構,以平行處理各種請求與不同的工作。程式啟始時,完成初始化和必要的檢查之後,隨即分支出數個執行緒,處理不同的請求。主執行...
  • vincent1941
  • vincent1941
  • 2008年03月02日 17:46
  • 1075

Windows程序设计的第一个实例

之前一直学习的是控制台程序设计,后来接触MFC程序设计,中间忽略了Windows程序设计的学习,所以在开始接触MFC的时候非常迷茫,不知道MFC框架下的各个函数的意义,不明白其内部的原理及机制,只大概...
  • Alex123980
  • Alex123980
  • 2016年07月28日 10:38
  • 868

程式設計之道-Viscosity

Viscosity is the ease of doing right thing. Viscosity is reverse proportional to the number of ...
  • chungchi300
  • chungchi300
  • 2015年01月12日 11:15
  • 303

Linux RS-232 程式設計

chapter 6 Linux RS-232 程式設計   6-1 終端機介面 終端機介面又稱為TTY介面,用來讓Linux系統透過RS-232串列埠連接數據機,通過電話線路與遠端的電腦系統相連...
  • wangpengqi
  • wangpengqi
  • 2012年08月15日 15:02
  • 1825

设计大师论系统化思考:产品不只是产品

在现实当中,产品尽在体验。没有哪个产品是一座孤岛。产品不只是产品本身,还是一系列相互协调一致、有机结合的服务体验。从最初的意向到最后的评价,从初次使用到疑难解答、维修和售后服务——我们需要全面考虑产品...
  • kingofark
  • kingofark
  • 2010年12月02日 11:03
  • 15713

Windows程式开发设计指南--开始

1. 开始 本书介绍了在Microsoft Windows 98、Microsoft Windows NT 4.0和Windows NT 5.0下程式写作的方法。这些程式用C语言编写并使用原始的Wi...
  • jianxia_wzx
  • jianxia_wzx
  • 2012年08月31日 23:30
  • 1099

《深入浅出JavaScript(中文版)》读后记录

《深入浅出JavaScript(中文版)》读后记录
  • u012755393
  • u012755393
  • 2016年05月11日 12:48
  • 420

Google 手機程式設計

Google 手機程式設計 序 2007 年 10 月,Google Phone 即將出現的傳聞吵得沸沸煬煬,2007年11月12日,Google 終於公布答岸,原來、Google 並非要做手機,...
  • myspor
  • myspor
  • 2011年03月30日 19:43
  • 4248

《嵌入式系统软硬件协同设计实战指南》第九章跑马灯实验补充

按照书中步骤会发现UART没有输出任何信息,我们需要在Vivado中将UART1勾选上 UART0是默认给EMIO的,所以用UART1。 生成比特流导出给SDK,在SDK中需要将BSP配置...
  • wrblack
  • wrblack
  • 2017年03月04日 22:39
  • 274

《基于CUDA的并行程序设计》学习笔记(三)——中

第3章 CUDA编程基础3.3 CUDA编程模型CUDA架构第一次引入了主机(host)端与设备(device)端的概念。如下图所示,一个完整的CUDA程序由主机代码和设备代码两部分组成。主机代码在主...
  • manong_wxd
  • manong_wxd
  • 2017年11月25日 11:40
  • 131
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows 95 系統程式設計大奧秘学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)