胆囊在什么位置| 嗓子疼咳嗽挂什么科| 杨梅泡酒有什么功效和作用| 拜你所赐什么意思| 红茶有什么功效| 左肖是什么生肖| 零和博弈什么意思| 肥胖去医院挂什么科| 孕妇梦到被蛇咬是什么意思| 东莞有什么区| 灰色地带是什么意思| 维生素c弱阳性是什么意思| 鲨鱼为什么不吃海豚| 嗓子疼感冒吃什么药| 栉风沐雨是什么意思| 脚起皮是什么原因| 子宫肌瘤是什么原因造成的| 生吃苦瓜有什么好处和坏处| 水牛是什么意思| 八一年属什么生肖| 女生自慰什么感觉| 美国是什么人种| 液基薄层细胞制片术是检查什么的| 钙化灶是什么意思| 什么叫压缩性骨折| 为什么风团会在晚上爆发| 男人鼻头有痣代表什么| 干什么最挣钱| 抽烟打嗝是什么情况| 肺泡是什么| 拔了牙可以吃什么| 避孕药有什么副作用| 冷淡是什么意思| 一面什么| 什么样的毛刺是良性的| 16什么意思| gf是什么单位| 淋巴结增大是什么原因严重吗| 嗷呜是什么意思| 作奸犯科是什么意思| 人乳头瘤病毒感染是什么意思| 表述是什么意思| 过敏性鼻炎喷什么药| 无花果有什么营养| 什么是硬盘| 沉默不是代表我的错是什么歌| 胰腺ca是什么意思| 胃火旺吃什么| 习俗是什么意思| 芽原基发育成什么| 不举是什么原因造成的| 人生感悟是什么意思| 继发性不孕是什么意思| 手肘关节疼痛什么原因| 负压引流器有什么作用| 红糖不能和什么一起吃| 股骨头疼痛吃什么药| 鼠目寸光是什么意思| 吃什么东西补充胶原蛋白| 虚劳病是什么意思| 值机是什么| 元旦唱什么歌| pq是什么意思| 心悸是什么| 8月18日什么星座| 小腿肿胀是什么原因引起的| 双肾结晶是什么意思| 健康四大基石是什么| 绿豆和什么一起煮好| 青鱼吃什么| 月经量少什么原因| 沈阳有什么大学| 拉肚子发烧是什么原因| 梦见自己家盖房子是什么预兆| 长期喝蜂蜜有什么好处| 什么叫钙化| 轻生什么意思| 部长助理是什么级别| 情商什么意思| 果冻是什么做的| 白鱼是什么鱼| hpv疫苗什么时候打最好| 生地麦冬汤有什么功效| 蜂蜜水什么时间喝最好| 背靠背是什么意思| 公司董事是什么职务| 水痘用什么药| 颈动脉硬化有什么症状| 甲状腺彩超挂什么科| 肚子疼去医院挂什么科| 维生素b12有什么用| 肥胖纹什么样子| 什么的腊梅| 左手中指戴戒指什么意思| 什么是吸附性义齿| 一个合一个页读什么| 人为什么会困| 思源名字的寓意是什么| 再接再厉是什么意思| 芥子是什么意思| 狮子头是什么肉| 马中赤兔人中吕布什么意思| 引火上身是什么意思| 伤口溃烂不愈合用什么药| 燚是什么意思| 氨水是什么东西| 四岁属什么生肖| 幽门螺杆菌吃什么药| 知乎是干什么的| 西洋参有什么功效和作用| 麒麟长什么样| 鲸属于什么类动物| cdc是什么| 随餐吃是什么意思| 冥寿是什么意思| 来之不易是什么意思| 孩子不好好吃饭是什么原因| 巴豆是什么| 农历十月是什么月| 乳头突然疼痛什么原因| 五液是指什么| 锻炼pc肌有什么好处| 痛风挂什么科| 什么叫邪淫| 孕妇多吃什么水果比较好| 以什么当什么| 什么的动作| 统招生是什么意思| 正军级是什么级别| 孕酮低吃什么药| 什么是剧烈运动| hp检查是什么| 胸片能查出什么| 取向是什么意思| 吃什么可以增强免疫力| 大自然是什么意思| 中暑吃什么药| pq是什么意思| 158是什么意思| 什么快递可以寄活物| 酵母提取物是什么| 成家是什么意思| 女性什么时候最容易怀孕| 4.6什么星座| 算命先生是什么生肖| dvt是什么意思| 什么是种植牙| 卵巢多囊是什么原因造成的| 属羊的本命佛是什么佛| 唐塞是什么意思| 体毛多是什么原因| 脓毒血症是什么病| 殊胜是什么意思| 很容易出汗是什么原因| 考拉吃什么食物| 做什么动作可以长高| 肝火旺会出现什么症状| 幼小衔接是什么意思| 非即食是什么意思| 肾上腺分泌什么激素| 什么叫皈依| 逍遥丸治什么| 周年祭日有什么讲究| 小米什么时候成熟| 猪肝配什么菜炒好吃| 枸杞有什么用| 什么时候做人流才是最佳时间| 南京的简称是什么| 心肌标志物是查什么的| 记吃不记打的下一句是什么| 女孩喜欢什么礼物| 清炖排骨汤放什么调料| hhh是什么意思| 肛门坠胀吃什么药最好| 泥鳅喜欢吃什么食物| 慢性胃炎可以吃什么水果| 脖子后面正中间有痣代表什么| 清道夫鱼为什么不能吃| 阴道干涩是什么原因| 黄帝叫什么名字| 阿司匹林治疗什么病| 一笑了之是什么意思| 腊肉炒什么菜最好吃| 白茶和绿茶有什么区别| 手脚发麻挂什么科| 吃维c有什么好处| 男生肚子疼是什么原因| ost什么意思| ne是什么意思| spf50是什么意思| 下乡插队是什么意思| 佞臣什么意思| 胸腔疼挂什么科| 二甲双胍为什么晚上吃| 626什么意思| 胃烂了是什么病严重吗| 粒细胞是什么| 特警力量第二部叫什么| 2010年是什么命| qm医学上什么意思| 何以是什么意思| 眼睛红是什么病| 4.2什么星座| 回光返照是什么意思| 老年人贫血吃什么补血最快最有效| 风热感冒吃什么食物| 湿邪是什么意思| 漪什么意思| 女性为什么会感染hpv| 吃什么最补肾| 善字五行属什么| 什么时候喝咖啡能减肥| 开心水是什么| 迪丽热巴是什么族| 梅毒有什么症状| 衄血是什么意思| 沙金是什么| 尿检ph值偏高说明什么| 红配什么颜色最好看| 男女更年期分别在什么年龄| s925是什么| 梦见很多坟墓是什么意思| 茶白色是什么颜色| 鬼长什么样子| 没脑子是什么意思| 应届生是什么意思| 双肺多发结节是什么意思| 为什么做梦会说梦话| 手发胀是什么前兆| 肾阳虚喝什么泡水最好| 什么叫脑白质病| 肝气郁结吃什么中成药| 什么人容易得焦虑症| 淋巴结增大是什么原因严重吗| 92年出生属什么| 大腿疼是什么原因| 鹅蛋脸适合戴什么眼镜| 仓促是什么意思| 大黄是什么药材| 反响是什么意思| 肠胀气是什么原因| 吃什么对脑血管好| 敢是什么意思| 退而求其次是什么意思| 女人什么时候绝经| 用牙膏洗脸有什么好处和坏处| 慢生活是什么意思| 晚上睡觉流口水什么原因| 为什么晚上睡不着觉| 鸡胸肉炒什么菜好吃| 攻击是什么意思| 一贫如什么| 梨子什么季节成熟| 甜菜碱是什么东西| nars是什么牌子| 藏干是什么意思| 叼是什么意思| 挂碍是什么意思| 月经不调是什么症状| 护士一般是什么学历| 潜意识是什么意思| 娇气是什么意思| 盐糖水有什么功效作用| 日皮是什么意思| 百度Jump to content

沈阳城市公用集团有限公司

From Wikipedia, the free encyclopedia
百度 近年来,不断有台湾的大专院校、图书馆从大陆引进书籍。

In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems.[1] It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi, based on message passing via channels. CSP was highly influential in the design of the occam programming language[1][2] and also influenced the design of programming languages such as Limbo,[3] RaftLib, Erlang,[4] Go,[5][3] Crystal, and Clojure's core.async.[6]

CSP was first described by Tony Hoare in a 1978 article,[7] and has since evolved substantially.[8] CSP has been practically applied in industry as a tool for specifying and verifying the concurrent aspects of a variety of different systems, such as the T9000 Transputer,[9] as well as a secure e-commerce system.[10] The theory of CSP itself is also still the subject of active research, including work to increase its range of practical applicability (e.g., increasing the scale of the systems that can be tractably analyzed).[11]

History

[edit]

Original version

[edit]

The version of CSP presented in Hoare's original 1978 article was essentially a concurrent programming language rather than a process calculus. It had a substantially different syntax than later versions of CSP, did not possess mathematically defined semantics,[12] and was unable to represent unbounded nondeterminism.[13] Programs in the original CSP were written as a parallel composition of a fixed number of sequential processes communicating with each other strictly through synchronous message-passing. In contrast to later versions of CSP, each process was assigned an explicit name, and the source or destination of a message was defined by specifying the name of the intended sending or receiving process. For example, the process

COPY = *[c:character; west?c → east!c]

repeatedly receives a character from the process named west and sends that character to process named east. The parallel composition

[west::DISASSEMBLE || X::COPY || east::ASSEMBLE]

assigns the names west to the DISASSEMBLE process, X to the COPY process, and east to the ASSEMBLE process, and executes these three processes concurrently.[7]

Development into process algebra

[edit]

Following the publication of the original version of CSP, Hoare, Stephen Brookes, and A. W. Roscoe developed and refined the theory of CSP into its modern, process algebraic form. The approach taken in developing CSP into a process algebra was influenced by Robin Milner's work on the Calculus of Communicating Systems (CCS) and conversely. The theoretical version of CSP was initially presented in a 1984 article by Brookes, Hoare, and Roscoe,[14] and later in Hoare's book Communicating Sequential Processes,[12] which was published in 1985. In September 2006, that book was still the third-most cited computer science reference of all time according to Citeseer[citation needed] (albeit an unreliable source due to the nature of its sampling). The theory of CSP has undergone a few minor changes since the publication of Hoare's book. Most of these changes were motivated by the advent of automated tools for CSP process analysis and verification. Roscoe's The Theory and Practice of Concurrency[1] describes this newer version of CSP.

Applications

[edit]

An early and important application of CSP was its use for specification and verification of elements of the INMOS T9000 Transputer, a complex superscalar pipelined processor designed to support large-scale multiprocessing. CSP was employed in verifying the correctness of both the processor pipeline and the Virtual Channel Processor, which managed off-chip communications for the processor.[9]

Industrial application of CSP to software design has usually focused on dependable and safety-critical systems. For example, the Bremen Institute for Safe Systems and Daimler-Benz Aerospace modeled a fault-management system and avionics interface (consisting of about 23,000 lines of code) intended for use on the International Space Station in CSP, and analyzed the model to confirm that their design was free of deadlock and livelock.[15][16] The modeling and analysis process was able to uncover a number of errors that would have been difficult to detect using testing alone. Similarly, Praxis High Integrity Systems applied CSP modeling and analysis during the development of software (approximately 100,000 lines of code) for a secure smart-card certification authority to verify that their design was secure and free of deadlock. Praxis claims that the system has a much lower defect rate than comparable systems.[10]

Since CSP is well-suited to modeling and analyzing systems that incorporate complex message exchanges, it has also been applied to the verification of communications and security protocols. A prominent example of this sort of application is Lowe's use of CSP and the FDR refinement-checker to discover a previously unknown attack on the Needham–Schroeder public-key authentication protocol, and then to develop a corrected protocol able to defeat the attack.[17]

Informal description

[edit]

As its name suggests, CSP allows the description of systems in terms of component processes that operate independently, and interact with each other solely through message-passing communication. However, the "Sequential" part of the CSP name is now something of a misnomer, since modern CSP allows component processes to be defined both as sequential processes, and as the parallel composition of more primitive processes. The relationships between different processes, and the way each process communicates with its environment, are described using various process algebraic operators. Using this algebraic approach, quite complex process descriptions can be easily constructed from a few primitive elements.

Primitives

[edit]

CSP provides two classes of primitives in its process algebra: events and primitive processes.

Events

Events represent communications or interactions. They are assumed to be instantaneous, and their communication is all that an external ‘environment’ can know about processes. An event is communicated only if the environment allows it. If a process does offer an event and the environment allows it, then that event must be communicated. Events may be atomic names (e.g. on, off), compound names (e.g. valve.open, valve.close), or input/output events (e.g. mouse?xy, screen!bitmap). The set of all events is denoted .[18]

Primitive processes

Primitive processes represent fundamental behaviors: examples include (the process that immediately deadlocks), and (the process that immediately terminates successfully).[18]

Algebraic operators

[edit]

CSP has a wide range of algebraic operators. The principal ones are informally given as follows.

Prefix

The prefix operator combines an event and a process to produce a new process. For example, is the process that is willing to communicate event with its environment and, after , behaves like the process .[18]

Recursion

Processes can be defined using recursion. Where is any CSP term involving , the process defines a recursive process given by the equation . Recursions can also be defined mutually, such as which defines a pair of mutually recursive processes that alternate between communicating and .[18]

Deterministic choice

The deterministic (or external) choice operator allows the future evolution of a process to be defined as a choice between two component processes and allows the environment to resolve the choice by communicating an initial event for one of the processes. For example, is the process that is willing to communicate the initial events and and subsequently behaves as either or , depending on which initial event the environment chooses to communicate.[18]

Nondeterministic choice

The nondeterministic (or internal) choice operator allows the future evolution of a process to be defined as a choice between two component processes, but does not allow the environment any control over which one of the component processes will be selected. For example, can behave like either or . It can refuse to accept or and is only obliged to communicate if the environment offers both and .

Nondeterminism can be inadvertently introduced into an ostensibly deterministic choice if the initial events of both sides of the choice are identical. So, for example, and are equivalent.[18]

Interleaving

The interleaving operator represents completely independent concurrent activity. The process behaves as both and simultaneously. The events from both processes are arbitrarily interleaved in time. Interleaving can introduce nondeterminism even if and are both deterministic: if and can both communicate the same event, then nondeterministically chooses which of the two processes communicated that event.[18]

Interface parallel

The interface parallel (or generalized parallel) operator represents concurrent activity that requires synchronization between the component processes: for , any event in the interface set can only occur when both and are able to engage in that event.[18]

For example, the process requires that and must both be able to perform event before that event can occur. So, the process is equivalent to , while is equivalent to (i.e. the process deadlocks).

Hiding

The hiding operator provides a way to abstract processes by making some events unobservable by the environment. is the process with the event set hidden.

A trivial example of hiding is which, assuming that the event doesn't appear in , simply reduces to . Hidden events are internalized as τ actions, which are invisible to and uncontrollable by the environment. The existence of hiding introduces an additional behaviour called divergence, where an infinite sequence of τ actions is performed. This is captured by the process , whose behaviour is solely to perform τ actions forever.[18] For example, is equivalent to .

Examples

[edit]

One of the archetypal CSP examples is an abstract representation of a chocolate vending machine and its interactions with a person wishing to buy some chocolate. This vending machine might be able to carry out two different events, “coin” and “choc” which represent the insertion of payment and the delivery of a chocolate respectively. A machine which demands payment (only in cash) before offering a chocolate can be written as:

A person who might choose to use a coin or card to make payments could be modelled as:

These two processes can be put in parallel, so that they can interact with each other. The behaviour of the composite process depends on the events that the two component processes must synchronise on. Thus,

whereas if synchronization was only required on “coin”, we would obtain

If we abstract this latter composite process by hiding the “coin” and “card” events, i.e.

we get the nondeterministic process

This is a process which either offers a “choc” event and then stops, or just stops. In other words, if we treat the abstraction as an external view of the system (e.g., someone who does not see the decision reached by the person), nondeterminism has been introduced.

Formal definition

[edit]

Syntax

[edit]

The syntax of CSP defines the “legal” ways in which processes and events may be combined. Let e be an event, b be a boolean and X be a set of events. Then the basic syntax of CSP can be defined as:

Note that, in the interests of brevity, the syntax presented above omits the process, which represents divergence, as well as various operators such as alphabetized parallel, piping, and indexed choices.

Formal semantics

[edit]

CSP has been imbued with several different formal semantics, which define the meaning of syntactically correct CSP expressions. The theory of CSP includes mutually consistent denotational semantics, algebraic semantics, and operational semantics.

Denotational semantics

[edit]

The three major denotational models of CSP are the traces model, the stable failures model, and the failures/divergences model. Semantic mappings from process expressions to each of these three models provide the denotational semantics for CSP.[1]

Denotational semantics allows several definitions of a partial order of refinement on processes, which in turn can be used to elegantly represent several properties on processes. Generally, denotes refines .

Traces model

[edit]

The traces model defines the meaning of a process expression as the set of sequences of events (traces) that the process can be observed to perform. For example,

  • since performs no events
  • since the process can be observed to have performed no events, the event a, or the sequence of events a followed by b

More formally, the traces model is defined as the set of non-empty prefix-closed subsets of . The meaning of a process P in the traces model is defined as such that:

  1. (i.e. contains the empty sequence)
  2. (i.e. is prefix-closed)

where is the set of all possible finite sequences of events.

A process is said to trace-refine another if and only if . trace-refines is denoted .[18]

Stable failures model

[edit]

The stable failures model extends the traces model with refusal sets, which are sets of events that a process can refuse to perform. A failure is a pair , consisting of a trace s, and a refusal set X which identifies the events that a process may refuse once it has executed the trace s. The observed behavior of a process in the stable failures model is described by the pair . For example,

A process stable-failures-refines if and only if . stable-failures-refines is denoted .[18]

Failures/divergences model

[edit]

The failures/divergence model further extends the failures model to handle divergence. The semantics of a process in the failures/divergences model is a pair where is defined as the extension-closure of the set of all traces after which the process can immediately diverge, and , which is the extension of with all divergent traces.

A process failures-divergences-refines if and only if . failures-divergences refines is denoted .[18]

Unique fixed points

[edit]

One of the most important principles in CSP is the unique fixed points (UFP) rule. Generally, it states that a process which satisfies certain nice properties has a single semantic interpretation. It can be used to conclude algebraic proofs that two processes are equal in a model of CSP. A version for single recursions in the traces model is outlined here.

Consider processes as their trace sets. The operator is defined for all processes , all so that , where denotes the length of string : the set of traces in of length at most . This allows a metric to be defined on . For each , , let . Informally, a process which agrees on traces with another up to some length is ‘more distant’ from it than one which agrees with it up to a greater length. It can be shown that this forms a complete metric space.

A function on trace sets is called constructive if and only if for all processes , , all , if then . This means that a function is constructive if and only if it is a contraction mapping with respect to the metric on trace sets.

By the Banach fixed-point theorem, if is a constructive function, it has a unique fixed point. This means that if and are processes defined recursively as and , then they are equivalent in the traces model. UFP can also be extended to mutual recursions (by using vectors of processes) and other models of CSP (e.g. in by defining the metric as in , with respect to the trace parts of a process's trace-failure pair).

It can be derived using UFP (and Tarski's fixed point theorem), that for monotonic , a recursive term defined as has the semantic interpretation , where is the least element of the model. In the traces, stable failures and failures/divergences models, (equivalent to in the traces model).[1][18]

Tools

[edit]

Over the years, a number of tools for analyzing and understanding systems described using CSP have been produced. Early tool implementations used a variety of machine-readable syntaxes for CSP, making input files written for different tools incompatible. However, most CSP tools have now standardized on the machine-readable dialect of CSP devised by Bryan Scattergood, sometimes referred to as CSPM.[19] The CSPM dialect of CSP possesses a formally defined operational semantics, which includes an embedded functional programming language.

FDR

[edit]

The most well-known CSP tool is probably Failures-Divergences Refinement, which is a commercial product originally developed by Formal Systems (Europe) Ltd. FDR is often described as a model checker, but is technically a refinement checker, in that it converts two CSP process expressions into labelled transition systems (LTSs), and then determines whether one of the processes is a refinement of the other within some specified semantic model (traces, failures, or failures/divergence).[20] FDR applies various state-space compression algorithms to the process LTSs in order to reduce the size of the state-space that must be explored during a refinement check. FDR was succeeded by FDR2, FDR3 and FDR4.[21]

ARC

[edit]

The Adelaide Refinement Checker (ARC)[22] is a CSP refinement checker developed by the Formal Modelling and Verification Group at The University of Adelaide. ARC differs from FDR2 in that it internally represents CSP processes as ordered binary decision diagrams (OBDDs), which alleviates the state explosion problem of explicit LTS representations without requiring the use of state-space compression algorithms such as those used in FDR2.

ProB

[edit]

The ProB project,[23] which is hosted by the Institut für Informatik, Heinrich-Heine-Universit?t Düsseldorf, was originally created to support analysis of specifications constructed in the B method. However, it also includes support for analysis of CSP processes both through refinement checking, and LTL model-checking. ProB can also be used to verify properties of combined CSP and B specifications. A ProBE CSP Animator is integrated in FDR3.

PAT

[edit]

The Process Analysis Toolkit (PAT) [24][25] is a CSP analysis tool developed in the School of Computing at the National University of Singapore. PAT is able to perform refinement checking, LTL model-checking, and simulation of CSP and Timed CSP processes. The PAT process language extends CSP with support for mutable shared variables, asynchronous message passing, and a variety of fairness and quantitative time related process constructs such as deadline and waituntil. The underlying design principle of the PAT process language is to combine a high-level specification language with procedural programs (e.g. an event in PAT may be a sequential program or even an external C# library call) for greater expressiveness. Mutable shared variables and asynchronous channels provide a convenient syntactic sugar for well-known process modelling patterns used in standard CSP. The PAT syntax is similar, but not identical, to CSPM.[26] The principal differences between the PAT syntax and standard CSPM are the use of semicolons to terminate process expressions, the inclusion of syntactic sugar for variables and assignments, and the use of slightly different syntax for internal choice and parallel composition.

Others

[edit]

VisualNets[27] produces animated visualisations of CSP systems from specifications, and supports timed CSP.

CSPsim[28] is a lazy simulator. It does not model check CSP, but is useful for exploring very large (potentially infinite) systems.

SyncStitch is a CSP refinement checker with interactive modeling and analyzing environment. It has a graphical state-transition diagram editor. The user can model the behavior of processes as not only CSP expressions but also state-transition diagrams. The result of checking are also reported graphically as computation-trees and can be analyzed interactively with peripheral inspecting tools. In addition to refinement checks, It can perform deadlock check and livelock check.

[edit]

Several other specification languages and formalisms have been derived from, or inspired by, the classic untimed CSP, including:

Comparison with the actor model

[edit]

In as much as it is concerned with concurrent processes that exchange messages, the actor model is broadly similar to CSP. However, the two models make some fundamentally different choices with regard to the primitives they provide:

  • CSP processes are anonymous, while actors have identities.
  • CSP uses explicit channels for message passing, whereas actor systems transmit messages to named destination actors. These approaches may be considered duals of each other, in the sense that processes receiving through a single channel effectively have an identity corresponding to that channel, while the name-based coupling between actors may be broken by constructing actors that behave as channels.
  • CSP message-passing fundamentally involves a rendezvous between the processes involved in sending and receiving the message, i.e. the sender cannot transmit a message until the receiver is ready to accept it. In contrast, message-passing in actor systems is fundamentally asynchronous, i.e. message transmission and reception do not have to happen at the same time, and senders may transmit messages before receivers are ready to accept them. These approaches may also be considered duals of each other, in the sense that rendezvous-based systems can be used to construct buffered communications that behave as asynchronous messaging systems, while asynchronous systems can be used to construct rendezvous-style communications by using a message/acknowledgement protocol to synchronize senders and receivers.

Note that the aforementioned properties do not necessarily refer to the original CSP paper by Hoare, but rather the modern incarnation of the idea as seen in implementations such as Go and Clojure's core.async. In the original paper, channels were not a central part of the specification, and the sender and receiver processes actually identify each other by name.

Award

[edit]

In 1990, “A Queen’s Award for Technological Achievement [was] conferred ... on [Oxford University] Computing Laboratory. The award recognises a successful collaboration between the laboratory and Inmos Ltd. … Inmos’ flagship product is the ‘transputer’, a microprocessor with many of the parts that would normally be needed in addition built into the same single component.”[30] According to Tony Hoare,[31] “The INMOS Transputer was as embodiment of the ideas … of building microprocessors that could communicate with each other along wires that would stretch between their terminals. The founder had the vision that the CSP ideas were ripe for industrial exploitation, and he made that the basis of the language for programming Transputers, which was called Occam. … The company estimated it enabled them to deliver the hardware one year earlier than would otherwise have happened. They applied for and won a Queen’s award for technological achievement, in conjunction with Oxford University Computing Laboratory.”

See also

[edit]

References

[edit]
  1. ^ a b c d e Roscoe, A. W. (1997). The Theory and Practice of Concurrency (PDF). Prentice Hall. ISBN 978-0-13-674409-2.
  2. ^ Inmos (2025-08-06). occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd., INMOS document 72 occ 45 03.
  3. ^ a b Cox, Russ. "Bell Labs and CSP Threads". Retrieved 2025-08-06.
  4. ^ "10 Academic and Historical Questions". Retrieved 2025-08-06.
  5. ^ "FAQ: Why build concurrency on the ideas of CSP?". The Go Programming Language. Retrieved 2025-08-06.
  6. ^ Hickey, Rich (2025-08-06). "Clojure core.async Channels". Retrieved 2025-08-06.
  7. ^ a b Hoare, C. A. R. (1978). "Communicating sequential processes". Communications of the ACM. 21 (8): 666–677. doi:10.1145/359576.359585. S2CID 849342.
  8. ^ Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. (2005). Communicating Sequential Processes: The First 25 Years. LNCS. Vol. 3525. Springer. ISBN 9783540258131.
  9. ^ a b Barrett, G. (1995). "Model checking in practice: The T9000 Virtual Channel Processor". IEEE Transactions on Software Engineering. 21 (2): 69–78. doi:10.1109/32.345823.
  10. ^ a b Hall, A; Chapman, R. (2002). "Correctness by construction: Developing a commercial secure system" (PDF). IEEE Software. 19 (1): 18–25. CiteSeerX 10.1.1.16.1811. doi:10.1109/52.976937.
  11. ^ Creese, S. (2001). Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks (D. Phil.). Oxford University. CiteSeerX 10.1.1.13.7185.
  12. ^ a b Hoare, C. A. R. (1985). Communicating Sequential Processes. Prentice Hall. ISBN 978-0-13-153289-2.
  13. ^ Clinger, William (June 1981). Foundations of Actor Semantics (Mathematics Doctoral Dissertation). MIT. hdl:1721.1/6935.
  14. ^ Brookes, Stephen; Hoare, C. A. R.; Roscoe, A. W. (1984). "A Theory of Communicating Sequential Processes". Journal of the ACM. 31 (3): 560–599. doi:10.1145/828.833. S2CID 488666.
  15. ^ Buth, B.; M. Kouvaras; J. Peleska; H. Shi (December 1997). "Deadlock analysis for a fault-tolerant system". Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology (AMAST’97). pp. 60–75.
  16. ^ Buth, B.; J. Peleska; H. Shi (January 1999). "Combining methods for the livelock analysis of a fault-tolerant system". Proceedings of the 7th International Conference on Algebraic Methodology and Software Technology (AMAST’98). pp. 124–139.
  17. ^ Lowe, G. (1996). "Breaking and fixing the Needham–Schroeder public-key protocol using FDR". Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer-Verlag. pp. 147–166.
  18. ^ a b c d e f g h i j k l m Roscoe, A.W. (2010). Understanding Concurrent Systems. Texts in Computer Science. doi:10.1007/978-1-84882-258-0. ISBN 978-1-84882-257-3.
  19. ^ Scattergood, J. B. (1998). The Semantics and Implementation of Machine-Readable CSP (D.Phil.). Oxford University Computing Laboratory.
  20. ^ Roscoe, A. W. (1994). "Model-checking CSP". A Classical Mind: Essays in Honour of C. A. R. Hoare. Prentice Hall.
  21. ^ "Introduction — FDR 4.2.4 documentation". www.cs.ox.ac.uk.
  22. ^ Parashkevov, Atanas N.; Yantchev, Jay (1996). "ARC – a tool for efficient refinement and equivalence checking for CSP". IEEE Int. Conf. on Algorithms and Architectures for Parallel Processing ICA3PP '96. pp. 68–75. CiteSeerX 10.1.1.45.3212.
  23. ^ Leuschel, Michael; Fontaine, Marc (2008). "Probing the Depths of CSP-M: A new FDR-compliant Validation Tool" (PDF). ICFEM 2008. Springer-Verlag. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  24. ^ Sun, Jun; Liu, Yang; Dong, Jin Song (2009). "PAT: Towards Flexible Verification under Fairness" (PDF). Proceedings of the 20th International Conference on Computer-Aided Verification (CAV 2009). Lecture Notes in Computer Science. Vol. 5643. Springer. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  25. ^ Sun, Jun; Liu, Yang; Dong, Jin Song (2008). "Model Checking CSP Revisited: Introducing a Process Analysis Toolkit" (PDF). Proceedings of the Third International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (ISoLA 2008). Communications in Computer and Information Science. Vol. 17. Springer. pp. 307–322. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  26. ^ Sun, Jun; Liu, Yang; Dong, Jin Song; Chen, Chunqing (2009). "Integrating Specifications and Programs for System Specification and Verification" (PDF). IEEE Int. Conf. on Theoretical Aspects of Software Engineering TASE '09. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  27. ^ Green, Mark; Abdallah, Ali (2002). "Performance Analysis and Behaviour Tuning for Optimisation of Communicating Systems". Communicating Process Architectures 2002.
  28. ^ Brooke, Phillip; Paige, Richard (2007). "Lazy Exploration and Checking of CSP Models with CSPsim". Communicating Process Architectures 2007.
  29. ^ ISO 8807, Language of Temporal Ordering Specification
  30. ^ Geraint Jones (1990). "Sharp as a Razor: A Queen's Award for the Computing Laboratory". The Oxford Magazine (59, Fourth Week, Trinity Term).
  31. ^ Len Shustek (March 2009). "An interview with C.A.R. Hoare". Communications of the ACM. 52 (3): 38–41. doi:10.1145/1467247.1467261. S2CID 1868477.

Further reading

[edit]
[edit]
酪蛋白是什么 五月二十九是什么星座 家庭教育是什么 注意力不集中是什么原因 讳疾忌医什么意思
千年等一回是什么生肖 锋芒的意思是什么 坠积效应是什么意思 皮肤容易晒黑是什么原因 大力念什么
广州有什么区 吃什么药能冲开宫腔粘连 b超跟彩超有什么区别 离家出走需要准备什么 肾阴虚吃什么食物
修女是干什么的 诺五行属什么 阁僚是什么意思 蜂蜜水喝了有什么好处 菠萝为什么要用盐水泡
吃什么补营养最快hcv9jop3ns0r.cn 五个月的宝宝能吃什么辅食hcv8jop7ns9r.cn 下午6点半是什么时辰hcv9jop0ns9r.cn 红颜薄命的意思是什么hcv9jop4ns0r.cn 减肥可以吃什么零食hcv7jop7ns2r.cn
猥琐是什么意思hcv9jop2ns0r.cn 吃什么补充雌激素hcv8jop7ns2r.cn 贪是什么意思hcv8jop3ns8r.cn 疣挂什么科hcv8jop6ns0r.cn 女人吃什么新陈代谢快bfb118.com
什么是大麦hcv9jop0ns9r.cn 小叶紫檀有什么功效hcv8jop3ns8r.cn 宣是什么意思hcv7jop9ns7r.cn 阴虱什么症状hcv9jop2ns2r.cn 吃什么去湿气最快hcv8jop0ns2r.cn
深圳市市长是什么级别hcv8jop4ns1r.cn 子宫直肠陷凹什么意思hcv7jop7ns0r.cn 桑叶长什么样子图片hcv8jop7ns0r.cn loho是什么牌子hcv9jop1ns9r.cn 卿卿什么意思hcv7jop6ns9r.cn
百度