操作系统4

1.进程具有:
(1)资源所有权
(2)调度/执行

2.进程
(1)进程控制块 (3)用户栈
(2)用户地址空间 (4)内核栈
线程在此基础上
(1)进程控制块 线程 线程 线程
(2)用户地址空间 (3)线程控制块 (3)线程控制块 (3)线程控制块
(4)用户栈 (4)用户栈 (4)用户栈
(5)内核栈 (5)内核栈 (5)内核栈
因此进程的所有线程可以共享该进程的状态和资源,访问相同的数据。
进程相较于线程:
(1)创建时间短
(2)终止时间短
(3)切换时间短
(4)通信效率高 进程通信需要内核介入

3.单用户多处理系统使用线程的例子:
(1)前后台工作 一个线程显示菜单并读取输入 一个执行用户命令
(2)异步处理 例如写线程对系统周期性备份
(3)执行速度 即使一个线程被I/O阻塞其他线程可以继续运行
(4)模块化程序结构

4.线程 运行态,就绪态,阻塞态
线程基本操作 派生 阻塞 接触阻塞 结束

5.线程的分类
用户级 内核级
ULT KLT
纯用户级软件就都是用户级线程,管理线程的工作由应用程序完成 内核只管理进程 不知道线程的存在
线程的新建,切换等操作都由线程库负责,且线程库的数据结构中,各线程的执行信息不会因为进程被内核的操而改变
比如线程在运行但是进程被阻塞了,处理器看线程没运行,但线程库看来还是在运行

ULT优于KLT的地方:
(1)线程切换不需要切换到内核模式 省了两次模式切换的开销
(2)调度算法可以根据应用程序定做 而不乱底层的操作系统调度程序
(3)ULT可以在任何操作系统运行 不需要对底层内核进行修改
缺点
(1)ULT执行一个系统调用时会阻塞进程内的所有线程
(2)ULT不能使用multiprogramming 多道程序设计技术 以及多处理技术
解决线程阻塞的问题 加入套管技术jacketing 例如 不是直接调用系统I/O例程 而是让线程调用一个应用级的I/O套管例程 使得阻塞后把控制权给另一个线程

纯KLT 管理线程的工作由内核完成 没有线程库
好处
(1)可以把同个进程的多个线程调度到多个处理器中,一个线程阻塞时,可以调度另一个线程
(2)内核例程自身也可是多线程的
缺点
(1)在线程转交控制权时需要进入内核模式
Solaris操作系统设置ULT/KLT = 1 :1

6.TCB thread control block
ID
saved register
other per-thread info

7.mutithreading
(1)responsiveness
(2)resource sharing
(3)utilization of MP
(4)economy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值