进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程可以分为三个状态
就绪状态:进程已经得到运行所需要的资源,只等待CPU调度就可以。
运行状态:进程已经得到运行所需要的资源,并且得到了CPU的调度。
等待状态:不具备运行条件,等待时机的状态。
进程死锁:
如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。
产生死锁的四个必要条件:
1.互斥条件(Mutualexclusion):资源不能被共享,只能由一个进程使用。
2.请求与保持条件(Holdand wait):已经得到资源的进程可以再次申请新的资源。
3.非剥夺条件(Nopre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4.循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在 等待相邻进程正占用的资源。
解决死锁的策略:
死锁预防:例如:要求用户申请资源时一起中请所需的全部资源,这就破坏了保持
和等待条件;将资源分层,得到上一层资源后,才能够申请下一层资源,它破坏了
环路等待条件。预防通常会降低系统的效率。
死锁避免:避免是指进程在每次中请资源时判断这些操作是否安个,典型算法是
“银行家算法”。但这种算法会增加系统的开销。
死锁检测:前两者是书前措施,而死锁的检测则是判断系统是否处于死锁状态,如
果是,则执行死锁解除策略。
死锁解除:这是与死锁检测结合使用的,它使用的方式就是剥夺。即将资源强行分
配给别的进程。