在单处理机的系统中,Windows的多线程的执行是以很小的时间片(5-10毫秒)为间隔进行调度的。调度程序决定哪个竞争的线程将得到下一个时间片,每个时间片包含固定数目的时钟周期数。调度程序在每个时钟中断到来时获得控制权,使当前执行线程的时间片减1.当计数值达到0时,就做出调度决策,决定下面哪一个线程将执行。下一个时间片总是属于那些准备执行的线程中优先级最高的一个。当一个以上的可执行线程拥有最髙优先级时,时间片就给那个等待时间最久的线程。挂起和阻塞的线程是不可执行的,所以在它们解除阻塞之前,不管优先级是多少,调度程序都不会给它们分配处理机时间,当调度程序决定把时间片分配给另一个线程时,当前线程的执行环境被保存起来,以便将来再一次被调用。
在单处理机的系统中,虽然多个线程轮流使用处理机时间并发执行,并没有提高单条指令和单个线程的执行效率,但是在多线程的进程中,不同线程执行的任务不同,它们的工作量也不尽相同,有的使用处理机的时间多,有的使用处理机的时间少,多线程并发执行使得其它线程不必等到某个线程执行完即可得到执行,对处理机的时间利用率髙,大大提高了整体的执行效率。
3.4 本章小结
本章对系统所用到的图像技术、Winsock网络编程技术和多线程技术进行了详细的介绍,这些关键技术是本文后序章节系统设计的理论基础。
4 局域网监控系统总体设计
本章详细阐述了系统的总体框架,并对系统的开发进行了简单介绍,最后对本系统开发中所遇到的主要问题及其解决办法进行了详细的说明。
4.1 总体框架
4.1.1 总体框架
系统主要应用于内部局域网,网络拓扑图如图4.1.1所示: 图4.1.1 网络拓扑图
体系结构采用得到广泛应用的C/S结构。
(1) 被控端运行着监控驱动程序,它是整个系统的数据源。这一监控驱动程 序截取到被控端的屏幕信息数据,并将数据通过网络传送到控制端。由被控端来完成这些操作。
(2) 消息引擎的设计,在控制端和被控端之间传输的是数据或者控制信息,将这些信息都封装成相同的消息模式,接收端根据消息中的消息ID来判断具体如何处理消息。这样设计的好处是使系统能够具有非常好的可扩展性。当需要添加新的功能的时候,只要添加一个相应的消息和这个消息的处理过程即可,系统总体框架不用发生任何变化。
4.1.2 系统的功能概述
系统采用基于组件的开发模型,充分运用面向对象的开发思想,系统模块可以划分为:系统的信息获取模块、消息引擎和网络传输模块,形成一个层次结构清晰明了的模型结构图。关于各个模块的详细功能接下来讲详细介绍。
(1) 信息获取模块
想了解每一台机器正在干什么,就需要了解机器的当前状态信息。信息获取模块是系统信息的主要来源,这些信息主要是屏幕的图片信息,有了这个信息控制端就可以实时的了解到被控端都在干什么。
(2) 消息引擎模块
控制端和被控端所传输的数据和控制信息都可以封装成相同样式的信息,接收消息端根据消息的ID来判断接收到的是什么消息,近而知道信息中所存储的内容,之后调用相应的处理过程来处理这个消息。
(3) 网络传输模块
这个模块主要是应用Winsock网络编程技术,采用的是TCP/IP协议,在控制端和被控端传输封装好的消息。 VC++局域网远程监控系统的设计与实现(7):http://www.751com.cn/jisuanji/lunwen_9599.html