Merge branch 'master' of github.com:jeena/GGS-report

Conflicts:
	report.lyx
This commit is contained in:
Jonatan Pålsson 2011-05-12 20:22:37 +02:00
commit 88b991a812

View file

@ -3559,12 +3559,17 @@ reference "cha:Theory"
. .
Here the problems and their solutions are discussed in greater detail, Here the problems and their solutions are discussed in greater detail,
and at times the text becomes more specific to GGS. and at times the text becomes more specific to the GGS.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Much of what is discussed in this chapter has been implemented in the Erlang Much of what is discussed in this chapter has been implemented in the GGS
GGS prototype. prototype.
Specific solutions such as
\emph on
supervisor structures
\emph default
and distribution of erlang nodes on physical nodes.
The different means of communications within the GGS and outside the GGS The different means of communications within the GGS and outside the GGS
with third parties are also discussed here. with third parties are also discussed here.
\end_layout \end_layout
@ -3650,8 +3655,8 @@ The cost of swapping operating system processes becomes a problem when many
If the GGS system had been developed using regular operating system processes, If the GGS system had been developed using regular operating system processes,
it would have had to be designed in a way to minimize the number of processes. it would have had to be designed in a way to minimize the number of processes.
Using Erlang, which is capable of running very many processes, several Using Erlang, which is capable of running very many processes, several
times more than an operating system, the relation between the real world times more than an operating system, the relation between the real
system (described in world and the GGS (described in
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand vref LatexCommand vref
reference "sec:Design-of-the" reference "sec:Design-of-the"
@ -3662,7 +3667,7 @@ reference "sec:Design-of-the"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Erlang allows the GGS to create several process for each player connecting, Erlang allows the GGS to create several processes for each player connecting,
these processes can handle a multitude of different tasks, parsing data these processes can handle a multitude of different tasks, parsing data
for example. for example.
Since each task is handled by a different process, the tasks are clearly Since each task is handled by a different process, the tasks are clearly
@ -3779,7 +3784,7 @@ reference "fig:The-layout-of"
\end_inset \end_inset
the entire GGS system is represented graphically. the entire GGS system is represented graphically.
The circles marked with 'C' topmost in the picture represent game clients. The circles marked with 'C' topmost in the picture represents game clients.
These circles represent processes running on gamers computers, and not These circles represent processes running on gamers computers, and not
on the GGS machine. on the GGS machine.
If a game of chess is to be played on the server, the clients on the machines If a game of chess is to be played on the server, the clients on the machines
@ -3830,7 +3835,7 @@ status open
\backslash \backslash
nomenclature{ nomenclature{
\backslash \backslash
textbf{Mutex}}{A construct for achieving mutial exclusion, used to avoid textbf{Mutex}}{A construct for achieving mutual exclusion, used to avoid
simultaneous access to shared resources in computer systems} simultaneous access to shared resources in computer systems}
\end_layout \end_layout
@ -3878,7 +3883,7 @@ Processes in Erlang are also called
Light Weight Processes. Light Weight Processes.
\emph default \emph default
The Erlang processes are very cheaply created. The Erlang processes are inexpensive to create.
Processes exist within an Erlang machine, or Erlang node. Processes exist within an Erlang machine, or Erlang node.
The Erlang machine has its own scheduler and does not rely on the scheduler The Erlang machine has its own scheduler and does not rely on the scheduler
of the operating system, this is a main reason of Erlang's capability of of the operating system, this is a main reason of Erlang's capability of
@ -3901,11 +3906,11 @@ The strong isolation of Erlang processes make them ideal for multi-core
which computer the process runs on, is not important when communicating which computer the process runs on, is not important when communicating
with the process. with the process.
Processes can communicate regardless of whether they run on the same system Processes can communicate regardless of whether they run on the same system
of not, transparently. or not, transparently.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
The distributed nature of Erlang is something the GGS can make use of when The distributed nature of Erlang is something the GGS can make use of, when
scaling across several computers in order to achieve higher performance. scaling across several computers in order to achieve higher performance.
The distribution is also important in creating redundancy. The distribution is also important in creating redundancy.
The GGS prototype does not make use of the distributed nature of Erlang, The GGS prototype does not make use of the distributed nature of Erlang,
@ -3945,7 +3950,7 @@ s (Native implemented functions)
. .
\emph default \emph default
Through ports communication can take place much in the same way communication Through ports communication can take place in a similar way communication
is performed over sockets. is performed over sockets.
NIFs are called like any other functions without any difference to the NIFs are called like any other functions without any difference to the
caller but are implemented in C, this implementation makes NIFs a very caller but are implemented in C, this implementation makes NIFs a very
@ -4039,7 +4044,7 @@ behaviors
\begin_layout Standard \begin_layout Standard
The GGS makes heavy use of the behaviors supplied in the OTP. The GGS makes heavy use of the behaviors supplied in the OTP.
The behaviors impose a programming style suitable for distributed and concurren The behaviors impose a programming style suitable for distributed and concurren
t applications, perfectly suitable for the GGS. t applications.
In particular, the GGS uses the following behaviors: In particular, the GGS uses the following behaviors:
\end_layout \end_layout
@ -4052,7 +4057,7 @@ supervisor
Supervisors are used when monitoring processes in the Erlang system. Supervisors are used when monitoring processes in the Erlang system.
When a process exits wrongfully, the supervisor monitoring the process When a process exits wrongfully, the supervisor monitoring the process
in question decides which action to take. in question decides which action to take.
In the GGS, the most common action is simply to restart the faulting process. In the GGS, the most common action is to restart the faulting process.
A more thorough discussion on supervisors can be found in section A more thorough discussion on supervisors can be found in section
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref