無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

          并發(fā)面向?qū)ο笾械睦^承反常現(xiàn)象 *

          王生原 1+ ,? 楊良懷 2 ,? 袁崇義 3 ,? ? 4

          1 ( 清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系 , 北京 ? 100084)

          2 ( 新加坡國(guó)立大學(xué) 計(jì)算學(xué)院 計(jì)算機(jī)科學(xué)系 , 新加坡 )

          3 ( 北京大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)系 , 北京 ? 100871)

          4 ( 蘭州大學(xué) 信息科學(xué)與工程學(xué)院 , 甘肅 蘭州 ? 730000)

          Inheritance Anomaly in Concurrent Object Orientation *

          WANG Sheng-Yuan1+,? YANG Liang-Huai2,? YUAN Chong-Yi3,? YANG Ping4

          1 (Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China)

          2 (Department of Computer Science, School of Computing, National University of Singapore, Singapore)

          3 (Department of Computer Science and Technology, Beijing University, Beijing 100871, China)

          4 (School of Information Science and Technology, Lanzhou University, Lanzhou 730000, China)

          + Corresponding author: Phn: +86-10-62645407, Fax: +86-10-62645000, E-mail: wsy@163.net, http://www.tsinghua.edu.cn

          Received 2002-10-08; Accepted 2003-01-05

          ?

          Abstract :?? The combination of concurrency and object orientation is definitely natural except for inheritance. One of the interferences between inheritance and concurrency is inheritance anomaly. Although having been researched extensively, inheritance anomalies are still only vaguely defined and often misunderstood, and no much formal work has been done. A new viewpoint is set forth for understanding inheritance anomalies, in which each subtyping relation has its specific incremental inheritance. Related concepts and definitions are formalized through the language of Category. Some issues are well adapted to distinguish and explain different standpoints about inheritance anomalies, and can serve as guidelines in the modeling of inheritance.

          Key words :?????? concurrency; object orientation; inheritance anomaly; incremental inheritance; category theory

          ? :???? 如果不考慮繼承性 , 并發(fā)性與對(duì)象技術(shù)的結(jié)合是很自然的 . 繼承反常 ( 又稱繼承異常 ) 現(xiàn)象是繼承性和并發(fā)性不相容的主要原因之一 . 現(xiàn)階段人們對(duì)繼承反常現(xiàn)象的認(rèn)識(shí)有許多模糊之處 , 出發(fā)點(diǎn)不盡相同 , 形式化的工作也很少 . 對(duì)不同的 subtyping 關(guān)系考慮其特有的漸增式繼承方法有利于把握繼承反常現(xiàn)象的實(shí)質(zhì) , 也豐富了 在并發(fā)面向?qū)ο笳Z言中應(yīng)將 inheritance 層次和 subtyping 層次區(qū)別對(duì)待 這一認(rèn)識(shí)的內(nèi)涵 . 在闡述基本觀點(diǎn)之后 , 采用范疇論的術(shù)語對(duì)相關(guān)的概念和定義做了形式化工作 . 一些觀點(diǎn)和結(jié)論適用于區(qū)分和解釋相關(guān)工作的出發(fā)點(diǎn)和貢獻(xiàn) , 并對(duì)并發(fā)面向?qū)ο蠹夹g(shù)中繼承性的建模問題有所啟示 .

          關(guān)鍵詞 :???? 并發(fā)性 ; 面向?qū)ο?/span> ; 繼承反常 ; 漸增式繼承 ; 范疇論

          中圖法分類號(hào) :? TP301    文獻(xiàn)標(biāo)識(shí)碼 : A

          Inheritance( 繼承 ) 是類 (class) 之間的一種層次關(guān)系 . 在一般的面向?qū)ο笳Z言中 , 類層次自動(dòng)對(duì)應(yīng)了一種類型 (type) 層次 [1] , 這樣 ,superclass subclass 之間的關(guān)系自然是一種 supertype subtype 之間的關(guān)系 .

          1? ?? 認(rèn)識(shí)繼承反常現(xiàn)象

          如圖 1 所示 , Buffer 實(shí)現(xiàn)了一個(gè)有界緩沖區(qū)類型 , 可以并發(fā)地接受消息 put get . 同步機(jī)制采用了 “method guards” 方式 , 即為每一個(gè) method 附加一個(gè) guard 謂詞 [2] . 構(gòu)造 Buffer 的另一個(gè)子類 LockableBuffer 也會(huì)引發(fā)同樣的問題 . 這種 為獲得有效繼承而必須對(duì)父類代碼進(jìn)行實(shí)質(zhì)性修改的現(xiàn)象 就是所謂的繼承反常 (inheritance anomaly)[3~5].

          2? ??

          Interest patterns

          Vector

          clustering

          Pattern

          derivation

          Feature

          extraction

          Document

          database

          Vector

          database

          Document

          clusters

          Interest

          topics

          Fig.1 ?Mining interest patterns

          1 ? 興趣模式的挖掘過程


          理解繼承反常現(xiàn)象

          2.1? ? 區(qū)別Inheritance 和Subtyping

          綜合各種觀點(diǎn) , 要理解和解釋繼承反常現(xiàn)象 , 首先必須正確區(qū)別 inheritance 層次和 subtyping 層次 , 并深刻領(lǐng)會(huì)二者的聯(lián)系 [6,7] . 對(duì)于這個(gè)問題 , 文獻(xiàn) [1,8] 的觀點(diǎn)是比較權(quán)威的 . 在此基礎(chǔ)上 , 我們的理解是 :Inheritance 是在代碼層次上作修改 , subtyping 是在語義層次上作修改 . 前者是代碼共享的一種重要途徑 , 但不能保證 subclass 能夠繼承 superclass 的行為 ; 后者要求 subtype 保持 supertype 的某種外部可觀察行為 ( 或語義行為 ), 在規(guī)范一級(jí)共享 , 同代碼沒有關(guān)系 .Inheritance 層次關(guān)系可以理解為 “is_similar_to”( “l(fā)ike”) 的關(guān)系 , 而將 “is_a” 關(guān)系更適合用在理解 subtyping 層次關(guān)系上 , 見表 1[9].

          Table 1 ?Latency of macro-instructions

          1 ? 宏指令的時(shí)延

          Acronym

          Macro-Instructions

          Latency (ns)

          Event symbol

          Value

          Symbol

          NSI

          NET_SLICE_INIT()

          87

          t a

          n ( a ,e)

          ?

          NST

          NET_SLICE_STOP()

          154

          -

          -

          ?

          NSE

          NET_SLICE_EXIT()

          904 (1.4%)

          t g

          n ( g ,e)

          ?

          NSO

          Inter-Overhead between NET_SLICE_START() and NET_SLICE_STOP()

          150

          t o

          n (o,e)

          ?

          NSA

          Overhead of NET_SLICE_START()

          303

          t b

          n ( b ,e)

          ?

          命題 1 . 設(shè) R í R L ,R í R ,R 定義的 Class 范疇為 C R ,R 定義的 Class 范疇為 C R , C R C R 的子范疇 , 并稱之為 C R 的子 Class 范疇 .

          證明 : 對(duì)任何 A ,B ? ob C R =obCR ,homCR (A,B) í homCR (A,B).???????????????????????????????????????????????????????????????????????????????????

          推論 1 . 任何 R í R L 定義的 Class 范疇 C R 都是 C L 的子 Class 范疇 .

          2.2? ? 漸增式繼承

          Subtyping 要求 subtype 保持 supertype 的某種行為 ( 可看作是一種不變量 , 比如同步約束 )[10].Subclass 在增加新的屬性或方法時(shí) , 為了避免破壞這種不變量 , 難免要對(duì)繼承的代碼進(jìn)行擴(kuò)展或修改 . 這種擴(kuò) 展或修改很可能是重大的或?qū)嵸|(zhì)性的 , 結(jié)果使得代碼共享失去意義 . 這便是繼承反常的直觀含義 .

          假定非線性優(yōu)化問題 :

          ????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????? (1)

          的近似解為 , 其中 由邊界條件決定 . 確定其余幾個(gè) Bézier 系數(shù)是一個(gè)非線性約束優(yōu)化問題 . 我們采用基于一維線性搜索的整體收斂的 Newton 迭代方法來求解 . 其基本的迭代格式為

          步長(zhǎng) 采用回溯線性搜索方法確定 , 下降方向 Newton 方向 , 這種非線性優(yōu)化方法是一個(gè)比較成功的具有整體收斂性的方法 , 對(duì)于初值的選擇沒有苛刻的要求 .

          ?

          Internet

          Response

          Request

          Browser

          Front_end server

          Back_end server

          Back_end server

          Back_end server

          .

          .

          .

          Fig.2? The framework of the TB-CCRD based DWSS

          2? 基于標(biāo)記的緩存協(xié)作 DWSS 系統(tǒng)框架

          基于 TB-CCRD 的新系統(tǒng)采用與 Linux 直接路由式虛擬服務(wù)器相同的框架結(jié)構(gòu) [11] . 如圖 2 所示 ,DWSS 的各個(gè)后端服務(wù)器通過高速以太網(wǎng)相互連接 , 它們屏蔽 ARP 協(xié)議 , 并擁有與前端機(jī)相同的 IP( 記為 vIP) Web 服務(wù)端口號(hào) ( 記為 vPort), 在用戶看來 , 這個(gè)系統(tǒng)就相當(dāng)于一個(gè) IP 地址為 vIP, 服務(wù)端口號(hào)為 vPort Web 服務(wù)器 . 在新系統(tǒng)中 , 前端機(jī)負(fù)責(zé)接收來自用戶的數(shù)據(jù)包 , 發(fā)放用于指示處理該數(shù)據(jù)包最適當(dāng)?shù)姆?wù)器 ID( 可以是后端機(jī)在系統(tǒng)內(nèi)部的標(biāo)識(shí)符 , 也可以是它的 MAC 地址 ) 的標(biāo)記 , 并轉(zhuǎn)發(fā)數(shù)據(jù)包 ; 后端機(jī)則負(fù)責(zé)處理由前端機(jī)轉(zhuǎn)發(fā)而來的用戶數(shù)據(jù)包并直接回應(yīng)用戶 , 具體包括建立 / 拆除與用戶的 TCP 連接、 TCP 連接轉(zhuǎn)交以及提供 URL 內(nèi)容等工作 .

          2.2.1? ??? 定義繼承反常現(xiàn)象

          本節(jié)是對(duì)上述觀點(diǎn)的形式化描述 , 可與第 2.2 節(jié)對(duì)照閱讀 . 范疇論的觀點(diǎn)層次較高 , 易于抽象出問題的本質(zhì) .

          與程序 P F 下運(yùn)行等價(jià)的錯(cuò)誤影響程序 PF

          2.2.2? ???

          (2)

          InitPF = InitP ,

          VarPF = VarF ,

          UnitPF = e [ A 1 ? F ; A 2 ? F ;…; An ? F ] ,

          WherePF = WhereP ù FaultAssumptionF .


          解釋繼承反常現(xiàn)象

          1: 在談到順序面向?qū)ο笳Z言時(shí) , 一般不涉及繼承反常現(xiàn)象 . 這是因?yàn)?/span> , 這類語言 L 都默認(rèn)一個(gè)特殊 subtyping 關(guān) p ( R L 定義的完 inheritance 次關(guān)系被默認(rèn)為相應(yīng)于 p 的漸增式繼承關(guān)系 ), 它對(duì)應(yīng)的 Type 范疇記為 T L , 滿足 :CL 實(shí)現(xiàn) T L , 實(shí)現(xiàn)函子為 F : " A (A ? ob C L ? F A = type (A)).L p - 繼承反常 . 因?yàn)轫樞蛎嫦驅(qū)ο笳Z言不提供定 subtyping 關(guān)系的機(jī)制 , 所以這種默認(rèn)的 subtyping 關(guān)系是語言中惟一的 subtyping 關(guān)系 , 這些語言 L 無繼承反常 .

          3? ?? 結(jié)束語

          本文形式地給出了 繼承反常現(xiàn)象 的一種一般性定義 . 定義對(duì)每一種 Subtyping 關(guān)系都有其相對(duì)應(yīng)的 漸增式繼承 , 使其更具有普適性 . 文中 漸增式繼承 是一個(gè)相對(duì)的概念 , 這有助于對(duì)人們 使繼承反常現(xiàn)象得到緩解 的努力得以分類和評(píng)價(jià) .

          致謝 ? 在此 , 我們向?qū)Ρ疚牡墓ぷ鹘o予支持和建議的同行 , 尤其是北京大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系袁崇義教授、屈婉玲教授領(lǐng)導(dǎo)的討論班上的同學(xué)老師表示感謝 .

          References :

          ? [1]? ?? Clifton C, Leavens GT, Chambers C, Millstein T. MultiJava: modular open classes and symmetric multiple dispatch for Java. ACM SIGPLAN Notices, 2000,35(10):130-145.

          ? [2]? ?? Wegner P, Zdonik SB. Inheritance as an incremental modification mechanism or what like is and isn’t like. In: Gjessing S, Nygaard K, eds. Proc. of the ECOOP’88. LNCS 322, Heidelberg: Springer-Verlag, 1988. 55-77.

          ? [3]? ?? Waxman BM. Routing of multipoint connections. IEEE Journal on Selected Areas in Communications, 1988,6(9):1617-1622.

          ? [4]? ?? Yonezawa A. ABCL: An Object-Oriented Concurrent System. Cambridge: MIT Press, 1990.

          ? [5]? ?? Matsuoka S, Yonezawa A. Analysis of inheritance anomaly in object-oriented concurrent programming languages. In: Agha G, Wegner P, Yonezawa A, eds. Research Directions in Concurrent Object-Oriented Programming. Cambridge: MIT Press, 1993. 107-150.

          ? [6]? ?? Hemige V. Object-Oriented design of the groupware layer for the ecosystem information system [MS. Thesis]. University of Montana, 1995.

          ? [7]? ?? Rose A, Perez M, Clements P. Modechart toolset user’s guide. Technical Report, NML/MRL/5540-94-7427, Austin: University of Texas at Austin, 1994.

          ? [8]? ?? Keene SE. A Programmer’s Guide to Object-Oriented Programming in Common LISP. Boston: Addison-Wesley Longman Publishing Co., Inc., 1988.

          ? [9]? ?? Guo L, Tang ZS. Specification and verification of the triple-modular redundancy fault-tolerant system. Journal of Software, 2003,14(1):28~35 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/14/28.htm

          [10]? ?? Schutze, H. Dimensions of meaning. In: Whitelock P, ed. Proc. of the Supercomputing’92. Los Alamitos, 1992. 787~796. ftp://parcftp.parc.xerox.com/pub/qca/papers/

          [11]? ?? Wang XW. Research on quality-of-service management and group communication mechanisms in distributed multimedia systems [Ph.D. Thesis]. Shenyang: Northeastern University, 1998 (in Chinese with English abstract).

          附中文參考文獻(xiàn) :

          ? [9]??? 郭亮 , 唐稚松 . 三機(jī)冗余容錯(cuò)系統(tǒng)的描述和驗(yàn)證 . 軟件學(xué)報(bào) ,2003,14(1):28-35. http://www.jos.org.cn/1000-9825/14/28.htm

          [11]??? 王興偉 . 分布式多媒體系統(tǒng)服務(wù)質(zhì)量管理與組通信機(jī)制的研究 [ 博士學(xué)位論文 ]. 沈陽 : 東北大學(xué) ,1998.



          * ???? Supported by the National Natural Science Foundation of China under Grant No.60373000 ( 國(guó)家自然科學(xué)基金 ); the National High-Tech Research and Development Plan of China under Grant Nos.863-317-01-04-99, 2001AA115126 ( 國(guó)家高技術(shù)研究發(fā)展計(jì)劃 (863)); the National Grand Fundamental Research 973 Program of China under Grant No.G1999032706 ( 國(guó)家重點(diǎn)基礎(chǔ)研究發(fā)展規(guī)劃 (973)); the Key Science-Technology Project of the National ‘Ninth Five-Year-Plan’ of China under Grant No.98-780-01-07-03 ( 國(guó)家 九五 重點(diǎn)科技攻關(guān)項(xiàng)目 ); the Defense Pre-Research Project of the ‘Ninth Five-Year-Plan’ of China ( 國(guó)家 九五 國(guó)防預(yù)研基金 ); the National Research Foundation for the Doctoral Program of Higher Education of China ( 國(guó)家教育部博士點(diǎn)基金 ); the Ministry & Commission-Level Research Foundation of China ( 部委級(jí)基金 ); the Natural Science Foundation of Gansu Province of China under Grant No.ZS991-A25-014-G ( 甘肅省自然科學(xué)基金 )

          作者簡(jiǎn)介 : 王生原 (1964 ), , 山西應(yīng)縣人 , 博士 , 副教授 , 主要研究領(lǐng)域?yàn)榉植紝?duì)象計(jì)算 ,Petri 網(wǎng)應(yīng)用 , 嵌入式軟件環(huán)境 ; 楊良懷 (1967 ), , 博士 , 講師 , 主要研究領(lǐng)域?yàn)閿?shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)技術(shù) , 數(shù)據(jù)倉(cāng)庫(kù) , 半結(jié)構(gòu)化數(shù)據(jù) ,Web 數(shù)據(jù)集成 , 數(shù)據(jù)挖掘 ; 袁崇義 (1941 ), , 教授 , 博士生導(dǎo)師 , 主要研究領(lǐng)域?yàn)椴⑿杏?jì)算 ,Petri 網(wǎng)理論及應(yīng)用 ; 楊萍 ( 1964 ), , 副教授 , 主要研究領(lǐng)域?yàn)槿斯ぶ悄?/span> .



          凡是有該標(biāo)志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
          、轉(zhuǎn)載請(qǐng)注明來處和原文作者。非常感謝。

          posted on 2006-06-11 17:50 草兒 閱讀(420) 評(píng)論(0)  編輯  收藏 所屬分類: 心路歷程
          主站蜘蛛池模板: 彰化县| 宣武区| 左贡县| 松江区| 车致| 富平县| 高青县| 翁牛特旗| 清远市| 辽中县| 商丘市| 禄丰县| 铜山县| 巧家县| 富锦市| 万载县| 休宁县| 淮北市| 灵宝市| 汉寿县| 西平县| 玉山县| 望奎县| 东丽区| 鸡泽县| 横山县| 通许县| 崇仁县| 丰原市| 禹城市| 盖州市| 财经| 西宁市| 上高县| 永靖县| 丹巴县| 瓦房店市| 樟树市| 广元市| 博乐市| 陵川县|