操作系统学习笔记——线程

1.    多线程

l  操作系统引入进程的目的是,为了描述和实现多个程序的并发执行,以改善资源利用率级提高系统的吞吐量。

l  为什么引入线程?为了减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发性。

l  进程的两个属性

n  进程是一个拥有资源的独立单位;

n  进程同时又是一个可以独立调度的基本单位。

2.        系统为进程进行的操作(进程带来的开销)

l  管理进程:创建进程、撤销进程、进程切换。

l  进程作为资源的拥有者和系统的调度对象,需要花费系统较大的额外开销。所以系统中同时存在的进程数目不宜过多,进程切换的频率也不宜过高,而这也就限制了并发度的进一步提高。

3.        由进程到线程(进程复制申请资源,线程负责调度资源

l  目标:既能提高进程的并发度,又能降低系统的额外开销。

l  实现:将进程的资源申请和调度属性分开,即进程作为资源的申请和拥有者,但不作为调度的基本单位。如此便产生了线程的概念。

线程是进程中的一个实体,是调度的基本单位。

l  线程自身基本上不拥有系统资源,只拥有少许运行中必不可少的私有资源。线程可与同属一个进程的其他线程共享进程的全部资源。

例子:一对老夫妇,有3个子女。子女长大后要自己修房子(子进程)、找工作。如果没有分家,3个子女可以共享父亲(父进程)的房子,可以并发。如果他们分开了,资源是独立的,如果不分开,资源是共享的。

4.        线程的状态

l  进程中的所有线程共享该进程的状态。

l  线程具有三种基本状态:就绪、执行和阻塞。

l  线程一般不具备挂起状态。

5.        对线程的操作

l  一个进程可以创建和撤销一个或多个线程,同一进程中的多个线程可以并发执行。

l  对线程的操作

n  派生:当系统创建一个进程时,同时也为该进程派生了一个线程,同一进程中的线程可以再派生其他线程。

n  阻塞:当线程需要等待某事件时,它将被阻塞,释放处理机执行其他线程。

n  解除阻塞:当线程的阻塞事件发生,其状态转换为就绪,并插入到就绪队列,等待调度执行。

n  结束

 

6.        进程与线程

6.1    调度

l  传统操作系统,进程既是拥有资源的基本单位,也是独立调度的基本单位。

l  引入线程的操作系统,线程是独立调度的基本单位,进程是资源拥有的基本单位。

l  同一进程中的线程间切换不会引起进程切换,当一个进程中的线程切换到另一个进程中会引起进程切换。

6.2    并发

l  进程间可以并发执行。

l  同属一个进程的多个线程,也可以并发执行。

l  线程时操作系统拥有更好的并发性,从而能有效地使用系统资源和提供系统吞吐量。

l  当一个未引入线程的单处理机操作系统,若设置一个文件服务进程,当它由于某种原因阻塞,便没有其他的文件服务进程来提供服务。引入线程以后,可以为一个文件服务进程中设置多个服务线程,当其中一个线程阻塞时,文件服务进程中的其他线程可以继续运行,提供了文件服务的质量和系统吞吐量。

6.3    系统开销

l  操作系统管理进程的开销显著大于管理线程的开销。

l  进程切换的开销也大于线程切换的开销。

l  由于同一进程中的多个线程具有相同的地址空间,他们之间的同步和通信也比较容易。

l  有些类型的线程切换、同步和通信无需操作系统内核的干预。

7          线程的类型


1)  用户级线程

a)        定义:用户级线程的创建、撤销及切换等操作全部由支持线程的应用程序完成,内核并不知道线程的存在。

b)       如(a)图所示,纯粹的用户级线程,应用程序可以利用线程库设计多线程程序,该线程库包含各种用户管理用户级线程的例程。

c)        用户级线程阻塞是否会引起整个进程阻塞呢?

1) 当某进程中的一个线程需要等待另一线程的输出数据而阻塞时,整个进程并不会阻塞。即进程保持执行状态,其内的线程也是执行状态。

2) 当某线程因为I/O阻塞时,内核需要启动系统I/O,控制从用户级转到系统内核级,这时常会引起整个进程阻塞。

d)       用户级线程能节省大量的系统额外开销,提供并发性。

1) 线程的管理和控制权在用户级进行,线程切换无需内核干预,没有模式切换,减少了模式切换的开销。

2) 调度更灵活。应用程序可以根据需要选用线程库中不同的线程调度算法,而不受系统内核进程调度程序的约束。

3) 由于线程库独立于系统内核,可以运行在不同的操作系统上,时用户级线程可以得到不同的操作系统的支持,而无需修改操作系统内核。

e)        用户级线程也存在一些问题

1) 由于操作系统的系统调用会引起阻塞,用户级线程中的系统调用常常会引起线程级整个进程阻塞,削弱了线程的并发性。

2) 由于系统内核不知道用户级线程的存在,可能出现进程切换时,强行中断其内某个执行线程的情况。

3) 很难实现不同进程的线程并发。

2)       内核级线程

内核级线程的管理完全由系统内核完成,应用程序无权进程线程切换等操作,系统为应用程序提供相应的应用程序api


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值