进程与线程
1、什么是进程?
狭义定义:进程就是一段程序的执行过程。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。在传统操作系统中,进程作为资源分配和独立运行的基本单元。
2、每个进程的地址空间都一样吗?地址空间都包括哪些内容?
每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
3、什么是进程切换?
进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。
4、什么是进程上下文?
在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的 切换实质上就是被中止运行进程与待运行进程上下文的切换。
5、运行中的进程的三种基本状态?
运行中的进程可能具有以下三种基本状态。就绪态、运行状态、阻塞状态。
6、什么是线程?
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
7、进程与线程的区别?
1)地址空间和其它资源(如打开文件):进程间地址空间相互独立,同一进程的各线程间共享地址空间。某进程内的线程在其它进程不可见。
2)通信:进程间通信(IPC),需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读写进程数据段(如全局变量)来进行通信——。
3)调度和切换:线程上下文切换比进程上下文切换要快得多。
4)在多线程OS中,进程不是一个可执行的实体。
8、什么是死锁?
所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。在多线程的程序中同样会出现死锁现象。
9、线程间的通信方式?
在windows系统中线程间的通信一般采用四种方式:全局变量方式、消息传递方式、参数传递方式和线程同步法。
10、线程同步的方法?http://www.cnblogs.com/wonderow/archive/2005/07/21/197693.html
线程同步方法包括:临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)。
临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。
信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作。