操作系统面试之一——程序、进程、线程
一、程序、进程、线程
1.程序和进程 .
进程由两个部分组成: 1)操作系统用来管理进程的内核对象。内核对象也是系统用来存放
关于进程的统计信息的地方。 2)地址空间。 它包含所有可执行模块或 DLL 模块的代码和数
据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
定义 使用系统运行资源情况
程
序
计算机指令的集合,它以文件的形式存储在磁盘上。
程序是 静态实体 (passive Entity ),在多道程序系统
中,它是不能独立运行的, 更不能与其他程序并发执
行。
不使用【程序不能申请系统资源,不
能被系统调度,也不能作为独立运行
的单位,因此,它不占用系统的运行
资源】。
进
程
通常被定义为一个正在运行的程序的实例, 是一个程
序在其自身的地址空间中的一次执行活动。
定义: 进程是 进程实体 (包括: 程序段、 相关的数据
段、进程控制块 PCB)的运行过程,是系统进行资
源分配和调度的一个独立单位。
使用【进程是资源申请、调度和独立
运行的单位,因此,它使用系统中的
运行资源。】
2. 进程与线程
如果说操作系统 引入进程的目的 是为了提高程序并发执行, 以提高资源利用率和系统吞吐量。
那么操作系统中 引入线程的目的 ,则是为了减少进程并发执行过程中所付出的时空开销, 使
操作系统能很好的并发执行。
进程 process 定义了一个执行环境,包括它自己私有的地址空间、一个句柄表,以及一
个安全环境;线程则是一个控制流,有他自己的调用栈 call stack,记录了它的执行历史。
线程由两个部分组成: 1)线程的内核对象,操作系统用它来对线程实施管理。内核对象也
是系统用来存放线程统计信息的地方。 2)线程堆栈,它用于维护线程在执行代码时需要的