win32学习心得基础篇-----第一章 背景知识

发布时间:2017-5-28 13:07:10 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"win32学习心得基础篇-----第一章 背景知识",主要涉及到win32学习心得基础篇-----第一章 背景知识方面的内容,对于win32学习心得基础篇-----第一章 背景知识感兴趣的同学可以参考一下。

      这个背景知识没啥看的,主要做一下了解,我做一下记录 1.win32的软硬平台和windows的一些历史.     1978年六月份,intel出了第一个16位8086处理器。     1985年,推出32位的80386的处理器。     windows从dos时代,进入windows时代,     wintel联盟是指微软和intel的联合,软硬结合,成了武林霸主。    武林霸主的位置不是那么好的,wintel联盟帝国开始没落。 2.为啥还要学习win32编程? 1.windows还占有一定的地位,有一定的粉丝和人群还在用,毕竟微软这方面做得很好,界面很友好,系统还在 更新。 2.windows有庞大的软件库,和庞大的程序猿 3.为了更好的了解计算机的原理,以及系统开发。 3.windows的特色优点 1.图形界面(GUI) 2.一致的用户界面 3.多任务性,多个任务可以同时运行 4.大量的函数调用 5.和设备的无关性 6.内存的管理,每个程序都有4g地址空间(为什么呢?百度一下吧) 4.8086的工作模式 80386的工作模式有三种 实模式 保护模式 虚拟86模式 实模式   80386平台下,实模式相当于一个快速的8086处理器工作, 在实模式下80386的32位地址只使用低20位,不能对被内存进行分页管理,所以指令的地址都是物理地址, 实模式下所有的段都可以读、写、执行。 实模式下不支持优先级,所有指令工作在ring0,特权优先下。(rong0百度百科) 实模式不支持硬件任务切换 实模式的中断方式和8086一样 Dos操作系统就运行在实模式下 保护模式 80386的32根地址总线,提供了4G(2^32)的物理内存空间,和8086的1M空间相差很大。 为了运行更多的大程序和任务,引入了虚拟内存这个技术。 保护模式下,依靠硬件一条指令就可以实现任务的切换。实模式切换保护模式修改CR寄存器的pe位 windows操作系统运行在保护模式下 虚拟86模式 虚拟86模式,是为了在保护模式运行8086的程序而设计的,为了兼容dos程序 5.Windows的内存管理 1.Win32汇编中每一个程序都可以使用4G的内存么?  80386的所有寄存器都是32位的,2^32相当于4g 每个进程都有自己的4G地址空间,从 0x00000000-0xFFFFFFFF 。通过每个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为他们往往对应不同的物理页。 在windows下4G地址空间中低2G,0x00000000-0x7FFFFFFF 是用户地址空间,4G地址空间中高2G, 0x80000000-0xFFFFFFFF 是系统地址空间。访问系统地址空间需要程序有ring0的权限。而Linux对4G空间的划分不同与windows。linux将最高的1G 字节(从虚拟地址0xC0000000 到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G 字节(从虚拟地址0x00000000 到0xBFFFFFFF),供各个进程使用,称为“用户空间” 2.Win32汇编代码中为什么看不到CS,DS,ES和SS等段寄存器呢? 80386的所有寄存器都是32位的,2^32相当于4g,所以用任何一个通用寄存器,来间接寻址,不必分段就可以访问 段寄存器指的是cs,ds,ss,es,fs,gs这些。在win32保护模式下,他们指向各自的描述符。那些描述符,都指向同一个段起始地址(fs除外)。所以win32编程,不需要制定cs,ds,ss等等,因为他们都是一样的。可以认为ds=es=ss=...这就是flat的含义。在编程者看来,各个段都是平坦的,一样的,没有区别。 并不是在win32汇编源代码用不到段寄存器,而是用户不用关心这些段寄存器 3.DOS下的著名的“640KB限制”是什么? 00000h-A0000h =640kb(A0000h=655360/1024=640)    6.80386的内存分页机制 1.在保护模式下,段选择器+偏移地址被称作线形地址,那么线形地址就是物理地址么? 分页机制由寄存器由CR0寄存器的第31位决定 当禁止分页机制,线性地址就是物理地址 启动分页机制,就是线性地址 2.虚拟内存的实现。 3.Windows操作系统为用户程序的代码段,数据段和堆栈段都已经设置好了正确的描述符,用户因此不必关心段寄存器。 7.Windows的特权保护 1.80386的异常和中断处理。 为什么在win32编程中没有int指令?其实调用API就是中断处理了。 2.80386的保护机制 A.段的类型检查。可读可写可执行方面 B.页的类型检查。可读可写方面 C.访问数据时的级别检查。访问优先级 D.控制转移的检查。优先级问题 E.指令集的检查。特权指令和敏感指令 F.I/O操作的保护。

上一篇:误把main()函数写成mian()函数竟然通过编译
下一篇:第一章:介绍Django

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。