13
CS370 Assignment 3 Help Session Fall 2018 -Abhishek Yeluri and Rejina Basnet 9/6/18 CS370 - Operatng Systems - Fall 2018 1

CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

CS370 Assignment 3 Help Session

Fall 2018

-Abhishek Yeluri and Rejina Basnet

9/6/18 CS370 - Operatng Systems - Fall 2018 1

Page 2: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Assignment Review

• Objectie fork(),execl(),wait()

pipe()

shmget()

shmat()

shmctl()

• Two executables Coordinator

Checker

9/6/18 CS370 - Operatng Systems - Fall 2018 2

Page 3: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Assignment Review

• Checker Three command line arguments

o Diiisor

o Diiidend

o Pipe File Descriptor

Checks whether the diiidend is eienly diiisible by the diiisor. Store result in shared memory bufer.

o No WEXITSTATUS()!

• Implement Checker by itself frst.

• Then implement Coordinator to manage process executon

9/6/18 CS370 - Operatng Systems - Fall 2018 3

Page 4: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Assignment Review

• Coordinator Fiie command line arguments

o Diiisor

o 4 Diiidends

4 Child processeso Create shared memory segments for each child

o Create pipe for each child process

o fork() all 4 child processes

o Only wait() afer launching all processes!

9/6/18 CS370 - Operatng Systems - Fall 2018 4

Page 5: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Coordinator Behavior

• pipe() – create unique pipe for each child process.

• shmget() – create shared memory segment for each child process.

• fork() all 4 child processes. Send shared mem segment id through pipes. Then wait().

• shmat() – retrieie results from each shared memory segment.

• shmctl() – mark shared memory to be destroyed.

9/6/18 CS370 - Operatng Systems - Fall 2018 5

Page 6: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Full Picture

9/6/18 CS370 - Operatng Systems - Fall 2018 6

Page 7: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Full Picture

9/6/18 CS370 - Operatng Systems - Fall 2018 7

Page 8: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Full Picture

9/6/18 CS370 - Operatng Systems - Fall 2018 8

Page 9: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

execl()

• Checker.c must be compiled into its own executable, e.g. “checker”.

• Use relatie paths– If all fles are in the same directory:

• execl(”./Checker", ”Checker”, argi[1], argi[i + 2], fdstr, NULL);

9/6/18 CS370 - Operatng Systems - Fall 2018 9

Page 10: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

shmget()

int shmget(key_t key, size_t size, int shmfg);

• For this program (and most of the rest of the tme), key must be IPC_PRIVATE. This is a defned constant in one of the header fles. It tells the OS that it will be creatng a new shared memory segment.

• Size should be big enough to hold what you're going to be storing in it (in our case, sizeof(int)).

• shmfg is composed of the following: IPC_CREAT – this fag indicates that the OS needs to allocate a new chunk of shared memory. “mode fags” - these are passed iia a 9-bit string and are done just like binary optons to chmod.

Ex: 0664 represents 0 110 110 100.The groups of three bits represent read, write, and execute permissions for the owner, group, and world, respectiely.

9/6/18 CS370 - Operatng Systems - Fall 2018 10

Page 11: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

shmdt() and shmctl()

int shmdt(const ioid *shmaddr);• Detaches the shared memory segment located at the address

specifed by shmaddr.

int shmctl(int shmid, int cmd, struct shmid_ds *buf);• Performs the control operaton specifed by cmd on the shared

memory segment whose identfer is giien in shmid.• To mark the memory segment to be destroy use the command

IPC_RMID.

9/6/18 CS370 - Operatng Systems - Fall 2018 11

Page 12: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Things to know

• The frst thing you should do afer fork() is close one end of the pipe in each process; in our case that means the read-end of the pipe in the parent process and the write-end of the pipe in the child process. Strange things may happen if you don't

• Once you'ie done shmget(), use shmat() to atach to the shared memory. Do this in both the Controller and in the Checker.

• Make sure your bufers are big enough to write to and read from the pipe!This will (obiiously) afect your Checker's ability to access the shared memory.

• Clearly, it is necessary for the Controller to clear out the shared memory afer each Checker instance exits.

• As a mater of good programming practce, make sure you use shmdt() and shmctl() to detach and remoie the shared memory at the end of the Checker and Controller, respectiely.

9/6/18 CS370 - Operatng Systems - Fall 2018 12

Page 13: CS370 Assignment 3 Help Sessionshrideep/courses/cs370/help-sessions/HelpSession3.pdfdefned constant in one of the header fles. It tells the OS that it will be creatng a new shared

Requirements

• Code must run on lab machines.

• Submit all .c and .h fles, along with makefle.

• MakeFile should execute make all and make clean targets.

• Use relatie paths .

9/6/18 CS370 - Operatng Systems - Fall 2018 13