操作系统:进程与线程间的关系以及死锁的4个必要条件
进程与线程间的关系
-
进程的概念:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 -
线程的概念:
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
-线程有4个状态:新建、就绪、运行、阻塞/等待/睡眠、死亡。
其各个状态之间的转换图如下:
-
进程与线程之间的关系:
① 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。②相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
③线程是进程中的一个单一的连续控制流程,一个进程可以拥有多个线程,是一对多的关系。 -
进程和线程之间的区别:
1.一个程序至少有一个进程,一个进程至少有一个线程。
2. 线程的划分尺度小于进程,使得多线程程序的并发性高。3.另外,进程在执行过程中拥有独立的内存单元,而线程没有独立的存储空间,和所属进程中的其他线程共享一个内存空间,从而极大地提高了程序的运行效率。
4.线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
5.从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
多线程
-
多线程概念:
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread)。 -
多线程的优点:
提高并发程度、提高效率; -
多线程的缺点:
①数据同步困难、开发调试困难;
②任意使用多线程会降低效率。
死锁
- 线程之间由于抢占资源容易形成死锁。
- 死锁的概念:死锁是由两个或多个线程都无法得到相应的锁而造成的所有线程都处于等待锁的状态的现象。
- 死锁的四个必要条件:
①互斥条件。一个资源只能被一个进程占用
②不可剥夺条件。某个进程占用了资源,就只能他自己去释放。
③请求和保持条件。某个进程之前申请了资源,我还想再申请资源,之前的资源还是我占用着,别人别想动。除非我自己不想用了,释放掉。
④循环等待条件。一定会有一个环互相等待。
死锁的4个处理策略:
①忽略该问题。
②检测死锁并且恢复。
③仔细地对资源进行动态分配,以避免死锁。
④通过破除死锁的4个必要条件之一,来防止死锁产生。
扩展:
进程和程序间的区别与联系:
- 1.进程由程序、数据和PCB三部分构成。程序是进程的实体。进程与程序的主要区别有:
(1)进程是程序的一次执行,属于一种动态的概念:而程序是- -组有序的指令,是一种静态的概
念。但是进程离开了程序也就失去了存在的意义。因此,进程是程序执行的动态过程,而程序
是进程运行的静态文本。
(2)程序可以作为一种软件资料长期保存,而进程是程序的一次执行过程,是暂时的。进程具有
生命期,它由创建而产生,由调度而运行,因得不到资源而阻塞,因撤消而死亡。
(3)一个进程可以执行一一个或几个程序:反之,同一个程序也可能由多个进程同时执行。
(4)进程具有并发性,它能与其它进程并发运行:而一般的程序不具有这种明显的特性。
(5)在没有线程的情况下,进程是一个独立的运行单位,也是系统进行资源分配和调度的基本
单位。因此,进程具有独立性,但并发的进程之间还具有相互制约性。
今日事、今日毕
~~
欢迎来小白菜市场,浇水施肥沐浴阳光直到开fa结果~~❤