2.7线程Threads

版权声明:版权归游吟焰火所有,未经允许不得转载。 https://blog.csdn.net/chenzhanqi/article/details/83794579

线程是进程中的一个实体,是被系统独立调度和分派的基本单位。在多线程OS中,通常是在一个进程中包括多个线程。

1.线程的引入:

引入线程的目的:减少程序在并发执行时所付出的时空开销,在追求效率的前提下实现并发。
注: 利用进程实现的多道程序系统中,频繁的进程切换会浪费大量时空开销。限制并发程度问题所在:进程实体信息量大,对进程的管理操作越多,与运行时间的比值就越大,运行效率就低。
当A进程内的a1功能执行不下去时,可以切换到an上继续执行,避免切换到B,节约切换开销
当A进程内的a1功能执行不下去时,可以切换到an上继续执行,避免切换到B,节约切换开销。

2.线程的属性:

2.1轻型实体:只需一点必不可少的、能保证独立运行的资源(TCB)。
2.2独立调度和分派的基本单位:调度切换迅速且开销小。
2.3可并发执行
2.4共享进程资源:同进程中的线程可共享相同的进程地址空间、已打开文件、信号量机构等。

3.线程的信息(TCB管理什么信息?):

系统为每个线程配置了一个线程控制块(TCB),包括:
(1)状态参数:标识符、运行状态、优先级、寄存器状态、堆栈、专有存储器、信号屏蔽等。
(2)运行状态:执行、就绪、阻塞

4.线程的创建和终止:

在多线程OS中,应用程序启动时,通常只有一个线程(初始化线程)在执行,它根据需要再创建若干线程。
4.1创建新线程:利用线程创建函数(或系统调用),提供相应参数。线程创建函数执行完后,返回一个线程标识符供以后使用。
4.2线程被终止:不立即释放资源,只有当进程中的其它线程执行分离函数后,资源才分离出来能被其它线程利用。被终止而未释放资源的线程仍可被需要它的线程调用,使其重新恢复运行。

5.多线程的应用:

一个应用程序有多个任务或功能需要同时进行处理,就最适合多线程机制。
应用情况举例:

  • 网络软件,需要同时进行用户界面响应、收数据、发数据。
  • 网络下载工具:多线程下载的下载工具

6.多线程OS中的进程属性:

6.1进程只是用于分配系统资源
6.2包括多个线程
6.3进程不再是执行实体,线程在进程范围内作为执行实体。

7.线程与进程的区别:

7.1调度单位:

  • 传统OS中进程作为独立调度和分派的基本单位,进程是能独立运行的基本单位。
  • 在引入线程的OS中,把线程作为调度和分派的基本单位,因而线程是独立运行的基本单位。

7.2并发行:

  • 在引入线程的OS中,不仅线程间可以并发执行,一个线程中的多个线程也可并发执行,甚至允许一个进程中的所有线程并发执行。

7.3拥有资源:

  • 进程可以拥有资源,并作为系统中拥有独立资源的一个基本单位。
  • 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。属于同一进程的所有线程都拥有相同的地址空间(线程可以访问该地址空间中的每一个虚地址)。

7.4系统开销:

  • 创建或撤销进程是系统都要为之分配和祸首PCB、分配或回收其他资源。
  • 线程的创建、撤销及切换所付出的系统开销远低于进程。

7.5支持多处理机系统:

  • 传统的进程(单线程进程),不论有多少处理机,该进程只能运行在一个处理机上。
  • 多线程进程可以把一个进程中的多个线程分配到多个处理机上。

猜你喜欢

转载自blog.csdn.net/chenzhanqi/article/details/83794579
2.7