计算机操作系统笔记(7)--进程管理之线程
来源:互联网 发布:音乐简谱制作软件 编辑:程序博客网 时间:2024/05/22 02:31
目的及要求
1)掌握线程的基本概念
2)理解线程的同步和通信
3)了解线程的实现方式
一 线程的基本概念
1 线程的引入
引入进程的目的:使多个程序能并发执行,提高资源利用率和系统吞吐量。
引入线程的目的:减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
进程的基本属性:
1)进程是一人可拥有资源的独立单位。
2)进程同时又是一个可独立调度和分派的基本单位。
线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享其所附属的进程的所有资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。
在多线程OS中,通常一个进程包括多个线程,每个线程是利用CPU的基本单位,是花费最小开销的实体。
线程和进程的比较
线程是属于进程的(线程不能单独存在),线程运行在进程空间内,每个线程共享其所附属的进程的所有资源(线程不拥有资源,线程只使用资源),当进程退出进该进程所产生的线程都会被强制退出并清除。
2 线程的属性
1)轻型实体(为进程的一个实体):基本上不拥有资源。只有一点必不可少的、能保证独立运行的资源。
2)独立调度和分派的基本单位:在CPU在运行的基本单位。
3)可并发执行:同一进程中线程可并发执行,不同进程中的线程也可并发执行。
4)共享进程资源:基本不拥有资源,使用所属进程的资源。
3 线程运行的状态
1)执行状态:线程正在CPU上执行。
2)就绪状态:具有所需要的所有资源,等待CPU空闲。
3)阻塞状态:缺少某些资源,等待资源的完成。
4 线程的创建和终止
在多线程OS中,应用程序启动时,通常只有一个线程(初始化线程)在执行,它根据需要可创建若干线程。
创建新线程时,需要利用纯种创建函数(或系统调用),并提供相应参数,线程创建函数执行完后,返回一个线程标识符供以后使用。
线程终止方式
1)自愿退出
2)出错或被其他线程强行终止
线程被终止后并不立即释放释放资源,只有当进程中的其它线程执行分离函数后,资源才分离出来能被其他线程利用。
5 多线程OS中的进程
在多线程OS中,进程是作为拥有资源的基本单位,通常进程都包含多个线程并为它们提供资源,但进程不再作为一个执行的实体。
此时进程的属性
1)作为系统资源分配的单位
2)可包括多个线程
3)进程不是一个执行的实体,但仍具有执行相关的状态
二 线程的同步和通信
为了支持不同频率的交互操作和不同程度的并行性,在多线程OS中通常提供多种同步机制。
1 互斥锁
用于实现线程间对资源互斥访问的机制。 Lock();
Unlock();
为了减少线程被阻塞的机会,有的系统还提供了一种用于mutex上的操作命令Trylock()
。
2 条件变量
条件变量通常都与互斥锁一起使用。互斥锁用于短期锁定,主要用来保证对临界区的互斥进入,而条件变量则用于线程的长期等待,直到所等待的资源成为可用资源。
3 信号量机制
1)私有信号量:实现同一进程内的各线程间的同步。
2)公用信号量:也称为系统信号量,实现不同进程间或不同进程的线程间的同步。
三线程的实现方式
1 内核支持线程(Kernel-Supported Threads)
对于通常的进程,无论是系统进程还是用户进程,进程的创建、撤消以及要求由系统设备完成的I/O操作,都是利用系统调用而进入内核,再由内核中的相应处理程序完成的。我们说它们是在操作系统内核的支持下运行的。
内核支持线程也依赖于内核支持运行的,线程的创建和撤销也依靠内核,此外在内核空间还为每一个内核支持线程设置一个线程控制块,内核是根据该控制块感知某线程的存在,并对其进行控制的。Windows NT和OS/2支持内核线程。
内核维护进程和线程
优点:
1)一个线程发起系统调用而阻塞,不会影响其他线程的运行;
2)时间片分配给线程,所以多线程的进程获得更多CPU时间。
缺点:用户线程模式切换开销大。
2 用户级线程(User-level Threads)
不依赖于OS核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
如:数据库系统informix,图形处理PageMaker。
线程的维护由应用进程完成,内核不了解用户级线程的存在。
优点:
调度、切换由应用软件内部进行,通常采用简单的规则,也无需用户态/核心态切换,所以速度很快。
缺点:
1)一个线程发起系统调用而阻塞,则整个进程在等待;
2)时间片分配给进程,线程多则每个线程就慢。
- 计算机操作系统笔记(7)--进程管理之线程
- 计算机操作系统笔记(3)--进程管理之进程控制
- 计算机操作系统笔记(4)--进程管理之进程同步
- 计算机操作系统笔记(6)--进程管理之进程通信
- 计算机操作系统(二)之进程管理
- 计算机操作系统之进程管理
- 计算机操作系统笔记(2)--进程管理之进程的基本概念
- 计算机操作系统之进程与线程
- 操作系统 进程管理之进程与线程
- 操作系统--------进程管理(线程)
- 计算机操作系统——进程管理(7)
- 计算机操作系统---处理机(进程)管理
- 计算机操作系统的进程管理
- 操作系统(二):进程和线程管理_1_进程、线程
- 计算机操作系统之进程(三)
- 计算机操作系统之线程(四)
- 计算机操作系统之存储器管理(六)
- 操作系统之进程管理
- android&java 正则表达式
- MVC和MVP两种框架设计模式
- Spring框架知识要点总结(第一天)
- 欢迎使用CSDN-markdown编辑器
- 当今社会,非名校寒门大学生成功的概率有多大?
- 计算机操作系统笔记(7)--进程管理之线程
- 位图(tkinter,Python3.x)
- Android网络编程TCP、UDP(一)
- Linux screen模式下运行文件
- Android ——Window类
- Glide之后台线程加载及缓存资源
- win+pycharm+django+mysql开发(win系统pythonweb开发)(二)
- html特殊字符 编码css3 content:"我是特殊符
- 计算机科学与技术——英语技能不可少