进程和线程
(1)定义进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。(包括程序段,相关数据段,和进程控制块 PCB)线程:线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源, 只拥有一点在运行中必不可少的资源 (如程序计数器, 一组寄存器和栈), 但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
(2)关系一个线程可以创建和撤销另一个线程; 同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
(3)区别主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,6在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
(4)优缺点线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在 SMP 机器上运行,而进程则可以跨机器迁移。
进程间通信
(1)共享存储器系统(存储器中划分的共享存储区)实际操作中对应的是“剪贴板”(剪贴板实际上是系统维护管理的一块内存区域)的通信方式。
(2)消息传递系统(进程间的数据交换以消息(message)为单位)当今最流行的微内核操作系统中,微内核与服务器之间的通信,都采用了消息传递机制。
(3)管道通信系统(连接读写进程实现他们之间通信的共享文件(pipe 文件,类似先进先出的队列,由一个进程写,另一进程读))管道分为匿名管道、命名管道。匿名管道是未命名的、单向管道,通过父进程和一个子进程之间传输数据。匿名管道只能实现本地机器上两个进程之间的通信,不能实现跨网络的通信。命名管道不仅可以在本机上实现两个进程间的通信,还可以跨网络实现进程间的通信。
(4)客户机-服务器系统包括:套接字(socket),远程过程调用和远程方法调用。
死锁
(1)死锁定义在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。
(2)产生条件
互斥条件:
一个资源一次只能被一个进程使用
请求保持条件:
一个进程因请求资源而阻塞时,对已经获得资源保持不放
不可抢占条件:
进程已获得的资源在未使用完之前不能强行剥夺
循环等待条件:
若干进程之间形成一种头尾相接的循环等待资源的关系