Windows进程及线程
进程的组成
进程是“惰性”的,进程要做任何的事情,都必须让线程来运行,线程执行进程地址空间中包含的代码。(也就是说单纯的进程是没有任何意义的)
一个进程可以拥有多个线程,所以的线程都能够在进程的地址空间中“伪同时”运行代码,每个线程都有他自己的一组CPU寄存器以及自己的堆栈.
每个进程必须有一个线程,当系统创建一个进程时,会自动创建第一个线程,这个线程我们称为主线程,如果没有线程要执行进程地址空间中的代码,进程就失去了存在的意义,此时系统会自动销毁进程以及他的地址空间。
操作系统会以轮询的方式为每个线程分配CPU时间片,从而营造出“并行”的假象
如果计算机拥有多个CPU,操作系统会更复杂的方式(并行)为线程分配CPU时间.
进程划定了一块区域,这区域代表一块空间,使我们进程所执行的代码,这些代码都是静态的
多线程并非越多越好 因为他是轮询的方式 所以切换也是有成本的 最优方式 几核电脑*2
进程切换
将进程的状态保存 将内存从物理内存卸下来 然后在加载..把进程的整个内存复制一份到虚拟内存当中 在执行进程的上下文
线程切换
只需要把线程的状态保存 ....进程不用管.....
进程的组成
进程是“惰性”的,进程要做任何的事情,都必须让线程来运行,线程执行进程地址空间中包含的代码。(也就是说单纯的进程是没有任何意义的)
一个进程可以拥有多个线程,所以的线程都能够在进程的地址空间中“伪同时”运行代码,每个线程都有他自己的一组CPU寄存器以及自己的堆栈.
每个进程必须有一个线程,当系统创建一个进程时,会自动创建第一个线程,这个线程我们称为主线程,如果没有线程要执行进程地址空间中的代码,进程就失去了存在的意义,此时系统会自动销毁进程以及他的地址空间。
操作系统会以轮询的方式为每个线程分配CPU时间片,从而营造出“并行”的假象
如果计算机拥有多个CPU,操作系统会更复杂的方式(并行)为线程分配CPU时间.
进程划定了一块区域,这区域代表一块空间,使我们进程所执行的代码,这些代码都是静态的
多线程并非越多越好 因为他是轮询的方式 所以切换也是有成本的 最优方式 几核电脑*2
进程切换
将进程的状态保存 将内存从物理内存卸下来 然后在加载..把进程的整个内存复制一份到虚拟内存当中 在执行进程的上下文
线程切换
只需要把线程的状态保存 ....进程不用管.....
线程比进程更小 更方便
内核对象
操作系统用来管理进程()
地址空间
包含了可执行文件及dll模块的代码和数据
这俩个组成了进程