JP6401235B2 - コントラクトのためのオペレーティングシステムサポート - Google Patents
コントラクトのためのオペレーティングシステムサポート Download PDFInfo
- Publication number
- JP6401235B2 JP6401235B2 JP2016501182A JP2016501182A JP6401235B2 JP 6401235 B2 JP6401235 B2 JP 6401235B2 JP 2016501182 A JP2016501182 A JP 2016501182A JP 2016501182 A JP2016501182 A JP 2016501182A JP 6401235 B2 JP6401235 B2 JP 6401235B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- contract
- components
- predicate
- runtime
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 58
- 230000003068 static effect Effects 0.000 claims description 23
- 238000011084 recovery Methods 0.000 claims description 16
- 230000000694 effects Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000012795 verification Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 18
- 230000006399 behavior Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 231100000957 no side effect Toxicity 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Description
Claims (20)
- 1または複数のハードウェアプロセッサと、前記1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令を有する1または複数のハードウェア記憶装置とを備えたシステムであって、前記コンピュータ実行可能命令は中間言語プログラムコードの静的解析の一環として少なくとも以下の、
前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
を実行するようシステムを構成する、システム。 - 前記特定のコンポーネントは前記システムに挙動を実行するよう命令し、前記特定のコントラクトは、前記挙動を変更することなく前記特定のコントラクトのチェックを削除できるように、意味的に構造化されている、請求項1に記載のシステム。
- 各コントラクトが、前記対応するコンポーネントのインターフェースを使用して、前記対応するコンポーネントの呼び出し元に意味的にアクセス可能である、請求項1に記載のシステム。
- コントラクトが対応するコンポーネントの事前条件である、請求項1に記載のシステム。
- コントラクトが対応するコンポーネントの事後条件である、請求項1に記載のシステム。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定のコンポーネントの前記実行スコープの外で外部回復コードを実行するよう構成される、請求項1に記載のシステム。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定の述部が真ではないことに応答して回復コードが実行されないように、前記特定のコンポーネントの呼び出しを控えるよう構成される、請求項1に記載のシステム。
- 前記システムはまた、述部が外部から見える副作用を含むような少なくともいくつかの条件を検出するように構成される、請求項1に記載のシステム。
- 前記システムはまた、前記1または複数の実行可能バイナリを記憶装置上に格納するように構成される、請求項1に記載のシステム。
- 前記システムはまた、
前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定し、
前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成するように構成される、請求項1に記載のシステム。 - 1または複数のハードウェアプロセッサを含むコンピュータシステムで実装される、中間言語プログラムコードの静的解析を実行するための方法であって、
前記1または複数のハードウェアプロセッサが、前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回
させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
を含む方法。 - 前記静的解析は、リファクタリングツール、検証ツール、自動化ドキュメンテーションジェネレータの少なくとも1つによって実行される、請求項11に記載の方法。
- コントラクトが対応するコンポーネントの事前条件である、請求項11に記載の方法。
- コントラクトが対応するコンポーネントの事後条件である、請求項11に記載の方法。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定のコンポーネントの前記実行スコープの外で外部回復コードが実行される、請求項11に記載の方法。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定の述部が真ではないことに応答して回復コードが実行されないように、前記特定のコンポーネントの呼び出しを控える、請求項11に記載の方法。
- 前記1または複数のハードウェアプロセッサが、前記1または複数の実行可能バイナリを1または複数のハードウェア記憶装置上に格納することをさらに含む、請求項11に記載の方法。
- 前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定することと、
前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成することと、をさらに含む、請求項11に記載の方法。 - コンピュータシステムの1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令が記憶されたコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、中間言語プログラムコードの静的解析の一環として少なくとも以下の、
前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記複数のコンポーネントの第1のコンポーネントに対応する第1のコントラクトの第1の述部が、前記複数のコンポーネントの前記第1のコンポーネントのランタイムにおいて常に真であると判定することと、
前記複数のコンポーネントの第2のコンポーネントに対応する第2のコントラクトの第2の述部が、前記複数のコンポーネントの前記第2のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、
前記複数のコンポーネントの前記第1のコンポーネントのための前記実行可能コードを生成するときに、前記第1の述部が前記複数のコンポーネントの第1のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記第1のコントラクトおよび前記第1の述部に対応する実行可能コードがない、実行可能コードの第1の部分を生成すること、および
前記複数のコンポーネントの前記第2のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの第2部分を生成することを含む、ことと、
を実行するよう前記コンピュータシステムを構成する、コンピュータ可読記憶媒体。 - ランタイムにおいて遭遇した前記第2の述部が真ではない場合、前記コンピュータシステムは、前記第2の述部が真ではないことに応答して回復コードが実行されないように、前記複数のコンポーネントの第2のコンポーネントの呼び出しを控えるよう構成される、請求項19に記載のコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/829,561 | 2013-03-14 | ||
US13/829,561 US9286039B2 (en) | 2013-03-14 | 2013-03-14 | Operating system support for contracts |
PCT/US2014/023258 WO2014159373A2 (en) | 2013-03-14 | 2014-03-11 | Operating system support for contracts |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2016511484A JP2016511484A (ja) | 2016-04-14 |
JP2016511484A5 JP2016511484A5 (ja) | 2017-03-09 |
JP6401235B2 true JP6401235B2 (ja) | 2018-10-10 |
Family
ID=50884465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016501182A Active JP6401235B2 (ja) | 2013-03-14 | 2014-03-11 | コントラクトのためのオペレーティングシステムサポート |
Country Status (6)
Country | Link |
---|---|
US (1) | US9286039B2 (ja) |
EP (1) | EP2972828B1 (ja) |
JP (1) | JP6401235B2 (ja) |
KR (1) | KR102118236B1 (ja) |
CN (1) | CN105164642B (ja) |
WO (1) | WO2014159373A2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9841955B2 (en) * | 2016-01-26 | 2017-12-12 | Enterpriseweb Llc | Unified operating system for distributed computing |
US11755382B2 (en) * | 2017-11-03 | 2023-09-12 | Coherent Logix, Incorporated | Programming flow for multi-processor system |
CN107908405A (zh) * | 2017-11-17 | 2018-04-13 | 苏州蜗牛数字科技股份有限公司 | 代码静态审核装置及方法 |
CN110287089B (zh) * | 2019-05-07 | 2023-02-17 | 华东师范大学 | 一种基于中间格式及smt技术的微内核ipc验证方法 |
CN111768187A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN111770206B (zh) * | 2020-08-31 | 2020-12-29 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
US12111957B2 (en) | 2021-06-08 | 2024-10-08 | Microsoft Technology Licensing, Llc | Software provenance validation |
KR102695546B1 (ko) * | 2021-12-21 | 2024-08-13 | 단국대학교 산학협력단 | 스마트 컨트랙트와 서면 계약서 간의 동등성을 증명하는 방법 및 장치 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601192B1 (en) | 1999-08-31 | 2003-07-29 | Accenture Llp | Assertion component in environment services patterns |
US20030023959A1 (en) * | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7143373B2 (en) | 2004-10-14 | 2006-11-28 | Synopsys, Inc. | Method and apparatus for evaluating and debugging assertions |
JP2006139413A (ja) * | 2004-11-10 | 2006-06-01 | Hitachi Ltd | プログラム、プログラムコードの合理化方法、プログラムコードの生成方法、プログラムコード、及び情報処理装置 |
US7987456B2 (en) * | 2006-01-24 | 2011-07-26 | Microsoft Corporation | Qualitatively annotated code |
US7934207B2 (en) | 2006-12-19 | 2011-04-26 | Microsoft Corporation | Data schemata in programming language contracts |
US8250524B2 (en) | 2007-12-21 | 2012-08-21 | Microsoft Corporation | Contract programming for code error reduction |
US8782607B2 (en) * | 2009-02-20 | 2014-07-15 | Microsoft Corporation | Contract failure behavior with escalation policy |
US8930913B2 (en) * | 2010-09-28 | 2015-01-06 | Microsoft Corporation | Intermediate representation construction for static analysis |
-
2013
- 2013-03-14 US US13/829,561 patent/US9286039B2/en active Active
-
2014
- 2014-03-11 KR KR1020157025030A patent/KR102118236B1/ko active IP Right Grant
- 2014-03-11 JP JP2016501182A patent/JP6401235B2/ja active Active
- 2014-03-11 WO PCT/US2014/023258 patent/WO2014159373A2/en active Application Filing
- 2014-03-11 CN CN201480014378.5A patent/CN105164642B/zh active Active
- 2014-03-11 EP EP14727975.6A patent/EP2972828B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20150130298A (ko) | 2015-11-23 |
CN105164642B (zh) | 2019-02-19 |
KR102118236B1 (ko) | 2020-06-02 |
EP2972828A2 (en) | 2016-01-20 |
WO2014159373A3 (en) | 2014-11-20 |
JP2016511484A (ja) | 2016-04-14 |
CN105164642A (zh) | 2015-12-16 |
WO2014159373A2 (en) | 2014-10-02 |
US9286039B2 (en) | 2016-03-15 |
EP2972828B1 (en) | 2019-09-04 |
US20140282448A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6401235B2 (ja) | コントラクトのためのオペレーティングシステムサポート | |
US10599551B2 (en) | Automatically detecting distributed concurrency errors in cloud systems | |
CN102279790B (zh) | 分布式调试方法和系统 | |
Deligiannis et al. | Asynchronous programming, analysis and testing with state machines | |
US10545852B2 (en) | Diagnostics of state transitions | |
US9104781B2 (en) | Obtaining metadata set by imperative statement | |
Xu et al. | Python predictive analysis for bug detection | |
Rimsa et al. | Practical dynamic reconstruction of control flow graphs | |
US10185647B2 (en) | Debugging remote vertex code on test machine | |
US9841960B2 (en) | Dynamic provision of debuggable program code | |
US8856763B2 (en) | Compiler optimization based on collectivity analysis | |
Fortier et al. | Dyninka: a FaaS framework for distributed dataflow applications | |
US9710360B2 (en) | Optimizing error parsing in an integrated development environment | |
WO2022035476A1 (en) | Representing asynchronous state machine in intermediate code | |
Gómez | Balancing performance and reliability in software components | |
Ren | Achieving Scalable and Reliable Non-Intrusive Failure Reproduction in Distributed Systems by Enhancing the Event Chaining Approach | |
Cui et al. | SmallRace: Static Race Detection for Dynamic Languages-A Case on Smalltalk | |
CN116680688A (zh) | 设备控制指令的检测方法、装置、电子设备及存储介质 | |
Arora | JShrink: Debloating Modern Java Applications | |
De Borger et al. | A generic solution for agile run-time inspection middleware | |
Zhang et al. | The Exception Handling Pattern in the Architectural Layers Using Aspect-Oriented Programming | |
Roper et al. | Application‐specific thread schedulers for internet server applications | |
Nakata et al. | Fault model of foreign function interface across different domains | |
De Palma¹ et al. | Artifacts EAPLS EAPLS Available Evaluated Artifacts V1. 1 Functional V1. 1 An OpenWhisk Extension for Topology-Aware Allocation Priority Policies | |
Olsson | Application Migration using Java in a Distributed Automotive System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A529 | Written submission of copy of amendment under article 34 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A529 Effective date: 20150909 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170203 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170203 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180427 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180814 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180906 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6401235 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |