2.3.2 C++基本概念
应用程序(Application),他就是由指令(Instruction)组成的可以运行的文件。
进程(Process),有时和应用程序的意思一样,但在通常的情况下,进程是指一个正在运行的应用程序,正因为这样,进程由以下部分组成:
1.可以执行的程序。
2.Memory)中的私有地址空间。
3.资源(System Resource),件(File), 管道(Pipe), 通讯端口(Communications Port), 信号(Semaphore)。
4.还要有1个线程(Thread), 线程是最基本的执行单位。
因进程是可以同时存在,所以Windows操作系统(OperatingSystem)必须给进程提供保护,以防止他们冲突。
物理内存(Physical Memory),即你的计算机的实际内存,例如我现在用的电脑的内存是128M,物理内存的容量是达不到程序的要求的,于是就产生了虚拟内存(Virtual Memory)。虚拟内存(Virtual Memory),不是真正的内存,它通过映射(Map)的方法,使可用的虚拟地址(Virtual Address)达到4G(2的32次方),每个应用程序可以被分配2G的虚拟地址,剩下的2G留给操作系统自己用。在WindowsNT,应用程序可以有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.只要有线程在等待执行,就会不停的重复以上过程。 VC++的FFT快速傅里叶变换编程设计+流程图+源代码(5):http://www.youerw.com/jisuanji/lunwen_954.html