Контрольная Работа: Операционные Системы (Модуль 4)
Ссылка на форму для отправки ответов здесь.
Формула оценки:
Оценка = 0.4 * Теория + 0.6 * Задача
Часть 1. Теоретические Вопросы
Answer the theoretical questions in a few sentences (1-2 paragraphs for a question).
Use your own words. Copy-paste from external sources and other students will result in 100% penalty.
- Memory management.
- Memory layout of a program: What memory segments do you know? What purposes do they serve?
- What ways to allocate memory do you know?
- How dynamic memory allocation via
malloc
/free
is implemented (using what data structures)? - Give definitions of payload, fragmentation (internal and external), and placement strategies.
- What is the purpose of the
sbrk
system call?
- Processes.
- What is a process? What parts does it contains (its layout in memory)?
- List the states of a process and describe how it changes states.
- What is Process Control Block (
PCB
)? What information does it contain? - Describe the idea of process creation with system calls
fork
andexec
. What is the role of system callwait
? - How to see the list of running processes in Linux (what system utilities do you know)? What Linux system folder does contain information about running processes?
- Permissions.
- What access rights do you know? What permission groups do you know?
- How to view and how to change file permissions (what utility tools to use)? How to change file ownership?
- Give definitions of hard and soft links, explain the differences between them. How to create links?
- Explain the
setuid
/setguid
permissions. - Study the text below. What can you say about
file1
,file2
,file3
, andfile4
?
(base) andrewt@ThinkPad-T490s:~/Documents/src/hse/temp$ ls -li total 36 35140286 drwxrwxr-x 2 acos acos 4096 Jun 17 09:03 file1 35140287 -rwxrwsr-x 2 myuser acos 15776 Jun 17 09:01 file2 35140288 lrwxrwxrwx 1 acos acos 5 Jun 17 09:03 file3 -> file1 35140287 -rwxrwsr-x 2 myuser acos 15776 Jun 17 09:01 file4
Часть 2. Задача По Программированию
Write a program in C that does the following:
- Calculates the value of the specified function
f(x)
in the range fromargv[1]
toargv[2]
with stepargv[3]
. - Writes pairs
x, f(x)
into text fileoutput.csv
(CSV format). - The function to be calculated has the following format:
f(x) = f0(f1(x), f2(x), f3(x), f4(x))
, where:
x
is the function argument;f0
-f4
are functions that are individual according to the variant.
Example of Function (you need your variant, see below)
Note: the ^
symbol means “power”.
f0(a, b, c, d) = (a - b + c - d) / 2
f1(x) = 2*x^3 - 4*x^2 + 3*x + 1
f2(x) = sin(5*x)*4 + 3
f3(x) = 1 / (1 + e^(-7*x))
f4(x) = 2^x + 5
Requirements and Grades
- 4 Points: make all calculations and write to file in a parent process; provide a Makefile to build the program;
- 5 Points: write to a file using output redirection (redirect the standard output to the file using dup2);
- 6 Points: make all calculations and write to the file in a child process (use fork);
- 8 Points: execute the f0 function for the entire value range in a child process and send the resulting values to the parent process using a pipe;
- 10 Points: execute f0 in the parent process and f1-f4 in separate child processes; return the calculated values of f1-f4 to f0 using a pipe (you will need 4 pipes).
Hints
- Function
f0
have the following structure:double f0(double a, double b, double c, double d) { return <math expr>; }
- Functions
f1
-f4
have the following structure:double f1(double x) { return <math expr>; }
- Command-line arguments (strings) can be converted to
double
using the atof function. - Mathematical functions (such as
sin
,cos
,pow
,exp
etc.) and constants (M_E
) are in the math.h library. The program must be linked with the library: use the-lm
GCC flag. - To write to a file, open the file and redirect the standard output
(
STDOUT_FILENO
) to this file with the dup2 system call. When you do this, you will be able to useprintf
to print to the file. If you do this in the parent process, redirection will work in both processes (parent and child). - Sending data from child to parent using a pipe: see example in the manual.
- Child:
f(x)
is calculated for a range of values and results (x
andf(x)
) are written (write(pfd[1], &x, sizeof(x))
) to the pipe; - Parent: results (
x
andf(x)
) are read (read(pfd[0], &x, sizeof(x))
) from the pipe in a loop and printed.
- Child:
Варианты
Выберите свой номер варианта согласно своему номеру в группе. Списки групп здесь:
Варианты для групп:
Замечание: символ ^
означает возведение в степень.