一、保护模式简述 在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持;支持多任务,能够快速地进行任务切换和保护任务环境;4个特权级和完善的特权检查机制,既能实现资源共享以能保证代码及数据的安全和保密、及任务的隔离。 80386采用称为描述符(descriptor)的数据来描述段的位置、大小和使用情况。虚拟存储器的地址(逻辑地址)由指示描述符的选择子(selector)和段内偏移两部分构成,这样的地址集合称为虚拟地址空间,但要注意的是,这与实模式下的段值+偏移量来获取物理地址是不同的。在保护模式下,由选择子和段内偏移计算出来的只是虚拟地址,需要将虚拟地址转换成实际的物理地址。 地址映射转换示意
有这张图就够了,简单地说明一下 以Height为例,Width同理: div.clientHeight:可见窗口除去了margin+border之后的长度。 div.offsetHeight:在div.clientHeight的基础上加了border和滚动条的长度。 div.scrollHeight:就是元素内容的实际高度。
在各种常用的工具中, 正则表达式如此的相似却又不同。 下表列出了一些常用的正则表达式,以及其不同之处。 项目总多,遗漏必有不少,请各位看官不吝指出。 以perl的正则为基准,不同的用法以粉红色标出。 grep 2.5.1 egrep 2.5.1 sed 3.02 sed 4.07 awk 3.1.1 perl 5.8.0 vim 6.1 JavaScript ?? 转义 \ \ \ \ \ \ \ 行头 ^ ^ ^ ^ ^ ^ ^ 行尾 $ $ … Continue reading →
在KarmicKoala上使用apt-get的方式安装bochs是没有调试功能的,需要进行手动的方式进行安装并设置”–enable-debugger –enable-disasm”两个参数,以手动安装先后出现了两个问题: ERROR: X windows gui was selected, but X windows libraries were not found.” ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package. 于是google了一下,将下面的库都安装了就成功装上bochs了: apt-get install build-essential apt-get install libwxgtk2.6-0 apt-get install libwxgtk2.6-dev wx2.6-headers wx-common apt-get … Continue reading →
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员 函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反三。不利于学习和阅读,所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 言归正传,让我们一起进入虚函数的世界。