并发编程

使用应用级并发的应用程序称为并发程序。现代操作系统提供了三种基本的构造并发程序的方法:

1.进程。
用这种方法,每个逻辑控制流都是一个进程,有内核来调度和维护。因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显示的进程间通信机制(interprocess communication,IPC)。

2.I/O多路复用。
在这种形式的并发编程中,应用程序在一个程序的上下文中显式的调用它们自己的逻辑控制流。逻辑流被模型化为状态机,作为数据到达文件描述符的结果,主程序显式的从一个状态转换到另一个状态。因为是一个单独的进程,所以所有的流都共享同一个地址空间。

3.线程。
线程是运行在一个单一进程上下文的逻辑流,有内核进行调度。可以把线程看作是两种方式的混合体,像进程流一样由内核进行调度,而像I/O多路复用流一样共享同一个虚拟地址空间

每个线程都有它自己的独立的线程上下文,包括线程ID,栈,栈指针,PC,条件代码和通用目的寄存器数值。每个线程和其他线程一起共享进程上下文的剩余部分。这包括整个用户虚拟地址空间,它是由只读文本(代码),读/写数据,堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合

你可能感兴趣的:(编程,虚拟机)