- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC入门必备--基础知识
VC入门必备--基础知识(一)
首先我们要了解以下概念:
应用程序(Application),他就是由指令(Instruction)组成的可以运行的文件。
进程(Process),有时和应用程序的意思一样,但在通常的情况下,进程是指一个正在运行的应用程序,正因为这样,进程由以下部分组成:
1、一个可以执行的程序
2、位于内存(Memory)中的私有地址空间
3、系统资源(System Resource),例如文件(File), 管道(Pipe), 通讯端口(Communications Port), 信号(Semaphore)
4、至少还要有1个线程(Thread), 线程是最基本的执行单位。
因为多个进程是可以同时存在时,所以Windows操作系统(Operating System)必须给进程提供保护,以防止他们冲突。
物理内存(Physical Memory),即你的计算机的实际内存,例如我现在用的电脑的内存是128M,物理内存的容量是达不到程序的要求的,于是就产生了虚拟内存(Virtual Memory)。
虚拟内存(Virtual Memory), 不是真正的内存,它通过映射(Map)的方法,使可用的虚拟地址(Virtual Address)达到4G(2的32次方),每个应用程序可以被分配2G的虚拟地址,剩下的2G留给操作系统自己用。在Windows NT中,应用程序可以有3G的虚拟地址。简单的说,虚拟内存的实现方法和过程是:
1、当一个应用程序被启动时,操作系统就创建一个新进程, 并给每个进程分配了2G的虚拟地址(不是内存,只是地址);
2、虚拟内存管理器(Virtual Memory Manager)将应用程序的代码(Code)映射到那个应用程序的虚拟地址中的某个位置,并把当前所需要的代码读取到物理地址中。注意,虚拟地址和应用程序代码在物理内存中的位置是没有关的;
3、如果你有使用动态链接库(Dynamic-Link Library,即DLL)的话,DLL也被映射到进程的虚拟地址空间,在有需要的时候才被读入物理内存;
4、其他项目(例如数据,堆栈等)的空间是从物理内存分配的,并被映射到虚拟地址空间中;
5、应用程序通过使用它的虚拟地址空间中的地址开始执行,然后虚拟内存管理器把每次的内存访问映射到物理位置。
如果大家看不明白上面的步骤也不要紧(似乎超出了入门篇的范围),但大家要明白以下两点:
1、应用程序是不会直接访问物理地址的;
2、虚拟内存管理器通过虚拟地址的访问请求,控制所有的物理地址访问;
使用虚拟内存的好处是:简化了内存的管理,并可以弥补物理内存的不足;可以防止在多任务(Multitasking)环境下的各个应用程序之间的冲突。
线程(Thread),是最基本的执行单位,CPU时间就是分配给每个线程的。每个进程一开始时只有一个线 程,但每个线程都可以产生出其他线程,前者叫做父线程(Parent Thread),后者叫做子线程(Child Thread)。每个执行的线程都有自己的虚拟输入队列(Virtual Input Queue),用来处理来自硬件、处理器(Processor)或操作系统的消息(Message)。这些队列都是异步的,也就是说,当处理器发送一个消 息给另外一个线程的队列时,发送函数不用等待其他线程处理该消息就可返回,而接收消息的线程可以等到该线程准备好时再访问并处理接收到的消息。
多线程(Multithread),如果一个进程中有多个线程同时存在,就叫做多线程了。
多任务(Multitasking),即多个程序看起来好像是在同时执行,其实并不是同时的,只不过因为时间太短,人类感觉不出来而已。其原理是操作系统分配给每个线程一个非常短(大约百分之秒)的时间片,每个线程轮流切换执行,这个过程叫做场境转换(Context Switching)。
场境转换(Context Switching),是指:
1、运行一个线程直到该线程的时间片用完,或者这个线程必须等待其他的资源;
2、保存这个线程的场境;
3、取出其他线程的场境;
4、只要有线程在等待执行,就会不停的重复以上过程。
Raw Input Thread(RIT), 是指用来接收所有由键盘和鼠标产生的事件(Event)的线程,它是一个特殊的系统线程,每当RIT接收到处理器发出的硬件(Hardware)事件,它 就把那些事件放到相应线程的虚拟输入队列中。因此,应用程序的线程通常是不用等待它的硬件事件的。
事件驱动(Event-Driven)编程,Windows-based的应用程序运行后,就会一直等待,直 到有用户发布命令(例如:按一个按钮或选中一个菜单)之类的事件发生,这就叫做事件驱动编程(Event-Driven Programming)。它同D
文档评论(0)