A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阮佳佳 中级黑马   /  2012-12-22 16:05  /  1952 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 阮佳佳 于 2012-12-22 21:26 编辑

CPU是如何切换线程的,并且如果cpu正在执行线程的时候,又去处理另一个线程,那么如何保存现在的线程。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

4 个回复

倒序浏览
暂时不要深究Cpu是如何切换线程的吧。  只需要知道 Cpu切换线程是 不确定的, 速度很快就是了。
Cpu在转去执行另一段代码之前,会保存上一次执行代码停止的地方的一个地址,下次再回头执行的时候只需要读取上一次保存的地址就可以找到上一次执行到哪里了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1:CPU运行是很快的;
2:进程间切换是随即的,有不确定性;
3:运行另一个进程时,原先的近程则先暂停;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
王继光 发表于 2012-12-22 17:17
暂时不要深究Cpu是如何切换线程的吧。  只需要知道 Cpu切换线程是 不确定的, 速度很快就是了。
Cpu在转去 ...

线程里是有寄存器保存原来的现场是吧?我明白了,谢谢啦
回复 使用道具 举报
切换线程这个不太清楚,子程序调用的话,程序的执行顺序被改变,CPU将转而执行子程序中的指令序列,子程序的调用指令分为近(near)调用和远(far)调用。如果被调用子程序的属性是近的,那么,CALL指令将产生一个近调用,它把该指令之后地址的偏移量(用一个字来表示的)压栈,把被调用子程序入口地址的偏移量送给指令指针寄存器IP即可实现执行程序的转移。如果被调用子程序的属性是远的,那么,CALL指令将产生一个远调用。这时,调用指令不仅要把该指令之后地址的偏移量压进栈,而且也要把段寄存器CS的值压进栈。在此之后,再把被调用子程序入口地址的偏移量和段值分别送给IP和CS,这样完成了子程序的远调用操作。子程序调用指令本身的执行不影响任何标志位,但子程序体中指令的执行会改变标志位,所以,如果希望子程序的执行不能改变调用指令前后的标志位,那么,就要在子程序的开始处保护标志位,在子程序的返回前恢复标志位。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马