构件化操作系统的跟踪调试方法

更新时间:2023-06-09 03:25:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

操作系统

第34卷

V01.34

第17期

No.17

文章编号t

计算机工程

ComputerEngineering

2008年9月

September2008

文献标识码-A

中圈分类号 TP316

软件技术与数据库

100忙3428(2008)17—_0068一_03

构件化操作系统的跟踪调试方法

许康,李■,羹育昌

(中国科学技术大学计算机科学技术系,合肥230027)

■蔓:为了适应分布式构建化操作系统对性能调试的需求,采用了对构件化对象建立日志服务和增加构件化系统调用对进程的访问控制

的方法,从而为构件化操作系统设计出一种兼具逻辑性调试和性能调试功能的跟踪调试构件。该调试构件的设计已经在实验室开发出的一

个具有构件化概念的系统中得到了具体的实现,并体现出良好的功能扩展性和可移植性。关健词:构件化操作系统;跟踪调试;日志服务

Track—debugging

Method

for

ComponentOS

andTechnologyofChina,Hefei230027)

both

XUKang,LIXi,GONGYu-chang

(DepartmentofComputerScienceandTechnology,UniversityofScience

[AbstractlThecomponentoftrack—debuggingforcomponentOperationSystem(OS),whichhas

debuggingfunction,isproposedinthispaper.Thelogserviceforcomponentcomponentoftrack—debugging

call

logicdebuggingfunction

are

andperformance

setup,SOthatthis

andthecontrolofprocessbycomponentsyscall

adaptcomponentoperation

system’Sneedindistributionalapplication.Thiscomponentisimplementedin

laboratoryandrepresentsgoodcharacteristicforextendingandtransplanting.

[Keywords]componentOperationSystem(OS);track—debugging;logservice

1概述

构件化的开发方式,为搭建具有灵活内核以及动态可扩展特性的操作系统提供了实现依据。目前,已出现了许多以结构灵活、内核可定制为特点的构件化嵌入式操作系统…。随着分布式应用的扩大,构件化的分布式操作系统也在研究之中。在基于构件的操作系统里,内核所具有的各种基本功能,如进程的创建和调度、内存分配管理、设备管理等都是通过内核构件对象接I:1的形式来体现的,从而呈现出高度的模块化。构件化的系统对象和系统调用规范是这类系统的基本特征。系统所提供的构件库以及用户开发的应用程序构件都遵循相同的构件技术规范,都通过系统接口与内核交互,从这个意义上说,他们处于同样的地位。由于各构件间的耦合度较低,使构件的结构和功能对程序的运行性能会产生较大的影响,因此为构件化操作系统设计跟踪调试手段的时候也需要考虑性能因素。

目前的构件化操作系统还是以嵌入式应用为主,所以,其跟踪调试还集中在对串行程序的逻辑性调试上,随着系统向分布式方向的发展,其调试功能也有必要进行性能调试的扩展。本文即针对构件化操作系统设计出一种基于构件的性能调试方法。该方法将构件作为新的跟踪调试对象,能够加快在构件化系统上进行软件开发的效率,同时帮助提高系统的整体性能。

为收集表征程序运行状况的大量数据,并对其进行分析,进而优化程序结构,提高程序在该系统上的运行性能。

性能调试一般有基于事件跟踪和基于进程跟踪2种方法:(1)基于事件跟踪是将程序的执行过程看作是一个不断产生事件的过程,程序的一次执行产生的事件构成一张事件图,对程序的调试就是收集这张事件图,与预计的结果进行比较,看是否一致口J。其缺点是生成的事件种类和数量较多,所以会加大实现的难度及降低调试的效率。(2)基于进程跟踪是将一个程序的执行对应到系统中的一个进程或者多个进程组成的一个进程簇,对程序的调试就是对相应一个或多个进程的运行数据进行收集pJ。其缺点是忽视了多个程序之间的相互关联性,不利于实现对系统整体性能的跟踪。

在构件化操作系统里,一个程序的行为可以由一个构件化的系统调用序列来刻画,如图1所示。

2构件化系统的跟踪调试方法设计要点

2.1逻辑性调试

逻辑性调试是指调试程序中的错误,在构件化操作系统中,使用传统的进程调试手段即可完成对程序的逻辑性调试。2.2性能调试

性能调试是在传统的逻辑性调试基础上提出的。其方法

圈1构件化操作系统程序运行结构

因此,在构件处设置跟踪点收集每个构件化系统调用的作者筒介:许康(1983一),男,硕上研究生,主研方向:操作系统;

李曦,副教授;龚育昌,教授、博士生导师收藕日期:2007 10—10

E-mail:xukang@mail.ustc.edu.ca

—_68一

万方数据 

操作系统

执行信息,就可以实现对程序运行状态数据的收集。2.3性能调试设计的关键技术

2.3.1

日志服务在构件化对象上的建立

为了完成在构件处对程序运行数据的收集,就需要为系

统的每个构件提供统一的日志服务功能,以记录系统调用的使用情况。

建立日志服务的作用有如下2点:

(1)实现对系统整体性能的统计,查找系统的性能瓶颈。衡量系统性能的2个最重要指标是系统响应时间和系统吞吐率。前者表现为系统上完成单个程序运行所花费的时间;后者表现为系统支持同时运行的最大程序个数。

在构件化系统中,程序的运行可以视为系统调用请求在多个构件间的流动,那么系统对程序的响应时间和吞吐率可以表示如下:

响应时间=每个构件对程序的响应时间+

系统调用请求在构件间流动所消耗的时间

吞吐率=min{各个构件能同时响应的程序个数}

系统各构件之间的通信采用统一的通信机制,所以构件间的通信效率在大部分时间里应该是稳定的,只有在采用多机互联的系统里可能受到网络不稳定等因素的影响。

因此,对于构件化操作系统I面言,影响系统性能的因素就被划分到一个或多个构件里,只要比较一下每个构件处的日志记录,就能找出影响系统性能的构件,再通过在构件化系统调用上设置断点,就能将系统性能瓶颈准确定位到构件的系统调用接口上,从而弥补进程跟踪在性能方面的不足,加快系统性能的提高和高效率程序的开发。

(2)记录程序的运行轨迹,实现程序的重放。对于具有不可重现特性的程序进程,采用传统的进程跟踪调试手段,无法完成错误的定位,而日志功能则会将程序前次执行的过程记录下来,只要日志记录足够完善,就可以通过日志记录重放前次程序的执行,从而实现对不可重现程序的调试。2.3.2通过构件化系统调用对进程运行状态的控制

在传统的进程跟踪调试里,对程序运行的控制粒度可以根据需要进行改变,如从最细的指令级到系统调用级最后到源代码上的函数级。在基于构件的跟踪调试里,对程序运行的控制粒度有构件级和构件化系统调用级2级。编程人员通过在某一构件处设置断点即可使被调试进程在请求该构件服务时被停止下来,从而实现对构件的功能和性能调试。相比传统的进程调试,编程人员不必去源代码中查找请求该构件的函数调用,从而加快调试的效率。编程人员通过对程序使用构件化系统调用跟踪,即可将错误或性能瓶颈定位到具体的系统调用入El上。

通过增加对构件及构件化系统调用的控制可以实现以下2个功能:

(1)控制系统上单个或多个程序的运行。传统的进程调试模式是由一个进程去控制另一个进程,这样进程间的相互关系对调试结果影响很大,比如一个进程不能同时被2个进程所跟踪,被跟踪进程如果再去尝试调试跟踪进程,将会导致2个进程相互等待而僵死。这也是许多反跟踪技术产生的原因。

通过构件实现肘进程的控制可以将跟踪进程和被跟踪进程彻底隔离开来,从而消除两者之间的相互影响。增加构件对进程的控制功能后,要实现一个进程同时跟踪多个进程,只需要在构件处为多个被跟踪进程没置相应的跟踪点即可。

万 

方数据多个进程甚至可以跟踪调试同一个进程,在这种情况下,被跟踪进程的状态由多个跟踪进程的调试命令联合决定,只要有一个跟踪进程发出了停止命令,被跟踪进程就将处于停止状态,只有当所有跟踪进程都允许运行时,被跟踪进程才继续运行。因此,基于构件的跟踪方法能够很容易地实现对多个并发程序的跟踪调试。

(2)控制整个系统的运行状态。通过同步控制系统里所有构件的系统调用,就能实现控制整个系统的运行状态。当所有的系统级构件都关闭对应用程序的服务时,系统里仅有内核进程运行,可以进行系统内核的调试。同时,如果系统支持并行程序的运行,那么此状态就对应到多个并行程序运行时的停止状态,从而可以实现对并行程序的跟踪调试。2.4性能调试设计的关健结构2.4.1构件性能日志

为了查看系统的运行性能,每个构件上将维护一个简单的日志,负责记录调用该构件系统调用的进程及其时间消耗、资源占用比例等情况。结构如表1所示。

衰1构件性能日意

数据项

描述进程ID号

m要

构件化系统调用号

流入日f问流出时间资源占J{J比例

由于同一个进程有可能多次调用同一个构件化系统调用,因此记录中的进程ID号和构件化系统调用号都是允许重复的。程序被运行一次后,通过统计对应进程在每个构件内运行的总时间占程序运行总时间的比例就可以确定影响程序执行时间的构件。通过统计记录表中有流入时间但流出时间为空的记录条数就能得到当前构件内的总进程数。如果要实现日志一重放的功能,则还需要对该表进行扩充,记录详细的运行上下文情况。

2.4.2构件化系统调用控制表

为了控制系统里所有的构件化系统调用是否对指定进程服务,系统必须负责维护一张全局的系统调用表,如表2所示。当表中Server属性被设为否时,一旦进程发出调用对应系统调用的服务请求,该系统调用所在构件将会发出信号使进程STOP下来,当Server属性被重新设为是时,又由该构件发Continue信号给进程,恢复进程的执行。

袭2全局系统调用控钊表

数据项

描述

Syscall—ID

构件化系统调用号

PID

进程ID号Server

是否服务

系统实现上是通过一个监控进程随时扫描该控制表,一旦发现有新的记录插入或旧的记录被修改即发送相应的处理信号给受控进程。

2.5基于构件的跟踪流程

有了前面结构和功能的支持,就可以进行基于构件的跟踪调试操作。其跟踪流程如下:(1)Attach进程,使该进程被打上被跟踪标志以区别于普通进程。(2J构件处设断点,根据调试的需要在某构件处设置断点。(3)恢复进程运行。(4)当进程请求设有断点构件的系统调用服务时被该构件中断。用户可以查看和修改进程调用构件服务前的资源情况。(5)恢复进程运行状态,开放系统调用对该进程的服务。(6)进程执行构

—-69-一

操作系统

件内的功能代码。此时编程用户可以根据需要随时暂停进程供传统进程调试的函数调用接口外还增加了构件级、构件化的执行并查看其在构件内的资源分配情况及数据处理结果。系统调用级的跟踪函数。同时提供一组查看构件及系统性能(7)进程退出构件后被中断。用户可以查看构件对数据的处理状况的系统调用接口。

结果以及控制进程是否被允许请求下一次的构件化系统

图2所示的跟踪调试构件已经在实验室开发出的一个具调用。

有构件概念的系统一一Minicore系统[4-5]上得到了具体的实2.6基于构件性能调试的优点

现,并通过一系列测试证明了基于构件的调试手段对分析系以系统里的构件作为跟踪对象进行性能调试的优点统的工作性能和开发高效率程序能起到有效的帮助作用。下如下:(1)可以同时实现对系统构件和用户开发构件的调试。一步的工作是进一步完善构件的日志功能,从而实现在分布(2)有利于观察系统的整体运行情况,帮助查找系统的性能瓶式构件化操作系统上进行跟踪调试的目的。

颈。(3)在比较完善的日志功能帮助下可以实现对具有不可重4结束语

现性程序的重放调试。(4)可移植性强,针对多处理器的操作本文在总结并行程序性能调试方法的基础上,针对构件系统可通过同时控制多个构件的系统调用实现对多任务的跟化操作系统设计出基于构件的性能调试方法。该调试方法具踪调试。(5)可扩展性好,针对分布式的应用,只需要将系统有调试对象隔离性好、移植性强、扩展性好等特点。该调试中构件的日志服务功能分布化到各个节点即可完成其上并行方法作为进程调试在构件化系统上的必要补充,被测试证明程序的性能调试。

能起到有效的辅助开发作用。研究的工作还在继续进行之中,3跟踪调试构件的设计

下一步还将针对分布式的应用需求对构件的日志功能进行完跟踪调试件的结构设计如图2所示。

善,增加日志一重放功能,将构件日志功能分布到多个节点上跟踪调试构件

实现,从而设计出适合分布式构件化操作系统下并行程序开发的调试手段。

性能统计

日志摩放

参考文献

而鬲习l

三型I

窀笔

【I】杜永文,何华灿,陈榕.基于灵活内核的构件化驱动程序【J】.

小型微璎计算机系统,2004,25(4):587—589.I

I系统调用

【2】王

忠,王宏力,邓方林.CHY—III的并行仿真程序性能调试工

具【J】.系统仿真学报,1999,l1(1):24—29.

竿型…一生O等SL.蔓半

【3】刘建,余宏亮,沈美明.Linux机群系统并行程序调试器的设

计与实现【J】.计算机工程,2002,28(4):7-9.

【4】李宏,龚育昌,赵振西,等.服务体模型与操作系统内核设计

圈2跟踪调试构件的鳍构设计

技术[J】计算机研究与发展,2005,42(7):1272—1276.

由于性能调试的实现也是基于进程跟踪的,因此能够很【5】龚育昌,李宏.基于服务体/执行流模型的操作系统:中国,

容易地将系统的逻辑性调试功能和性能调试功能合并在一起CN200410080994.9【P】.2005—09—1412007—09—201.中华人民共和组成构件化操作系统上的跟踪调试构件。该调试构件除了提

国发明专利公报.

(上接第67页)

120

参考文献

100

[1】AnkerstM,BreunigMM,KriegelHP’eta1.OrderingPoints

tO

童80

Identify

theClustering

Structure[C]//Proc.ofACMSIGMOD

蒹60

InternationalConferenceon

ManagementofData.Philadelphia,

联40

USA:ACMPress.1999.

20

[2】BrecheisenS,KriegelHP’KrogerE

et

a1.VisuallyMiningThrough

ClusterHierarchies[C]//Proc.ofSIAMInt’1Conf.on

Data

Mining.

站点个数

站点个数

Orlando,USA:【S.n.】,2004.

(a)改进算法聚类与子站点的关系(b)DBDC算法聚类与子站点的关系

【3】EsterM,Kriegel

HPSanderJ,eta1.IncrementalClusteringfor

圈7算法聚类质量与子站点羹目关系比较

Miningin

Datawarehousing

Environment[C]//Proc.ofthe24th

5结束语

Int’1Conf.On

Very

LargeDatabases.New

York,USA:【S.n.】.1998.

本文研究基于密度的分布式聚类算法并提出改进算法。【4】Ester

M,KriegelHP,SanderJ,et

a1.A

Density—basedAlgorithmfor本文算法引入了定量的对象代表性分析指标,用于获取特殊DiscoveringClusters

in

Large

Spatial

Databaseswith

核心对象并计算其代表性。形成局部聚类模型后,在传递给Noise[C]//Proc.ofthe2ndInt’1ConL

on

KnowledgeDiscoveryand

主站点的模型中附带r特殊核心对象的覆盖半径、覆盖点数,DataMining.Portland.USA:AAAIPress,1996.

全局聚类算法利用这些信息形成全局聚类模型。

【5】JanuzajE。KriegelHP'PfeifleM.Density—basedDistributed

笔者在下一步工作中,将考虑多维数据模型及增量分布Clustering[C]//Proc.ofthe9thInt’1Conf.OilExtendingDatabase式聚类算法。

Technology.Heraklion,Greece:【S.n.】,2004.

一7伊~

万 

方数据

操作系统

构件化操作系统的跟踪调试方法

作者:作者单位:刊名:英文刊名:年,卷(期):

许康, 李曦, 龚育昌, XU Kang, LI Xi, GONG Yu-chang中国科学技术大学计算机科学技术系,合肥,230027计算机工程

COMPUTER ENGINEERING2008,34(17)

参考文献(5条)

1.龚育昌;李宏 基于服务体/执行流模型的操作系统 2007

2.李宏;龚育昌;赵振西 服务体模型与操作系统内核设计技术[期刊论文]-计算机研究与发展 2005(07)3.刘建;余宏亮;沈美明 Linux机群系统并行程序调试器的设计与实现[期刊论文]-计算机工程 2002(04)4.王忠;王宏力;邓方林 CHY-Ⅲ的并行仿真程序性能调试工具[期刊论文]-系统仿真学报 1999(01)5.杜永文;何华灿;陈榕 基于灵活内核的构件化驱动程序[期刊论文]-小型微型计算机系统 2004(04)

本文链接:/Periodical_jsjgc200817025.aspx

本文来源:https://www.bwwdw.com/article/qi21.html

Top