双核与程序的关系

上传人:cjc****537 文档编号:35002675 上传时间:2018-03-06 格式:DOC 页数:8 大小:115KB
返回 下载 相关 举报
双核与程序的关系_第1页
第1页 / 共8页
双核与程序的关系_第2页
第2页 / 共8页
双核与程序的关系_第3页
第3页 / 共8页
双核与程序的关系_第4页
第4页 / 共8页
双核与程序的关系_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《双核与程序的关系》由会员分享,可在线阅读,更多相关《双核与程序的关系(8页珍藏版)》请在金锄头文库上搜索。

1、双核与程序的关系 王亿首 (郑州大学 信息与工程学院) 摘 要:伴随着计算机的发展,双核计算机已经成为了一个主流,有些程序 在运行时只能使用一个内核进行工作,另外一个内核是闲置的,造成了资源 的浪费。程序在运行过程中 是怎样合理分配使用这两个内核进行运算,使硬 件资源得到合理的使用,了解程序的运行机制,以及 cpu 的调度问题,采用 多线程编程,合理分配硬件资源。 关键词:双核 程序 调度 操作系统 进程 线程 1 双核 1.1双核的定义 双核处理器即是基于单个半导体的一个处理器上拥有两个一样功能的处理器核心。 换句话说,将两个物理处理器核心整合入一个核中。双核心处理器技术的引入是提高处 理器

2、性能的有效方法。因为处理器实际性能是处理器在每个时钟周期内所能处理器指令 数的总量,因此增加一个内核,处理器每个时钟周期内可执行的单元数将增加一倍。将 两个内核做在一个 Die(晶元)上,通过直连架构连接起来,集成度更高。 1.2双核的工作原理 双核 CPU 的工作原理就是在一个处理器上集成两个运算核心,从而提高计算能力。当然如果你想让系统达到最大性能,必须充分利用两个内核中的所有可执行单元 :即 让所有执行单元都工作。 这个就涉及到双核 CPU 的优化设置问题了。解决两个核心 同时工作,这就涉及到内存的分配问题, 双通道内存技术是解决 CPU 总线带宽与内存 带宽的矛盾的低价、高性能的方案。

3、双通道内存技术其实是一种内存控制和管理技术, 它依赖于芯片组的内存控制器发生作用,在理论上能够使两条同等规格内存所提供的带 宽增长一倍。 2 程序 进程 线程 程序在编译之后实际的运行中是一个或多个进程,而进程又被分成多个线程, cpu对程序的处理是对与线程而讲的,也就是线程的调度,线程的调度与操作系统有关,而哪一个线程先被 cpu调度,又是有线程的优先级来决定的。 2.1操作系统 操作系统(Operating System,简称 OS)是一管理电脑硬件与软件资源的程序, 同时也是计算机系统的内核与基石 ,是控制其他程序运行,管理系统资源并为用户提供 操作界面的系统软件的集合。 2.2进程 进

4、程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实 例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前 状态和一组相关的系统资源所描述的活动单元。 2.3线程 线程(thread)是“进程“中某个单一顺序的控制流。也被称为轻量进程 (lightweight processes) 。计算机科学术语,指运行中的程序的调度单位。线程 (thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小 单元。一个标准的线程由线程 ID,当前指令指针(PC),寄存器集合和堆栈组成。 2.4进程与线程的关系 线程与进程

5、的关系,线程是一种操作系统对象,代表着一个进程中要被执行的代码 的路径。每一个 WIN32应用程序至少有一个线程 -通常称为住线程或默认线程 -但应 用程序可以自由地创建其他线程来执行其他任务 。 进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完 整过程,这个过程也是进程本身从产生、发展到消亡的过程 ,线程是比进程更小的执 行单位。一个进程在其执行过程能够中,可以产生 多个线程,形成多条执行线索。每 条线索,即每个线程也有它自身的产生、存在和消亡过程,也是一个动态的概念。一个 程序应该只有一个进程吧,但是可以拥有多个线程。可以说,一个执文件被运行后,就 可以称为是一个进

6、程了。但是进程只是存在内存中,实际上他是不会做任何事情的。这 个时候,起作用的就是线程了。线程是程序的执行者,一个程序至少有一个线程,但是 在多线程的操作系统中,可以有一个以上的线程。 3 计算机工作原理 计算机工作的原理:如图( 1)外存 (硬盘、光盘) 输 入 设 备 (CPU) 中央处理器 输 出 设 备 (RAM) 内存 图(1) 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求, 从存贮器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存 中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去, 直至遇到停止指令。在执行程

7、序和处理数据时必须将程序和数据从外存储器装入主存储 器中,然后才能使计算机在工作时能够自动调整地从存储器中取出指令并加以执行。程 序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的 操作1。 做一个 cpu对一般程序的执行实验,初步了解 cpu与程序之间的关系, 分析双核情况与单核情况对程序的处理能力 试验环境 1)处理器;双核 Intel(R) Pentium(R) D cpu 2.80GHZ Intel(R) Pentium(R) D cpu 2.80GHZ 2)内存;480MB 3)操作系统 windows XP 4)实验环境 .net 2005 实验目的 验证

8、双核的处理能力并不等单核的二倍,而是小于单核处理能力的二倍,即:单核处理能力*2双核处理能力 实验方法 先将程序在单核情况下运行,记录 cpu运行情况,再将程序在双核情况下运行, 再次记录 cpu运行情况。 实验程序 static void Main(string args)double m=999.999, n=88.88;while (true)m = m * n; 实验结果: 实验结果分析: 通过图像处理分析,双核处理资源消耗是单核的 4/3 倍,但资源的占有程度是单 核的 2倍,时间处理与单核的基本相等(单核运行情况下 cpu 也没有达到 100%) ,总 体来说,以牺牲硬件为代价来换

9、取换取更高效的数据处理能力和运算能力。 4 程序分解与cpu调度 4.1程序到进程 一个程序是怎样分解成多个线程的,一个程序经过编译之后形成一个可执行文件, 经操作系统的执行,形成一个进程,程序运行的独立的单位,拥有自己的资源,但是他 并没有做什么事情,只有当 cpu开始执行程序的时候,进程将被分解成多个线程,线程 只是是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源 (如程序计数器、一组 寄存器和栈),但是它可与同属个进程的其他的线程共享进程所拥有的全部资源。 4.2进程到线程 一个进程又是怎样分解成多个线程的

10、,一个进程创建一个主线程,主线程有根据需 要产生辅助线程,主线程创建其它线程并设定其优先级。优先级共有 32级,从0到 31,系统按照不同的优先级调度线程的运行。 0-15级是普通优先级,线程的优先级可 以动态变化。高优先级线程优先运行,只有高优先级线程不运行时,才调度低 优先级 线程运行。优先级相同的线程按照时间片轮流运行。 16-31 级是实时优先级,实时优 先级与普通优先级的最大区别在于相同优先级进程的运行不按照时间片轮转,而是先运 行的线程就先控制cpu,如果它不主动放弃控制,同级的或低优先级的线程就无法运行。 例如:生产线上的计算机通讯接收数据又要响应用户的输入并改变通讯传输中所传送

11、 的数据内容,根据以上对进程、线程的分析,同进程内的线程间切换比进程间的切换要 短,尤其是用户级线程间的切换;同一进程内的线程间通信的比进程间的通信效率要高, 考虑用一个应用程序(一个进程)、两个线程主线程接收用户的输入并通知辅线程,辅线 程由主线程刨建并不停地向五条生产线要历史数据当辅线程接收判主线程的信息。在主 线程中创建辅线程优先级 tpHlgher困辅线程作为不停地通讯,而主线程只接收用户输入 2。 4.3 cpu调度 Cpu对多个线程的调度,操作系统会负责为每个线程分配 cpu时间。一个线程所分 配到的cpu时间主要取决于该线程的优先级,而线程的优先级又取决于进程的优先级类 和线程本

12、身的相对优先级。调度程序运行时,要在所有可运行状态的进程中选择最值得 运行的进程投入运行。在每个进程的 task_struct结构中有以下四项: policy、priority、counter、rt_priority。这四项是选择进程的依据。其中, policy是进程的调度策略,用来区分实时进程和普通进程,实时进程优先于普通进程运 行;priority是进程(包括实时和普通)的静态优先级;counter是进程剩余的时间片, 它的起始值就是priority的值;由于counter在后面计算一个处于可运行状态的进程值 得运行的程度goodness时起重要作用,因此, counter也可以看作是进程

13、的动态优先级。 rt_priority是实时进程特有的,用于实时进程间的选择。函数 goodness()来衡量一个 处于可运行状态的进程值得运行的程度。该函数综合了以上提到的四项,还结合了一些 其他的因素,给每个处于可运行状态的进程赋予一个权值 (weight),调度程序以这个权值作为选择进程的唯一依据。 因此进程的优先级可以由程序来设置,在程序运行过程 中,优先级又会动态的改变。 线程优先级别是从两个不同的方面来分配的:一个是从 Win32 应用程序编程接口, 另一个是从 Windows的内核。 Win32 API 的进程在创建时所分配的优先级包括: Real-time, High, Abo

14、ve Normal, Normal, Below Normal, and Idle,进程中各个线 程的相关优先级包括: Time-critical, Highest, Above-normal, Normal, Below- normal, Lowest, and Idle。 应用程序默认的优先级为 Normal。运行在内核模式的 线程可以被用户模式的线程抢占掉,这与线程的状态无关,优先级是决定性因素。 综上所述,在程序中设置进程与线程的优先级,并不能完全决定程序执行时对 cpu的调度,因为优先级还是动态变化的,具体的方法由操作系统来决定,不同的操作 系统又会采用不同的算法改变优先级,以达到不

15、同的目的。例如实时性操作系统等。 了解一些基本的知识后在深入分析一下双核机器上运行程序的效果,还做前边的实 验,不过这次改成多线程。 试验环境 1)处理器;双核 Intel(R) Pentium(R) D cpu 2.80GHZ Intel(R) Pentium(R) D cpu 2.80GHZ 2)内存;480MB 3)操作系统 windows XP 4)实验环境 .net 2005 实验目的 验证在多线程情况下双核的分配情况,以及处理的效率。 实验方法 将程序运行在双核的条件下,记录 cpu情况,以及时间情况,运行单核条件下, cpu情况,以及时间情况。 实验程序 static void

16、Main(string args)ThreadStart threadstart = new ThreadStart(done);Thread thread = new Thread(threadstart);thread.Start(); done();public static void done()double m = 999.999, n = 88.88;while (true)m = m * n; 实验结果 实验分析:与上一个实验相比,在多线程情况下,才能更好的体现出双核的意义, 在仅有一个程序运行的时候,双核与单核的处理时间基本相等,只是把以前本应该由一 个核来处理的任务分给两核来处理,从程序的执行来说还是串行,在多线程情况下,每 个进程是一个独立的实体,基于每个进程产生的线程,由不同的核来处理,相对于单核 的串行处理来说,双核对线程进行并行调度,减少了程序的执行时间,从理论上来说, 应给能过将其执行速度减少为单核处理的一半,但由于总线分配,资源争夺等因素,很 难达到理论的结果,但在一定程度上

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号