<FONT COLOR=GREEN>多线程与CPU的关系</FONT>(10分)

  • 主题发起人 主题发起人 cat.yy
  • 开始时间 开始时间
C

cat.yy

Unregistered / Unconfirmed
GUEST, unregistred user!
我的理解是:CPU的工作时间被分成一些时间片,系统会根据需要 把这些时间片分给运行
中的线程(我感觉WINDOWS下的进程包含若干线程), 那么
如果系统只有一个进程在运行(将系统分配给用户程序的CPU时间视为所有CPU时间)
~~~~~~~~~~~~~~ ~~~ ~~~~~~~~~~
==> 使用线程和不使用线程 对该进程运行速度的提高没什么差别
我的理解对吗?
 
进程是由代码、数据、内核状态和一组CPU寄存器组成的,
线程是由代表程序运行情况的寄存器(如程序计数器、通用寄存器、栈指针等)
和栈组成。进程是一个内核级的实体,它包含如下内容:虚存映象、
文件指示符、用户ID等,它们对于每个进程都是专有的。
一个线程是一个用户级的实体,线程不包含进程地址空间中的代码和数据。
一个进程中的所有线程共享该进程的状态,它们驻留在完全相同的内存空间中,
看见的是同样的函数和同样的数据。
线程具有如下特性:(1) 线程共享父进程的所有程序和数据 ;
(2) 有自身的运行单元;
(3) 有它自己的私有存储和执行环境(尤其是处理器寄存器),
使得服务器进程不随客户数的增加而线性增加。可减少服务器
进程的压力,降低开销,充分利用CPU的资源。
 
>> 使得服务器进程不随客户数的增加而线性增加
不明白,为什么?
我想弄明白CPU时间分配的问题
CPU只有一个EAX寄存器 进程与进程之间要用,进程与进程中的线程也要用
系统(对WINDOWS)是如何为他们分配CPU时间的?
是不是说 -> 有N(N>=2)个用户程序在运行,线程多的用户程序获得的CPU时间
就多些(假设N(N>=2)个用户程序的数据,任务差不多,假设CPU没有空闲的时间)
 
秦川历历汉杨树
方草戚戚英武州
此地空余“一道题”
 
一句话搞定!
分配资源以进程为单位,分配时间片以线程为单位
ok?
 
to assassin:
如果系统只有一个进程在运行(将系统分配给用户程序的CPU时间视为所有CPU时间)
~~~~~~~~~~~~~~ ~~~ ~~~~~~~~~~
==> 使用线程和不使用线程 对该进程运行速度的提高没什么差别
是这样吗?
-----------------------------
一题挡关,万题莫开
 
我认为, 如果你的进程中没有需要等待用户干预的情况(比如, 用户输入, 等待某个时间
触发)时, 用单一进程比用多个线程效率高(除非你机器有2个以上CPU).
也就是说, 用线程只是为充分发挥CPU的效率, 让某个线程等待某个条件时CPU不浪费
转而运行其他任务.
我认为不会存在其他使用线程的理由. 毕竟线程间的切换代码对单一进程来说完全是
一种浪费.
 
还是不明白,找本书研究研究
谢谢大家
 
后退
顶部