Reference no: EM13313633 
                                                                               
                                       
1     Detailed requirements
Heterogeneity   is  a  fact  of  life  in modern  systems.   Processors,  memory,  storage  devices, and  communication   links  are  not  uniform;   they  have  different  capabilities   and  limita- tions.  Operating   systems  must  try  to make  sense of this  landscape,  providing  services  to application   authors   that  make  the  most  helpful  use  of  these  varied  system  components.
Part   of  this  is  arranging   the  components   to  form  a  system  topology  that   describes  the machine.   In  this  assignment you will use  a  language  of your  choice  to  explore  the  topol- ogy of hardware   running  an  operating  system  of your  choice.  Many  of you will elect  to use  a  scripting  language.  This  is a  good choice;  these  languages  were designed with  this sort  of thing  in mind.
Your  assignment  is  to  describe  what  you  can  about   your  target   system's  topology. You will do  this  by writing  ten  small  programmes  that   each  reveal  something  about  the system's  structure and  you  summarise  your work  in a  report  of about  1000 words. The  report  will consist  of an  introduction where  you will describe  the  sort  of systems your  work  applies  to  and  what  can  be  discovered  about   them  through  software  (so,  as  a silly example,  none of your  programmes  is likely to  find out  the  colour of the  case).  Then for each  programme,  you will describe
1.  what  it  reveals  about  the  system  topology;
2.  why  this  is a useful  thing  to  know;
3.  how and  why  the  programme  works;
4.  sample  output from your  test  system;  and
5.  how  to  interpret the  output.
An  example might  look like this
A  given  system  has  a  total   amount  of  storage   available.    Applications should  be  aware  of  this  total   so  that   they  can  (i)  report   it  to  the  user;  and
(ii) modify  their  behaviour  as  appropriate  (such  as  by  deciding  how much  to cache  from  the  network).
The Windows  PowerShell  programme
(get-wmiobject  -class win32_logicaldisk  | measure-object  -property size -sum).sum works  by  gathering  the  disks  known  to  the  system  and  using  PowerShell  fa- cilities  to  add  up  their   sizes.   Output might  look  like  64422408192,  which should  be  interpreted as  saying  that   the machine  in question  has  about  60GB of disk.
(Note   that   you  won't  get  credit   for  submitting   this  exact  example!)   Finally  you  will conclude  with  a  summary  of  your  results  and  a  reflection  on what  you  have  found  the most  technically  challenging aspect  of preparing  your  report.   This means  that  your  report will consist  of twelve sections:  the  introduction,  conclusions,  and  ten  programmes.
Those  wishing  to  stretch   their  faculties  and  attain  the  highest  mark  possible  should include  an  epilogue  that   explains  the  definition  of a  "heterogeneity   factor".   This  is  an integer  between  0 and  10  that   reflects  the  variety  of components  within  he  system.  You should  describe  how it  is computed  using  the  results  of your  ten  programmes.  You might decide  that   the  "heterogeneity   factor"  is a  completely  bogus  idea!  If so, explain why.
You  are  encouraged   to  talk   to  the  module  team  about   your  planned   solutions.   As part  of this,  demonstrate  three  or  four  of your  programmes  to  us  as  a  form of formative assessment and  so  that  we can  give you  detailed  feedback  on  your  work.  To  ensure  that you  have  enough  time  for  improvements   based  on  our  advice,  you  should  do  this  by Friday December 6th. 
 
A     Useful resources 
 
Alongside  the  module material,  you may  find  these  resources  handy. 
 
• Using  the  Get-WMiObject Cmdlet 
 
• Scripting  with Windows  PowerShell 
 
• Programming  Ruby:  The  Pragmatic Programmer's  Guide 
 
• Python  v3.3.2 documentation 
 
• The  Linux  /proc Filesystem  as a Programmers'  Tool 
 
• About  DTrace 
 
B     Referencing system 
 
You are  free to  use whatever  referencing  system  you want provided  that   you 
 
1.  apply  it  consistently;  and 
 
2.  are  thorough  and  accurate.
In  other  words,  pick  one  referencing  system  and  use  it  for  all  of your  citations   and  use only  that.     Furthermore,  ensure  that    each  citation    includes  enough  information  for  the reader  to  find  the  reference.
Many  assignments   at   this  university   require   that   you  use  the  Harvard   referencing system.  While  it  is not  required  here,  using  it  correctly  and  consistently  will ensure  that you  satisfy  the  above  two criteria.