正文

Windows程序设计[1]-程序运行原理2006-03-16 23:13:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/rickone/11072.html

分享到:

今天又分了个新类出来,‘Win32编程’,其实Windows编程对我不算是刚接触,以前会一点VB,但VB对API封装得太深了,学C语言还是大一开始,决定更系统的学习一下。手上的书是《Windows程序设计》王艳平 著,感觉很不错。

废话少说,一起开始。

第1章是Windows编程基础,有对VC++的使用的以及Win32API介绍,略了。这里还提到代码风格,我觉得很重要。
记得大一的时候刚学完C,然后找本VC的书来看,硬是看不懂,像dword,bool,根本就没见过。书中推荐了一种写法:

1、原则,一个变量或者常量的名字应该越长越好,这里说的长是指所带的信息要足够,这和以前写的小程序不同,小程序里大可以用i,j,k,n之类的变量名,在大程序里就不能这样,在更大的工程里甚至还会用到命名空间,可见命名是很重要;那名字中要体现哪些信息呢?书中P6写到,‘本书规定的变量命名规则为:[限制范围的前缀]+[数据类型前缀]+[有意义的单词]’,限制范围是指变量的作用域,比如全局变量用g_(global),m_表示成员变量,默认为局部变量等;数据类型也缩为一个字,如长整型n,布尔型b,举个完事的例子就是,int m_nErrorCode;(4字节长的成员变量,长整型,表示错误编号)。
2、现在VC中也用了很多的类型别名,用typedef...;定义的宏,如下:

typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef void far *LPVOID;
typedef int INT;
typedef unsigned int UINT
...

从中可以看出来,新的名字里隐含更多的信息,如P表示指针等,从现在开始要熟悉这些新名字。书上还有提到,这种命名法叫‘匈牙利命名法’P15。

第2章讲多进程和多线程,如果有操作系统基础很容易理解,在Windows里把一个任务(可以看成是作业吧)当成一个进程,实际上是很大的,比如一个调入内存的可执行exe文件就是一个进程,在系统中就有个进程控制块,一个小的数据结构,用来管理进程的,完了一个进程还要并且至少要一个主要线程,线程在Windows里是时间上的分划单位,也就是说进程是空间调度的对象,而线程是时间高度的对象,空间就是指存储器,时间就是指CPU,一旦线程处于激活状态就可以参于竞争CPU时间片,这是多任务操作系统的关键技术,当把CPU的占有权分成一些离散的时间片,那CPU就可以充分忙起来,那CPU的利用率就会提高。线程里有上下文,记录的就是前一次挂起时当前的CPU运行寄存器的状态,以便下次占用CPU时可以连续起来。

进程对象和线程对象都是内核对象,Windows有用户模式和内核模式两种,内核对象可以看成是系统的资源。

Windows采用的是有优先级的线程调度算法,IE有最高权,当我们按‘开始’按钮的时候,其它的线程都没能得到时间片,IE的线程有最高优先级。

Win32是指32位PC机上的寻址能力是32位的,32位的地址线就可以寻2^32个地址空间,也就是4GB的内存空间,内存不可能有那么大,所以采用虚存技术,在系统中用一个表查数据,数据在内存中就从内存中取,否则从虚存中取。4GB中的前2GB给用户,后2GB系统保留。

以后C盘分4GB当虚存,多了也无用。今天就这么多,前两章是基础,也很重要。

阅读(6852) | 评论(7)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册