Operating System

 

Component: At OS structural level, components are Linux Kernel, System Shared Library, and system utilities, etc.

Connector: Function call, such as system call, acts as connectors between these components.

Interface:

 Link:

Example: As we discussion previously, the Linux Operating system has the following structural figure:

 

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

 

 

 

 

<!- - Namespace declaration - - >

<?xml version = “1.0”  encoding = “UTF-8” ?>

<xArch  xmlns = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:instance = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:types = “http://www.ics.uci.edu/pub/arch/xArch/types.xsd”

xmlns:xlink = “http://www.w3.org/1999/xlink”

xmlns:xsi = “http://www.w3.org/2000/10/XMLSchema-instance”>

 

<types:archStructure xsi:type = “types:ArchStructure”>

 

      <!- - Component: User Utility Programs Description- - >

      <types:component instance:id = “UserUtilityProgramsComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>System Utility</types:description>

                  <types:interface instance:id = “SsytemUtilityCompBottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tUserUtilityPrograms” />

      </types:component>

 

<!- - Component: System Shared Library Description- - >

      <types:component instance:id = “SystemLibraryComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>SystemSharedLibrary</types:description>

                  <types:interface instance:id = “SystemLIbraryTop” xsi:type = “types:Interface”>

                  <types:description 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”/>

                  </types:interface>

                  <types:interface instance:id = “SystemLibraryBottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tSystemLibrary” />

      </types:component>

 

<!- - Component: Linux Kernel Description- - >

      <types:component instance:id = “LinuxKernelComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>LinuxKernel</types:description>

                  <types:interface instance:id = “LinuxKernelTop” xsi:type = “types:Interface”>

                  <types:description 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>

<types:interface instance:id = “LinuxKernelBottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tLinuxKernel” />

      </types:component>

 

<!- - Component: Loadable Kernel Module Description- - >

      <types:component instance:id = “LoadableKernelModuleComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>loadable module</types:description>

                  <types:interface instance:id = “LoadableKernelModuleTop” xsi:type = “types:Interface”>

                  <types:description xsi:type = “instance:Description”>LoadableKernelModule.Top</types:description>

                  <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                  <types:type xlink:type = “simple” xlink:href = “ #tTopType”/>

                  </types:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tLoadableKernelModule” />

      </types:component>

 

<!- - Connector: Con1(UserUtilityPrograms-SystemSharedLibrary) Description- - >

      <types:connector instance:id = “con1” xsi:type = “types:Connector”>

                  <types:description xsi:type = “instance:Description” >connector1</types:description>

                  <types:interface instance:id = “Con1Top” xsi:type = “types:Interface”>

                  <types:description 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>

                  <types:interface instance:id = “Con1Bottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <types:type xlink:type = “simple” xlink:href= “#tConnector1” />

      </types:connector>

 

<!- - Connector: Con2(LinuxKernel-SystemSharedLibrary) Description- - >

      <types:connector instance:id = “con2” xsi:type = “types:Connector”>

                  <types:description xsi:type = “instance:Description” >connector2</types:description>

                  <types:interface instance:id = “Con2Top” xsi:type = “types:Interface”>

                  <types:description 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>

                  <types:interface instance:id = “Con2Bottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <types:type xlink:type = “simple” xlink:href= “#tConnector2” />

      </types:connector>

 

<!- - Connector: Con3(LinuxKernel- LoadableKernelModule) Description- - >

      <types:connector instance:id = “con3” xsi:type = “types:Connector”>

                  <types:description xsi:type = “instance:Description” >connector3</types:description>

                  <types:interface instance:id = “Con3Top” xsi:type = “types:Interface”>

                  <types:description 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>

                  <types:interface instance:id = “Con3Bottom” xsi:type = “types:Interface”>

                  <types:description 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:interface>

                  <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”>

                  <types:description xsi:type = “instance:Description”>System Utility-Con1</types:description>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#UserUtilityProgramsBottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#Con1Top” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<!- - Link: SystemSharedLibrary –Con1 Description- - >

<types:link instance:id = “link2” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>SystemSharedLibrary-Con1</types:description>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#SystemLibraryTop” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#Con1Bottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<!- - Link: SystemSharedLibrary –Con2 Description- - >

<types:link instance:id = “link3” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>SystemSharedLibrary-Con2</types:description>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#SystemLibraryBottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#Con2Top” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<!- - Link: LinuxKernel –Con2 Description- - >

<types:link instance:id = “link4” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>LinuxKernel-Con2</types:description>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#Con2Bottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#LinuxKernelTop” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<!- - Link: LinuxKernel –Con3 Description- - >

<types:link instance:id = “link5” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>LinuxKernel-Con3</types:description>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#LinuxKernelBottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                  <instance:anchorOnInterface xlink:href = “#Con3Top” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<!- - Link: LoadableKernelModule –Con3 Description- - >

<types:link instance:id = “link6” xsi:type = “types:Link”>

      <types:description xsi:type = “instance:Description”>LoadableKernelModule-Con3</types:description>

      <types:point xsi:type = “types:Point”>

      <instance:anchorOnInterface xlink:href = “Con3Bottom” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

      </types:point>

      <types:point xsi:type = “types:Point”>

      <instance:anchorOnInterface xlink:href = “#LoadableKernelModuleTop” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

      </types:point>

</types:link>

</types:archStructure>

… …