1
0
Fork 0
cl-sites/w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/html/SysAndModels.html
2025-01-28 10:11:14 +01:00

372 lines
No EOL
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>1.2. Systems and Models &mdash; Computer Systems Fundamentals</title>
<link rel="stylesheet" href="_static/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous" />
<link rel="stylesheet" href="_static/css/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/normalize.css" type="text/css" />
<link rel="stylesheet" href="../../../JSAV/css/JSAV.css" type="text/css" />
<link rel="stylesheet" href="../../../lib/odsaMOD-min.css" type="text/css" />
<link rel="stylesheet" href="_static/css/jquery-1.11.4-smoothness-ui.css" type="text/css" />
<link rel="stylesheet" href="../../../lib/odsaStyle-min.css" type="text/css" />
<link rel="stylesheet" href="_static/css/csf.css" type="text/css" />
<style>
.underline { text-decoration: underline; }
</style>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ['\\(','\\)']],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": {
scale: "80"
}
});
</script>
<link rel="shortcut icon" href="_static/favicon.ico"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="index" title="Computer Systems Fundamentals" href="index.html" />
<link rel="next" title="3. Themes and Guiding Principles" href="Themes.html" />
<link rel="prev" title="1. Introduction to Concurrent Systems" href="IntroConcSysOverview.html" />
</head><body>
<nav class="navbar navbar-expand-md navbar-dark navbar-custom fixed-top">
<a class="navbar-brand py-0" href="index.html"><img src="_static/CSF-Logo-Square-Text.png" alt="OpenCSF Logo" height="40em" class="py-1 px-2 mb-0 align-center rounded-lg bg-white" /></a>
<!-- Show a navbar toggler on mobile -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#defaultNavbars" aria-controls="defaultNavbars" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="defaultNavbars">
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle jmu-gold rounded" href="SysAndModels.html#" id="navbarDropdownChapters" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Contents</a>
<div class="dropdown-menu scrollable-menu" role="menu" aria-labelledby="navbarDropdownChapters">
<a class="dropdown-item" tabindex="-1" href="SysAndModels.html#"><b>Chapter 1</b></a>
<a class="dropdown-item" href="IntroConcSysOverview.html">&nbsp;&nbsp;&nbsp;1.1. Introduction to Concurrent Systems</a>
<a class="dropdown-item" href="SysAndModels.html">&nbsp;&nbsp;&nbsp;1.2. Systems and Models</a>
<a class="dropdown-item" href="Themes.html">&nbsp;&nbsp;&nbsp;1.3. Themes and Guiding Principles</a>
<a class="dropdown-item" href="Architectures.html">&nbsp;&nbsp;&nbsp;1.4. System Architectures</a>
<a class="dropdown-item" href="StateModels.html">&nbsp;&nbsp;&nbsp;1.5. State Models in UML</a>
<a class="dropdown-item" href="SequenceModels.html">&nbsp;&nbsp;&nbsp;1.6. Sequence Models in UML</a>
<a class="dropdown-item" href="StateModelImplementation.html">&nbsp;&nbsp;&nbsp;1.7. Extended Example: State Model Implementation</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 2</b></a>
<a class="dropdown-item" href="ProcessesOverview.html">&nbsp;&nbsp;&nbsp;2.1. Processes and OS Basics</a>
<a class="dropdown-item" href="Multiprogramming.html">&nbsp;&nbsp;&nbsp;2.2. Processes and Multiprogramming</a>
<a class="dropdown-item" href="KernelMechanics.html">&nbsp;&nbsp;&nbsp;2.3. Kernel Mechanics</a>
<a class="dropdown-item" href="Syscall.html">&nbsp;&nbsp;&nbsp;2.4. System Call Interface</a>
<a class="dropdown-item" href="ProcessCycle.html">&nbsp;&nbsp;&nbsp;2.5. Process Life Cycle</a>
<a class="dropdown-item" href="UnixFile.html">&nbsp;&nbsp;&nbsp;2.6. The UNIX File Abstraction</a>
<a class="dropdown-item" href="EventsSignals.html">&nbsp;&nbsp;&nbsp;2.7. Events and Signals</a>
<a class="dropdown-item" href="Extended2Processes.html">&nbsp;&nbsp;&nbsp;2.8. Extended Example: Listing Files with Processes</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 3</b></a>
<a class="dropdown-item" href="IPCOverview.html">&nbsp;&nbsp;&nbsp;3.1. Concurrency with IPC</a>
<a class="dropdown-item" href="IPCModels.html">&nbsp;&nbsp;&nbsp;3.2. IPC Models</a>
<a class="dropdown-item" href="Pipes.html">&nbsp;&nbsp;&nbsp;3.3. Pipes and FIFOs</a>
<a class="dropdown-item" href="MMap.html">&nbsp;&nbsp;&nbsp;3.4. Shared Memory With Memory-mapped Files</a>
<a class="dropdown-item" href="POSIXvSysV.html">&nbsp;&nbsp;&nbsp;3.5. POSIX vs. System V IPC</a>
<a class="dropdown-item" href="MQueues.html">&nbsp;&nbsp;&nbsp;3.6. Message Passing With Message Queues</a>
<a class="dropdown-item" href="ShMem.html">&nbsp;&nbsp;&nbsp;3.7. Shared Memory</a>
<a class="dropdown-item" href="IPCSems.html">&nbsp;&nbsp;&nbsp;3.8. Semaphores</a>
<a class="dropdown-item" href="Extended3Bash.html">&nbsp;&nbsp;&nbsp;3.9. Extended Example: Bash-lite: A Simple Command-line Shell</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 4</b></a>
<a class="dropdown-item" href="SocketsOverview.html">&nbsp;&nbsp;&nbsp;4.1. Networked Concurrency</a>
<a class="dropdown-item" href="FiveLayer.html">&nbsp;&nbsp;&nbsp;4.2. The TCP/IP Internet Model</a>
<a class="dropdown-item" href="NetApps.html">&nbsp;&nbsp;&nbsp;4.3. Network Applications and Protocols</a>
<a class="dropdown-item" href="Sockets.html">&nbsp;&nbsp;&nbsp;4.4. The Socket Interface</a>
<a class="dropdown-item" href="TCPSockets.html">&nbsp;&nbsp;&nbsp;4.5. TCP Socket Programming: HTTP</a>
<a class="dropdown-item" href="UDPSockets.html">&nbsp;&nbsp;&nbsp;4.6. UDP Socket Programming: DNS</a>
<a class="dropdown-item" href="AppBroadcast.html">&nbsp;&nbsp;&nbsp;4.7. Application-Layer Broadcasting: DHCP</a>
<a class="dropdown-item" href="Extended4CGI.html">&nbsp;&nbsp;&nbsp;4.8. Extended Example: CGI Web Server</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 5</b></a>
<a class="dropdown-item" href="InternetOverview.html">&nbsp;&nbsp;&nbsp;5.1. The Internet and Connectivity</a>
<a class="dropdown-item" href="AppLayer.html">&nbsp;&nbsp;&nbsp;5.2. Application Layer: Overlay Networks</a>
<a class="dropdown-item" href="TransLayer.html">&nbsp;&nbsp;&nbsp;5.3. Transport Layer</a>
<a class="dropdown-item" href="NetSec.html">&nbsp;&nbsp;&nbsp;5.4. Network Security Fundamentals</a>
<a class="dropdown-item" href="NetLayer.html">&nbsp;&nbsp;&nbsp;5.5. Network Layer: IP</a>
<a class="dropdown-item" href="LinkLayer.html">&nbsp;&nbsp;&nbsp;5.6. Link Layer</a>
<a class="dropdown-item" href="Wireless.html">&nbsp;&nbsp;&nbsp;5.7. Wireless Connectivity: Wi-Fi, Bluetooth, and Zigbee</a>
<a class="dropdown-item" href="Extended5DNS.html">&nbsp;&nbsp;&nbsp;5.8. Extended Example: DNS client</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 6</b></a>
<a class="dropdown-item" href="ThreadsOverview.html">&nbsp;&nbsp;&nbsp;6.1. Concurrency with Multithreading</a>
<a class="dropdown-item" href="ProcVThreads.html">&nbsp;&nbsp;&nbsp;6.2. Processes vs. Threads</a>
<a class="dropdown-item" href="RaceConditions.html">&nbsp;&nbsp;&nbsp;6.3. Race Conditions and Critical Sections</a>
<a class="dropdown-item" href="POSIXThreads.html">&nbsp;&nbsp;&nbsp;6.4. POSIX Thread Library</a>
<a class="dropdown-item" href="ThreadArgs.html">&nbsp;&nbsp;&nbsp;6.5. Thread Arguments and Return Values</a>
<a class="dropdown-item" href="ImplicitThreads.html">&nbsp;&nbsp;&nbsp;6.6. Implicit Threading and Language-based Threads</a>
<a class="dropdown-item" href="Extended6Input.html">&nbsp;&nbsp;&nbsp;6.7. Extended Example: Keyboard Input Listener</a>
<a class="dropdown-item" href="Extended6Primes.html">&nbsp;&nbsp;&nbsp;6.8. Extended Example: Concurrent Prime Number Search</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 7</b></a>
<a class="dropdown-item" href="SynchOverview.html">&nbsp;&nbsp;&nbsp;7.1. Synchronization Primitives</a>
<a class="dropdown-item" href="CritSect.html">&nbsp;&nbsp;&nbsp;7.2. Critical Sections and Peterson's Solution</a>
<a class="dropdown-item" href="Locks.html">&nbsp;&nbsp;&nbsp;7.3. Locks</a>
<a class="dropdown-item" href="Semaphores.html">&nbsp;&nbsp;&nbsp;7.4. Semaphores</a>
<a class="dropdown-item" href="Barriers.html">&nbsp;&nbsp;&nbsp;7.5. Barriers</a>
<a class="dropdown-item" href="Condvars.html">&nbsp;&nbsp;&nbsp;7.6. Condition Variables</a>
<a class="dropdown-item" href="Deadlock.html">&nbsp;&nbsp;&nbsp;7.7. Deadlock</a>
<a class="dropdown-item" href="Extended7Events.html">&nbsp;&nbsp;&nbsp;7.8. Extended Example: Event Log File</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 8</b></a>
<a class="dropdown-item" href="SynchProblemsOverview.html">&nbsp;&nbsp;&nbsp;8.1. Synchronization Patterns and Problems</a>
<a class="dropdown-item" href="SynchDesign.html">&nbsp;&nbsp;&nbsp;8.2. Basic Synchronization Design Patterns</a>
<a class="dropdown-item" href="ProdCons.html">&nbsp;&nbsp;&nbsp;8.3. Producer-Consumer Problem</a>
<a class="dropdown-item" href="ReadWrite.html">&nbsp;&nbsp;&nbsp;8.4. Readers-Writers Problem</a>
<a class="dropdown-item" href="DiningPhil.html">&nbsp;&nbsp;&nbsp;8.5. Dining Philosophers Problem and Deadlock</a>
<a class="dropdown-item" href="CigSmokers.html">&nbsp;&nbsp;&nbsp;8.6. Cigarette Smokers Problem and the Limits of Semaphores and Locks</a>
<a class="dropdown-item" href="Extended8ModExp.html">&nbsp;&nbsp;&nbsp;8.7. Extended Example: Parallel Modular Exponentiation</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Chapter 9</b></a>
<a class="dropdown-item" href="ParallelDistributedOverview.html">&nbsp;&nbsp;&nbsp;9.1. Parallel and Distributed Systems</a>
<a class="dropdown-item" href="ParVConc.html">&nbsp;&nbsp;&nbsp;9.2. Parallelism vs. Concurrency</a>
<a class="dropdown-item" href="ParallelDesign.html">&nbsp;&nbsp;&nbsp;9.3. Parallel Design Patterns</a>
<a class="dropdown-item" href="Scaling.html">&nbsp;&nbsp;&nbsp;9.4. Limits of Parallelism and Scaling</a>
<a class="dropdown-item" href="DistTiming.html">&nbsp;&nbsp;&nbsp;9.5. Timing in Distributed Environments</a>
<a class="dropdown-item" href="DistDataStorage.html">&nbsp;&nbsp;&nbsp;9.6. Reliable Data Storage and Location</a>
<a class="dropdown-item" href="DistConsensus.html">&nbsp;&nbsp;&nbsp;9.7. Consensus in Distributed Systems</a>
<a class="dropdown-item" href="Extended9Blockchain.html">&nbsp;&nbsp;&nbsp;9.8. Extended Example: Blockchain Proof-of-Work</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item disabled"><b>Appendix A</b></a>
<a class="dropdown-item" href="CLangOverview.html">&nbsp;&nbsp;&nbsp;A.1. C Language Reintroduction</a>
<a class="dropdown-item" href="Debugging.html">&nbsp;&nbsp;&nbsp;A.2. Documentation and Debugging</a>
<a class="dropdown-item" href="BasicTypes.html">&nbsp;&nbsp;&nbsp;A.3. Basic Types and Pointers</a>
<a class="dropdown-item" href="Arrays.html">&nbsp;&nbsp;&nbsp;A.4. Arrays, Structs, Enums, and Type Definitions</a>
<a class="dropdown-item" href="Functions.html">&nbsp;&nbsp;&nbsp;A.5. Functions and Scope</a>
<a class="dropdown-item" href="Pointers.html">&nbsp;&nbsp;&nbsp;A.6. Pointers and Dynamic Allocation</a>
<a class="dropdown-item" href="Strings.html">&nbsp;&nbsp;&nbsp;A.7. Strings</a>
<a class="dropdown-item" href="FunctionPointers.html">&nbsp;&nbsp;&nbsp;A.8. Function Pointers</a>
<a class="dropdown-item" href="Files.html">&nbsp;&nbsp;&nbsp;A.9. Files</a>
</div>
</li>
</ul>
</div>
<ul class="navbar-nav flex-row ml-md-auto d-none d-md-flex">
<li class="nav-item"><a class="nav-link jmu-gold" href="https://w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/source/SysAndModels.rst"
target="_blank" rel="nofollow">Show Source</a></li>
</ul>
</nav>
<div class="container center">
«&#160;&#160;<a id="prevmod" href="IntroConcSysOverview.html">1.1. Introduction to Concurrent Systems</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a id="nextmod" href="Themes.html">1.3. Themes and Guiding Principles</a>&#160;&#160;»
</div>
<br />
<script type="text/javascript" src="_static/js/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="_static/js/jquery-1.11.4-ui.min.js"></script>
<script type="text/javascript" src="_static/js/forge-0.7.0.min.js"></script>
<script type="text/javascript" src="../../../JSAV/lib/jquery.transit.js"></script>
<script type="text/javascript" src="../../../JSAV/lib/raphael.js"></script>
<script type="text/javascript" src="../../../JSAV/build/JSAV-min.js"></script>
<script type="text/javascript" src="_static/js/config.js"></script>
<script type="text/javascript" src="../../../lib/odsaUtils-min.js"></script>
<script type="text/javascript" src="../../../lib/odsaMOD-min.js"></script>
<script type="text/javascript" src="_static/js/d3-4.13.0.min.js"></script>
<script type="text/javascript" src="_static/js/d3-selection-multi.v1.min.js"></script>
<script type="text/javascript" src="../../../lib/dataStructures.js"></script>
<div class="container">
<script>ODSA.SETTINGS.DISP_MOD_COMP = true;ODSA.SETTINGS.MODULE_NAME = "SysAndModels";ODSA.SETTINGS.MODULE_LONG_NAME = "Systems and Models";ODSA.SETTINGS.MODULE_CHAPTER = "Introduction to Computer Systems"; ODSA.SETTINGS.BUILD_DATE = "2021-06-14 17:15:25"; ODSA.SETTINGS.BUILD_CMAP = false;JSAV_OPTIONS['lang']='en';JSAV_EXERCISE_OPTIONS['code']='java';</script><div class="section" id="systems-and-models">
<h1>1.2. Systems and Models<a class="headerlink" href="SysAndModels.html#systems-and-models" title="Permalink to this headline"></a></h1>
<p>Throughout this book, we are considering the idea of computer systems from a perspective that
strives to apply insights from <a class="reference internal" href="Glossary.html#term-systems-theory"><span class="xref std std-term">systems theory</span></a>. From this view, a <a class="reference internal" href="Glossary.html#term-system"><span class="xref std std-term">system</span></a> is an
integrated collection of entities and their interactions. The computer itself is a system. Computers
are assembled from disparate hardware components that include a central processing unit (CPU),
storage devices, input and output devices, random access memory (RAM) cards, and a printed circuit
board (PCB) that links them all together. A software OS executes on top of these components, thus
integrating their independent functionality into a more complex entity. To fully understand the
nature of the computer as a whole, its important to understand the components independent
functionality as well as how they work together.</p>
<div class="figure mb-2 align-right" id="id1" style="width: 45%">
<span id="sysinteractfig"></span><a class="reference internal image-reference" href="_images/CSF-Images.1.1.png"><img class="p-3 mb-2 align-center border border-dark rounded-lg" alt="A computer is a system of interacting hardware and software entities" src="_images/CSF-Images.1.1.png" style="width: 90%;" /></a>
<p class="caption align-center px-3"><span class="caption-text"> Figure 1.2.1: A computer is a system of interacting hardware and software entities</span></p>
</div>
<p>The system is made more complex by adding application software to the mix. Each application is
constructed from code modules, variables, and other run-time memory structures that are compiled and
integrated to provide a single higher-level function. But software does not run itself; the software
must be executed within the greater context of computing, as a sequence of steps performed by a
physical computer with the help of an OS. Some applications run in isolation from one another, but
they still require the OS and hardware. Others communicate with services that provide information or
perform complimentary tasks, allowing the developer to build more powerful software without having
to start from scratch. <a href="SysAndModels.html#sysinteractfig">Figure 1.2.1</a> summarizes this view of the computer as
a system of interacting components.</p>
<p>In short, all of computing is a system. As computer scientists continue to explore the power of
computing, we can take this claim even further to suggest that computing is made up of a system of
systems. In order to stream a movie over the Internet, the application software must integrate
network connectivity and local file storage, probably with the help of a graphics processing unit
(GPU) that improves the visual quality of the experience. Each of these hardware and software
components are systems, and the application is coordinating their interaction to serve the user. As
another example, consider large-scale scientific projects that model changes in the climate or
advanced quantum mechanics phenomena. This type of work involves linking thousands of parallel
computing nodes that coordinate their calculations and exchange data as needed, creating truly
complicated systems and interactions. Our goal is to understand the common principles and strategies
that make these systems work.</p>
<div class="section" id="models-as-representations">
<h2>1.2.1. Models as Representations<a class="headerlink" href="SysAndModels.html#models-as-representations" title="Permalink to this headline"></a></h2>
<p>A first step toward understanding a system is constructing a <a class="reference internal" href="Glossary.html#term-model"><span class="xref std std-term">model</span></a> a simplified
representation of the system. <a href="SysAndModels.html#sysinteractfig">Figure 1.2.1</a> above is a model of a computer as a system. As a
simplification, models necessarily omit details that are present in the system itself. Some models
have visual representations, facilitating human interpretation of the system. That is,
<a class="reference internal" href="Glossary.html#term-visual-model"><span class="xref std std-term">visual models</span></a> are very good tools for people to make sense of the entities
and their interactions. System designers, developers, and users can use visual models to avoid
mistakes. Other models are <a class="reference internal" href="Glossary.html#term-formal-model"><span class="xref std std-term">formal</span></a>, written in a mathematical specification
language. One way to characterize the differences between models is to describe their
<a class="reference internal" href="Glossary.html#term-level-of-abstraction"><span class="xref std std-term">level of abstraction</span></a>. Visual models may have a relatively low level of abstraction,
including details that are aesthetically pleasing but not important. Formal models have a relatively
high level of abstraction, omitting everything except the bare minimum.</p>
<p>Consider the models shown in <a href="SysAndModels.html#sysphysmodel">Figure 1.2.2</a>. The model on the left has the lowest level of
abstraction, as it includes details that show a yellow box on a grey ramp. This scenario is then
converted into a free-body diagram in the middle. Free-body diagrams are used in physics to
illustrate the forces acting on an object, while removing unneeded details such as the drawing of
the box and the ramp. The equation on the right is the formal model that captures this information.
The net force F is the sum of the forces created by gravity (mg), the normal force N, and the force
of friction <span class="math notranslate nohighlight">\(F_f\)</span>. All three models convey the same information, but they provide different
levels of abstraction.</p>
<div class="figure mb-2 align-center" id="id2">
<span id="sysphysmodel"></span><a class="reference internal image-reference" href="_images/CSF-Images.1.2.png"><img class="p-3 mb-2 align-center border border-dark rounded-lg" alt="Three models for the same physical phenomenon" src="_images/CSF-Images.1.2.png" style="width: 70%;" /></a>
<p class="caption align-center px-3"><span class="caption-text"> Figure 1.2.2: Three models for the same physical phenomenon</span></p>
</div>
<p>A <a class="reference internal" href="Glossary.html#term-static-model"><span class="xref std std-term">static (or structural) model</span></a> describes the fixed, unchanging features of a
system, while omitting explanations of how the system or entities change. Readers with a background
in object-oriented programming may be familiar with class diagrams created using
<a class="reference internal" href="Glossary.html#term-unified-modeling-language"><span class="xref std std-term">unified modeling language (UML)</span></a>. These models describe features
like class inheritance and sub-typing, while omitting characteristics like the values of an objects
variables or the messages it uses to communicate with other objects. Throughout this text, we will
focus repeatedly on one particular type of static model, the system architecture.</p>
<p>In contrast, a <a class="reference internal" href="Glossary.html#term-dynamic-model"><span class="xref std std-term">dynamic (or behavioral) model</span></a> focuses on changes to the
system. These models are particularly important to understanding systems, because many of their key
features are <a class="reference internal" href="Glossary.html#term-emergent-property"><span class="xref std std-term">emergent properties</span></a>. An emergent property is one that
results from the dynamic features of the system and is not intuitive from static models alone. We
will be using two dynamic UML models throughout this book. A <a class="reference internal" href="Glossary.html#term-state-model"><span class="xref std std-term">state model</span></a> describes the
systems possible states defined by meaningful combinations of system parameters and the possible
transitions between them. For instance, a streaming video service may characterize different states
to represent “requesting the video,” “buffering received data,” “pausing the video,” and “playing
the video.” A <a class="reference internal" href="Glossary.html#term-sequence-model"><span class="xref std std-term">sequence model</span></a> illustrates the order of messages and key events that a system
experiences over time. One use of a sequence model is to describe a specific order in which state
transitions occur. These models provide a clear illustration of network communication protocols and
messages to coordinate parallel and distributed computation.</p>
</div>
<div class="section" id="from-models-to-implementations">
<h2>1.2.2. From Models to Implementations<a class="headerlink" href="SysAndModels.html#from-models-to-implementations" title="Permalink to this headline"></a></h2>
<p>Models are useful tools for analyzing and illustrating the behavior of a system. Well-constructed
models of the natural world can help scientists develop insight into and explain real-world
phenomena, such as the chemical reactions that release energy stored in food, the wave-like behavior
of electrons in an atom, or the fractal designs in crystals. User manuals for appliances, vehicles,
childrens toys, etc., use illustrations as models to convey information to consumers who are not
necessarily experts in the field.</p>
<p>In contrast to many other fields, the field of computer systems places a strong emphasis on turning
models into implementations. That is, our goal is not simply to build and interpret models, but to
turn these models into working artifacts. This implementation process can be quite challenging and
creates many opportunities for errors; mistakes that cause the system to behave differently from the
model can render the model useless or, even worse, increase confusion. As such, much of our focus
throughout this book is on successfully turning models into concrete, executable implementations.</p>
<div
id="SysAndModelsSumm"
class="embedContainer"
data-exer-name="SysAndModelsSumm"
data-long-name="Systems and models questions"
data-short-name="SysAndModelsSumm"
data-frame-src="../../../Exercises/IntroConcSys/SysAndModelsSumm.html?selfLoggingEnabled=false&amp;localMode=true&amp;module=SysAndModels&amp;JXOP-debug=true&amp;JOP-lang=en&amp;JXOP-code=java"
data-frame-width="950"
data-frame-height="775"
data-external="false"
data-points="1.0"
data-required="True"
data-showhide="show"
data-threshold="5"
data-type="ka"
data-exer-id="">
<div class="center">
<div id="SysAndModelsSumm_iframe"></div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="mt-4 container center">
«&#160;&#160;<a id="prevmod1" href="IntroConcSysOverview.html">1.1. Introduction to Concurrent Systems</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a id="nextmod1" href="Themes.html">1.3. Themes and Guiding Principles</a>&#160;&#160;»
</div>
</div>
<br />
<div class="row jmu-dark-purple-bg">
<div class="col-md-12">
<center>
<a id="contact_us" class="btn button-link-no-blue jmu-gold" rel="nofollow" href="mailto:webmaster@opencsf.org" role="button">Contact Us</a>
<a id="license" class="btn button-link-no-blue jmu-gold" rel="nofollow" href="https://w3.cs.jmu.edu/kirkpams/OpenCSF/lib/license.html" target="_blank">License</a>
</center>
</div>
</div>
<script src="_static/js/popper.js-1.14.7-min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="_static/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>