Re: PLEASE HELP ME WITH THIS ASSIGNMENT...PLEASE....

Discussion in 'Python' started by Daniel Fetchinson, Sep 10, 2008.

  1. > I know I'm tooooo late to ask you for help....but please help me out..I
    > am really new to unix and dont know how to finish this assignment on
    > time.....proff. said he will be using MOSS to detect whether I
    > downloaded the code..please help me..
    >
    > email me :
    >
    > Assignment 1
    > Processes, Inter-Process Communication, and Concurrency
    > Due September 13th midnight
    > Summary
    > In
    > this assignment, you will create two versions of a simple multi-process
    > game : one without and another with inter-process synchronization. You
    > will also measure the relative performance of the two versions of your
    > multi-process game.
    > Objectives
    >
    > * Learn how to create and terminate processes.
    > * Learn use of inter-process communication using shared memory,
    > semaphores, signals, etc.
    > * Learn the basic workings of CPU scheduling code in Linux.
    >
    > Part A: Multi-Process Game of Turns
    >
    > In
    > this part, you are asked to write a simple program that takes two
    > command-line arguments P and N. The main process creates P other child
    > processes, waits for all of them to complete, and then exits. All the
    > child processes form one logical ring among each other. (In rest of the
    > description, the term "process" refers to a "child process".) For
    > example, if the processes are numbered 1 to P, then
    >
    > * The next neighbor of process 1 is process 2,
    > * The next neighbor of process i is process i+1 for all i < P , and
    > * The next neighbor of process P is process 1, which completes a ring
    > among the processes.
    >
    > Assume
    > that a shared integer variable, called turn, identifies the number of
    > the processes whose turn it is at any instant. A second process-local
    > variable in each process, called me, identifies the identity of each
    > process (i.e. each process stores its own identity in a per-process
    > local variable me). A third per-process local variable, called next,
    > identifies the next process in the ring.
    >
    > The processes
    > sequentially pass the turns among each other in the logical ring. When
    > each process gets its turn, it increments another shared variable
    > called counter. The pseudo-code within each process for passing turns
    > might look something as follows. (Note: Replace turn and counter below
    > with appropriate ways of accessing data within shared memory regions).
    >
    > while(turn != me )
    > /* do nothing - just busy loop*/ ;
    >
    > /* got my turn - increment counter */
    > counter = counter + 1;
    >
    > /* give the turn to next process */
    > turn = next;
    >
    > The program terminates when the each process has received N turns.
    >
    > In the above description, several programming details have been omitted for
    > you to figure out. This includes
    >
    > * Creating P child processes from main process.
    > * Constructing the logical ring among child processes.
    > o Initializing each child process's identity in the me variable.
    > o Initializing each child process' next neighbor in the next
    > variable.
    > * Initializing the shared memory region and the shared data values.
    > * Have the main process wait for child processes to complete N turns
    > before exiting.
    >
    > Part B: More Efficient Game of Turns
    >
    > You
    > might notice that the program you wrote in Part A is inefficient
    > because each process busy loops till the CPU scheduler kicks it out
    > (after its time-slice is over) and allows another process to execute
    > and make progress. (Does the program in Part A have a race condition?
    > Why or why not?)
    >
    > What we ideally want is that each process
    > should be given control of the CPU only when it is that process' turn.
    > Modify the program you wrote in Part A (using appropriate
    > synchronization mechanisms) such that each process gets to run (i.e.,
    > gets control of the CPU) only when it is that process's turn, and at no
    > other time.
    >
    > Again, you would need to work out the programming details of how and where
    > to use inter-process synchronization.
    > Part C: Profiling the Game of Turns
    >
    > In
    > this part, you are asked to write user-level profiling code in order to
    > measure the performance of the two versions of programs you wrote in
    > Part A and Part B. Use a combination of gettimeofday() system call and
    > inter-process synchronization to measure (1) the average hand-over time
    > between two consecutive processes in the ring and (b) the total
    > execution time to complete N turns. Plot the measured values as graphs
    > when varying number of processes P and number of turns N. Explain the
    > results you obtain.
    > Submission Guidelines
    >
    > Thanking you,
    >
    > Ms. Vaidehi Pawar


    How much do you pay?

    Cheers,
    Daniel
    --
    Psss, psss, put it down! - http://www.cafepress.com/putitdown
     
    Daniel Fetchinson, Sep 10, 2008
    #1
    1. Advertising

  2. Daniel Fetchinson

    Sean DiZazzo Guest

    On Sep 10, 3:33 pm, "Daniel Fetchinson" <>
    wrote:
    > > I know I'm tooooo late to ask you for help....but please help me out..I
    > > am really new to unix and dont know how to finish this assignment on
    > > time.....proff. said he will be using MOSS to detect whether I
    > > downloaded the code..please help me..

    >
    > > email me :

    >
    > > Assignment 1
    > > Processes, Inter-Process Communication, and Concurrency
    > > Due September 13th midnight
    > > Summary
    > > In
    > > this assignment, you will create two versions of a simple multi-process
    > > game : one without and another with inter-process synchronization. You
    > > will also measure the relative performance of the two versions of your
    > > multi-process game.
    > > Objectives

    >
    > >     * Learn how to create and terminate processes.
    > >     * Learn use of inter-process communication using shared memory,
    > > semaphores, signals, etc.
    > >     * Learn the basic workings of CPU scheduling code in Linux.

    >
    > > Part A: Multi-Process Game of Turns

    >
    > > In
    > > this part, you are asked to write a simple program that takes two
    > > command-line arguments P and N. The main process creates P other child
    > > processes, waits for all of them to complete, and then exits. All the
    > > child processes form one logical ring among each other. (In rest of the
    > > description, the term "process" refers to a "child process".) For
    > > example, if the processes are numbered 1 to P, then

    >
    > >     * The next neighbor of process 1 is process 2,
    > >     * The next neighbor of process i is process i+1 for all i < P , and
    > >     * The next neighbor of process P is process 1, which completes a ring
    > > among the processes.

    >
    > > Assume
    > > that a shared integer variable, called turn, identifies the number of
    > > the processes whose turn it is at any instant. A second process-local
    > > variable in each process, called me, identifies the identity of each
    > > process (i.e. each process stores its own identity in a per-process
    > > local variable me). A third per-process local variable, called next,
    > > identifies the next process in the ring.

    >
    > > The processes
    > > sequentially pass the turns among each other in the logical ring. When
    > > each process gets its turn, it increments another shared variable
    > > called counter. The pseudo-code within each process for passing turns
    > > might look something as follows. (Note: Replace turn and counter below
    > > with appropriate ways of accessing data within shared memory regions).

    >
    > >     while(turn != me )
    > >         /* do nothing - just busy loop*/ ;

    >
    > >     /* got my turn - increment counter */
    > >     counter = counter + 1;

    >
    > >     /* give the turn to next process */
    > >     turn = next;

    >
    > > The program terminates when the each process has received N turns.

    >
    > > In the above description, several programming details have been omitted for
    > > you to figure out. This includes

    >
    > >     * Creating P child processes from main process.
    > >     * Constructing the logical ring among child processes.
    > >           o Initializing each child process's identity in the me variable.
    > >           o Initializing each child process' next neighbor in the next
    > > variable.
    > >     * Initializing the shared memory region and the shared data values.
    > >     * Have the main process wait for child processes to complete N turns
    > > before exiting.

    >
    > > Part B: More Efficient Game of Turns

    >
    > > You
    > > might notice that the program you wrote in Part A is inefficient
    > > because each process busy loops till the CPU scheduler kicks it out
    > > (after its time-slice is over) and allows another process to execute
    > > and make progress. (Does the program in Part A have a race condition?
    > > Why or why not?)

    >
    > > What we ideally want is that each process
    > > should be given control of the CPU only when it is that process' turn.
    > > Modify the program you wrote in Part A (using appropriate
    > > synchronization mechanisms) such that each process gets to run (i.e.,
    > > gets control of the CPU) only when it is that process's turn, and at no
    > > other time.

    >
    > > Again, you would need to work out the programming details of how and where
    > > to use inter-process synchronization.
    > > Part C: Profiling the Game of Turns

    >
    > > In
    > > this part, you are asked to write user-level profiling code in order to
    > > measure the performance of the two versions of programs you wrote in
    > > Part A and Part B. Use a combination of gettimeofday() system call and
    > > inter-process synchronization to measure (1) the average hand-over time
    > > between two consecutive processes in the ring and (b) the total
    > > execution time to complete N turns. Plot the measured values as graphs
    > > when varying number of processes P and number of turns N. Explain the
    > > results you obtain.
    > > Submission Guidelines

    >
    > > Thanking you,

    >
    > > Ms. Vaidehi Pawar

    >
    > How much do you pay?
    >
    > Cheers,
    > Daniel
    > --
    > Psss, psss, put it down! -http://www.cafepress.com/putitdown


    Maybe. If I cant sleep tonite.
     
    Sean DiZazzo, Sep 11, 2008
    #2
    1. Advertising

  3. Logix - gone?

    I found Logix (http://livelogix.net/logix/) while looking for
    something else and thought it looked like a very interesting project.
    Unfortunately, the blog, mailing list, and Trac links are broken, and
    the contact email address bounces.

    I am interested in playing with it and working on it if the original
    author has dropped it. Does anyone know where I could get the source?

    I am asking this here because Logix compiles to Python bytecode, and
    the author announced to this list at one time. Tom Locke, if you're
    out there...

    -Steve Johnson (www.steveasleep.com)
     
    Stephen Johnson, Sep 11, 2008
    #3
  4. Daniel Fetchinson

    John Machin Guest

    Re: Logix - gone?

    On Sep 11, 10:34 am, Stephen Johnson <> wrote:
    > I found Logix (http://livelogix.net/logix/) while looking for  
    > something else and thought it looked like a very interesting project.  
    > Unfortunately, the blog, mailing list, and Trac links are broken, and  
    > the contact email address bounces.
    >
    > I am interested in playing with it and working on it if the original  
    > author has dropped it. Does anyone know where I could get the source?


    Ummmm .... try the download link; it worked for me.

    >
    > I am asking this here because Logix compiles to Python bytecode, and  
    > the author announced to this list at one time. Tom Locke, if you're  
    > out there...
    >
    > -Steve Johnson (www.steveasleep.com)
     
    John Machin, Sep 11, 2008
    #4
  5. Re: Logix - gone?

    > Ummmm .... try the download link; it worked for me.

    Oops. You just found my daily stupid.

    However, I still wish the Trac link worked, and I would prefer the
    participation of the original dev to forking it.

    -Steve Johnson
     
    Stephen Johnson, Sep 11, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Brett Irving

    please help!! assignment operator

    Brett Irving, Jun 29, 2003, in forum: C++
    Replies:
    1
    Views:
    675
    David White
    Jun 29, 2003
  2. KK
    Replies:
    2
    Views:
    622
    Big Brian
    Oct 14, 2003
  3. Cam
    Replies:
    19
    Views:
    1,514
  4. nagy
    Replies:
    36
    Views:
    1,015
    Terry Reedy
    Jul 20, 2006
  5. Chris
    Replies:
    34
    Views:
    1,535
Loading...

Share This Page