进程,线程----Windows核心编程 学习简要记录

什么是进程?

进程:一个正在运行的应用程序的一个实例。

进程的两个组件:
1:一个内核对象(保存进程统计信息的地方),用来管理进程。

2:一个地址空间,其中包含执行体(.exe),dll模块的代码和数据,还包含了动态内存分配,比如线程堆栈和堆的分配。

进程与线程的简要关系:

执行的最小单元是线程。一个进程可以有多个线程,进程不做任何事,都必须在进程的上下文中执行,进程空间包含的代码。所有的线程在地址空间中“同时”(是一种假现象)执行代码,为此每个线程都有他自己的一组cpu寄存器和它自己的堆栈。由此也可以看出进程必须有个线程,否则就没进程存在的必要。创建进程时会默认创建一个主线程的,然后再由这个主线程,创建更多的线程。

多个线程的“同时”执行的实质:

操作系统会轮流(论询方式)为每个线程调度一些cpu时间,中断方式执行线程。用户感觉不到,认为是同时进行的。如果配置多个cpu,可以做到真正的并发运行。

接下我们来了解线程,并区分与进程的区别

什么是线程?

通过上面的笔记知道进程有内核对象和一个地址空间,线程也有两个组件组成。

1 一个是线程内核对象,操作系统用它管理线程,内核对象用来存放线程统计信息的地方。

2一个线程堆栈,用来维护线程执行时所需的所有函数参数和局部变量。

我们知道进程是有惰性的,进程不执行任何东西,它只是一个线程的容器,线程必须在某个进程的上下文中创建。而且会在进程内部终其一身。

线程与进程的简单比较

1 一个进程创建需要一个虚拟的地址空间,需要大量系统资源,系统中会发生大量的记录活动,而这些需要大量的内存,由于.exe,.dll文件加载到一个地址空间,所以还需要用到文件资源,而相对于线程,资源要少的多。线程几乎不涉及记录活动,所以不需要占用多少内存。

什么时候创建线程了?

window上的电子表格软件,可以在后台执行重新计算,文件后台可以拷贝到其他存储介质上,web浏览器可以在后台与其服务器通信,当前网页没有显示出来,用户可以调整浏览器窗口的大小,或者转移到其他网站…

通过上面的这些例子我们注意到多线程简化了用户界面的设计,依赖与输入输出(网络,文件..)的任务使用一个单独线程,可随意利用程序的界面来取消操作。

当然多线程是好,当然也有不足,资源的共享个问题。有机会看看一下donet,clr托管下的进程与线程。

 

学习过程简单摘要,不足地方希望指出。。谢谢!!

posted @ 2012-04-20 15:18  Liuxiucai  阅读(214)  评论(2)    收藏  举报