A Formal Architecture for Open Systems

Size: px
Start display at page:

Download "A Formal Architecture for Open Systems"

Transcription

1 A Formal Architecture for Open Systems Xiaobin Li Dr. Walt Scacchi Institute for Software Research Information and Computer Science Department University of California, Irvine Dec. 30,

2 Table of Contents A Formal Architecture for Open Systems... 1 Chapter 1. Introduction... 4 Chapter 2. Human-Computer Interface Description of human-computer interface xadl 2.0 example Graphic of human-computer interface Chapter 3. Intra-Application Scripting Description of intra-application scripting xadl 2.0 example Graphic of intra-application scripting Chapter 4. Application Program Description of application program xadl 2.0 example Graphic of application program Chapter 5. Inter-Application Scripting Description of inter-application scripting xadl 2.0 example Graphic of inter-application scripting Chapter 6. Middleware Description of middleware xadl 2.0 example Graphic of middleware Chapter 7. Operating System Description of operating system xadl 2.0 example Graphic of operating system Chapter 8. System Programming Description of system programming xadl 2.0 example Graphic of system programming Chapter 9. Computer System Description of computer system xadl 2.0 example Graphic of computer system Chapter 10. Instruction Set Architecture & Register Transfer Level Description of instruction set architecture and register transfer level xadl 2.0 example Graphic of instruction set architecture and register transfer level Chapter 11. Logic Description of logic xadl 2.0 example Graphic of logic Chapter 12. Circuit Description of circuit

3 12.2 xadl 2.0 example Graphic of circuit Chapter 13. Physical Device Description of physical device xadl 2.0 example Graphic of physical device Chapter 14.Amazon Ecommerce Transaction for Purchuring Books on Open Systems Desceiption of amazon ecommerce transaction for purchasing books on open systems xadl 2.0 example Graphic of amazon ecommerce transaction for purchasing books on open systems Chapter 15. Conclusion and Lessons Learned

4 Chapter 1. Introduction We came from the idea: to describe what would happen in the software and hardware world if we hit the keyboard in a computer. The open system is real complex and, of course, interesting. We try to use layering methodology to solve our problem, after that, we extend xadl2.0 to describe our layered open system architecture. By architecture we mean for a typical layer, open systems are composed of four elements: (1) component; (2) interface; (3) link; (4) connector. And we come out 12 layers for open systems: Layer 1. Human-Computer Interface: User Interfaces (UIs) are part of software programs allow: (1) user to interact with computer; (2) user to carry out their task. Layer 2. Intra-Application Scripting: Scripting languages are differing from system programming languages, like C++, in that they are designed for gluing applications together. They assume the existence of a set of powerful components and are intended primarily for connecting components. Layer 3. Application program: Application is a program (as a word processor or a spreadsheet) that performs one of the important tasks for which a computer is used. (Copy from Merriam-Webster's Collegiate Dictionary). Before development software, we always have a picture of our product, or so-called brainstorms. Then we need specify our idea in term of software conventional terminology, called specification. A piece of code that implements that specification using programming language or other tools is what we called application program. Layer 4. Inter-Application Scripting: The difference between intra-application scripting and inter-application scripting is that intra-application scripting glues the components within an application while inter-application scripting glues separated applications together. Layer 5. Middleware: Middleware is connectivity software that consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. The most widely publicized middleware initiatives are the Open Software Foundation's Distributed Computing Environment (DCE), Object Management Group's Common Object Request Broker Architecture (CORBA), and Microsoft's COM/DCOM. Layer 6. Operating System: Operating system is a program that acts as an intermediary between a user of a computer and the computer hardware. Operating system goals: Execute user programs and make solving user problems easier; make the computer system convenient to use; use the computer hardware in an efficient manner 4

5 Layer 7. System Programming: System programming language and complier defined a virtual machine that specifies what statements of application program are acceptable. Layer 8. Computer System: A modern, general-purpose computer system consists of a CPU and a number of device controllers that are connected through a common bus that provide access to shared memory. Each device controllers is in charge of a specific type of device, like disk drivers, audio devices, etc. Layer 9. Instruction Set Architecture and Register Transfer Level: Instruction-set architecture is the attributes of a computing system as seen by the programmer, i.e. the conceptual structure and functional behavior, as distinct from the organization of the data flows and controls the logic design, and physical implementation. (Amdahl, Blaaw, and Brooks, 1964). In another word, ISA is a kind of contract: programmers use the ISA to model how program will execute; hardware implementation uses the ISA as a formal definition of the correct way to execute program. Layer 10. Logic: This layer describes a design by logic gates and the connections between them. Layer 11. Circuit: This layer describes the physical connection of devices: transistors etc. Layer 12. Physical Device: This layer describes the carriers (electron and hole) in the semiconductor material. And we should say some words about xadl 2.0: xadl 2.0 is a software architecture description language (ADL) developed by the Institute for Software Research at the University of California, Irvine. As mentioned above, by architecture we mean for a typical layer, open systems are composed of four elements: (1) component; (2) interface; (3) link; (4) connector. The Component type describes an opaque component for use at the structural level. No semantic information is provided at this level. An opaque component contains an ID, description, and zero or more interfaces. A component also contains a pointer to its type. The Interface type describes an opaque interface for use at the structure level. No semantic information is provided at this level. An opaque interface contains an ID, description, and a direction. This may be connected to other interfaces via a link. The direction is optional. An interface also contains a pointer to its type. The Link type describes a link between two interfaces. All links at the structural level exist between interfaces on components and connectors. A Link has an ID, a description, and exactly two endpoints. The Connector type describes an opaque connector for use at the structural level. No semantic information is provided at this level. An opaque connector contains an ID, description, and zero or more interfaces. A connector also contains a pointer to its type. 5

6 Chapter 2. Human-Computer Interface 2.1 Description of human-computer interface Originally, computers were "designed by engineers, for engineers". Little or no attention was, or needed to be, paid to the interface. However, the pervasive use of the personal computer and the increasing number and variety of applications and programs has given rise to a need to focus on the "cognitive locus of human-computer interaction" i.e. the interface. What is the interface? In a very basic sense, the interface is "the place where contact between two entities occurs." The greater the difference between the two entities, the greater the need for a well-designed interface. In this case, the two very different entities are computers and humans. Human-computer interface design looks at how we can lessen the effects of these differences. This means empowering users by providing them with ease of use. "How can we think about it so that the interfaces we design will empower users?" "What does the user want to do?" User Interfaces (UIs) are part of software programs allow: (1) user to interact with computer; (2) user to carry out their task. 1. Open source resources Pure Interaction is a formal model on how to encode human-computer interaction. This project will implement the Pure Interaction Corba Interfaces and create an implementation for C++ and X-Windows called the FOH-framework Web pages Human-Computer Interaction Resources on the Net: 3. Citations Handbook of human-computer interaction / edited by Martin G. Helander, Thomas K. Landauer, Prasad V. Prabhu. EDITION 2nd, completely rev. ed. PUBL INFO Amsterdam ; New York : Elsevier, BOTHELL/CCC REFERENCE QA76.9.H85 H xadl 2.0 example Take a popular example, we have Linux Operating System, and it s a suit of office tools, like Web Browser named Mozilla, tool named Gnome Evolution, Word Processing tool named Word Perfect, etc. 6

7 7

8 <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: Mozilla Description- - > <types:component instance:id = MoZillaComp xsi:type = types:component > instance:description >Mozilla</types:description> <types:interface instance:id = MoZillaCompTop xsi:type = instance:description >MoZilla.Top </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = MoZillaCompBottom xsi:type = instance:description >MoZilla.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tmozilla /> <! - - subarchitecture description - -> <types: subarchitecture> <types: archstructure> <! component: GUIDisplayerManager description - -> <types:component instance:id = GUIDisplayerManagerComp xsi:type = types:component > 8

9 instance:description >GUI Displayer Manager</types:description> <types:interface instance:id = GUIDisplayerManagerCompTop xsi:type = instance:description >GUIDisplayerManager.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = GUIDisplayerManagerCompBottom xsi:type = instance:description >GUIDisplayerManager.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tguidisplayermanager /> </types:component> <! component: GUIScriptIntepreter description - -> <types:component instance:id = GUIScriptIntepreterComp xsi:type = types:component > instance:description >GUIScriptIntepreter</types:description> <types:interface instance:id = GUIScriptIntepreterCompTop xsi:type = instance:description >GUIScriptIntepreter.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = GUIScriptIntepreterCompBottom xsi:type = instance:description >GUIScriptIntepreter.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tguiscriptintepreter /> </types:component> <! component: mozilla description - -> <types:component instance:id = mozillacomp xsi:type = types:component > 9

10 instance:description >mozilla</types:description> <types:interface instance:id = mozillacomptop xsi:type = instance:description >mozilla.top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = mozillacompbottom xsi:type = instance:description >mozilla.bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tmozilla /> </types:component> <!- - Connector: Con11(GUIDisplayerManager - GUIScriptIntepreter) Description- - > <types:connector instance:id = Con11 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con11Top xsi:type = instance:description >Con11.Top</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con11Bottom xsi:type = instance:description >Con11.Bottom</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tcon11 /> </types:connector> <!- - Connector: Con12(Mozilla - GUIScriptIntepreter) Description- - > <types:connector instance:id = Con12 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con12Top xsi:type = 10

11 instance:description >Con12.Top</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con12Bottom xsi:type = instance:description >Con12.Bottom</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tcon12 /> </types:connector> <!- - Link: GUIDisplayerManager con11 GUIScriptIntepreter Con12 - mozilla Description- - > <types:link instance:id = link111 xsi:type = types:link > instance:description >GUIDisplayerManager Con11</types:description> <instance:anchoroninterface xlink:href = #GUIDisplayerManagerBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con11Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link112 xsi:type = types:link > instance:description >Con11 GUIScriptIntepreter</types:description> <instance:anchoroninterface xlink:href = #Con11Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GUIScriptIntepreterTop xsi:type = instance:xmllink xlink:type = <types:link instance:id = link113 xsi:type = types:link > instance:description >Con12 GUIScriptIntepreter</types:description> 11

12 <instance:anchoroninterface xlink:href = #Con12Top xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GUIScriptIntepreterBottom xsi:type = instance:xmllink xlink:type = <types:link instance:id = link114 xsi:type = types:link > instance:description >Con12 mozilla</types:description> <instance:anchoroninterface xlink:href = #Con12Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #mozillatop xsi:type = instance:xmllink xlink:type = </types: archstructure> <types: signatureinterfacemapping> <types: outersignature xsi:type= simple xlink:href = MozillaTop /> <types: innerinterface xsi:type= simple xlink:href= GUIDisplayerManagerTop /> <types: outersignature xsi:type= simple xlink:href = MozillaBottom /> <types: innerinterface xsi:type= simple xlink:href= mozillabottom /> </types: signatureinterfacemapping> </types:subarchitecture> </types:component> <!- - Component: Gnome Evolution Description- - > <types:component instance:id = GnomeEvolutionComp xsi:type = types:component > instance:description >GnomeEvolution</types:description> <types:interface instance:id = GnomeEvolutionCompTop xsi:type = instance:description >GnomeEvolution.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> 12

13 <types:interface instance:id = GnomeEvolutionCompBottom xsi:type = instance:description >GnomeEvolution.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tgnomeevolution /> </types:component> <!- - Component: Word Perfect Description- - > <types:component instance:id = WordPerfectComp xsi:type = types:component > instance:description >WordPerfect</types:description> <types:interface instance:id = WordPerfectCompTop xsi:type = instance:description >WordPerfect.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = WordPerfectCompBottom xsi:type = instance:description >WordPerfect.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #twordperfect /> </types:component> <!- - Component: Linux Description- - > <types:component instance:id = LinuxComp xsi:type = types:component > instance:description >Linux</types:description> <types:interface instance:id = LinuxCompTop xsi:type = instance:description >Linux.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:type xlink:type = simple xlink:href = #tlinux /> </types:component> 13

14 <!- - Component: LocalServer Description- - > <types:component instance:id = LocalServerComp xsi:type = types:component > instance:description >LocalServer</types:description> <types:interface instance:id = LocalServerCompTop xsi:type = instance:description >LocalServer.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:type xlink:type = simple xlink:href = #tlocalserver /> </types:component> <!- - Component: RemoteServer Description- - > <types:component instance:id = RemoteServerComp xsi:type = types:component > instance:description >RemoteServer</types:description> <types:interface instance:id = RemoteServerCompTop xsi:type = instance:description >RemoteServer.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:type xlink:type = simple xlink:href = #tremoteserver /> </types:component> <!- - Component:ORB1 Description- - > <types:component instance:id = ORB1Comp xsi:type = types:component > instance:description >ORB1</types:description> <types:interface instance:id = ORB1CompTop xsi:type = instance:description >ORB1.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = ORB1CompBottom xsi:type = 14

15 instance:description >ORB1.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #torb1 /> </types:component> <!- - Component:ORB2 Description- - > <types:component instance:id = ORB2Comp xsi:type = types:component > instance:description >ORB2</types:description> <types:interface instance:id = ORB2CompTop xsi:type = instance:description >ORB2.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = ORB2CompBottom xsi:type = instance:description >ORB2.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #torb2 /> </types:component> <!- - Connector: Con1(HCI-Mozilla) Description- - > <types:connector instance:id = Con1 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con1Top xsi:type = instance:description >Con1.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con1Bottom xsi:type = instance:description >Con1.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> 15

16 <types:type xlink:type = simple xlink:href= #tcon1 /> </types:connector> <!- - Connector: Con2(HCI- GnomeEvolution) Description- - > <types:connector instance:id = Con2 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con2Top xsi:type = instance:description >Con2.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con2Bottom xsi:type = instance:description >Con2.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tcon2 /> </types:connector> <!- - Connector: Con3(HCI-Word Perfect) Description- - > <types:connector instance:id = Con3 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con3Top xsi:type = instance:description >Con3.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con3Bottom xsi:type = instance:description >Con3.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tcon3 /> </types:connector> <!- - Connector: API1(Mozilla- Linux) Description- - > 16

17 <types:connector instance:id = API1 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = API1Top xsi:type = instance:description >API1.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = API1Bottom xsi:type = instance:description >API1.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi1 /> </types:connector> <!- - Connector: API2(Gnome Evolution- Linux) Description- - > <types:connector instance:id = API2 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = API2Top xsi:type = instance:description >API2.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = API2Bottom xsi:type = instance:description >API2.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi2 /> </types:connector> <!- - Connector: API3(Word Perfect- Linux) Description- - > <types:connector instance:id = API3 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = API3Top xsi:type = instance:description >API3.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> 17

18 <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = API3Bottom xsi:type = instance:description >API3.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi3 /> </types:connector> <!- - Connector: API4(Local Server- Linux) Description- - > <types:connector instance:id = API4 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = API4Top xsi:type = instance:description >API4.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = API4Bottom xsi:type = instance:description >API4.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi4 /> </types:connector> <!- - Connector: CSH Description- - > <types:connector instance:id = CSH xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = CSHTop xsi:type = instance:description >CSH.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = CSHBottom xsi:type = instance:description >CSH.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> 18

19 <types:type xlink:type = simple xlink:href= #tcsh /> </types:connector> <!- - Connector: NetworkProtocol Description- - > <types:connector instance:id = NetworkProtocol xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = NetworkProtocolTop xsi:type = instance:description >NetworkProtocol.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = NetworkProtocolBottom xsi:type = instance:description >NetworkProtocol.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tnetworkprotocol /> </types:connector> <!- - Interface: HCI Description- - > <types:interface instance:id = HCI xsi:type = instance:description >HCI</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #thcitype /> <!- - Link: HCI- Con1 - Mozilla Description- - > <types:link instance:id = link1 xsi:type = types:link > instance:description >HCI Con1</types:description> <instance:anchoroninterface xlink:href = #HCI xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con1Top xsi:type = instance:xmllink xlink:type = 19

20 <types:link instance:id = link2 xsi:type = types:link > instance:description >Mozilla Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #MozillaTop xsi:type = instance:xmllink xlink:type = <!- - Link: HCI- Con2 - GnomeEvolution Description- - > <types:link instance:id = link3 xsi:type = types:link > instance:description >HCI Con2</types:description> <instance:anchoroninterface xlink:href = #HCI xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con2Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link4 xsi:type = types:link > instance:description >GnomeEvolution Con2</types:description> <instance:anchoroninterface xlink:href = #Con2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GnomeEvolutionTop xsi:type = instance:xmllink xlink:type = <!- - Link: HCI- Con3 - WordPerfect Description- - > <types:link instance:id = link5 xsi:type = types:link > instance:description >HCI Con3</types:description> <instance:anchoroninterface xlink:href = #HCI xsi:type = instance:xmllink xlink:type = 20

21 <instance:anchoroninterface xlink:href = #Con3Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link6 xsi:type = types:link > instance:description >GnomeEvolution Con3</types:description> <instance:anchoroninterface xlink:href = #Con3Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #WordPerfectTop xsi:type = instance:xmllink xlink:type = <!- - Link: Mozilla - CSH Description- - > <types:link instance:id = link7 xsi:type = types:link > instance:description > Mozilla - CSH </types:description> <instance:anchoroninterface xlink:href = #MozillaBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #CSHTop xsi:type = instance:xmllink xlink:type = <!- - Link: Mozilla- API1 - Linux Description- - > <types:link instance:id = link8 xsi:type = types:link > instance:description >Mozilla API1</types:description> <instance:anchoroninterface xlink:href = #MozillaBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API1Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link9 xsi:type = types:link > instance:description >API1 Linux</types:description> 21

22 <instance:anchoroninterface xlink:href = #API1Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = <!- - Link: GnomeEvolution - CSH Description- - > <types:link instance:id = link10 xsi:type = types:link > instance:description > GnomeEvolution - CSH </types:description> <instance:anchoroninterface xlink:href = #GnomeEvolutionBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #CSHTop xsi:type = instance:xmllink xlink:type = <!- - Link: GnomeEvolution- API2 - Linux Description- - > <types:link instance:id = link11 xsi:type = types:link > instance:description >GnomeEvolution API2</types:description> <instance:anchoroninterface xlink:href = #GnomeEvolutionBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API2Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link9 xsi:type = types:link > instance:description >API2 Linux</types:description> <instance:anchoroninterface xlink:href = #API2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = 22

23 <!- - Link: WordPerfect - CSH Description- - > <types:link instance:id = link13 xsi:type = types:link > instance:description > WordPerfect - CSH </types:description> <instance:anchoroninterface xlink:href = #WordPerfectBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #CSHTop xsi:type = instance:xmllink xlink:type = <!- - Link: WordPerfect- API3 - Linux Description- - > <types:link instance:id = link14 xsi:type = types:link > instance:description >WordPerfect API3</types:description> <instance:anchoroninterface xlink:href = #WordPerfectBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API3Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link15 xsi:type = types:link > instance:description >API3 Linux</types:description> <instance:anchoroninterface xlink:href = #API3Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = <!- - Link: (Mozilla --) API1 ORB1 NetworkProtocol (-- RemoteServer) Description- - > <types:link instance:id = link16 xsi:type = types:link > instance:description >ORB1 API1</types:description> 23

24 <instance:anchoroninterface xlink:href = #API1Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ORB1Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link17 xsi:type = types:link > instance:description >ORB1 NetworkProtocol</types:description> <instance:anchoroninterface xlink:href = #ORB1Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NetworkProtocolTop xsi:type = instance:xmllink xlink:type = <!- - Link: (GnomeEvolution --) API2 ORB2 NetworkProtocol (-- RemoteServer) Description- - > <types:link instance:id = link18 xsi:type = types:link > instance:description >ORB2 API2</types:description> <instance:anchoroninterface xlink:href = #API2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ORB2Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link19 xsi:type = types:link > instance:description >ORB2 NetworkProtocol</types:description> <instance:anchoroninterface xlink:href = #ORB2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NetworkProtocolTop xsi:type = instance:xmllink xlink:type = 24

25 <!- - Link: Linux API4 - LocalServer Description- - > <types:link instance:id = link20 xsi:type = types:link > instance:description >Linux API4</types:description> <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API4Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link21 xsi:type = types:link > instance:description >API4 LocalServer</types:description> <instance:anchoroninterface xlink:href = #API4Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LocalServerTop xsi:type = instance:xmllink xlink:type = <!- - Link: Linux CSH Description- - > <types:link instance:id = link24 xsi:type = types:link > instance:description >CSH Linux</types:description> <instance:anchoroninterface xlink:href = #CSHBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = <!- - Link: Linux NetworkProtocol Description- - > <types:link instance:id = link25 xsi:type = types:link > instance:description >NetworkProtocol Linux</types:description> <instance:anchoroninterface xlink:href = #NetworkprotocolTop xsi:type = instance:xmllink xlink:type = 25

26 <instance:anchoroninterface xlink:href = #LinuxTop xsi:type = instance:xmllink xlink:type = <!- - Link: RemoteServer NetworkProtocol Description- - > <types:link instance:id = link26 xsi:type = types:link > instance:description >NetworkProtocol RemoteServer</types:description> <instance:anchoroninterface xlink:href = #NetworkprotocolBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #RemoteServerTop xsi:type = instance:xmllink xlink:type = <!- - Link: LocalServer CSH Description- - > <types:link instance:id = link27 xsi:type = types:link > instance:description >CSH LocalServer</types:description> <instance:anchoroninterface xlink:href = #CSHBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LocalServerTop xsi:type = instance:xmllink xlink:type = <!- - Link: LocalServer HCI Description- - > <types:link instance:id = link28 xsi:type = types:link > instance:description >HCI LocalServer</types:description> <instance:anchoroninterface xlink:href = #HCI xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LocalServerTop xsi:type = instance:xmllink xlink:type = </types:archstructure> 26

27 27

28 2.3 Graphic of human-computer interface 28

29 Chapter 3. Intra-Application Scripting 3.1 Description of intra-application scripting Scripting languages, like Tcl, Perl and the UNIX shell are becoming more and more popular nowadays. They are differing from system programming languages, like C++, in that they are designed for gluing applications together. They assume the existence of a set of powerful components and are intended primarily for connecting components. So, to emphasis the difference between application software using scripting language and system programming language, we separate scripting layer from conventional application layer. Also, the components used by scripting programming can be a piece of application software or function provided by OS. That is why from Figure we can see scripting layer is implemented on top of application layer AND OS layer. To fully describe this layer, we need sublayers of scripting layer: Figure Sublayers of scripting layer Scripting language are interpreted, from the data flow point of view, we have: Figure Interface between scripting layer and application layer 1. Open source resource JavaScript language, which is used in our project, can be found at: 2.Web pages 29

30 has detailed programming techniques on JavaScript Citation <<DevGuru JavaScript Quick Reference>> is a good reference of JavaScript. 3.2 xadl 2.0 example Since JavaScript is the default script language for browsers right now, and its interesting programming way: embedded into HTML file, we try to use describe this structure using xadl2.0. And copy an example code from our previous one Buying items via web : <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- Beginning of JavaScript - function MsgBox (textstring) { alert (textstring) } // - End of JavaScript - --> </SCRIPT> </HEAD> <BODY> <FORM> <INPUT NAME="text1" TYPE=Text> <INPUT NAME="GO!" TYPE=Button VALUE="GO!" onclick="msgbox(form.text1.value)"> </FORM> </BODY> </HTML> And we have xadl-type structural diagram: 30

31 <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: Head Description- - > <types:component instance:id = HeadComp xsi:type = types:component > instance:description >Head</types:description> <types:interface instance:id = HeadCompRight xsi:type = instance:description >Head.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #thead /> <! - - subarchitecture description - -> <types: subarchitecture> 31

32 <types: archstructure> <! component: function description - -> <types:component instance:id = functioncomp xsi:type = types:component > instance:description >function</types:description> <types:interface instance:id = functioncompright xsi:type = instance:description >function.right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = functioncompleft xsi:type = instance:description >function.left</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tfunction /> </types:component> </types: archstructure> <types: signatureinterfacemapping> <types: outersignature xsi:type= simple xlink:href = HeadRight /> <types: innerinterface xsi:type= simple xlink:href= functionleft /> <types: outersignature xsi:type= simple xlink:href = HeadRight /> <types: innerinterface xsi:type= simple xlink:href= functionright /> </types: signatureinterfacemapping> </types:subarchitecture> </types:component> <!- - Component: Body Description- - > <types:component instance:id = Body xsi:type = types:component > instance:description >Body</types:description> <types:interface instance:id = BodyLeft xsi:type = 32

33 instance:description > Body.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tbody /> </types:component> <!- - Connector: Con1 Description- - > <types:connector instance:id = Con1 xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = Con1Left xsi:type = instance:description >Con1.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con1Right xsi:type = instance:description >Con1.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #tcon1 /> </types:connector> <!- - Link: Head-Con1 Description- - > <types:link instance:id = link1 xsi:type = types:link > instance:description >Head- Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #HeadRight xsi:type = instance:xmllink xlink:type = 33

34 <!- - Link: Body-Con1 Description- - > <types:link instance:id = link2 xsi:type = types:link > instance:description >Body- Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #BodyLeft xsi:type = instance:xmllink xlink:type = </types:archstructure> 34

35 3.3 Graphic of intra-application scripting 35

36 Chapter 4. Application Program 4.1 Description of application program Application is a program (as a word processor or a spreadsheet) that performs one of the important tasks for which a computer is used. (Copy from Merriam-Webster's Collegiate Dictionary) Before development software, we always have a picture of our product, or so-called brainstorms. Then we need specify our idea in term of software conventional terminology, called specification. A piece of code that implements that specification using programming language or other tools is what we called application program. Figure 1. Abstract data flow view of application layer 1. Open source resources GLAME, short for GNU/Linux Audio Mechanics, The project currently is in its early development stages but evolving pretty fast. One day, hope it would be a powerful, fast, stable and easily extensible sound editor for Linux and compatible systems Web pages This page contains definition of application program: The good place for Java programming language learning: 3. Citations <<A Book on C-Programming in C>> Addison-Wesley is an excellent book for studying C. 4.2 xadl 2.0 example Back to our previous example, suppose we use the following Java code to implement to JavaScript function, function MsgBox (textstring) {alert (textstring)}. A couple of lines Java code that implement the above form and submission may look like: 36

37 Coding example: int n = JOptionPane.showConfirmDialog(frame,null,null, JOptionPane.YES_NO_OPTION); // generate a form public String getvalidatedtext() { return typedtext; } // get user input text string typedtext = textfield.gettext(); String uctext = typedtext.touppercase(); //using Java Socket to transmit user input text string to web server Socket user = new Socket( PrintWriter pout = new Printwriter(user.getOutputStream(),true); Pout.println(ucText.toString()); From the above, we can see sequential structural diagram: <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: GenerateForm Description- - > <types:component instance:id = GenerateFormComp xsi:type = types:component > 37

38 instance:description >GenerateForm</types:description> <types:interface instance:id = GenerateFormCompRight xsi:type = instance:description > GenerateForm.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tgenerateform /> </types:component> <!- - Component: GetUserInput scripting Description- - > <types:component instance:id = GetUserInputscriptingComp xsi:type = types:component > instance:description >GetUserInputscripting</types:description> <types:interface instance:id = GetUserInputscriptingLeft xsi:type = instance:description > GetUserInputscripting.Left</types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = GetUserInputscriptingRight xsi:type = instance:description > GetUserInputscripting.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tgetuserinputscripting /> </types:component> <!- - Component: TransmitString Description- - > <types:component instance:id = TransmitString xsi:type = types:component > instance:description >TransmitString</types:description> <types:interface instance:id = TransmitStringLeft xsi:type = 38

39 instance:description > TransmitString.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #ttransmitstring /> </types:component> <!- - Connector: Con1(GenerateForm - GetUserInput) Description- - > <types:connector instance:id = Con1 xsi:type = types:connector > instance:description > pipe Operator</types:description> <types:interface instance:id = Con1Left xsi:type = instance:description >Con1.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con1Right xsi:type = instance:description >Con1.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #tcon1 /> </types:connector> <!- - Connector: Con2 (GetUserInput - TransmitString) Description- - > <types:connector instance:id = Con2 xsi:type = types:connector > instance:description >Con2</types:description> <types:interface instance:id = Con2Left xsi:type = instance:description >Con2.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> 39

40 <types:interface instance:id = Con2Right xsi:type = instance:description >Con2.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #tcon2 /> </types:connector> <!- - Link: GenerateForm - Con1 Description- - > <types:link instance:id = link1 xsi:type = types:link > instance:description >GenerateForm-Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GenerateFormRight xsi:type = instance:xmllink xlink:type = <!- - Link: GetUserInput - Con1 Description- - > <types:link instance:id = link2 xsi:type = types:link > instance:description >GetUserInput Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GetUserInputLeft xsi:type = instance:xmllink xlink:type = <!- - Link: GetUserInput Con2 Description- - > <types:link instance:id = link3 xsi:type = types:link > instance:description >GetUserInput-Con2</types:description> <instance:anchoroninterface xlink:href = #Con2Left xsi:type = instance:xmllink xlink:type = 40

41 <instance:anchoroninterface xlink:href = #GetUserInputRight xsi:type = instance:xmllink xlink:type = <!- - Link: TransmitString Con2 Description- - > <types:link instance:id = link4 xsi:type = types:link > instance:description >Con2- TransmitString</types:description> <instance:anchoroninterface xlink:href = #Con2Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #TransmitStringLeft xsi:type = instance:xmllink xlink:type = </types:archstructure> 41

42 4.3 Graphic of application program 42

43 Chapter 5. Inter-Application Scripting 5.1 Description of inter-application scripting The difference between intra-application scripting and inter-application scripting is that intra-application scripting glues the components within an application while interapplication scripting glues separated applications together. Example 1: For easily see the power of scripting layer, we have the following UNIX shell command: select grep scripting wc The select program reads the text that is currently selected on the display and print the text on its output; the grep program reads its input and prints on its output the lines containing scripting ; the wc program counts the number of lines on its input. Example 2:Tcl example: Create a scrollable text widget: Start by placing the following script in ed.tcl: #! /usr/bin/wish -f global GotSelection set GotSelection 0 frame.fr -width 10c -height 5c ;#main window wm title. "Simple Text Editor V 0" pack.fr #configure menubar on top frame.menubar -relief raised -bd 2 pack.menubar -in.fr -fill x frame.edf #put a text widget with scroll bars text.ed -width 80 -height 20 -bg grey \ -yscrollcommand ".ys set" scrollbar.ys -command ".ed yview" pack.ed.ys -in.edf -side left -fill y pack.edf -in.fr -after.menubar -fill x The first line of the script is the command to shell process to invoke the wish shell and pass this file as the script that wish should interpret (parse). The next line declares a global variable GotSelection and follows it with initializing it to the Boolean value zero [Note that as far as Tcl parser is concerned "set GotSelection 0" is a string with three elements.]. The next three lines create and pack a base frame ".fr" whose width is 10 centimeters and height 5 centimeters; the root window is titled "Simple Text Editor V 0" For this text editor, we want to create a menu bar at the top of the main window for supporting File, Edit and Find actions. In Tk, the menu bar is a frame widget with one menu button for each menu (usually pulldown). The option -relief takes the value raised or sunken to give a raised or depressed appearance to the widget. The option -fill (usually used for scrollbars, menu bars etc.) takes "x" or "y" as argument to extend the widget in the horizontal or vertical direction up to the end of the parents border in that direction. 43

44 The next group of lines create a text widget ".ed" and a vertical scrollbar, packs them inside the frame ".edf" in the main window. -yscrollcommand ".ys set" connects the ".ys" scrollbar's command.ed yview, connecting the text and scrollbar. The "-after" option tells the packer to pack the frame containg the text widget and scrollbar below the top menubar and the option "-side" tells it to pack the vertical scrollbar to the left of the text widget. Make ed.tcl executable and run it the final result should be similar to: 1. Open source resource Tool Command Language (Tcl) is an interpreted language and a very portable interpreter for that language. Tcl is embeddable and extensible, and has been widely used since its creation in 1988 by John Ousterhout. The Tcl Core Team (TCT) is a group of Tcl experts who collectively manage the development of the open source Tcl core, including the Tcl scripting language, the Tk toolkit, the Tcl Developer Exchange Web site, and other things yet to be determined. And, Bash is the shell, or command language interpreter, that will appear in the GNU operating system. Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh). It is intended to conform to the IEEE POSIX P1003.2/ISO Shell and Tools standard. It offers functional improvements over sh for both programming and interactive use. In addition, most sh scripts can be run by Bash without modification. 2.Web pages For Tcl development goto: And, links to BASH Reference Manual 3. Citation John K. Ousterhout, "Scripting: Higher-Level Programming for the 21st Century," IEEE Computer, March 1998, pp

45 5.2 xadl 2.0 example For instance, we need generate some instructional message, using shell scripting like: clear echo This form for client information The xadl-type structure like: <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: Clear Description- - > <types:component instance:id = Clear xsi:type = types:component > instance:description >Clear</types:description> <types:interface instance:id = ClearLeft xsi:type = instance:description > Clear.Right</types:description> 45

46 <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tclear /> </types:component> <!- - Component: Echo Description- - > <types:component instance:id = Echo xsi:type = types:component > instance:description >Echo</types:description> <types:interface instance:id = EchoLeft xsi:type = instance:description > Echo.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #techo /> </types:component> <!- - Connector: Con Description- - > <types:connector instance:id = Con xsi:type = types:connector > instance:description > Connector</types:description> <types:interface instance:id = ConLeft xsi:type = instance:description >Con.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = ConRight xsi:type = instance:description > pipe Operator.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #tcon /> </types:connector> <!- - Link: Clear-Con Description- - > 46

47 <types:link instance:id = link1 xsi:type = types:link > instance:description >Clear- Con</types:description> <instance:anchoroninterface xlink:href = #ConLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ClearRight xsi:type = instance:xmllink xlink:type = <!- - Link: Echo-Con Description- - > <types:link instance:id = link2 xsi:type = types:link > instance:description >Echo- Con</types:description> <instance:anchoroninterface xlink:href = #ConRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #EchoLeft xsi:type = instance:xmllink xlink:type = </types:archstructure> 5.3 Graphic of inter-application scripting 47

48 48

49 Chapter 6. Middleware 6.2 Description of middleware Middleware is connectivity software that consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. The most widely publicized middleware initiatives are the Open Software Foundation's Distributed Computing Environment (DCE), Object Management Group's Common Object Request Broker Architecture (CORBA), and Microsoft's COM/DCOM. Figure1. Layers of middleware As outlined in Figure 8, middleware services are sets of distributed software that exist between the application and the operating system and network services on a system node in the network. The main purpose of middleware services is to help solve many application connectivity and interoperability problems. To fully understand middleware technology, we use Java technology as an example trying go through middleware technology step by step. First, we have TCP/IP Internet protocol stack: 49

50 Figure 2. The TCP/IP Protocol layers The TCP/IP protocol stack: the IP protocol is responsible for transmitting IP datagrams, the basic unit of information, across a TCP/IP network. TCP uses IP to transport a reliable stream of information between two applications. So, when set up a TCP connection, two machines can communicate each other, for example, using TCP sockets which is provided by Java technology to transfer data: Figure 3. Host X machine communicating with web server using sockets 50

51 One of fundamental technologies of middleware is Remote Procedure Call (RPC). Java technology provides a similar feature to RPC named Remote Method Invocation (RMI). As showed in Figure 12, RMI allows a thread to invoke a method on a remote object. Objects are considered remote if they are residing in a different JVM. 51

52 Figure 4. Java Remote Method Invocation (RMI) To make remote methods transparent to both the client and the server, RMI implements the remote object using stubs and skeletons. Figure 5. RMI parameters marshaling A stub is a proxy for the remote object; it resides with the client. When a client invokes a remote method, it is this stub for the remote object that is called. This client-side stub is responsible for creating a parcel consisting of the name of the method to be invoked on the server and that method s parameters, a process known as marshalling the parameters. 52

53 The stub then sends this parcel to the server, where it is received by the skeleton then marshals the return value (or exception, if any) into a parcel and returns this parcel to the client. This stub unmarshals the return value and passes it to the client. RMI is a technology that allows threads to invoke methods on distributed objects, but it required all distributed applications to be written in Java. The Common Object Request Broker Architecture (CORBA) is middleware that allows heterogeneous client and server applications to communicate. Both RMI and CORBA are distributed object systems: Objects are distributed across a network and application can communicate with the distributed objects. An important feature of such system is an object-registration service, with which an object registers itself. Applications that wish to use a distributed object obtain a reference to the object through this service; for example, Java rmiregistery acts as the registration for RMI. A simplified Java TM IDL (Interface Description Language) Hello Client-Server example would illuminate the middleware technology: Figure 6 Communication between the client and server The process of communication between the client and server is following: [from: java.sun.com] 1).The client (applet or application) invokes the sayhello operation of the HelloServer; 2).The ORB transfers that invocation to the servant object registered for that IDL interface; 3).The servant s sayhello method runs, returning a Java String; 53

54 4). The ORB transfers that String back to the client; 5).The client prints the value of the String. 1.Open source resources ACE+TAO project: 2.Web pages CORBA is a popular middleware technique, the following link contain useful information about that: 3.Citations COMMiddleware - focuses on Microsoft's enterprise middleware technologies: COM+, DCOM, MTS, MSMQ, etc. Published by Hegetor Ltd., the sponsor, every month, it's advert-free 6.2 xadl 2.0 example Take our earlier simplified example, a client buying a book from amazon.com: 54

55 <!- - Namespace declaration --> <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > 55

56 <types:archstructure xsi:type = types:archstructure > <! - - Component: Client Description - - > <types:component instance:id = ClientComp xsi:type = types:component > instance:description >Client</types:description> <types:interface instance:id = ClientCompBottom xsi:type = instance:description >Client.Bottom </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tclient /> </types:component> <! - - Component: amazon.com Description - - > <types:component instance:id = HelloServerComp xsi:type = types:component > instance:description >amazon.com</types:description> <types:interface instance:id = amazoncomcompbottom xsi:type = instance:description >amazoncom.bottom </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tamazon.com /> </types:component> <! - - Component: ORB1 Description - - > <types:component instance:id = ORB1Comp xsi:type = types:component > instance:description >ORB1</types:description> <types:interface instance:id = ORB1CompTop xsi:type = instance:description > ORB1.Top </types:description> 56

57 <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = ORB1CompBottom xsi:type = instance:description > ORB1.Bottom </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #torb1 /> </types:component> <! - - Component: ORB2 Description - - > <types:component instance:id = ORB2Comp xsi:type = types:component > instance:description >ORB2</types:description> <types:interface instance:id = ORB2CompTop xsi:type = instance:description > ORB2.Top </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = ORB2CompBottom xsi:type = instance:description > ORB2.Bottom </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #torb2 /> </types:component> <! - - Connector: IIOP Description - - > <types:connector instance:id = IIOPConn xsi:type = types:connector > instance:description>iiop</types:description> 57

58 <types:interface instance:id = IIOPTop xsi:type = instance:description > IIOP.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:type xlink:type = simple xlink:href= #tiiop /> </types:connector> <! - - Connector: API1(Client-ORB1) Description - - > <types:connector instance:id = API1 xsi:type = types:connector > instance:description>api1</types:description> <types:interface instance:id = API1Top xsi:type = instance:description >API1.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = API1Bottom xsi:type = instance:description >API1.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi1 /> </types:connector> <! - - Connector:API2(amazon.com ORB2) Description - - > <types:connector instance:id = API2 xsi:type = types:connector > instance:description>api2</types:description> <types:interface instance:id = API2Top xsi:type = instance:description >API2.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> 58

59 <types:interface instance:id = API2Bottom xsi:type = instance:description >API2.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tapi2 /> </types:connector> <! - - Link: Client API1-ORB1 Description - - > <types:link instance:id = link1 xsi:type = types:link > instance:description >Client- API1</types:description> <instance:anchoroninterface xlink:href = #ClientBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API1Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link2 xsi:type = types:link > instance:description >API1- ORB1</types:description> <instance:anchoroninterface xlink:href = #API1Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ORB1Top xsi:type = instance:xmllink xlink:type = <! - - Link: IIOP ORB1 Description - - > <types:link instance:id = link3 xsi:type = types:link > instance:description >ORB1- IIOP</types:description> <instance:anchoroninterface xlink:href = #ORB1Bottom xsi:type = instance:xmllink xlink:type = 59

60 <instance:anchoroninterface xlink:href = #IIOPTop xsi:type = instance:xmllink xlink:type = <! - - Link: amazon.com API2 ORB2 Description - - > <types:link instance:id = link4 xsi:type = types:link > instance:description >amazon.com- API2</types:description> <instance:anchoroninterface xlink:href = #amazoncombottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #API2Top xsi:type = instance:xmllink xlink:type = <types:link instance:id = link5 xsi:type = types:link > instance:description >API2- ORB2</types:description> <instance:anchoroninterface xlink:href = #API2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ORB2Top xsi:type = instance:xmllink xlink:type = <! - - Link: IIOP ORB2 Description - - > <types:link instance:id = link6 xsi:type = types:link > instance:description > ORB2- IIOP</types:description> <instance:anchoroninterface xlink:href = #ORB2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #IIOpTop xsi:type = instance:xmllink xlink:type = </types:archstructure> 60

61 6.3 Graphic of middleware 61

62 Chapter 7. Operating System 7.1 Description of operating system Operating system is a program that acts as an intermediary between a user of a computer and the computer hardware. Operating system goals: Execute user programs and make solving user problems easier; make the computer system convenient to use; use the computer hardware in an efficient manner. Take Linux for example, the Linux system is composed of three main bodies of code: 1.The kernel is responsible for maintaining all the important abstractions of the operating system, including such things as virtual memory and processes; 2.The system libraries define a standard set of functions through which applications can interact with the kernel, and which implement much of the operating system functionality that does not need full privileges of kernel code; 3.The system utilities are programs that perform individual, specialized management tasks. Figure1. Components of the Linux system As well-known similar features between UNIX and Linux, UNIX consists of two separable parts: the kernel and the system programs. We can view the UNIX operating system as being layered, as shown in Figure 15.Everything below the system-call interface and above the physical hardware is the kernel. The kernel provides the file system, CPU scheduling, memory management, and other operating system functions through system calls. System programs use the kernel-supported system calls to provide useful functions. System calls define the application programmer interface (API) to UNIX; the set of system programs commonly available defines the user interface. The programmer and user interface define the context that the kernel must support. 62

63 Figure2. 4.3BSD layer structure 1. Open source resources Linux is most wonderful open source activity: 2. Web pages Radhat has a lot of useful information about Linux operating system: 3. Citations <<Operating System Concepts>>and <<Applied Operating System Concepts>>, both come from: Abraham Silberschatz Peter Baer Galvin Greg Gagne, are good books on operating system principal. 7.2 xadl 2.0 example As we discussion previously, the Linux Operating system has the following structural figure: 63

64 To simplify our discussion here, the three major components of Linux: LinuxKernel, system libraries and system utilities, have the following xadl-type structural figure: 64

65 <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: User Utility Programs Description- - > <types:component instance:id = UserUtilityProgramsComp xsi:type = types:component > instance:description >System Utility</types:description> <types:interface instance:id = SsytemUtilityCompBottom xsi:type = instance:description >UserUtilityPrograms.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tuserutilityprograms /> </types:component> <!- - Component: System Shared Library Description- - > <types:component instance:id = SystemLibraryComp xsi:type = types:component > instance:description >SystemSharedLibrary</types:description> <types:interface instance:id = SystemLIbraryTop xsi:type = instance:description >SystemLibrary.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> 65

66 <types:interface instance:id = SystemLibraryBottom xsi:type = instance:description >SystemLibrary.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tsystemlibrary /> </types:component> <!- - Component: Linux Kernel Description- - > <types:component instance:id = LinuxKernelComp xsi:type = types:component > instance:description >LinuxKernel</types:description> <types:interface instance:id = LinuxKernelTop xsi:type = instance:description >LinuxKernel.Top</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = LinuxKernelBottom xsi:type = instance:description >LinuxKernel.Bottom</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tlinuxkernel /> </types:component> <!- - Component: Loadable Kernel Module Description- - > <types:component instance:id = LoadableKernelModuleComp xsi:type = types:component > instance:description >loadable module</types:description> <types:interface instance:id = LoadableKernelModuleTop xsi:type = instance:description >LoadableKernelModule.Top</types:description> 66

67 <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:type xlink:type = simple xlink:href = #tloadablekernelmodule /> </types:component> <!- - Connector: Con1(UserUtilityPrograms- SystemSharedLibrary) Description- - > <types:connector instance:id = con1 xsi:type = types:connector > instance:description >connector1</types:description> <types:interface instance:id = Con1Top xsi:type = instance:description >Con1.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con1Bottom xsi:type = instance:description >Con1.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tconnector1 /> </types:connector> <!- - Connector: Con2(LinuxKernel-SystemSharedLibrary) Description- - > <types:connector instance:id = con2 xsi:type = types:connector > instance:description >connector2</types:description> <types:interface instance:id = Con2Top xsi:type = instance:description >Con2.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> 67

68 <types:interface instance:id = Con2Bottom xsi:type = instance:description >Con2.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tconnector2 /> </types:connector> <!- - Connector: Con3(LinuxKernel- LoadableKernelModule) Description- - > <types:connector instance:id = con3 xsi:type = types:connector > instance:description >connector3</types:description> <types:interface instance:id = Con3Top xsi:type = instance:description >Con3.Top</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #ttoptype /> <types:interface instance:id = Con3Bottom xsi:type = instance:description >Con3.Bottom</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href= #tconnector3 /> </types:connector> <!- - Link: User Utility Programs Con1 Description- - > <types:link instance:id = link1 xsi:type = types:link > instance:description >System Utility-Con1</types:description> <instance:anchoroninterface xlink:href = #UserUtilityProgramsBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con1Top xsi:type = instance:xmllink xlink:type = 68

69 <!- - Link: SystemSharedLibrary Con1 Description- - > <types:link instance:id = link2 xsi:type = types:link > instance:description >SystemSharedLibrary-Con1</types:description> <instance:anchoroninterface xlink:href = #SystemLibraryTop xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con1Bottom xsi:type = instance:xmllink xlink:type = <!- - Link: SystemSharedLibrary Con2 Description- - > <types:link instance:id = link3 xsi:type = types:link > instance:description >SystemSharedLibrary-Con2</types:description> <instance:anchoroninterface xlink:href = #SystemLibraryBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con2Top xsi:type = instance:xmllink xlink:type = <!- - Link: LinuxKernel Con2 Description- - > <types:link instance:id = link4 xsi:type = types:link > instance:description >LinuxKernel- Con2</types:description> <instance:anchoroninterface xlink:href = #Con2Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LinuxKernelTop xsi:type = instance:xmllink xlink:type = <!- - Link: LinuxKernel Con3 Description- - > <types:link instance:id = link5 xsi:type = types:link > 69

70 instance:description >LinuxKernel- Con3</types:description> <instance:anchoroninterface xlink:href = #LinuxKernelBottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con3Top xsi:type = instance:xmllink xlink:type = <!- - Link: LoadableKernelModule Con3 Description- - > <types:link instance:id = link6 xsi:type = types:link > instance:description >LoadableKernelModule-Con3</types:description> <instance:anchoroninterface xlink:href = Con3Bottom xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LoadableKernelModuleTop xsi:type = instance:xmllink xlink:type = </types:archstructure> 7.3 Graphic of operating system 70

71 71

72 Chapter 8. System Programming 8.1 Description of system programming Every high-level programming language (except strictly interpretive languages) comes with a compiler. A compiler is a program that translates an executable program in one language into an executable program in another language: Abstract data flow view of compiler layer In another word, programming language and complier defined a virtual machine that specifies what statements of application program are acceptable. 72

73 Multistep processing of a user application program From the above figure, we can tell for a typical application program to execute on hardware platform will go through three main steps: compile time, load time and runtime. Compile time is the compiler/assembler working time, as mentioned before. To obtain better memory-space utilization, modern operating system use dynamic loading which means main program is loaded into memory and executed, when a routine needs to call another routine, the calling routine first checks to see if the callee routine has been loaded, if not, the loader is called to load desired routine into memory and then control is passed to newly loaded routine. 73

74 Take Java for specified example here: Java Virtual Machine (JVM) The JVM consists of a class loader and a Java interpreter that executes the architectureneutral bytecodes. The class loader loads.class files from both the Java program and the Java API for execution by the Java interpreter. The Java interpreter may be a software interpreter that interprets the bytecodes one at a time, or it may be a just-in-time (JIT) compiler that turns the architecture-neutral bytecodes into native machine language for the host computer. In other instances, the interpreter may be implemented in a hardware chip that executes Java bytecodes natively. 1. Open source resources GCC-a popular C compiler: 2. Web pages GCC online documents: 3. Citations <<The art of assembly language programming>> dedicated to x86 assembly language. 8.2 xadl 2.0 example Say we write an assembly language to implement the function: clear the screen, which is the very basic function that be called by upper level system: Coding Example: ; 74

75 ;this main program.code main proc far mov mov ds,as call clear mov ah,4ch int 21h main endp ; ;this subroutine clears the screen clear proc mov ax,0600h mov bh,07 mov cx,0000 mov dx,184fh int 10h ret clear endp ; We want to show the sub-archirecture structure here, so just focus on how to describe the component call clear : 75

76 <!- - Namespace declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <!- - Component: call clear Description- - > <types:component instance:id = CallClearComp xsi:type = types:component > instance:description >call clear</types:description> <types:interface instance:id = CallClearCompRight xsi:type = instance:description >CallClear.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = CallClearCompLeft xsi:type = instance:description >CallClear.Left</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tcallclear /> <! - - subarchitecture description - -> <types: subarchitecture> <types: archstructure> <! component: int10h description - -> <types:component instance:id = int10hcomp xsi:type = types:component > 76

77 instance:description >int 10h</types:description> <types:interface instance:id = int10hcompright xsi:type = instance:description >int10h.right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = int10hcompleft xsi:type = instance:description >int10h.left</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tint10h /> </types:component> <! component: ret description - -> <types:component instance:id = retcomp xsi:type = types:component > instance:description >ret</types:description> <types:interface instance:id = retcompright xsi:type = instance:description >ret.right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = retcompleft xsi:type = instance:description >ret.left</types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tret /> 77

78 </types:component> <!- - Connector: Con(int10h - ret) Description- - > <types:connector instance:id = Con xsi:type = types:connector > instance:description >Connector</types:description> <types:interface instance:id = ConLeft xsi:type = instance:description >Con.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = ConRight xsi:type = instance:description >Con.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #tcon /> </types:connector> <!- - Link: int10h con - ret Description- - > <types:link instance:id = link1 xsi:type = types:link > instance:description >int10h Con</types:description> <instance:anchoroninterface xlink:href = #ConLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #int10hright xsi:type = instance:xmllink xlink:type = <types:link instance:id = link2 xsi:type = types:link > instance:description >Con ret</types:description> <instance:anchoroninterface xlink:href = #retleft xsi:type = instance:xmllink xlink:type = 78

79 <instance:anchoroninterface xlink:href = #ConRight xsi:type = instance:xmllink xlink:type = </types: archstructure> <types: signatureinterfacemapping> <types: outersignature xsi:type= simple xlink:href = callclearleft /> <types: innerinterface xsi:type= simple xlink:href= int10hleft /> <types: outersignature xsi:type= simple xlink:href = callclearright /> <types: innerinterface xsi:type= simple xlink:href= retright /> </types: signatureinterfacemapping> </types:subarchitecture> </types:component> 8.3 Graphic of system programming 79

80 80

81 Chapter 9. Computer System 9.1 Description of computer system A modern, general-purpose computer system consists of a CPU and a number of device controllers that are connected through a common bus that provide access to shared memory. Each device controllers is in charge of a specific type of device, like disk drivers, audio devices, etc. PC Components A modern general-purpose computer system Like the above figure shows, the general architecture of a personal computer (PC) consists of system components connected to a PC bus: Case: - desktop, mini tower, mid case, mid tower, full tower, large tower; - include a power supply; CPU and CPU fan Motherboard Main memory Video display card Monitor I/O card Floppy CD-ROM Keyboard Hard drive 81

82 Sound Card Speakers Modem Tape/zip drive Mouse Network card Note: 1.In the IBM/AT and compatible computers, the standard bus configuration is Industry Standard Architecture (ISA) bus. ISA bus later evolved into Enhanced ISA (EISA) bus. ISA/EISA allows third party vendors to build devices that are compatible to the PC architecture. 2. Motherboard is the large printed circuit board that contains placeholders for the CPU and memory components, and the Basic Input/Output System (BIOS) software on a chip, the clock. In order to drive system costs, many other parts of a PC system are often included on the motherboard, for instance, disk/floppy controller, modem, and graphics card. 3.BIOS refers to the basic input/output system software that is loaded on a read-only memory (ROM). A BIOS chip contains device controllers, i.e., a software pieces that interface to specific devices. 1.Open source resources SpecC, which comes from UCI embedded system institute, is a descripting language and development tools for system design: 2. Web pages Microsoft web page has a lot of information on computer system design, for instance, So does Intel: : 3.Citations A excellent paper: <<Hints for Computer System Design>> 9.2 xadl 2.0 example To simplify our discussion here, we use the following system-level diagram: 82

83 83

84 We have components: CPU, Memory, MMU (Memory Management Unit), Disk and Disk Controller, Display Controller and Monitor and NIC (Network Interface Card); system bus is a connector. <! - - Namespace Declaration - -> <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <! - - Component: CPU Description - -> <types:component instance:id = CPUComp xsi:type = types:component > instance:description >CPU</types:description> <types:interface instance:id = CPUCompBottom xsi:type = instance:description > CPU.Bottom </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tbottomtype /> <types:type xlink:type = simple xlink:href = #tcpu /> <! - - subarchitecture description - -> <types: subarchitecture> <types: archstructure> <! component: RegisterFile description - -> <types:component instance:id = RegisterFileComp xsi:type = types:component > instance:description >int 10h</types:description> 84

85 <types:interface instance:id = RegisterFileCompRight xsi:type = instance:description >RegisterFile.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tregisterfile /> </types:component> <! Component: MMU description - -> <types:component instance:id = MMUComp xsi:type = types:component > instance:description >int 10h</types:description> <types:interface instance:id = MMUCompRight xsi:type = instance:description >MMU.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tmmu /> </types:component> <! Component: Cache description - -> <types:component instance:id = CacheComp xsi:type = types:component > instance:description >int 10h</types:description> <types:interface instance:id = CacheCompRight xsi:type = instance:description >Cache.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tcache /> </types:component> /> </types: archstructure> <types: signatureinterfacemapping> <types: outersignature xsi:type= simple xlink:href = CPURight /> <types: innerinterface xsi:type= simple xlink:href= RegisterFileRight 85

86 <types: outersignature xsi:type= simple xlink:href = CPURight /> <types: innerinterface xsi:type= simple xlink:href= MMURight /> <types: outersignature xsi:type= simple xlink:href = CPURight /> <types: innerinterface xsi:type= simple xlink:href= CacheRight /> </types: signatureinterfacemapping> </types:subarchitecture> </types:component> <! - - Component: LocalDisk Description - -> <types:component instance:id = LocalDiskComp xsi:type = types:component > instance:description >LocalDisk</types:description> <types:interface instance:id = LocalDiskCompRight xsi:type = instance:description > LocalDisk.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tlocaldisk /> </types:component> <! - - Component: Disk Controller Description - -> <types:component instance:id = DiskControllerComp xsi:type = types:component > instance:description >DiskController</types:description> <types:interface instance:id = DiskControllerCompLeft xsi:type = instance:description > DiskController.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = DIskControllerCompRight xsi:type = instance:description > DiskController.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tdiskcontroller /> </types:component> <! - - Component: NIC(Network Interface Card) Description - -> 86

87 <types:component instance:id = NICComp xsi:type = types:component > instance:description >NIC</types:description> <types:interface instance:id = NICCompLeft xsi:type = instance:description >NIC.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NICCompRight xsi:type = instance:description >NIC.Right </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tnic /> </types:component> <! - - Component: LAN(Local Area Network) Description - -> <types:component instance:id = LANComp xsi:type = types:component > instance:description >LAN</types:description> <types:interface instance:id = LANCompLeft xsi:type = instance:description >LAN.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tlan /> </types:component> <! - - Component: Router Description - -> <types:component instance:id = ROUTERComp xsi:type = types:component > instance:description >ROUTER</types:description> <types:interface instance:id = ROUTERCompLeft xsi:type = instance:description >ROUTER.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #trouter /> </types:component> <! - - Component: RemoteComputer Description - -> <types:component instance:id = RemoteComputerComp xsi:type = types:component > 87

88 instance:description >RemoteComputer</types:description> <types:interface instance:id = RemoteCpomputerCompLeft xsi:type = instance:description >RemoteComputer.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tremotecomputer /> </types:component> <! - - Component: HCI Device Description - -> <types:component instance:id = HCIDeviceComp xsi:type = types:component > instance:description >HCIDevice</types:description> <types:interface instance:id = HCIDeviceCompLeft xsi:type = instance:description >HCIDevice.Left </types:description> <types:direction xsi:type = instance:direction >inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #thcidevice /> </types:component> <! - - Connector: System Bus Description- - > <types:connector instance:id = SystemBusConn xsi:type = types:connector > instance:description>systembus</types:description> <types:interface instance:id = SystemBusLeft xsi:type = instance:description > SystemBus.Left</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href= #tsystembus /> </types:connector> <! - - Connector: RibbonConnector Description- - > <types:connector instance:id = RibbonConnectorConn xsi:type = types:connector > instance:description>ribbonconnector</types:description> 88

89 <types:interface instance:id = RibbonConnectorLeft xsi:type = instance:description > RibbonConnector.Left</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href= #tribbonconnector /> </types:connector> <! - - Connector: Ethernet/HubSwitcher Description- - > <types:connector instance:id = EthernetHubSwitcherConn xsi:type = types:connector > instance:description>ethernethubswitcher</types:description> <types:interface instance:id = EthernetHubSwitcherLeft xsi:type = instance:description > EthernetHubSwitcher.Left</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href= #tethernethubswitcher /> </types:connector> <! - - Connector: Internet Description- - > <types:connector instance:id = InternetConn xsi:type = types:connector > instance:description>internet</types:description> <types:interface instance:id = InternetLeft xsi:type = instance:description > Internet.Left</types:description> <types:direction xsi:type = instance:direction:>inout</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href= #tinternet /> </types:connector> <! - - Link: CPU-System Bus Description --> <types:link instance:id = link1 xsi:type = types:link > instance:description > CPU- SystemBus</types:description> <instance:anchoroninterface xlink:href = #CPURight xsi:type = instance:xmllink xlink:type = 89

90 <instance:anchoroninterface xlink:href = #SystemBusLeft xsi:type = instance:xmllink xlink:type = <! - - Link: Local Disk-RibbonConnector-Disk Controller Description --> <types:link instance:id = link5 xsi:type = types:link > instance:description > Local Disk- RibbonConnector</types:description> <instance:anchoroninterface xlink:href = #Local DiskLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Bus1Right xsi:type = instance:xmllink xlink:type = <types:link instance:id = link6 xsi:type = types:link > instance:description > Disk- RibbonConnector</types:description> <instance:anchoroninterface xlink:href = #DiskRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #RibbonConnectorLeft xsi:type = instance:xmllink xlink:type = <! - - Link: Disk Controller-System Bus Description --> <types:link instance:id = link7 xsi:type = types:link > instance:description > DiskController- SystemBus</types:description> <instance:anchoroninterface xlink:href = #DiskControlleLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #SystemBusRight xsi:type = instance:xmllink xlink:type = 90

91 <! - - Link: NIC-System Bus Description --> <types:link instance:id = link8 xsi:type = types:link > instance:description >NIC- SystemBus</types:description> <instance:anchoroninterface xlink:href = #NICLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #SystemBusRight xsi:type = instance:xmllink xlink:type = <! - - Link: NIC-EthernetHubSwitcher-LAN Description --> <types:link instance:id = link9 xsi:type = types:link > instance:description >NIC- EthernetHubSwitcher</types:description> <instance:anchoroninterface xlink:href = #EthernetHubSwitcherLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NICRight xsi:type = instance:xmllink xlink:type = <types:link instance:id = link10 xsi:type = types:link > instance:description >EthernetHubSwitcher- LAN</types:description> <instance:anchoroninterface xlink:href = #EhterentRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #LANLeft xsi:type = instance:xmllink xlink:type = <! - - Link: EthernetHubSwither-Router-Internet- RemoteComputer Description --> <types:link instance:id = link11 xsi:type = types:link > instance:description >EthernetHubSwitcher- Router</types:description> <instance:anchoroninterface xlink:href = #EthernetHubSwitcher xsi:type = instance:xmllink xlink:type = 91

92 <instance:anchoroninterface xlink:href = #RouterLeft xsi:type = instance:xmllink xlink:type = <types:link instance:id = link12 xsi:type = types:link > instance:description >Imternet- Router</types:description> <instance:anchoroninterface xlink:href = #Internet xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #RouterRight xsi:type = instance:xmllink xlink:type = <types:link instance:id = link13 xsi:type = types:link > instance:description >Internet- RemoteComputers</types:description> <instance:anchoroninterface xlink:href = #Internet xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #RemoteComputerLeft xsi:type = instance:xmllink xlink:type = <! - - Link: HCI Device-System Bus Description --> <types:link instance:id = link13 xsi:type = types:link > instance:description >HCI Device- SystemBus</types:description> <instance:anchoroninterface xlink:href = #HCIDeviceLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #SystemBusRight xsi:type = instance:xmllink xlink:type = </types:archstructure> 92

93 9.3 Graphic of computer system 93

94 Chapter 10. Instruction Set Architecture & Register Transfer Level 10.1 Description of instruction set architecture and register transfer level Instruction-set architecture is the attributes of a computing system as seen by the programmer, i.e. the conceptual structure and functional behavior, as distinct from the organization of the data flows and controls the logic design, and physical implementation. (Amdahl, Blaaw, and Brooks, 1964) In another word, ISA is a kind of contract: programmers use the ISA to model how program will execute; hardware implementations use the ISA as a formal definition of the correct way to execute program. At a glance, instruction function on machine state (stored at memory and register file) change machine from one state into another. Figure ISA at a glance The register-transfer level approach is characterized by: a digital system is viewed as divided into a data subsystem and a control subsystem; the state of the data subsystem consists of the contents of the registers; the function of the system is performed as a sequence of register transfers; a register transfer is a transformation performed on the datum while the datum is transferred from one register to another; the sequence of register transfers is controlled by the control subsystem. 94

95 Figure. Abstract view of RTL Note: The distinction between ISA level and RTL is blurred, so some researchers believe they all belong to computer architecture scope. 1.Open source resources 1).Icarus Verilog is a Verilog simulation and synthesis tool. It operates as a compiler, compiling source code writen in Verilog (IEEE-1364) into some target format. For batch simulation, the compiler can generate an intermediate form called vvp assembly. This intermediate form is executed by the ``vvp'' command. For synthesis, the compiler generates netlists in the desired format. 2). What is handhelds.org? -They are part of the Open Source Software movement, focused specifically on handheld and wearable computers. Their goal is to encourage and facilitate the creation of open software solutions for use on handheld computing platforms. 2.Web pages Refer to the following link, we have detail picture of RTL&ISA: 3.Citations Standard textbooks on this level are: <<Computer Organization & Design: The Hardware/Software Interface>> and <<Computer Architecture: A Quantitative Approach>> xadl 2.0 example Take a simplified datapath for ALU instruction: 95

96 And from xadl2.0 point of view, the above structure may look like: <! - - Namespace Declaration - - > <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <! - - Component: Instruction memory Description - -> 96

97 <types:component instance:id = InstructionMemoryComp xsi:type = types:component > instance:description >InstructionMemory</types:description> <types:interface instance:id = InstructionMemoryCompRight xsi:type = instance:description > InstructionMemory.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tinstructionmemory /> </types:component> <! - - Component: GPR Description - -> <types:component instance:id = GPRComp xsi:type = types:component > instance:description >GPR</types:description> <types:interface instance:id = GPRCompRight1 xsi:type = instance:description > GPR.Right1 </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = GPRCompRight2 xsi:type = instance:description > GPR.Right2 </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = GPRCompLeft1 xsi:type = instance:description > GPR.Left1 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = GPRCompLeft2 xsi:type = instance:description > GPR.Left2 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> 97

98 <types:type xlink:type = simple xlink:href = #tgpr /> </types:component> <! - - Component: ALU Description - -> <types:component instance:id = ALUComp xsi:type = types:component > instance:description >ALU</types:description> <types:interface instance:id = ALUCompRight xsi:type = instance:description > ALU.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = ALUCompLeft1 xsi:type = instance:description > ALU.Left1</types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = ALUCompLeft xsi:type = instance:description > ALU.Left2 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tmemory /> </types:component> <! - - Connector: Wire1 Description - -> <types:connector instance:id = wire1 xsi:type = types:connector > instance:description > wire on board</types:description> <types:interface instance:id = wire1left xsi:type = instance:description > wire.left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = wire1right xsi:type = instance:description > wire.right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> 98

99 <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Connector: Wire2 Description - -> <types:connector instance:id = wire2 xsi:type = types:connector > instance:description > wire on board</types:description> <types:interface instance:id = wire2left xsi:type = instance:description > wire.left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = wire2right xsi:type = instance:description > wire.right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Connector: Wire3 Description - -> <types:connector instance:id = wire3 xsi:type = types:connector > instance:description > wire on board</types:description> <types:interface instance:id = wire3left xsi:type = instance:description > wire.left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = wire3right xsi:type = instance:description > wire.right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Connector: Wire4 Description - -> <types:connector instance:id = wire4 xsi:type = types:connector > instance:description > wire on board</types:description> 99

100 <types:interface instance:id = wire4left xsi:type = instance:description > wire.left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = wire4right xsi:type = instance:description > wire.right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Link: InstructionMemory-GPR Description - -> <types:link instance:id = link1 xsi:type = types:link > instance:description >InstructionMemory- GPR</types:description> <instance:anchoroninterface xlink:href = #InstructionMemoryLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #wire1left xsi:type = instance:xmllink xlink:type = <! - - Link: InstructionMemory-GPR Description - -> <types:link instance:id = link2 xsi:type = types:link > instance:description >InstructionMemory- GPR</types:description> <instance:anchoroninterface xlink:href = #GPRLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #wire1right xsi:type = instance:xmllink xlink:type = <! - - Link: GPR-ALU Description -- > <types:link instance:id = link3 xsi:type = types:link > instance:description > GPR- ALU</types:description> 100

101 <instance:anchoroninterface xlink:href = #GPRRight1 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Wire2Left xsi:type = instance:xmllink xlink:type = <! - - Link: GPR-ALU Description - - > <types:link instance:id = link4 xsi:type = types:link > instance:description > GPR- ALU</types:description> <instance:anchoroninterface xlink:href = #ALULeft1 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Wire2Right xsi:type = instance:xmllink xlink:type = <! - - Link: GPR-ALU Description - -> <types:link instance:id = link5 xsi:type = types:link > instance:description > GPR- ALU</types:description> <instance:anchoroninterface xlink:href = #GPRRight2 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Wire3Left xsi:type = instance:xmllink xlink:type = <! - - Link: GPR-ALU Description - -> <types:link instance:id = link6 xsi:type = types:link > instance:description > GPR- ALU</types:description> <instance:anchoroninterface xlink:href = #Wire3Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ALULeft2 xsi:type = instance:xmllink xlink:type = 101

102 <! - - Link: GPR-ALU Description- -> <types:link instance:id = link7 xsi:type = types:link > instance:description > GPR- ALU</types:description> <instance:anchoroninterface xlink:href = #Wire4Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ALURight xsi:type = instance:xmllink xlink:type = <! - - Link:GPR-ALU Description - -> <types:link instance:id = link8 xsi:type = types:link > instance:description > GPR- ALU</types:description> <instance:anchoroninterface xlink:href = #Wire4Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GPRLeft2 xsi:type = instance:xmllink xlink:type = </types:archstructure> 102

103 10.3 Graphic of instruction set architecture and register transfer level 103

104 Chapter 11. Logic 11.1 Description of logic This describes a design by logic gates and the connections between them. For example: 2 to1 multiplexor is a kind of building module of RTL: Figure Overview of 2 to 1 Multiplexor Figure 1 means the 2 to 1 multiplexor operates as: when select= 0, out = in0; when select = 1, out = in1. Using Verilog HDL to describe this behavior as: module multiplexor2to1 (out,in0,in1,select); output out; input in0,in1,select; reg out; or in1 or select) case(select) 1 b0:out=in0; 1 b1:out=in1; default:$display( Please check select bit ); endcase endmodule At Logic-level, it can be implemented using gates: 104

105 Figure Using gate implements 2 to 1 Multiplexor And also can use Verilog HDL to describe the above implementation: module nand(out, in1, in2); output out; input in1, in2; assign out = ~(in1&in2); endmodule module not(out, in); output out; input in; assign out = ~ in; endmodule module multiplexor2to1 (out, in0, in1, select); output out; input in0,in1,select; not g1(select_bar, select); nand g2(out_g2, in0, select_bar); nand g3(out_g3, in1, select); nand g4(out,out_g2,out_g3); endmodule 1. Open source resources A free download and open source code logic developing tool: 2. Web pages A good course notes from Stanford EE275: 3.Citations <<Contemporary Logic Design>>by Randy H. Katz University of California 105

106 Benjamin Cummings/Addison Wesley Publishing Company xadl 2.0 example The following is our earlier example: From xadl2.0 point of view, the above structure may look like: <! - - Namespace Declaration - -> 106

107 <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <! - - Component: Inverter Description - -> <types:component instance:id = InverterComp xsi:type = types:component > instance:description >Inverter</types:description> <types:interface instance:id = InverterCompRight xsi:type = instance:description > Inverter.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = InverterCompLeft xsi:type = instance:description > Inverter.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tinverter /> </types:component> <! - - Component: NAND1 Description - -> <types:component instance:id = NAND1Comp xsi:type = types:component > instance:description >NAND1</types:description> <types:interface instance:id = NAND1CompLeft1 xsi:type = instance:description > NAND1.Right1 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND1CompLeft2 xsi:type = instance:description > NAND1.Left2 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> 107

108 <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND1CompRight xsi:type = instance:description > NAND1.Right</types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tgpr /> </types:component> <! - - Component: NAND2 Description - -> <types:component instance:id = NAND2Comp xsi:type = types:component > instance:description >NAND2</types:description> <types:interface instance:id = NAND2CompLeft1 xsi:type = instance:description > NAND2.Right1 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND2CompLeft2 xsi:type = instance:description > NAND2.Left2 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND2CompRight xsi:type = instance:description > NAND2.Right</types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tnand /> </types:component> <! - -Component: NAND3 Description - -> <types:component instance:id = NAND3Comp xsi:type = types:component > instance:description >NAND3</types:description> 108

109 <types:interface instance:id = NAND3CompLeft1 xsi:type = instance:description > NAND3.Right1 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND3CompLeft2 xsi:type = instance:description > NAND3.Left2 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = NAND3CompRight xsi:type = instance:description > NAND3.Right</types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tnand3 /> </types:component> <! - -Interface (Input Port): In0 Description - -> <types:interface instance:id = In0 xsi:type = instance:description > In0 </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tinputtype /> <! - -Interface (Input Port): In1 Description - -> <types:interface instance:id = In1 xsi:type = instance:description > In1</types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tinputtype /> <! - -Interface (Input Port): Select Description - -> <types:interface instance:id = Select xsi:type = instance:description > Select</types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tinputtype /> 109

110 <! - -Interface (Output Port): OUT Description - -> <types:interface instance:id = OUT xsi:type = instance:description > OUT</types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #toutputtype /> <!- - Connector: Con1(select-Inverter-NAND2) Description- - > <types:connector instance:id = Con1 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con1Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con1Right1 xsi:type = instance:description >Wire.Right1</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = Con1Right2 xsi:type = instance:description >Wire.Right2</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector: Con2(Inverter-NAND1) Description- - > <types:connector instance:id = Con2 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con2Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con2Right xsi:type = 110

111 instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector: Con3(NAND1-NAND3) Description- - > <types:connector instance:id = Con3 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con3Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con3Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector: Con4(NAND2-NAND3) Description- - > <types:connector instance:id = Con4 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con4Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con4Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> 111

112 <!- - Connector: Con5(In0-NAND1) Description- - > <types:connector instance:id = Con5 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con5Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con5Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector: Con6(In1-NAND2) Description- - > <types:connector instance:id = Con6 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con6Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con6Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector: Con7(OUT-NAND3) Description- - > <types:connector instance:id = Con7 xsi:type = types:connector > instance:description >Wire on board</types:description> <types:interface instance:id = Con7Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> 112

113 <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con7Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Link: Inverter-Con2-NAND1 Description - -> <types:link instance:id = link1 xsi:type = types:link > instance:description >Inverter- Con2</types:description> <instance:anchoroninterface xlink:href = #InverterLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con2Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link2 xsi:type = types:link > instance:description >Con2- NAND1</types:description> <instance:anchoroninterface xlink:href = #Con2Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NAND1Left2 xsi:type = instance:xmllink xlink:type = <! - - Link: Inverter-Con1-NAND2 Description - -> <types:link instance:id = link3 xsi:type = types:link > instance:description > Inverter- Con1</types:description> <instance:anchoroninterface xlink:href = #InverterRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #ConRight1 xsi:type = instance:xmllink xlink:type = 113

114 <types:link instance:id = link4 xsi:type = types:link > instance:description >NAND2- Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NAND2Left1 xsi:type = instance:xmllink xlink:type = <! - - Link: NAND1-Con3-NAND3 Description - -> <types:link instance:id = link5 xsi:type = types:link > instance:description > NAND1- Con3</types:description> <instance:anchoroninterface xlink:href = #NAND1Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con3Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link6 xsi:type = types:link > instance:description >Con3- NAND3</types:description> <instance:anchoroninterface xlink:href = #Con3Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NAND3Left1 xsi:type = instance:xmllink xlink:type = <! - - Link: NAND2-Con4-NAND3 Description - -> <types:link instance:id = link7 xsi:type = types:link > instance:description > NAND2- Con4</types:description> <instance:anchoroninterface xlink:href = #NAND2Right xsi:type = instance:xmllink xlink:type = 114

115 <instance:anchoroninterface xlink:href = #Con4Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link8 xsi:type = types:link > instance:description >Con4- NAND3</types:description> <instance:anchoroninterface xlink:href = #Con4Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NAND3Left2 xsi:type = instance:xmllink xlink:type = <! - - Link: In0-Con5-NAND1 Description - -> <types:link instance:id = link9 xsi:type = types:link > instance:description > In0- Con5</types:description> <instance:anchoroninterface xlink:href = #NAND1Left2 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con5Right xsi:type = instance:xmllink xlink:type = <types:link instance:id = link10 xsi:type = types:link > instance:description >Con5- NAND1</types:description> <instance:anchoroninterface xlink:href = #Con51Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #In0 xsi:type = instance:xmllink xlink:type = <! - - Link: In1-Con6-NAND2 Description - -> <types:link instance:id = link11 xsi:type = types:link > instance:description > In1- Con6</types:description> 115

116 <instance:anchoroninterface xlink:href = #NAND2Left2 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con6Right xsi:type = instance:xmllink xlink:type = <types:link instance:id = link12 xsi:type = types:link > instance:description > In1- Con6</types:description> <instance:anchoroninterface xlink:href = #Con6Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #In1 xsi:type = instance:xmllink xlink:type = <! - - Link: Select-Con1 Description - -> <types:link instance:id = link13 xsi:type = types:link > instance:description > Select- Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Select xsi:type = instance:xmllink xlink:type = <! - - Link: OUT-Con7-NAND3 Description - -> <types:link instance:id = link14 xsi:type = types:link > instance:description >OUT- Con7</types:description> <instance:anchoroninterface xlink:href = #NAND3Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con7Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link15 xsi:type = types:link > 116

117 instance:description >OUT- Con7</types:description> <instance:anchoroninterface xlink:href = #Con7Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #OUT xsi:type = instance:xmllink xlink:type = </types:archstructure> 117

118 11.3 Graphic of logic 118

119 Chapter 12. Circuit 12.1 Description of circuit This describes the physical connection of devices: transistors etc. Take an inverter for example, an inverter implements the logic function: out = in. Figure. Inverter symbol We can implemente an inverter using two MOS, one NMOS and one PMOS, as shown below: Figure An inverter implementation using complementary CMOS circuit 119

120 As we can see from the above figure, two MOS connect together according to the manner show by the figure. In the ideal case, when in = 1, the inverter would output out = 0 ; when in = 0, the inverter would have out = 1. That means we implement the logical function between in and out: out = in 1. Open source resources Staticfreesoft published a free design tool for circuit design, and open source code: 2. Web pages The following link to a book on CMOS circuit design: 3. Citations <<Digital Integrated Circuits-A design Perspective>> from UC Berkeley professor Jan M. Rabaey is one of standard books on CMOS logical circuit design xadl 2.0 example We have the following inverter example: 120

121 From xadl2.0 point of view, the above structure may look like: <! - - Namespace Declaration - -> <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > 121

122 <! - - Component: PMOS description - -> <types:component instance:id = PMOSComp xsi:type = types:component > instance:description >PMOS</types:description> <types:interface instance:id = PMOSCompRight xsi:type = instance:description > PMOS.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = PMOSCompLeft xsi:type = instance:description > PMOS.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tpmos /> </types:component> <! - - Component: NMOS Description - -> <types:component instance:id = NMOSComp xsi:type = types:component > instance:description >NMOS</types:description> <types:interface instance:id = PMOSCompRight xsi:type = instance:description > NMOS.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = NMOSCompLeft xsi:type = instance:description > NMOS.Left </types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:type xlink:type = simple xlink:href = #tnmos /> </types:component> <! - - Component (Power Supply): VDD Description - -> <types:component instance:id = VDDComp xsi:type = types:component > 122

123 instance:description >VDD</types:description> <types:interface instance:id = VDDCompRight xsi:type = instance:description > VDD.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tvdd /> </types:component> <! - - Component: Ground Description --> <types:component instance:id = GNDComp xsi:type = types:component > instance:description >GND</types:description> <types:interface instance:id = GNDCompRight xsi:type = instance:description > GND.Right </types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href = #tgnd /> </types:component> <! - - Interface (Input Port): In Description - - > <types:interface instance:id = In xsi:type = instance:description > In</types:description> <types:direction xsi:type = instance:direction >in</types:direction> <types:type xlink:type = simple xlink:href = #tinputtype /> <! - - Interface (Output Port): Out Description - - > <types:interface instance:id = Out xsi:type = instance:description >Out</types:description> <types:direction xsi:type = instance:direction >out</types:direction> <types:type xlink:type = simple xlink:href = #toutputtype /> <!- - Connector:Con1(In-PMOS-NMOS) Description- - > <types:connector instance:id = Con1 xsi:type = types:connector > 123

124 instance:description >Wire on integrated circuit</types:description> <types:interface instance:id = Con1Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con1Right1 xsi:type = instance:description >Wire.Right1</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = Con1Right2 xsi:type = instance:description >Wire.Right2</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector:Con2(PMOS-VDD) Description- - > <types:connector instance:id = Con2 xsi:type = types:connector > instance:description >Wire on integrated circuit</types:description> <types:interface instance:id = Con2Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con2Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector:Con3(PMOS-NMOS) Description- - > <types:connector instance:id = Con3 xsi:type = types:connector > instance:description >Wire on integrated circuit</types:description> 124

125 <types:interface instance:id = Con3Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con3Right1 xsi:type = instance:description >Wire.Right1</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:interface instance:id = Con3Right2 xsi:type = instance:description >Wire.Right2</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <!- - Connector:Con4(GND-NMOS) Description- - > <types:connector instance:id = Con4 xsi:type = types:connector > instance:description >Wire on integrated circuit</types:description> <types:interface instance:id = Con4Left xsi:type = instance:description >Wire.Left</types:description> <types:direction xsi:type = instance:direction:>in</types:direction> <types:type xlink:type = simple xlink:href = #tlefttype /> <types:interface instance:id = Con4Right xsi:type = instance:description >Wire.Right</types:description> <types:direction xsi:type = instance:direction:>out</types:direction> <types:type xlink:type = simple xlink:href = #trighttype /> <types:type xlink:type = simple xlink:href= #twire /> </types:connector> <! - - Link: PMOS-Con3-NMOS Description - - > <types:link instance:id = link1 xsi:type = types:link > instance:description >PMOS- Con3</types:description> 125

126 <instance:anchoroninterface xlink:href = #PMOSLeft xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con3Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link2 xsi:type = types:link > instance:description >Con3- NMOS</types:description> <instance:anchoroninterface xlink:href = #Con3Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NMOSLeft xsi:type = instance:xmllink xlink:type = <! - - Link: PMOS-Con1-NMOS Description - - > <types:link instance:id = link3 xsi:type = types:link > instance:description >PMOS- Con1</types:description> <instance:anchoroninterface xlink:href = #PMOSRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con1Right1 xsi:type = instance:xmllink xlink:type = <types:link instance:id = link4 xsi:type = types:link > instance:description >NMOS- Con1</types:description> <instance:anchoroninterface xlink:href = #Con1Right2 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #NMOSLeft xsi:type = instance:xmllink xlink:type = <! - - Link: PMOS-Con2-VDD Description - - > 126

127 <types:link instance:id = link5 xsi:type = types:link > instance:description >VDD- Con2</types:description> <instance:anchoroninterface xlink:href = #Con2Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #VDDRight xsi:type = instance:xmllink xlink:type = <types:link instance:id = link6 xsi:type = types:link > instance:description >Con2- PMOS</types:description> <instance:anchoroninterface xlink:href = #Con2Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #PMOSRight xsi:type = instance:xmllink xlink:type = <! - - Link: NMOS-Con4-GND Description - - > <types:link instance:id = link7 xsi:type = types:link > instance:description >NMOS- Con4</types:description> <instance:anchoroninterface xlink:href = #NMOSRight xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Con4Left xsi:type = instance:xmllink xlink:type = <types:link instance:id = link8 xsi:type = types:link > instance:description >Con4- GND</types:description> <instance:anchoroninterface xlink:href = #Con4Right xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #GNDLeft xsi:type = instance:xmllink xlink:type = 127

128 <! - - Link: Con1-In Description - - > <types:link instance:id = link9 xsi:type = types:link > instance:description >Con1- In</types:description> <instance:anchoroninterface xlink:href = #Con1Left xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #In xsi:type = instance:xmllink xlink:type = <! - - Link: Con3-Out Description - - > <types:link instance:id = link10 xsi:type = types:link > instance:description >Con3- Out</types:description> <instance:anchoroninterface xlink:href = #Con3Right2 xsi:type = instance:xmllink xlink:type = <instance:anchoroninterface xlink:href = #Out xsi:type = instance:xmllink xlink:type = </types:archstructure> 128

129 12.3 Graphic of circuit 129

130 Chapter 13. Physical Device 13.1 Description of physical device This describes the carriers (electron and hole) in the semiconductor material. Figure. Cross section of NMOS transistor A cross section of a typical n-channel MOS transistor (NMOS) is shown in Figure 23.Heavily doped n-type source and drain regions are implanted (or diffused) into a lightly doped p-type substrate. A thin layer of silicon dioxide (SiO2) is grown over the region between the source and drain and is covered by a conductive material, most often polycrystalline silicon (or polysilicon, for short). The conductive materials form the gate of the transistor. Neighboring device are insulated from each other with the aid of a thick layer of SiO2 (called the field oxide) and a reverse-biased np-diode, formed by adding an extra p+ region, called the channel-stop implant (or field implant). 130

131 Figure NMOS transistor with bias voltage To show the switching feature of MOS transistor, take NMOS for example. As shown in Figure 24,assume now that a positive voltage is applied to the gate (with respect to the source).the gate and substrate form the plates of a capacitor with the gate oxide as the dielectric. The positive gate voltage causes positive charge to accumulate on the gate electrode and negative charge on the substrate side. Hence, a depletion region is formed below the gate. As the gate voltage increases, the potential at the surface at some point reaches a critical value, where the semiconductor surface inverts to n-type material that is known strong inversion phenomenon. Further increases in the gate voltage result in additional electrons in the thin inversion layer directly under the oxide. These are drawn from the heavily doped n+ source region. Hence, a continue n-type channel is formed between the source and drain region. 1. Open source resources PISCES: Advanced 1D and 2D Device Simulation for Silicon 2. Web pages IBM publish its research on physical device: 3. Citations 131

132 <<Compound Semiconductor >>magazine is a good reference of current development of semiconductor device xadl 2.0 example Take the following conducting NMOS for example, AS the above conducting NMOS example, we could say there are three components: Gate, Source and Drain, n-channel function as connector of Source and Drain. So, we may have the following simplified xadl-like figure: 132

133 <! - - Namespace Declaration - -> <?xml version = 1.0 encoding = UTF-8?> <xarch xmlns = xmlns:instance = xmlns:types = xmlns:xlink = xmlns:xsi = > <types:archstructure xsi:type = types:archstructure > <! - - Component: Gate Description - -> <types:component instance:id = GateComp xsi:type = types:component > instance:description >Gate</types:description> <types:interface instance:id = GateCompLeft xsi:type = 133

Visualizing Software Architectures

Visualizing Software Architectures Visualizing Software Architectures Software Architecture Lecture 11 Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Objectives Concepts What is visualization? Differences

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first. As per the today s scenario, companies not only desire to test software adequately, but they also want to get the work done as quickly and thoroughly as possible. To accomplish this goal, organizations

More information

OS structure. Process management. Major OS components. CSE 451: Operating Systems Spring Module 3 Operating System Components and Structure

OS structure. Process management. Major OS components. CSE 451: Operating Systems Spring Module 3 Operating System Components and Structure CSE 451: Operating Systems Spring 2012 Module 3 Operating System Components and Structure Ed Lazowska lazowska@cs.washington.edu Allen Center 570 The OS sits between application programs and the it mediates

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Software. Networked multimedia. Buffering of media streams. Causes of multimedia. Browser based architecture. Programming

Software. Networked multimedia. Buffering of media streams. Causes of multimedia. Browser based architecture. Programming 1 Software Networked multimedia Introduction Browser based software architecture Distributed software Servers Network Terminals User interface Middleware Communications Network multimedia can be defined

More information

Introduction to XML. Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University

Introduction to XML. Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University Introduction to XML Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University http://gear.kku.ac.th/~krunapon/xmlws 1 Topics p What is XML? p Why XML? p Where does XML

More information

Introduction to XML 3/14/12. Introduction to XML

Introduction to XML 3/14/12. Introduction to XML Introduction to XML Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University http://gear.kku.ac.th/~krunapon/xmlws 1 Topics p What is XML? p Why XML? p Where does XML

More information

Distributed Objects. Object-Oriented Application Development

Distributed Objects. Object-Oriented Application Development Distributed s -Oriented Application Development Procedural (non-object oriented) development Data: variables Behavior: procedures, subroutines, functions Languages: C, COBOL, Pascal Structured Programming

More information

Chapter 2. Operating-System Structures

Chapter 2. Operating-System Structures Chapter 2 Operating-System Structures 2.1 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

Chapter 1. Preview. Reason for Studying OPL. Language Evaluation Criteria. Programming Domains

Chapter 1. Preview. Reason for Studying OPL. Language Evaluation Criteria. Programming Domains Chapter 1. Preview Reason for Studying OPL Reason for Studying OPL? Programming Domains Language Evaluation Criteria Language Categories Language Design Trade-Offs Implementation Methods Programming Environments

More information

Chapter 1 Preliminaries

Chapter 1 Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Web Application Performance Testing with MERCURY LOADRUNNER

Web Application Performance Testing with MERCURY LOADRUNNER Web Application Performance Testing with MERCURY LOADRUNNER Course Overview (17 lessons) Introduction...2 1. Introduction...2 Web Application Development - overview and terminology...3 2. Two tiers configuration...3

More information

CPS221 Lecture: Operating System Functions

CPS221 Lecture: Operating System Functions CPS221 Lecture: Operating System Functions Objectives 1. To overview key hardware concepts 2. To introduce the process concept 3. To discuss the various kinds of functionality of the OS last revised 8/25/11

More information

Outline. S: past, present and future Some thoughts. The 80s. Interfaces - 60s & 70s. Duncan Temple Lang Department of Statistics UC Davis

Outline. S: past, present and future Some thoughts. The 80s. Interfaces - 60s & 70s. Duncan Temple Lang Department of Statistics UC Davis S: past, present and future Some thoughts Duncan Temple Lang Department of Statistics UC Davis Outline Good idea that was either taken up or missed. Interfaces Thoughts on how S evolved and what implications

More information

Introduction to Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Introduction to Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University Introduction to Operating Systems Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Why OS? 2 What is an OS? Software that converts hardware into

More information

What is UNIX? A Little Bit about UNIX and User Interfaces. Adapted from Practical Unix and Programming Hunter College

What is UNIX? A Little Bit about UNIX and User Interfaces. Adapted from Practical Unix and Programming Hunter College What is UNIX? A Little Bit about UNIX and User Interfaces Adapted from Practical Unix and Programming Hunter College Copyright 2006 Stewart Weiss What is UNIX? It is a multi-user, multi-tasking operating

More information

Introduction to Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Introduction to Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University Introduction to Operating Systems Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Today s Topics What is OS? History of OS 2 What is OS? (1) Application

More information

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? What is a programming language?...there is no agreement on what a programming language

More information

CPS221 Lecture: Operating System Functions

CPS221 Lecture: Operating System Functions CPS221 Lecture: Operating System Functions Objectives last revised 6/23/10 1. To overview key hardware concepts 2. To iintroduce the process concept 3. To discuss the various kinds of functionality of

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Operating Systems. Operating System Structure. Lecture 2 Michael O Boyle

Operating Systems. Operating System Structure. Lecture 2 Michael O Boyle Operating Systems Operating System Structure Lecture 2 Michael O Boyle 1 Overview Architecture impact User operating interaction User vs kernel Syscall Operating System structure Layers Examples 2 Lower-level

More information

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar Scripted Components: Problem Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar (Cf. Reuse-Oriented Development; Sommerville 2004 Chapter 4, 18) A longstanding

More information

Scripted Components Dr. James A. Bednar

Scripted Components Dr. James A. Bednar Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar SAPM Spring 2012: Scripted Components 1 Scripted Components: Problem (Cf. Reuse-Oriented Development;

More information

Chapter 2 Operating-System Structures

Chapter 2 Operating-System Structures This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

A computer is an electronic device, operating under the control of instructions stored in its own memory unit.

A computer is an electronic device, operating under the control of instructions stored in its own memory unit. Computers I 1. Operating Systems In order to grasp the concept of Operating Systems and understand the different types of windows available we first need to cover some basic definitions. 1.1 Computer Concepts

More information

Operating Systems (ECS 150) Spring 2011

Operating Systems (ECS 150) Spring 2011 Operating Systems (ECS 150) Spring 2011 Raju Pandey Department of Computer Science University of California, Davis CA 95616 pandey@cs.ucdavis.edu http://www.cs.ucdavis.edu/~pandey Course Objectives After

More information

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on Chapter 2: Operating-System Structures Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Chapter 2: Operating-System Structures 1. Operating System Services 2. User Operating System

More information

GUI framework communication via the WWW

GUI framework communication via the WWW GUI framework communication via the WWW Thomas Tilley, School of Information Technology, Griffith University, Australia 4215, T.Tilley@gu.edu.au Peter Eklund, School of Information Technology, Griffith

More information

SISTEM OPERASI PELAYAN (SERVER) SKS 3104 SISTEM OPERASI RANGKAIAN SIJIL SISTEM KOMPUTER & SOKONGAN KOLEJ KOMUNITI PAYA BESAR

SISTEM OPERASI PELAYAN (SERVER) SKS 3104 SISTEM OPERASI RANGKAIAN SIJIL SISTEM KOMPUTER & SOKONGAN KOLEJ KOMUNITI PAYA BESAR SISTEM OPERASI PELAYAN (SERVER) SKS 3104 SISTEM OPERASI RANGKAIAN SIJIL SISTEM KOMPUTER & SOKONGAN KOLEJ KOMUNITI PAYA BESAR It is important to know the basics about popular NOS families. Many networks

More information

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed. CHAPTER 2: SYSTEM STRUCTURES By I-Chen Lin Textbook: Operating System Concepts 9th Ed. Chapter 2: System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen Computer Programming Computers can t do anything without being told what to do. To make the computer do something useful, you must give it instructions. You can give a computer instructions in two ways:

More information

<Insert Picture Here> JavaFX Overview April 2010

<Insert Picture Here> JavaFX Overview April 2010 JavaFX Overview April 2010 Sébastien Stormacq Sun Microsystems, Northern Europe The following is intended to outline our general product direction. It is intended for information

More information

THE IMPACT OF E-COMMERCE ON DEVELOPING A COURSE IN OPERATING SYSTEMS: AN INTERPRETIVE STUDY

THE IMPACT OF E-COMMERCE ON DEVELOPING A COURSE IN OPERATING SYSTEMS: AN INTERPRETIVE STUDY THE IMPACT OF E-COMMERCE ON DEVELOPING A COURSE IN OPERATING SYSTEMS: AN INTERPRETIVE STUDY Reggie Davidrajuh, Stavanger University College, Norway, reggie.davidrajuh@tn.his.no ABSTRACT This paper presents

More information

Operating-System Structures

Operating-System Structures Recap Chapter 2: Operating-System Structures Presented By: Dr. El-Sayed M. El-Alfy Note: Most of the slides are compiled from the textbook and its complementary resources From: OS by Tanenbaum, 2008 March

More information

Operating Systems CS3502 Spring 2018

Operating Systems CS3502 Spring 2018 Operating Systems CS3502 Spring 2018 Presented by Dr. Guoliang Liu Department of Computer Science College of Computing and Software Engineering Kennesaw State University Computer Systems See Appendix G

More information

Distributed Middleware. Distributed Objects

Distributed Middleware. Distributed Objects Distributed Middleware Distributed objects DCOM CORBA EJBs Jini Lecture 25, page 1 Distributed Objects Figure 10-1. Common organization of a remote object with client-side proxy. Lecture 25, page 2 Distributed

More information

Chapter 11 Program Development and Programming Languages

Chapter 11 Program Development and Programming Languages Chapter 11 Program Development and Programming Languages permitted in a license distributed with a certain product or service or otherwise on a password-protected website for classroom use. Programming

More information

PDF LEARNING REGULAR EXPRESSIONS IN JAVA ARCHIVE

PDF LEARNING REGULAR EXPRESSIONS IN JAVA ARCHIVE 25 February, 2018 PDF LEARNING REGULAR EXPRESSIONS IN JAVA ARCHIVE Document Filetype: PDF 378.92 KB 0 PDF LEARNING REGULAR EXPRESSIONS IN JAVA ARCHIVE Understanding the Core Constructs of Java Regular

More information

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion

More information

Component models. Page 1

Component models. Page 1 Component Models and Technology Component-based Software Engineering Ivica Crnkovic ivica.crnkovic@mdh.se Page 1 Overview Introduction ACME Architectural Description Language Java Bean Component Model

More information

Functional Programming Language Haskell

Functional Programming Language Haskell Functional Programming Language Haskell Mohammed Aslam CIS 24 Prof. Kopec Presentation: 03 Date: 05/05/2003 Haskell is a general purpose, purely functional programming language named after the logician

More information

1. Introduction to Operating Systems

1. Introduction to Operating Systems Principles of Operating Systems CS 446/646 1. Introduction to Operating Systems René Doursat Department of Computer Science & Engineering University of Nevada, Reno Fall 2005 Principles of Operating Systems

More information

Introduction to Operating Systems

Introduction to Operating Systems Introduction to Operating Systems Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu EEE3052: Introduction to Operating Systems, Fall 2017, Jinkyu Jeong

More information

stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October research topics in human-computer interaction

stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October research topics in human-computer interaction stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October 2004 research topics in human-computer interaction http://cs376.stanford.edu cs547 tomorrow: Scott Snibbe Body, Space, and Cinema 2

More information

Software Development. Integrated Software Environment

Software Development. Integrated Software Environment Software Development Integrated Software Environment Source Code vs. Machine Code What is source code? Source code and object code refer to the "before" and "after" versions of a computer program that

More information

CSE 544 Data Models. Lecture #3. CSE544 - Spring,

CSE 544 Data Models. Lecture #3. CSE544 - Spring, CSE 544 Data Models Lecture #3 1 Announcements Project Form groups by Friday Start thinking about a topic (see new additions to the topic list) Next paper review: due on Monday Homework 1: due the following

More information

Computer Software A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and

Computer Software A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and Computer Software A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and Applications software. Systems software provides infrastructure

More information

CPSC 341 OS & Networks. Introduction. Dr. Yingwu Zhu

CPSC 341 OS & Networks. Introduction. Dr. Yingwu Zhu CPSC 341 OS & Networks Introduction Dr. Yingwu Zhu What to learn? Concepts Processes, threads, multi-processing, multithreading, synchronization, deadlocks, CPU scheduling, networks, security Practice:

More information

Visualizing Software Architectures, Part 2

Visualizing Software Architectures, Part 2 Visualizing Software Architectures, Part 2 Lecture 12 Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Objectives Concepts What is visualization? Differences between

More information

Perl Validate Xml Against Schema Visual Studio

Perl Validate Xml Against Schema Visual Studio Perl Validate Xml Against Schema Visual Studio Before the file is processed, it is validated against schema. So, my question is, Merging XML files using external entities in Visual Studio 2008 1 How do

More information

Software. Software. Software. Program Language. Programs written for the ENIAC

Software. Software. Software. Program Language. Programs written for the ENIAC 1 Purpose - In order for the CPU to control the physical states of the digital circuitry, it must receive signals from a computer program and convert these signals into action (switching circuits on and

More information

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition Chapter 2: Operating-System Structures Silberschatz, Galvin and Gagne 2013 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

CS Computer Architecture

CS Computer Architecture CS 35101 Computer Architecture Section 600 Dr. Angela Guercio Fall 2010 Structured Computer Organization A computer s native language, machine language, is difficult for human s to use to program the computer

More information

<Insert Picture Here> JavaFX 2.0

<Insert Picture Here> JavaFX 2.0 1 JavaFX 2.0 Dr. Stefan Schneider Chief Technologist ISV Engineering The following is intended to outline our general product direction. It is intended for information purposes only,

More information

Lecture Topics. Announcements. Today: Operating System Overview (Stallings, chapter , ) Next: Processes (Stallings, chapter

Lecture Topics. Announcements. Today: Operating System Overview (Stallings, chapter , ) Next: Processes (Stallings, chapter Lecture Topics Today: Operating System Overview (Stallings, chapter 2.1-2.4, 2.8-2.10) Next: Processes (Stallings, chapter 3.1-3.6) 1 Announcements Consulting hours posted Self-Study Exercise #3 posted

More information

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan. Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan Reading List Remote Object Invocation -- Tanenbaum Chapter 2.3 CORBA

More information

Architectural Styles I

Architectural Styles I Architectural Styles I Software Architecture VO/KU (707023/707024) Roman Kern KTI, TU Graz 2015-01-07 Roman Kern (KTI, TU Graz) Architectural Styles I 2015-01-07 1 / 86 Outline 1 Non-Functional Concepts

More information

Web-interface for Monte-Carlo event generators

Web-interface for Monte-Carlo event generators Web-interface for Monte-Carlo event generators Jonathan Blender Applied and Engineering Physics, Cornell University, Under Professor K. Matchev and Doctoral Candidate R.C. Group Sponsored by the University

More information

OPERATING SYSTEMS. Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne

OPERATING SYSTEMS. Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OVERVIEW An operating system is a program that manages the

More information

An Introduction to Computers and Java CSC 121 Spring 2015 Howard Rosenthal

An Introduction to Computers and Java CSC 121 Spring 2015 Howard Rosenthal An Introduction to Computers and Java CSC 121 Spring 2015 Howard Rosenthal Lesson Goals Learn the basic terminology of a computer system Understand the basics of high level languages, including java Understand

More information

CHAPTER 1 Introduction to Computers and Java

CHAPTER 1 Introduction to Computers and Java CHAPTER 1 Introduction to Computers and Java Copyright 2016 Pearson Education, Inc., Hoboken NJ Chapter Topics Chapter 1 discusses the following main topics: Why Program? Computer Systems: Hardware and

More information

Phire 12.2 Hardware and Software Requirements

Phire 12.2 Hardware and Software Requirements Phire 12.2 Hardware and Software Requirements Copyright 2017, Phire. All rights reserved. The Programs (which include both the software and documentation) contain proprietary information; they are provided

More information

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming 30 th September 2018 Objective: To learn meaning and concepts of programming Outcome: By the end of this students should be able to describe the meaning of programming Section 1: What is a programming

More information

The Umbilical Cord And Alphabet Soup

The Umbilical Cord And Alphabet Soup 2.771J BEH.453J HST.958J Spring 2005 Lecture 24 February 2005 The Umbilical Cord And Alphabet Soup THE UMBILICAL CORD AND ALPHABET SOUP Java contributions Interpreted language Remote code without security

More information

CS 550 Operating Systems Spring Operating Systems Overview

CS 550 Operating Systems Spring Operating Systems Overview 1 CS 550 Operating Systems Spring 2018 Operating Systems Overview 2 What is an OS? Applications OS Hardware A software layer between the hardware and the application programs/users which provides a virtualization

More information

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview Today CSCI 4061 Introduction to s Instructor: Abhishek Chandra OS Evolution Unix Overview Unix Structure Shells and Utilities Calls and APIs 2 Evolution How did the OS evolve? Generation 1: Mono-programming

More information

Part III: Survey of Internet technologies

Part III: Survey of Internet technologies Part III: Survey of Internet technologies Content (e.g., HTML) kinds of objects we re moving around? References (e.g, URLs) how to talk about something not in hand? Protocols (e.g., HTTP) how do things

More information

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Ninat Wanapan and Somnuk Keretho Department of Computer Engineering, Kasetsart

More information

P-NET Management with Java based Components

P-NET Management with Java based Components P-NET Management with based Components Martin Wollschlaeger Abstract The introduction of based software components is a challenge for developers and users of fieldbus products. The paper shows concepts,

More information

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Topic I Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 1 of Programming languages: Design and implementation (3RD EDITION)

More information

PostgreSQL and REST API s The Easy Way

PostgreSQL and REST API s The Easy Way Migration and Developer Productivity Solutions PostgreSQL and REST API s The Easy Way Charles Finley, Transformix Computer Corporation http://modernization.xformix.com/resources/articles/ 1 PostgresOpen

More information

Design of Generic Web Based Automation Framework for Network Testing

Design of Generic Web Based Automation Framework for Network Testing Design of Generic Web Based Automation Framework for Network Testing S. Balamurugan Assistant Professor, Department of Information Technology, Perunthalaivar Kamarajar Institute of Engineering and Technology,

More information

Internet. Class-In charge: S.Sasirekha

Internet. Class-In charge: S.Sasirekha Internet Class-In charge: S.Sasirekha COMPUTER NETWORK A computer network is a collection of two or more computers, which are connected together to share information and resources. Network Operating Systems

More information

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Software Paradigms (Lesson 10) Selected Topics in Software Architecture Software Paradigms (Lesson 10) Selected Topics in Software Architecture Table of Contents 1 World-Wide-Web... 2 1.1 Basic Architectural Solution... 2 1.2 Designing WWW Applications... 7 2 CORBA... 11 2.1

More information

UC Irvine UC Irvine Previously Published Works

UC Irvine UC Irvine Previously Published Works UC Irvine UC Irvine Previously Published Works Title Differencing and merging within an evolving product line architecture Permalink https://escholarship.org/uc/item/0k73r951 Authors Chen, Ping H Critchlow,

More information

INTRODUCTION TO OPERATING SYSTEMS. Jo, Heeseung

INTRODUCTION TO OPERATING SYSTEMS. Jo, Heeseung INTRODUCTION TO OPERATING SYSTEMS Jo, Heeseung TODAY'S TOPICS What is OS? History of OS 2 OPERATING SYSTEM? Computer systems internals 3 WHY DO WE LEARN OS? To graduate? To make a better OS or system Functionality

More information

CS 390 Chapter 2 Homework Solutions

CS 390 Chapter 2 Homework Solutions CS 390 Chapter 2 Homework Solutions 2.1 What is the purpose of... System calls are used by user-level programs to request a service from the operating system. 2.5 What is the purpose of... The purpose

More information

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application BACKBONE.JS Sencha Touch CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application A RapidValue Solutions Whitepaper Author: Pooja Prasad, Technical Lead, RapidValue Solutions Contents Executive

More information

Read & Download (PDF Kindle) The Art Of UNIX Programming

Read & Download (PDF Kindle) The Art Of UNIX Programming Read & Download (PDF Kindle) The Art Of UNIX Programming The Art of UNIX Programming poses the belief that understanding the unwritten UNIX engineering tradition and mastering its design patterns will

More information

C H A P T E R 1. Introduction to Computers and Programming

C H A P T E R 1. Introduction to Computers and Programming C H A P T E R 1 Introduction to Computers and Programming Topics Introduction Hardware and Software How Computers Store Data How a Program Works Using Python Computer Uses What do students use computers

More information

31268_WEB SYSTEMS LECTURE 1. Operating Systems Part 1

31268_WEB SYSTEMS LECTURE 1. Operating Systems Part 1 31268_WEB SYSTEMS LECTURE 1 Operating Systems Part 1 What is an operating system? - A piece of software that sits between all programs and the computer s hardware - Manages computer - Runs programs - Interface

More information

CHAPTER 3 - PROCESS CONCEPT

CHAPTER 3 - PROCESS CONCEPT CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess

More information

Foundation to Computer Systems Design. Indian Institute of Technology Madras. Professor V. Kamakoti. Department of Computer science and Engineering

Foundation to Computer Systems Design. Indian Institute of Technology Madras. Professor V. Kamakoti. Department of Computer science and Engineering Foundation to Computer Systems Design Indian Institute of Technology Madras Professor V. Kamakoti Department of Computer science and Engineering Module 1.1 Introduction to the course. So welcome to this

More information

How Much Middle-Tier Do You Need? *

How Much Middle-Tier Do You Need? * How Much Middle-Tier Do You Need? * Uwe Roth roth@ti.fhg.de Kais Louizi louizi@ti.fhg.de Ernst-Georg Haffner haffner@ti.fhg.de Christoph Meinel meinel@ti.fhg.de Introduction Abstract: Middle-tier-technologies

More information

Integrating esystems: Technology, Strategy, and Organizational Factors

Integrating esystems: Technology, Strategy, and Organizational Factors MASSACHUSETTS INSTITUTE OF TECHNOLOGY SLOAN SCHOOL OF MANAGEMENT 15.565 Integrating esystems: Technology, Strategy, and Organizational Factors 15.578 Global Information Systems: Communications & Connectivity

More information

Introduction to Operating Systems. Jo, Heeseung

Introduction to Operating Systems. Jo, Heeseung Introduction to Operating Systems Jo, Heeseung Today's Topics What is OS? History of OS 2 Operating System? Computer systems internals 3 Why do we learn OS? To graduate? To make a better OS or system Functionality

More information

Quick Parser Development Using Modified Compilers and Generated Syntax Rules

Quick Parser Development Using Modified Compilers and Generated Syntax Rules Quick Parser Development Using Modified Compilers and Generated Syntax Rules KAZUAKI MAEDA Department of Business Administration and Information Science, Chubu University 1200 Matsumoto, Kasugai, Aichi,

More information

Beginning JavaScript (Programmer To Programmer) By Paul Wilton

Beginning JavaScript (Programmer To Programmer) By Paul Wilton Beginning JavaScript (Programmer To Programmer) By Paul Wilton Beginning JavaScript, 4th Edition (0470525932) cover image process while new examples provide you with updated JavaScript programming techniques.

More information

OpenOffice.org & ODF Accessibility

OpenOffice.org & ODF Accessibility OpenOffice.org Conference 2006 2006-09-13, Lyon, France OpenOffice.org & ODF Accessibility Malte Timmermann Technical Architect StarOffice/OpenOffice.org Sun Microsystems 1 About the Speaker Technical

More information

Mid Term Papers. Fall 2009 (Session 03) CS101. (Group is not responsible for any solved content)

Mid Term Papers. Fall 2009 (Session 03) CS101. (Group is not responsible for any solved content) Fall 2009 (Session 03) CS101 (Group is not responsible for any solved content) Subscribe to VU SMS Alert Service To Join Simply send following detail to bilal.zaheem@gmail.com Full Name Master Program

More information

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview Today CSCI 4061 Introduction to s Instructor: Abhishek Chandra OS Evolution Unix Overview Unix Structure Shells and Utilities Calls and APIs 2 Evolution How did the OS evolve? Dependent on hardware and

More information

Concepts in Programming Languages

Concepts in Programming Languages Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture

More information

Lecture (02, 03) Networking Model (TCP/IP) Networking Standard (OSI)

Lecture (02, 03) Networking Model (TCP/IP) Networking Standard (OSI) Lecture (02, 03) Networking Model (TCP/IP) Networking Standard (OSI) By: Dr. Ahmed ElShafee ١ Dr. Ahmed ElShafee, ACU : Fall 2014, Computer Networks II Agenda Introduction to networking architecture Historical

More information

Scripting Languages Course 1. Diana Trandabăț

Scripting Languages Course 1. Diana Trandabăț Scripting Languages Course 1 Diana Trandabăț Master in Computational Linguistics - 1 st year 2017-2018 Today s lecture Introduction to scripting languages What is a script? What is a scripting language

More information

AMSC/CMSC 662 Computer Organization and Programming for Scientific Computing Fall 2011 Operating Systems Dianne P. O Leary c 2011

AMSC/CMSC 662 Computer Organization and Programming for Scientific Computing Fall 2011 Operating Systems Dianne P. O Leary c 2011 AMSC/CMSC 662 Computer Organization and Programming for Scientific Computing Fall 2011 Operating Systems Dianne P. O Leary c 2011 1 Operating Systems Notes taken from How Operating Systems Work by Curt

More information

Lecture 2 Operating System Structures (chapter 2)

Lecture 2 Operating System Structures (chapter 2) Bilkent University Department of Computer Engineering CS342 Operating Systems Lecture 2 Operating System Structures (chapter 2) Dr. İbrahim Körpeoğlu http://www.cs.bilkent.edu.tr/~korpe 1 References The

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

Java Internals. Frank Yellin Tim Lindholm JavaSoft

Java Internals. Frank Yellin Tim Lindholm JavaSoft Java Internals Frank Yellin Tim Lindholm JavaSoft About This Talk The JavaSoft implementation of the Java Virtual Machine (JDK 1.0.2) Some companies have tweaked our implementation Alternative implementations

More information