http://blog.csdn.net/borland82/article/details/2590195#comments
进程(processes)
进程含有内存和资源。。。内存可达2GB。。。资源包括核心对象,USER资源,GDI资源。。。进程本身不能执行,只是提供一个安置内存和线程的地方。。。(UNIX不同,UNIX中,进程和线程是相同的东西,线程的幻觉是由runtime library产生的,操作系统毫无所悉)
内存
code.只读性质。。。
data.程序中所有变量(但不包括局部变量),可区分为全局变量和静态变量。。。
stack.调用程序中的栈空间。。。其中包括局部变量。。。每个线程产生时分配一个堆栈。。。同时系统会动态扩充。。。
线程(threads)
进程中的某块内存。。。cpu中的寄存器。。。
context switching
硬件发出一个中断(interrupt),cpu取得当前线程的当前状态。。。即把所有寄存器拷贝到堆栈中,再把它从堆栈中拷贝到一个context结构。。。这样就存储了线程的状态。。。
要切换不同的线程,操作系统应该先切换该线程所隶属的进程的内存(也就是切换一套memory context----page directory 和page table)。。。然后恢复该线程放在context结构中的寄存器值。。。整个过程成为context switching
race conditions(竞争条件)
atomic operations(原子操作)
cpu指令是非常低阶的----一条c语句可分为多条机器指令。。。