本文目录:
一、进程和线程
这里所说的进程个概念要比前面给出的更复杂和精细。实际上,它包含两个独立的概念:一个与资源管理权有关(进程),一个与执行相关(线程)。
到目前为止提出的进程的概念包含两个特点:
1、资源所有权:一个进程包括一个存放进程映像的虚拟地址空间。进程映像是程序、数据、栈和进程控制块中定义的属性集合。一个进程总是拥有对资源的控制或所有权,这些资源包括:内存、I/O 通道、I/O 设备和文件。操作系统执行保护功能,以防止进程之间发生不必要的与资源相关的冲突;
2、调度/执行:一个进程沿着通过一个或多个程序的一条执行路径(轨迹)执行。其执行过程可能与其他进程的执行过程交替执行。因此,一个进程具有一个执行状态(运行、就绪等)和一个分配的优先级,并且是一个可被操作系统调度和分派的实体。
为了区分以上两点,分派的单位通常称为线程或轻量级进程,而拥有资源所有权的单位通常称为进程或任务。
1.1 多线程
多线程:是指操作系统在单个进程内支持多个并发执行路径的能力。Java运行时环境是单进程多线程的一个例子。
在多线程环境中,进程被定义成资源分配的单位和一个被保护的单位,与进程相关联的有:存放进程映像的虚拟地址空间;受保护的对处理器,其他进程,文件和 IO 资源的访问。
在一个进程中,可能有一个或多个线程,每个线程有:
1、线程执行状态(运行、就绪等);
2、在未运行时保存的线程上下文;从某种意义上看,线程可以被看做进程内的一个被独立地操作的程序计数器;
3、一个执行栈;
4、用于每个线程局部变量的静态存储空间;
5、与进程内的其他线程共享的对进程的内存和资源的访问。
单线程单进程模型中(没有明确的线程概念):进程的表示包括它的进程控制块和用户地址空间,以及在进程执行中管理调用/返回行为的用户栈和内核栈。当进程正在运行时,处理器寄存器将被该进程控制;当进程不运行时,这些处理器寄存器中的内容将被保存。
多线程环境中:进程仍然只有一个与之关联的进程控制块和用户地址空间。但是每个线程都有一个独立的栈,还有独立的线程控制块(用于包含寄存器值、优先级和其他与线程相关的状态信息)。