进程与线程-2、用户级线程切换过程
来源:互联网 发布:js 获取html属性值 编辑:程序博客网 时间:2024/06/16 07:28
参考哈工大李治军老师公开课。
用户级线程示例(浏览器)
在浏览器使用的过程中,访问一个网页需要在服务器下载资源,并且在客户端的浏览器中显示出来。我们看到页面会先显示一些文字、图片,然后逐步加载其他信息,进而逐步完善。
图一:网页加载过程
通过这个页面加载过程是一个边加载边显示的过程,可以看出浏览器两个程序在跑,一个负责现在资源,一个负责显示。所以浏览器是多用户程序,而且是用户级。
图二:浏览器执行流程
用户级线程切换过程(以两个线程为例):
在用户级线程中,每个线程会被分配一个线程进行栈TCB,用于记录每个线程执行时的跳转地址。例子:
执行A函数,调用了B函数,将函数B的地址104压入TCB1,然后执行B函数,执行到Yield(),将204压入TCB1中;在Yield()中,会执行当前esp指针的转换,指向TCB2;
执行C函数,调用D()函数,将304压入TCB2,执行D函数,运行Yield(),在执行当前TCB指针的切换,切换至TCB1,TCB1中的栈顶弹出,继续执行B()函数后面的内容。
图三:用户级线程切换过程
用户级线程并发执行的并发度相对较低,而且比较容易出现阻塞,例如图三中在执行A()函数时,在调用B()函数之前出现异常,导致程序不能往下执行了,也无法进行线程的切换,这样就会导致程序的并发性降低。
阅读全文
0 0
- 进程与线程-2、用户级线程切换过程
- 进程与线程-3、内核级线程切换过程
- 操作系统之进程与线程2——用户级线程及其切换
- 线程上下文切换与进程上下文切换
- 切换进程 切换线程
- 进程与线程的描述与控制,核心级线程和用户级线程的区别
- 进程、线程 :系统资源 与 上下文切换
- 操作系统 3. 线程基本概念; 线程于进程的比较; 用户线程与内核线程; 线程模型
- 进程与线程线程
- 操作系统之进程与线程3——内核级线程及切换(未完成)
- 进程间切换与线程间切换的区别
- 进程与线程异同&&系统级进程与用户级进程异同
- 用户级线程与内核级线程
- 用户级线程与内核级线程
- 内核级线程与用户级线程
- java 线程2 线程与进程
- Linux内核线程、用户进程,用户线程
- 用户进程,用户线程,内核线程
- dell 成就 5470安装win10 ubuntu双系统方法
- python(三)
- 循环计算文本框值之间的差值
- Opencv-python接口:轮廓检测
- 记一次SQL查询
- 进程与线程-2、用户级线程切换过程
- uva 1404 求很大数的素数算法
- 网络流量监控告警
- AspectJ学习总结
- Dialog中存在radiogroup动态添加radiobutton的ID问题
- Struts2 如何用JS获取sx:datetimepicker选择的日期
- Android Drawable 和 xml文件转化关系
- CentOS 7 安装 ShadowSocks 客户端
- 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾