阅读:2018回复:1
套套与情书:实模式与保护模式:<主 题:什么叫实模式,什么叫保护模式? 作 者:vcfresh 所属论坛:Visual C++ 问题点数:20 回复次数:22 发表时间:2001-4-2 9:07:00 概念?特点?用途? 回复贴子: 回复人:sxbyl(痛苦的白菜) (2001-4-2 9:30:00) 得0分 概念……没背过 特点……DOS就是实模式的,现在的Winows、Unix之类东西都是保护模式的。实模式下只能访问那可怜的1M内存,要想突破这个限制,麻烦得很,你还记得DOS下那一堆什么XMS(扩充内存)、EMS(扩展内存)吧?本来是连续的64M内存,在DOS下访问,还得调用什么中断,好麻烦。Watcom C++之所以当时有些名气就是占了这个便宜,说集成开发环境,那和BC是没法比,但就因为它提供了DOS4GW支持,可以很方便的是你的程序在DOS访问4G内存,写32位的程序。 至于保护模式,特性挺多,如线性地址、虚拟内存、权限保护之类的东西都是CPU提供的功能,为开发现代操作系统提供了很多便利。 x86CPU在初始化的时候都是先进入实模式,然后操作系统再切换到保护模式。 详情你找本书看看吧。有一本《386保护模式编程》你可以看看,写得挺多。 回复人:vcfresh(fresh) (2001-4-2 11:20:00) 得0分 为什么实模式只能访问1M内存,而保护模式能访问全部内存? 为什么叫"实"和"保护"呢? 回复人:sxbyl(痛苦的白菜) (2001-4-2 11:41:00) 得0分 你还挺喜欢敲沙锅的…… 我估计你没看过汇编,如果你一定想搞清楚的话,建议先看看汇编的书,正规的汇编书也会涉及到一些保护模式的资料。(教材通常不会涉及) 回复人:vcfresh(fresh) (2001-4-2 14:12:00) 得0分 faint,我看过汇编的书呀,好象没讲耶! 回复人:sxbyl(痛苦的白菜) (2001-4-2 14:19:00) 得0分 关于为什么实模式只能访问1M内存,通常都是汇编书的开胃菜啊,你看的什么书啊?赶紧扔了换一本算了。 回复人:sxbyl(痛苦的白菜) (2001-4-2 14:20:00) 得0分 关于为什么实模式只能访问1M内存,通常都是汇编书的开胃菜啊,你看的什么书啊?赶尽扔了换一本算了。 回复人:vcbear(会飞的熊熊,苯苯的那种) (2001-4-2 15:02:00) 得0分 这个....看到讨论的好玩,我也来凑凑热闹。 dos下内存是很简单的,指针指向的几乎就是实际的物理地址。实模式的指针是16bit的,就是直接访问的内存是640k,640k~1M之间的内存是通过中断把页切换到640k里读写完之后又Move到640k以外的。Dos4GW又提供了别的中断来访问1M~8M以外的内存。你理解在操作系统限制的时候做这些 突破是多么“技巧”的一个年代吧。 其实386已经支持32位指针了,这时又引入了GDT,LDT等概念。怎么说呢....靠,这样吧,比如 你有一大衣柜(GDT),有无数的小抽屉(LDT)。这个抽屉是你的,那个是你MM的,你MM翻你的 抽屉就会发现套套,你翻你MM的抽屉会发现情书...所以要保护! 大概先这样,开会回来再说..... 回复人:vcfresh(fresh) (2001-4-2 16:52:00) 得0分 套套还需要保护吗?那不是很吃亏,有套才有安全感呀? 让MM发现套套,才知道你是个做事考虑周到,注意安全的人! :) 回复人:sxbyl(痛苦的白菜) (2001-4-2 17:05:00) 得0分 To:vcfresh 这就是你的不对了,你想想,你的套套被发现了,但你的MM没见你用过,这岂不是大大的Bug??唯一的理由是你和别人用套套……受死吧~~~~~~~~~ 回复人:onion(葱头) (2001-4-2 17:30:00) 得0分 这种问题最好自己去看32位CPU芯片的资料。386/486的就可以了。 回复人:vcfresh(fresh) (2001-4-2 17:33:00) 得0分 套套也需要保护?现在不是提倡用套套吗?怎么还要保护,真是摸不着头脑! 回复人:vcbear(会飞的熊熊,苯苯的那种) (2001-4-2 17:42:00) 得0分 保护模式主要是因为系统支持了多进程和多线程,所以非保护不可,每个进程都有自己能辨认 的内存段,不能让别的进程随意访问和改写的,指针在操作到物理内存前,已经被操作系统一五一十的翻译成GDT,LDT等等表示的格式了,只有操作系统知道该块物理内存在什么地方。 到网上search一下"保护模式"吧,资料比你想象的多。当然最好还是看看书。不光是386的, 看看操作系统和NT技术内幕之类的也可以。实模式在操作系统级已经开始消亡了,在一般的 工作中基本上用不到,你能操作好 SDK的一系列内存/虚存函数就不错了。从研究上讲是应该 学学,我有时间我也想好好研究一把的。努力!总有一天变成vc_veteran的。 回复人:micrack()C++是一种信仰() (2001-4-2 21:32:00) 得0分 说句话,对事不对人 从“套套还需要保护吗?那不是很吃亏,有套才有安全感呀?让MM发现套套,才知道你是个做事考虑周到,注意安全的人! :) ” 我觉得vcfresh(fresh)不是经验不足,就是悟性不高 :) 回复人:brucegong(飞行猪) (2001-4-3 22:14:00) 得0分 到INTEL网站上面download pentuim CPU 的编程指南,里面很详细地讲了这个问题。该书中文版由上海科学普及出版社出版,很贵,叫个什么pentuim什么开发什么指南。 回复人:crackapi(crackapi) (2001-4-4 0:17:00) 得0分 我有一套《奔腾系列用户手册》,由上海科学普及出版社出版, 其中第三卷《Pentium处理器结构与程序设计》对保护模式讲的 比较详细。原价:120元。 汇编语言教材我看的很多,大多数谈到这一点都是泛泛而论。 回复人:greensleeve(绿袖子) (2001-4-4 7:25:00) 得0分 所谓套套保护就是不让没有和MM用过的套套被该MM看见,但可不可以让和某个MM用过的套套被对应的MM看见呢?或者可不可以让套套被一个GG看到,并且此套套肯定没有在此GG上用过? 回复人:sxbyl(痛苦的白菜) (2001-4-4 8:17:00) 得0分 《386保护模式编程》讲得很详细,而且附了一个引导程序 回复人:vcbear(会飞的熊熊,苯苯的那种) (2001-4-4 9:17:00) 得0分 greensleeve(绿袖子)不要想的太多了,小心变成“绿帽子”呀,呵呵,得罪莫怪。 看书了,《386保护模式编程》是不错的一本。 回复人:vcfresh(fresh) (2001-4-4 16:31:00) 得0分 to micrack 说句话,对事不对人 你说我悟性不高,难道你就看不出我说那句话的意思是话外有话吗? 回复人:micrack()C++是一种信仰() (2001-4-4 16:59:00) 得0分 to vcfresh: “比如你有一大衣柜(GDT),有无数的小抽屉(LDT)。这个抽屉是你的,那个是你MM的,你MM翻你的抽屉就会发现套套,你翻你MM的抽屉会发现情书...所以要保护” 我觉得这个比喻是为了说明不让一些“人”(代码)去碰他不应该的“东西”(代码或数据),如果碰了,就会出乱子(也许系统会崩溃)。和“套套还需要保护吗?那不是很吃亏,有套才有安全感呀?让MM发现套套,才知道你是个做事考虑周到,注意安全的人! :) ”和有“没有安全感和是否注意安全”没关系,这个比喻要说明的不是“安全感和是否注意安全” 我是这样理解的,对吗?多指教 回复人:greensleeve(绿袖子) (2001-4-5 5:41:00) 得0分 上面这位仁兄理解得很有道理呀,这个话题很有趣,相信大家都能理解套套和MM的真正含义,这个比喻很恰当的。我认为保护的应该是小抽屉,而不应该是里面的东东,不管是套套也好,还是情书也好,关键是不能让你的MM打开你的小抽屉,你也不能打开你的MM的小抽屉,这就是老美们经常说的“人权”。不过如果哪一天你的MM真的不让你打开她的小抽屉的时候,我相信你的系统肯定会马上崩溃。:))) 回复人:vcbear(会飞的熊熊,苯苯的那种) (2001-4-5 8:51:00) 得0分 实际上老美实现了很多“下流卑鄙”的方法来打开别人的小抽屉,比如远程注入, Hook,OpenProcess(windows编程内幕有讲的,老套了)...最牛B的就是保留了 一个Ring0的特权级,不管是什么进程都能用这个特权级来一下子,跟世界警察似的, 然后还有无数的后门和各种工具(比如SoftICE)。没办法,谁让windows以及保 护/实模式都是人家发明的呢。 |
|
最新喜欢:hongsi...
|
沙发#
发布于:2002-02-06 11:19
最早期 :P的1M内存空间分配表:
from 0k to 640k:Base Memory(including dos kernel program area and application program working area). from 640k to 704k:EGA/VGA color graphics information area from 704k to 736k:mono_color text information area from 736k to 768k:color text info. area form 768k to 800k;EGA/VGA Bios program area from 800k to 960k reserved for extern card form 960k to 1024k:Rom Bios Runtime area hehe ...... |
|