CS计算机代考程序代写 interpreter 1

1

CSE 2431 HOMEWORK 1 SU 2021

Online Submission to Carmen Due: Thursday May 20, 2021 at 11:30 pm.
Note: You should submit your homework electronically on Carmen as a pdf file
(see below); ALSO, you should retain the C source code files and executables
which the instructions direct you to create and compile or run, because you
may be asked to show them to the instructor or graders.

NOTE that labs are due at 11:30pm on the due date. There is a one half hour “grace

period,”so as long as you submit before midnight, your lab will be counted as on time.

HOWEVER, you should not wait till after 11:30 to submit; your goal should be to submit by

11:30 AT THE ABSOLUTE LATEST (but even this is unwise; aim to submit well in advance

of the deadline, sometime early in the evening)! If you submit after midnight, your lab will be

counted and graded as late, and we will not accept any “excuses” for submitting later

than midnight, because the deadline is 11:30 pm.

The goal of CSE 2431 homework is to give students an opportunity to understand the

Unix/Linux fork() system call, which is used to create new processes, and also to give

students experience with the stdlinux system along with the command line interpreter,

as well as introducing students to forking processes.

All answers for the homework will be submitted to Carmen in a pdf file by the due date
specified above. You should not discuss the homework with other students; the
homework must be the student’s own individual work. You may use Piazza to post
any questions which you have; if you reveal what you think the correct answer to a
question is, or may be, be sure to leave your post private. Guidelines for Piazza and
communication are given on the Syllabus and on Piazza.

All homework answers must be typed, printed, and submitted electronically to

Carmen in a pdf file.

On the CSE Linux System, under your home directory, create a directory cse2431 for Systems

II. Create a directory/folder called hw1 using the command line interface. In that directory, you

will download several C source code files from Carmen, and create several other C source

code files, with code as described below.

After creating your cse2431/hw1 folder on stdlinux, start a firefox web browser, by executing

the following command:

$ firefox https://carmen.osu.edu/#

When the web browser starts, log in, and go to the Homework folder for CSE 2431 in the Files

area.

Download the forktest1.c file to your cse2431/hw1 folder on stdlinux.

Download the forktest2.c file to your cse2431/hw1 folder on stdlinux.

https://carmen.osu.edu/

2

Download the forktest3.c file to your cse2431/hw1 folder on stdlinux.

Download the forktest4.c file to your cse2431/hw1 folder on stdlinux.

IMPORTANT: When you answer the questions below, you should put your answers in a file

which you create with whichever word processor you prefer (not on stdlinux, but on your system),
and when you have all your answers, export your file as a pdf. Also be sure that you read and

understand the file Linux fork.pdf on Carmen in the HW folder.

ALSO IMPORTANT: When you answer the questions, make use of concepts discussed in

class, such as processes, the address spaces of processes, parent and child processes, pid

numbers, the relationship between pids for parent and child processes, and the fork system call

which is used to create processes in Linux. Finally, consider the behavior of the OS scheduler,

which we have not discussed in great detail, but its general behavior has been described. You

can assume that the server has a single-core CPU, so only one process at a time can be

running, but there may be multiple processes in execution (processes which have been

created, but have not yet terminated). Label the answers as the corresponding question is

labeled, so that it is clear which of your answers is responding to each question.

Note: Linux commands are shown with the $ shell prompt. If you have a different prompt in

stdlinux, the commands will still be identical, and they will work the same way.

NOW DO THIS: Compile forktest1.c as follows:

$gcc forktest1.c -o forktest1

Run the program from the directory where you compiled it:

$forktest1

Question 1. How many processes are created when the program runs (include in your count

the process created to run the program when you execute it from the command line on

stdlinux). Describe briefly what is done by the process(es); refer to parent and child process

when you describe what the processes do..

a) Are the results what you expected? Explain.

b) Run the program various times, until the sequence of lines which print values

(what is output as “value”) is different. How many times did you have to run the

program to get a different sequence?

c) Now explain, as clearly as you can, in terms which mention the CPU scheduler

and I/O system calls, why the sequence can vary for different runs of the

program.

NOW DO THIS: Compile forktest2.c as follows:

$gcc forktest2.c -o forktest2

Run the program:

3

$forktest2

Question 2. How many processes are created when the program runs (include in your count

the process created to run the program when you execute it from the command line on

stdlinux)?

a) What value or values is/are output by the program for the variable num?

Answer in terms of parent and child processes.

b) The value of num is changed from the initial value by the program code. Is

this change shown whenever the value of num is printed in the output?

Answer in terms of parent and child processes.

c) Explain why the change in num is or is not reflected by the output (depending

on what you answered for Question b) above). Give your explanation in terms

of parent and child processes.

NOW DO THIS: Compile forktest3.c as follows:

$gcc forktest3.c -o forktest3

Run the program:

$forktest3

Question 3. How many processes are created when the program runs (include in your count

the process created to run the program when you execute it from the command line on

stdlinux)?

a) What value or values is/are output by the program for the variable num?

Answer in terms of parent and child processes.

b) The value of num is changed from the initial value by the program code. Is

this change shown whenever the value of num is printed in the output?

Answer in terms of parent and child processes.

c) Explain why the change in num is or is not reflected by the output (depending

on what you answered for Question b) above). Give your explanation in terms

of parent and child processes.

NOW DO THIS: Compile forktest4.c as follows:

$ gcc forktest4.c -o forktest4

Run the program:

$forktest4

Question 4. How many processes are created when the program runs (include in your count

the process created to run the program when you execute it from the command line on

stdlinux)? [DO NOT just count pids! You need to justify this answer with your explanation for

part a) below.]

4

a) Explain the parent-child relationships between the processes created when the

program executes. You can make a diagram if it is helpful (but it is not required), but

you need to give a verbal (word-based) description of the relationships. Explain, as

clearly as possible (and clarity counts!) how the execution of the C code in forktest4.c

results in the creation of processes which have the parent-child relationships you

identify. If the terms are needed to in order to answer, for a child of a child, you can

use the term grandchild, and for a child of a grandchild, you can use the term great-

grandchild.

Question 5. What do you think the point was of entering and running these programs as

processes? What did you learn?

Question 6. What is a pid? How is a pid useful? It appears that a child process has two pids

associated with it (Note: This does not mean a child process has two pids, but rather, it has two

pids associated with it); what are the values of the two pids? Why are there two?

Question 7. Look at the online manual page for ps, that is, do a ‘man ps’. What does ps do?

Enter and run the commands ‘ps’, ‘ps –f’’, and ‘ps –af’. What are the differences?

Question 8. Look at the online manual page for kill. What does kill do? How might it be

useful? How does it relate to the ps command?

Directions for this part: Give a one or two sentence description, in your own words, of each of

the following system calls:

Question 9. fork

Question 10. getpid

Question 11. getppid

Question 12. wait

Type your answers to the questions above in a document with a word processor, and export the

document to a pdf file called hw1.pdf; to submit the file hw1.pdf to Carmen, log in, and select

HW1 under Assignments.

Homework not submitted by the deadline on the due date but within 24 hours will be

assessed a 25% late penalty of the grade for the whole homework assignment;

homework is not accepted after that time.