天天看点

进程和线程基本概念

1  进程基本概念

1.1  多进程模型

多个进程是分时执行的,每个进程的指令流按顺序执行。

多个进程在一个处理器上分时运行,如图:

进程和线程基本概念

操作系统需要做的事情是:维护一个全局的进程表,记录下当前有哪些进程正在被执行;把时间分成适当的片段,现代处理器结构可以通过设置时钟中断,每次时钟中断到来时系统就会获得控制权,在进程间实施切换,即保留上一个进程的环境信息,恢复下一个进程的执行环境。

1.2  进程和程序

程序的内存布局结构

一个c/c++ 程序的典型布局结构,如图:

进程和线程基本概念

程序内存区域有三种类型:静态数据区,动态数据区,以及维护控制流信息和局部状态的调用栈区域。

静态数据区存放的时全局变量以及静态变量等信息,编写代码时确定。

动态数据区存放程序执行过程中根据需要而分配或回收的区域。

调用栈存放的时程序执行过程中的函数状态信息,函数参数。

2  线程基本概念

2.1  线程模型

现代计算机结构中有两种线程模型:用户级线程(user-level threads)和内核级线程(kernel-level threads)。

用户级线程是指,应用程序在操作系统提供的单个控制流的基础上,通过在某些控制点(比如系统调用)上分离出一些虚拟的控制流,从而模拟多个控制流的行为。

内核级线程往往指操作系统提供的线程语义。因此,系统有必要维护一个全局的线程表,在线程表中记录每个线程的寄存器、状态以及其他一些信息。

2.2  线程调度算法

线程调度算法可以分为非抢占式算法和抢占式算法。

三种典型的线程调度算法:先到先服务算法、时间片轮转调度算法、优先级调度算法。

2.3  线程和进程的关系

如图:

进程和线程基本概念

a图:不支持线程语义的系统中,进程提供一个完全的执行环境,同时也有一个控制流完成其预定的功能。

b图:操作系统按进程来分配处理器资源,对线程的支持可以在用户模式下完成。

c图:支持内核级线程的系统中,进程仅提供一个执行环境,它包含一个或多个线程,每个线程代表一个单独的指令流,操作系统按线程分配处理器资源。