fengjixuchui 发表于 2013-11-27 21:04:46

CPU执行程序的最小单位是什么?

想请教各位一个问题,当CPU已经开始执行一条指令但是还没有执行完,这是有可能被打断去执行其它指令吗?
比如说一个程序(假设运行在单核单线程的单个处理器上)有线程A和线程B,假如线程A已经开始执行了mov eax,ebx,但是还没有执行完,此时线程A有可能被打断去执行线程B的指令吗?

admintow 发表于 2013-11-27 21:36:33

我表示我也不知,同求答案

maomingkun 发表于 2013-11-27 23:17:25

我是个门外汉我个人感觉不行 一条指令应该是最小的吧你让他执行一般去干别的他估计不愿意:lol:

卧室不要床 发表于 2013-11-28 00:42:51

不知道呀不知道

月亮是我瓣弯的 发表于 2013-11-28 08:26:13

我也想知道
:shutup:

福禄娃娃 发表于 2013-11-28 13:10:40

打断的话有内中断和外中断

CPU是轮流执行每个程序一小块时间片,由于CPU速度很快,你感觉不到,以为程序在并行执行,其实也只是快速的轮流执行。

格式天下 发表于 2013-11-28 16:39:48

线程a可能被阻塞(也就是你说的打断),然后执行线程b,给你个简单的例子
public class Ex_3 implements Runnable {
        String threadName;
        public Ex_3(String threadName)
        {
                System.out.println(threadName);
                this.threadName = threadName;
        }
       
        public void run()
        {
                for(int i = 0 ; i < 3 ; ++i)
                {
                        System.out.println("正在运行的线程:"+threadName);
                       
                        try
                        {
                                Thread.sleep((int)Math.random()*1000);
                        }
                        catch(Exception ex)
                        {
                                System.out.println(ex);
                        }
                }
        }
        public static void main(String[] args)
        {
                System.out.println("开始运行主函数");
                Ex_3 t1 = new Ex_3("first");
                Ex_3 t2 = new Ex_3("second");
               
                Thread tt1 = new Thread(t1);//线程1
                Thread tt2 = new Thread(t2);//线程2
               
                tt1.start();//线程1启动
                tt2.start();//线程2启动
               
                System.out.println("主函数结束");
        }
}
这段程序的两次运行结果:
(1)。开始运行主函数
first
second
主函数结束
正在运行的线程:first
正在运行的线程:first
正在运行的线程:first
正在运行的线程:second
正在运行的线程:second
正在运行的线程:second
(2)。开始运行主函数
first
second
主函数结束
正在运行的线程:second
正在运行的线程:first
正在运行的线程:second
正在运行的线程:first
正在运行的线程:second
正在运行的线程:first
页: [1]
查看完整版本: CPU执行程序的最小单位是什么?