博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 95 系統程式設計大奧秘学习笔记 (转)
阅读量:2503 次
发布时间:2019-05-11

本文共 1873 字,大约阅读时间需要 6 分钟。

Windows 95 系統程式設計大奧秘学习笔记 (转)[@more@]

 

书名:  95 系統程式設計大奧秘(一)(Windows 95 SystemProgramming SECRETS)

作者:  Matt Pietrek
译者:  侯俊杰
整理者:高永庆(大连轻工业学院计982)

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

第1章  透視Windows 95

1.  這個新的可執行檔格式稱為PE(Portable Executable)格式,係從
系統的common file format V(COFF)衍生而來.
2.  的主要目標在強固性與移植性(移植到其他硬體平台)。大部份碼是以C 和C++(而非組合語言)完成.
3.  NT 之所以穩定,一個主要原因是其「受保護的子系統」(protected subsystem)架構。在此子系統中,實作出 的那些系統碼,係在與應用程式不同的位址空間中執行.
4.  NT 把16 位元程式放在所謂的WOW(Windows On Windows)行程中跑。
5.  Win32s 的限制很大。第一個同時也是最大的限制是,它不支援執行緒。第二是它把所有Win16 程式和Win32 程式都擺在同一個位址空間中。第三個缺點是Win32s 缺乏每一行程專屬的DLL 資料空間。Win32s 的另一個問題是行程的排程和訊息傳遞系統。
6.  Windows 95 的最底層是ring0 系統碼,包括虛擬機器管理器(VMM)和輔助的VxDs。在 ring0 執行的碼理論上是最穩定也最能夠信賴的。所以它負擔較多的系統資料和硬體的處理。
7.  不論是Win16 的NE 檔或Win32 的PE 檔,都內含一個D程式,稱為DOS
stub 程式。你在Windows 3.1 之下看到的"This Program Requires 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.是把機器從真實(或虛擬86 模式)切換到保護模式Windows 環境的整個源頭。
4.  但Windows 95 對於以前的DOS/Windows3.1 組合的最大改
善就是以VxD 取代過去我們對DOS 的呼叫.
5.  在Windows 95,一旦VMM32.VXD 載入並咝校瑤缀跛?袑?OS 的呼叫都改由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 結構.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-975743/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-975743/

你可能感兴趣的文章
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(三) 构建镜像
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>