并行处理问题

风玉 2012-04-26 08:08:59
我们知道程序在电脑上运行是cpu通过程序计数器取指令执行的,然后pc+4指向下一个指令。而并行貌似是在执行这一句指令之后,把现场保存,也就是把数据都压栈,然后让pc取另一个指令的地址,跳转到其他指令去。它们在计算机中频繁的跳转,一会儿执行这个一会儿执行那个,让我们感觉就像是在同时执行一样。
基本概念可能就是我说的那样,但有几个问题我很有疑问。
1.进程之间是凭借什么条件才跳转到另一个的?是设置一段时间吗?
2.并行是靠cpu实现还是操作系统?软件也能实现相同的功能吗?因为我知道因为pc平常时候都是顺序执行的,pc+4指向下一个指令地址,只有在程序中显示的给pc赋值才会让pc跳转,那么是怎么样做的?
3.感觉进程之间的并行处理很浪费cpu啊, 因为一旦跳转就要把当前进程的所有环境都压栈,回来还要出栈...他不停的跳转让我感觉并行的同时是不是也在浪费cpu?感觉跳转浪费的cpu比做正事的cpu还要多。
4.
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-04-28
  • 打赏
  • 举报
回复
参考Linux源代码中的进程线程调度。
风玉 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

朋友你错了,你的并行应该叫并发,这是宏观的,指多个进程在同时推进(如你所说CPU跳转很快我们感觉不出来,并行是指多个程序(线程)在同时进行(多CPU),强调微观性。

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

第3跳转的……
[/Quote]

可不可以这样理解,在单核cpu计算机里面并发和并行同时存在,操作系统在使用语句实现信号量,互斥量等实现并行处理,在执行这些处理语句的时候他们已经进行了无数次的并发跳转。
nadleeh 2012-04-26
  • 打赏
  • 举报
回复
朋友你错了,你的并行应该叫并发,这是宏观的,指多个进程在同时推进(如你所说CPU跳转很快我们感觉不出来,并行是指多个程序(线程)在同时进行(多CPU),强调微观性。

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

第3跳转的问题,压栈,出栈的速度很快,中断就是典型的跳转,其实我们的电脑时时刻刻都在发生中断,你也没见的反应慢--
sno_guo 2012-04-26
  • 打赏
  • 举报
回复
随便我也想知道些,既然OS是基于时间片来的,那么这个时间片在哪里可以设置,或者通过什么函数来设置,我只知道可以通过pthread_attr_setschedparam函数来设置优先级,,请大神指教下,谢谢!
evencoming 2012-04-26
  • 打赏
  • 举报
回复
lz貌似说的是并发的概念..
1.时间等,os处理的.
2.多线程是软件实现的,,有点类似.
3.的确慢

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧