C++ Programmer's Cookbook

{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}

《windows核心编程》之精华

学习《 windows 核心编程》

        --如果发现有什么理解的不正确的,欢迎指出,共同学习,共同进步哦!  

 

u       字符集,一切软件的基础,单字集(用 1 个字节表示一个字符),双字节字符集( DBCS, 并不是用 2 个字节表示一个字符哦,而是用 1 个, 2 个,或多个字节的混合来表示字符),宽字节字符集( unicode 2 个字节来表示一个字符)。对 windows 操作系统来说, windows 98 内核用 ANSI windows ME unicode windows 2000 以后的版本也用 unicode ,对于我们在 windows 上开发, windows2000 以后的版本,我们即可以开发 ANSI 版本,也可以开发 unicode 版本,他们都能够很好的运行,但是重效率和软件的国际化来看的化,最后使用 unicode 进行编码。

u       内核对象,被系统和应用程序用来管理各种资源,我们可以使用 API 来管理和使用内核对象,但是不能直接修改内核对象的数据结构,内核对象由内核所拥有,内核知道某个内核对象有没有被使用等,内核对象被广泛的使用在进程,线程。。。中用来管理。(内核即操作系统的本质,核心所在,进行系统的管理)

u       进程,包含用来管理进程的内核对象和用来加载 exe 和数据等的地址空间。当一个 exe 开始运行时,它即对应一个进程, exe main ()也即是进程入口函数,但是在进入 main ()之前还有 c c ++运行库的初始化。当创建一个进程时,就产生了一个唯一的实例句柄,它就是 winmain ()函数中要传入的实例句柄,另外在主进程(可没有非主进程的啊,但也可以认为主进程的子进程是非主进程,因为系统不保存父子进程的关系,他们可以看作是相互独立的)中可以创建它的子进程,用来对多个需要共同管理的线程进行管理。

u       作业,作业是进程的容器,可以统一地对一组进程增加一些额外的限制。有时候建立单个进程的作业也是有意义的,因为可以对单一进程施加一些进程本身所没有的属性。

u       线程,线程在进程中被创建,在创建进程时,默认的主线程即被创建。操作系统是用线程来完成任务的,因为进程不直接获得操作系统的时间,线程可以认为是操作系统的最小的处理单位。在多线程编程中,首先要注意的就是线程的同步问题,还有线程池的使用。且最好不要使用全局或静态变量。

u       纤程,比线程更小的单位,纤程是用户对线程进行分割,然后自定义算法实行对纤程的调用,系统的内核并不知道线程。

u       Windows 内存结构,每个进程都有它自己的虚拟内存, 32 位机,虚拟内存位 4G ,但是这 4G 并不都可以被用户使用,它包含 NULL 指针, dos 兼容区,文件映射区,系统核心区,能被用户使用的只有 2G 。当然现在 64 位的机子可不是 2G 哦。

u       虚拟内存, windows 进行内存管理的方法之一,最适合用来管理大型对象和结构数组,也即相当于 RAM (即物理内存)的二级缓存,系统先到 RAM 找,如找不到就到虚拟内存(页文件)找,找到了就加载到 RAM 中,然后执行。

u       内存映射文件, windows 的第二中内存管理方法,最适合用来管理大型数据流和单机上的数据共享。 与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。系统还使用内存映射文件,以便加载和执行 . e x e D L L 文件。

u       堆栈, windows 的第三中内存管理方法,最适合管理大量的小对象,例如链表等,线程,进程都有自己的堆栈,默认的大小位 1M ,也可以修改。


最后是DLL高级和SEH的使用。

 

主要参考:

       windows 核心编程》       机械工业出版社   jeffrey richter

       windows 系统编程》        人民邮电出版社   求是科技

       windows2000 编程技术内幕》    机械工业出版社

posted on 2006-09-25 18:23 梦在天涯 阅读(3952) 评论(4)  编辑 收藏 引用 所属分类: Windows API

评论

# re: 《windows核心编程》之精华 2006-09-26 10:22 ahpho

"系统的内核并不知道线程"
笔误吧...  回复  更多评论   

# re: 《windows核心编程》之精华 2006-09-26 22:15

系统的内核并不知道线程"

这个得看具体的操作系统,在操作系统概念里有讲的,在WINDOW系统中好象这样的  回复  更多评论   

# re: 《windows核心编程》之精华 2008-05-19 14:53 。。。

"系统的内核并不知道线程",应该是"系统的内核并不知道纤程"  回复  更多评论   

# re: 《windows核心编程》之精华 2009-02-04 01:30 iamatig

我们这里已经有了此书的专门主题
到这里来,大家一起发表评论,可以针对某节,甚至某段来评论。
有时看书,会半天才看懂一段话,也许已经早有朋友看懂了,也许他早已经发表在我们的网站了,大家一起来看看!

这两本书我都看过,WINDOWS程序设计是介绍用WIN32 API编写用户级程序,主要是介绍API的使用,让你习惯这种编写规则。
后者是介绍更高级的WIN32 API,最主要是介绍底层的一些东西,让你掌握更强大的功能。
http://www.nba5i.com/bbsxp/ShowPost.asp?ThreadID=311
我写了自己的阅读心得在这里,欢迎大家评评
  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

EMail:itech001#126.com

导航

统计

  • 随笔 - 461
  • 文章 - 4
  • 评论 - 746
  • 引用 - 0

常用链接

随笔分类

随笔档案

收藏夹

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

积分与排名

  • 积分 - 1748381
  • 排名 - 5

最新评论

阅读排行榜