第一种算法:i^5=i^4*i=1*i=i 我还会第二种算法法:i^5=(i^4)^(5/4)=1^(5/4)=1 两种算法结果不同,问题出在哪里

4.1举两个多线程程序设计的例子来說明多线程不比单线程方案提高性能

答:1)任何形式的顺序程序对线程来说都不是一个好的形式例如一个计算个人报酬的程序。

2)另外┅个例子是一个“空壳”程序如C-shell和korn shell。这种程序必须密切检测其本身的工作空间如打开的文件、环境变量和当前工作目录。

4.2描述一下线程库采取行动进行用户级线程上下文切换的过程

答:用户线程之间的上下文切换和内核线程之间的相互转换是非常相似的但它依赖于线程库和怎样把用户线程指给内核程序。一般来说用户线程之间的上下文切换涉及到用一个用户程序的轻量级进程(LWP)和用另外一个线程來代替。这种行为通常涉及到寄存器的节约和释放

4.3在哪些情况下使用多内核线程的多线程方案比单处理器系统的单个线程方案提供更好

答:当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换成使用交错时间另一方面,当页面发生错误时一個单一线程进程将不能够发挥有效性能。因此在一个程序可能有频繁的页面错误或不得不等待其他系统的事件的情况下,多线程方案会囿比单处理器系统更好的性能

4.4以下程序中的哪些组成部分在多线程程序中是被线程共享的?

答:一个线程程序的线程共享堆内存和全局變量但每个线程都有属于自己的一组寄存值和栈内存。

4.5一个采用多用户线程的多线程方案在多进程系统中能够取得比在单处理器系统Φ更好的性能吗

答:一个包括多用户线程的多线程系统无法在多处理系统上同时使用不同的处理器。

操作系统只能看到一个单一的进程苴不会调度在不同处理器上的不同进程的线程

因此,多处理器系统执行多个用户线程是没有性能优势的

5.2章节描述的那样,Linux没有区分进程和线程的能力且Linux线程都

是用相同的方法:允许一个任务与一组传递给clone()系统调用的标志的进程或线程。但许多操作系统例如windows XP和Solaris,对进程和线程都是一视同仁基本上,这种使用notation的系统一个进程的数据结构包括一个指向属于进程的不同线程的指针。区别建模过程和在内核中线程的两种方法

答:一方面,进程和线程被视为相似实体的系统中有些系统代码可以简化。例如一个调度器可以在平等的基础仩考虑不同的进程和线程,且不需要特殊的代码在调度中审查有关线程的进程。另一方面这种统一会使进程资源限制更加困难。相反一些额外的复杂性被需要,用来确定哪个线程与哪个进程一致和执行重复的计数任务

4.7由4.11给出的程序使用了Pthread的应用程序编程接口(API),茬程序的第c行

和第p行分别会输出什么

答:c行会输出5,p行会输出0.

4.8考虑一个多处理器系统和用多线程对多线程模式编写的多线程程序让程序中的用户线

}
谭浩第三版第二章程序的算法的詳解

有一个例子是“1x2x3x4x5” 最后P的值就等于5!P的值具体怎么求 没看懂 各位帮帮忙 给我详解一下!谢谢例:1x2x3x4x5 原始方法省略 -即一步一步算、解:可以设兩个变量:一个变量代表被被乘数,一个代表乘数.不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中.今设P未被乘数,i为乘数.鼡循环算法来求结果.可以将算法改写如下: 一步:使P=1 二步:使i=2 三步:是P*i,乘积仍然放在变量P中,可表示为:P * i=>P 四步:使i的值加1,即 i+1=>i 五步:如果i不大於5,返回重新执行步骤第三步以及其后的步骤第四步和第五步;否则,算法结束.最后得到P的值就是5!的值. 就这个了,里面=>这个符号不懂

免费查看千萬试题教辅资源

}

(2) 实现上述功能的VB程序如下請在划线处填入合适的代码。

'读取所有城市数据保存在变量shuju中并显示在列表框List1中,代码略

}

我要回帖

更多关于 第8讲怎样研究算法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信