操作系统概念(四)——线程

此为本人在期中临近复习操作系统概念时将手写版笔记中的重点进行提炼后,加入个人的理解与思考所写出的总结性笔记,仅供参考。

一、概念
1、单个进程可包括多个控制线程,一个进程的多个线程可并发执行。
2、同一进程的多线程调度,不引起进程的上下文(PCB)切换,所以CPU不会发生切换,但线程的上下文(TCB)会切换。
3、简单地讲,只是将一个进程分成几段,通过频繁的在一个CPU上切换实现一种类似于并行运行的效果。
4、线程没有独立的地址空间,处于进程的地址空间中。
5、线程是进程的一个属性,是被系统独立调用的基本单元,是CPU的抽象
6、线程有ID、PC、寄存器、栈组成,与同属线程(由一个进程划分出来的线程)共享代码段、数据段、资源。
7、每个线程的栈与寄存器独立,相互之间共享内存与全局变量。
8、局部变量在栈空间中,全局变量在堆空间中。
9、TCB:寄存器组、栈、调度信息(PC)
10、PCB:资源、信息、内存、环境变量
11、用户线程:运行于用户层,由内核支持,而无需内和管理
12、内核线程:运行于内核层,由操作系统支持和管理,内核在其空间内执行线程创建、调度、管理

二、多线程模型,提供对用户和内核线程支持的方法
1、多对一模型:多个用户线程映射到一个内核线程,线程管理由线程库在用户空间进行,效率高,但一阻塞全阻塞
2、一对一模型:每个用户线程映射到一个内核线程,开销大
3、多对多模型:复用了用户到同数或小数的内核线程,允许OS创建足够多的内核线程
4、二级模型:以上三种两两组合

三、线程库,用以完成线程调度
1、为程序员提供创建和管理线程的API
2、可在用户空间中提供一个没有内核支持的库,调用库中的一个函数只是导致了用户空间中一个本地函数调用
3、执行一个有OS直接支持的内核级的库

四、多线程问题
1、线程调用esec()系统调用会用指定的程序替换整个进程,包括所有线程
2、线程调用fork()系统调用会复制所有线程,或复制调用了fork的线程
3、异步取消:立即终止目标线程;延迟取消:不断检查是否终止,允许线程有机会有序终止。
4、信号:不管同步信号还是一步信号,有同样的模式:
①、信号由特定事件的发生所产生
②、产生的信号要发送到进程
③、一旦发送,信号必须加以处理
5、信号处理:信号由两种可能的处理程序处理:
①、默认信号处理程序
②、用户定义的信号处理程序

6、多线程信号可能会被发送到:
①、信号所应用的线程
②、进程内的每个线程
③、到某个固定的线程
④、规定一特定线程接收所有信号
7、线程池:在进程开始时,创建一定数目的线程,放入池中等待工作。快,但是限制了可用线程的数目。线程池中的线程数目由CPU数量、内存大小等决定。
8、线程特定数据:允许每个线程拥有自己的数据,为了让线程与其唯一标识符相关联。
9、随着并行节点树木的增加,性能会有所上升,但是会有上限。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值