一、win32基础
1、进程
1)、从win32角度来看,进程含有内存和资源。被进程拥有的资源,理论上可高达2GB。资源包括核心对象,UESR资源,GDI资源。
2)、进程本身并不能够执行,它只是提供一个安置内存和线程的地方。
2、内存
1)、每一个进程都关系到内存。
2)、内存可以大致分为三种类型:
I、Code【Code是程序的可执行部分,一定是只读性质】
II、Data【Data是你程序中的所有变量(不包括函数中的局部变量),可以区分为全局变量和静态变量两种。当然线程也可以使用malloc()或new动态配置内存】
III、Stack【Stack是你调用函数所用的栈堆空间,其中有局部变量。每个线程产生式配有一个栈堆。如果不需要,操作系统会将它动态扩充】
3、线程
1)、定义一个线程,需要的数据并不多,线程在“任何时刻下的状态”被定义在进程的某块内存中,以及·CPU寄存器上。其他的重要数据,储存在进程中的那些可被其他线程共享的内存内。
4、context switching
1)、要切换不同的线程,操作系统应该先切换该线程隶属之进程的内存,然后恢复该线程放在CONTEXT结构中的寄存器值的过程。
5、Race Conditions(竞争条件)
1)、context switching是抢先式多任务的心脏。在一个合作性多任务系统中,操作系统必须得到程序的允许才能够改变线程。但是在抢先式多任务系统中,控制权被强制转移,也因此两个线程之间的执行顺序变得不可预期,这个不可预期便造成了所谓的Race Conditions。
6、Atomic Operations(原子操作)
1)‘一个操作能够不受中断的完成,称之为原子操作。