操作系统

操作系统中进程和线程的区别?

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。

死锁的产生和避免?

死锁的产生条件:

  • 互斥:共享资源只能被一个线程占用

  • 占有且等待:线程在等待共享资源时,不会释放已占有的共享资源

  • 不可抢占:线程已经占有的资源不会被其他线程强行抢占

  • 循环等待:线程 A 等待线程 B 的资源,线程 B 等待线程 A 的资源

破坏占用且等待条件

一次性申请所有资源即可。 在线程和保护资源之间加入中间管理角色(确保单例),负责一次性获取资源和释放资源。

破坏不可抢占条件

让线程主动释放已占有资源。Java 语言层没有提供这种能力,但 java.util.concurrent 包下提供的 Lock 可以。

破坏循环等待条件

将资源进行排序,然后按照同样的顺序进行申请。

内存读写

进程通信

进程间通信IPC

socket

最后更新于

这有帮助吗?