读书人

并行处理有关问题

发布时间: 2012-05-28 17:59:33 作者: rapoo

并行处理问题
我们知道程序在电脑上运行是cpu通过程序计数器取指令执行的,然后pc+4指向下一个指令。而并行貌似是在执行这一句指令之后,把现场保存,也就是把数据都压栈,然后让pc取另一个指令的地址,跳转到其他指令去。它们在计算机中频繁的跳转,一会儿执行这个一会儿执行那个,让我们感觉就像是在同时执行一样。
基本概念可能就是我说的那样,但有几个问题我很有疑问。
1.进程之间是凭借什么条件才跳转到另一个的?是设置一段时间吗?
2.并行是靠cpu实现还是操作系统?软件也能实现相同的功能吗?因为我知道因为pc平常时候都是顺序执行的,pc+4指向下一个指令地址,只有在程序中显示的给pc赋值才会让pc跳转,那么是怎么样做的?
3.感觉进程之间的并行处理很浪费cpu啊, 因为一旦跳转就要把当前进程的所有环境都压栈,回来还要出栈...他不停的跳转让我感觉并行的同时是不是也在浪费cpu?感觉跳转浪费的cpu比做正事的cpu还要多。
4.

[解决办法]
lz貌似说的是并发的概念..
1.时间等,os处理的.
2.多线程是软件实现的,,有点类似.
3.的确慢
[解决办法]
随便我也想知道些,既然OS是基于时间片来的,那么这个时间片在哪里可以设置,或者通过什么函数来设置,我只知道可以通过pthread_attr_setschedparam函数来设置优先级,,请大神指教下,谢谢!
[解决办法]
朋友你错了,你的并行应该叫并发,这是宏观的,指多个进程在同时推进(如你所说CPU跳转很快我们感觉不出来,并行是指多个程序(线程)在同时进行(多CPU),强调微观性。

进程之间的跳转可以是基于信号量,互斥量,消息队列,共享内存,高优先级抢占,中断,reset(这个比较特殊,可以不用管),并行依靠OS,跳转可以是一跳跳转指令,执行很快. app用函数的调用就是一个典型的跳转.

第3跳转的问题,压栈,出栈的速度很快,中断就是典型的跳转,其实我们的电脑时时刻刻都在发生中断,你也没见的反应慢--
[解决办法]
参考Linux源代码中的进程线程调度。

读书人网 >C++

热点推荐