进程
进程是一大堆对象的所有权的集合,进程拥有对象,进程可以拥有内存(memory context,理论上可以高达2GB),可以拥有file handles,可以拥有线程,可以拥有一大串DLL模块(被载入这一进程的地址空间中),可以拥有GDI资源(如Device Context和brushes)。
内存
内存可以大致分为三种类型:
Code:readonly,CPU唯一允许执行的内存
Data:程序中的所有变量(不包括函数中的局部变量),可区分为全局变量和静态变量两种,线程也可以使用malloc或者new动态配置内存。
Stack 调用函数时所用的堆栈空间,其中有局部变量,每个线程产生时配有一个堆栈。
CPU通过寄存器EAX,EBX,ECX,EDX,堆栈指针ESP, 指令指针E了解线程在任何时刻的工作状态。
Context Switching
在一个抢先式多任务系统中,操作系统小心地确保每个线程都有机会执行,它会依赖硬件的协助以及许多的记录工作。当硬件计时器认为某个线程已经执行够久了,就会发出一个中断,于是CPU取得目前这个线程的当前状态,也就是把所有寄存器内容拷贝到堆栈中,再把它从堆栈拷贝到一个context结构(这样便储存了线程的状态)中,以便以后再用。
切换不同的线程,操作系统应先切换该线程所隶属之进程的内存,然后恢复该线程放在context结构中的寄存器值。这个过程称为context switch。也就是换一套memory context-page directory和page tables
如果两个线程隶属不同进程,则这两个进程没有办法共享任何内存。即使两个进程以为它们在相同的地址上运行,实际上两个进程的指针事实上指向不同的实际内存。如果两个线程需要通信需要使之拥有共享内存(shared memory),同属同一进程,则将共享所有的内存。
分享到:
相关推荐
Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)...
Win32多线程程序设计全部代码 Win32多线程程序设计全部代码
Win32多线程程序设计 英文版
《Win32多线程程序设计》配套代码 《Win32多线程程序设计》配套代码
Win32多线程程序设计完美版,不是扫描版。Windows程序设计必不可少的参考书籍。
侯杰翻译Win32多线程程序设计
介绍多线程编程的经典著作,是初学多线程不可多得的好教材
在《Win32多线程程序设计》这本书中,Jim Beveridge和Robert Wiener告诉你什么时机、什么地点、什么方法可以使用多线程。 本书主题包括: ·Internet开发范例,包括ISAI和WinSock。 ·如何在服务器中使用线程和...
Win32 多线程程序设计完全手册PDF,本书详细讲解了多线程程序设计。
Win32多线程程序设计》配套代码 Win32多线程程序设计》配套代码
C++ Win32 多线程 Win32多线程程序设计 pdf 加全书签
Win32多线程程序设计及配套源码,台湾侯捷翻译
win32多线程程序设计 配套 源码
Win32多线程程序设计(随书源码) 更好的学习Win32多线程程序设计
Win32多线程程序设计源码.rar
Windows多线程程序设计_WIN32多线程程序设计学习笔记.zip
《Win32多线程程序设计 侯捷译》一书的光盘源代码
Win32Win32多线程程序设计(侯捷译),详细讲解在windows操作系统下,多线程程序的开发和设计。
Win32多线程程序设计 中文 非扫描版
侯俊杰翻译的多线程程序设计的书,讲的不错。该电子书为pdf格式,比较清晰。win32多线程程序设计第一部分(一共三部分)