Міністерство освіти і науки України
Національний університет Львівська політехніка
Звіт
до лабораторної роботи № 7
на тему: “ Засоби мiжпроцесної взаємодiї Linux ”
Мета роботи
Познайомитися iз принципами мiжпроцесної взаємодiї операцiйної системи Linux.
Познайомитися iз системними викликами мiжпроцесної взаємодiї операцiйної системи Linux.
Хід виконання роботи
1. POPEN / PCLOSE
SYNOPSIS
#include <stdio.h>
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
DESCRIPTION
Popen () відкриває процес шляхом створення труби, вусами, і з посиланням на оболонку. Так як труби, за визначенням, односпрямований, типу аргумент може вказати тільки читати або писати, але не одночасно; в результаті потік, відповідно, тільки для читання або тільки для запису. Команда аргумент є покажчиком на нульову рядок, що містить лінію команди оболонки. Ця команда передається / бен / ш, використовуючи ключ-з прапором, тлумачення, якщо такі є, здійснюється оболонки. Аргумент режим являє собою вказівник на завершується нулем рядок, яка повинна бути або `R 'для читання або' W 'для запису.
Повертане значення з popen () є нормальною стандартного вводу-виводу потоку у всіх відносинах, зберегти, що він повинен бути закритий з pclose () замість fclose (). Запис на такий потік записує в стандартний потік вводу команди; стандартний вивід команди так само, як і процес, який називається popen (), якщо це не змінило в самій команді. З іншого боку, читання `` popened''поток читає стандартний вивід команди, і стандартний введення команди, так само, як і процес, який називається popen.
Зверніть увагу, що вихід popen потоки з повною буферизацією за замовчуванням. Pclose функція чекає відповідного процесу припинити і повертає статус завершення команди, як повертаються wait4.
RETURN VALUE
The popen function returns NULL if the fork(2) or pipe(2) calls fail, or if it cannot allocate memory.
The pclose function returns -1 if wait4 returns an error, or some other error is detected.
ERRORS
Popen функції не встановлюється, якщо помилка виділення пам'яті не виходить. Якщо основний вилка () або труб () зазнає невдачі, помилка встановлюється відповідним чином. Якщо режим аргументом є недійсним, і це умова виявленні помилки встановлений EINVAL.
Якщо pclose () не може отримати статус дитини, помилка встановлений ECHILD.
2. PIPE
SYNOPSIS
#include <unistd.h>
int pipe(int filedes[2]);
DESCRIPTION
PIPE створює пару файлових дескрипторів, показуючи на трубу Інода, і поміщає їх в масив, на який вказує filedes. filedes [0] для читання, filedes [1] для запису.
RETURN VALUE
У разі успіху, повертається нуль. У випадку помилки повертається -1, а помилка встановлюється відповідним чином.
3. MKFIFO
SYNOPSIS
mkfifo [OPTION] NAME...
DESCRIPTION
Створює іменовані канали (FIFO) із заданими іменами.Обов'язкові аргументи для довгих опцій також є обов'язковими і для коротких.
-m, --mode = MODE встановити права доступу (як у CHMOD), а не = RW - UMASK
--help показати цю довідку і вийти
--version вивести інформацію про версію і вийти
4. MSGGET
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
DESCRIPTION
Ця функція повертає ідентифікатор черги повідомлень, пов'язаних з значення ключа аргумент. Нові черги повідомлень буде створено, якщо ключ має значення IPC_PRIVATE або ключ не IPC_PRIVATE, яких не існує черги повідомлень, пов'язаних з ключем, і IPC_CREAT стверджується в msgflg (тобто msgflg IPC_CREAT і не дорівнює нулю). Присутність у msgflg полів IPC_CREAT і IPC_EXCL відіграє ту ж роль, що стосується існування черги повідомлень, а наявність O_CREAT і O_EXCL в режимі аргумент відкритих (2) системний виклик, тобто функція не msgget якщо msgflg стверджує, як і IPC_CREAT IPC_EXCL і черги повідомлень вже існує для ключа.
Після створення, тим нижче 9 біт аргументу msgflg визначити права доступу черги повідомлень. Ці дозволи бітів мають той же формат і семантику в якості параметра права доступу у відкритих (2) або Creat (2) системний виклик. (Дозвіл на виконання не використовується.)
Крім того, при створенні, системний виклик ініціалізує системи обміну повідомленнями структура даних черги msqid_ds наступним чином:
msg_perm.cuid і msg_perm.uid налаштовані на ефективний ідентифікатор користувача викликає процесу.
msg_perm.cgid msg_perm.gid і налаштовані на ефективну групу-ID викликає процесу.
Нижчого порядку 9 біт msg_perm.mode встановлюються на нижчому 9 біт msgflg.
msg_qnum, msg_lspid, msg_lrpid, msg_stime і msg_rtime встановлюються в 0.
msg_ctime встановлюється в поточний час.
msg_qbytes встановлений у системі обмеження MSGMNB.
Якщо повідомлення вже існує черга права доступу будуть перевірені, і перевірити це зробив, щоб побачити, якщо вона буде відзначено для знищення.
RETURN VALUE
У разі успіху, що повертається значення буде ідентифікатор черги повідомлень (невід'ємне ціле число), інакше -1 помилка з вказівкою помилки.
5. MSGSND / MSGRCV
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg);
ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg);
DESCRIPTION
Щоб надсилати та отримувати повідомлення, то викликає процес виділяє структуру наступному загальному вигляді:
struct msgbuf { long mtype; /* message type, must be > 0 */
char mtext[1]; /* message data */
};
Багаторядкового поля масиву (або інші структури), розмір яких визначається msgsz, невід'ємне ціле значення. Повідомлення нульової довжини (тобто не багаторядкового поля) не допускаються. Mtype поле повинно мати строго позитивні цілі значення, які можуть бути використані для процесу отримання повідомлення відбору (див. розділ про msgrcv).
Викликає процес повинен мати право на запис для передачі і читати дозвіл на отримання повідомлень з черги.
Msgsnd системний виклик додає копію повідомлення, на яку вказує ПМСГ в чергу повідомлень ідентифікатор якого визначається msqid.
При наявності достатнього вільного місця в черзі, msgsnd вдається відразу. (Черги потужність визначається msg_bytes поля в пов'язаної структури даних черги повідомлень. У черзі створення цього поля є ініціалізації MSGMNB байт, але це обмеження можна змінити за допомогою msgctl.) Якщо недостатньо вільного місця в черзі, , то за замовчуванням поведінка msgsnd є блокування до просторі стає доступною. Якщо IPC_NOWAIT стверджується в msgflg то виклик, а не завершується з помилкою EAGAIN.
Заблокований msgsnd виклику також може не спрацювати, коли черги віддаляється (в цьому випадку системний виклик завершується з помилкою встановлений EIDRM), або сигнал зловив (у цьому випадку системний виклик завершується з помилкою значення EINTR). (Msgsnd і msgrcv ніколи не рестарт після того, як перервав обробник сигналу, незалежно від установки прапора SA_RESTART при створенні обробника сигналу.)
Після успішного завершення черги повідомлень структура даних оновлюється наступним чином: msg_lspid встановлюються в процесі ідентифікатор викликає процесу. msg_qnum збільшується на 1. msg_stime встановлюється в поточний час.
Msgrcv системний виклик зчитує повідомлення з черги повідомлень, зазначених у msqid msgbuf, на яку вказує аргумент ПМСГ, видалення читати повідомлення з черги.
Msgsz аргумент задає максимальний розмір в байтах для членів мтекст структури, на яку вказує аргумент ПМСГ. Якщо текстове повідомлення довжиною більше msgsz, то якщо msgflg аргумент стверджує MSG_NOERROR текст повідомлення будуть обрізані (і усіченої частини будуть загублені), в іншому разі повідомлення не видаляється з черги, а системний виклик не вдається повертаються з помилка встановлений E2BIG.
Msgtyp аргумент визначає тип повідомлення просив наступним чином:
Якщо msgtyp дорівнює 0, то перше повідомлення в черзі читати.
Якщо msgtyp більше 0, то перше повідомлення в черзі типу msgtyp це читати, якщо MSG_EXCEPT було заявлено в msgflg, в цьому випадку перше повідомлення в черзі типу не рівні msgtyp буде читати.
Якщо msgtyp менше 0, то перше повідомлення в черзі з низьким типу менше або дорівнює абсолютному значенню msgtyp буде читати.
Msgflg аргумент стверджує, одна або кілька (або-ING них) такі прапори:
IPC_NOWAIT Для негайного повернення, якщо повідомлення не запитаного типу на черзі. Системний виклик завершується з помилкою встановлений ENOMSG.
MSG_EXCEPT Використовується з msgtyp більше 0, щоб читати перше повідомлення в черзі з повідомленням типу, який відрізняється від msgtyp.
Щоб обрізати MSG_NOERROR текстове повідомлення, якщо довше, ніж msgsz байт.
Якщо немає повідомлення запитаного типу є і IPC_NOWAIT не стверджував в msgflg, то викликає процес блокується, поки один з наступних умов:
Повідомлення потрібного типу знаходиться на черзі.
Черги повідомлень видаляється з системи. У цьому випадку системний виклик завершується з помилкою встановлений EIDRM.
Викликає процес отримує сигнал. У цьому випадку системний виклик завершується з помилкою значення EINTR.
Після успішного завершення черги повідомлень структура даних оновлюється наступним чином:
msg_lrpid встановлюються в процесі ідентифікатор викликає процесу. msg_qnum зменшується на 1. msg_rtime встановлюється в поточний час.
RETURN VALUE
Про помилку обидві функції повертають -1 помилка з вказівкою помилки, в іншому випадку повертає 0 msgsnd і msgrvc повертає кількість байтів, скопійованих в мтекст масиву.
6. MSGCTL
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
DESCRIPTION
Ця функція здійснює контроль операції, зазначеної в УМК по черзі повідомлень з ідентифікатором msqid. Допустимі значення для УМК є:
IPC_STAT Копіювання інформації з черги повідомлень, структури даних, асоційованої з msqid в структуру, на яку вказує BUF. Абонент повинен мати дозвіл на читання даних черги повідомлень.
IPC_SET Створити значення деяких членів структури msqid_ds вказує ЬіЕ на повідомлення структурі даних черги, оновлення також його msg_ctime членів. Наступні члени структури можуть бути перевірені:
msg_perm.uid msg_perm.gid msg_perm.mode / * тільки низькою 9-біт * / msg_qbytes
Викликає процес повинен мати відповідний (можливо, корінь) привілеї або його ефективної ідентифікатор користувача повинен бути в автора (msg_perm.cuid) або власника (msg_perm.uid) черги повідомлень. Відповідні (можливо, корінь) привілеї, необхідні для підвищення msg_qbytes цінність понад параметрів системи MSGMNB.
IPC_RMID Негайно приберіть черги повідомлень і пов'язаних з ним структури даних, пробуджуючи все це чекає читача і письменника процеси (з поверне помилку і помилку встановлений EIDRM). Викликає процес повинен мати відповідний (можливо, корінь) привілеї або його ефективної ідентифікатор користувача повинен бути або у автора або власника черги повідомлень.
RETURN VALUE
При успішному завершенні повертається значення 0, в іншому випадку -1 помилка з вказівкою помилки.
7. SHMGET
SYNOPSIS
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, int size, int shmflg);
DESCRIPTION
shmget () повертає ідентифікатор поділюваної сегмента пам'яті, пов'язані з аргументу ключ. Новий сегмент поділюваної пам'яті з розміром, рівним круглий до розміру до величини, кратної PAGE_SIZE, буде створено, якщо ключ має значення IPC_PRIVATE або ключ не IPC_PRIVATE, немає спільної пам'яті сегмента, пов'язані з ключем, і IPC_CREAT стверджується в shmflg (тобто shmflg IPC_CREAT і не дорівнює нулю).
Значення shmflg складається з:
IPC_CREAT для створення нового сегменту. Якщо цей прапор не використовується, то shmget () буде знайти сегмент, пов'язаних з основними, перевірте, якщо користувач має дозвіл на отримання Шміда пов'язаних з сегменту, а також забезпечити сегмента не відзначений для знищення.
IPC_EXCL використовується з IPC_CREAT забезпечити провал, якщо сегмент існує.mode_flags (з мінімальною 9 біт) вказівки дозволів, що надаються власника, групи і всього світу. В даний час дозвіл на виконання не використовуються системою.
SYSTEM CALLS
fork() After a fork() the child inherits the attached shared memory segments.
exec() After an exec() all attached shared memory segments are detached (not destroyed).
exit() Upon exit() all attached shared memory segments are detached (not destroyed).
RETURN VALUE
Дійсний ідентифікатор сегмента, Шміда, повертається у випадку успіху, -1 у випадку помилки.
8. SHMAT / SHMDT
SYNOPSIS
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);
DESCRIPTION
Функція Шмат надає загальному сегменту пам'яті, визначених Шміда в адресному просторі викликає процесу. Кріплення адреса задається shmaddr з одним з наступних критеріїв.
Якщо shmaddr є NULL, то система вибирає підходящий (не використовується) адреса, за яким для підключення сегменту.
Якщо shmaddr НЕ NULL і прапор SHM_RND стверджується в shmflg, прикладіть відбувається на адреси, рівного shmaddr округляється до найближчого числа, кратного SHMLBA. В іншому випадку повинні бути shmaddr сторінки відповідність адреса, за якою надають відбувається.
Якщо SHM_RDONLY стверджується в shmflg, сегмент додається для читання і цей процес повинен мати права на читання для цього сегмента. В іншому випадку сегмент додається для читання і запису, і процес має прочитати і написати дозвіл на сегменті. Існує поняття не тільки для запису розділяється сегменту пам'яті.
Битий значення викликає процесу не змінюється прикласти. Сегмент буде автоматично окремо в процесі виходу. Тому ж сегменті, може бути приєднаний як читати і як читання і запис 1 і більше разів, в адресному просторі процесу.
Про успішну Шмат дзвінка система оновлень членів shmid_ds структурі, приєднаної до розділяється сегменту пам'яті наступним чином: shm_atime встановлюється в поточний час. shm_lpid встановлюються в процесі ідентифікації викликає процесу. shm_nattch збільшується на 1.
Зверніть увагу, що вдасться докласти також, якщо сегмент поділюваної пам'яті позначається для видалення.
Функція shmdt відокремлює сегмента поділюваної пам'яті знаходиться за адресою, вказаною в shmaddr з адресного простору викликає процесу. До-бути-окремий сегмент повинен бути в даний час з додатком shmaddr дорівнює значенню, повернутий належать йому Шмат дзвінка.
Про успішну shmdt дзвінка система поновлення членів shmid_ds структурі, асоційованої з сегмент поділюваної пам'яті наступним чином: shm_dtime встановлюється в поточний час. shm_lpid встановлюються в процесі ідентифікації викликає процесу. shm_nattch зменшується на 1. Якщо з'ясується, 0 і відрізка буде відзначено для видалення,
сегмент видаляється.
Окупованій території в просторі користувача викликає процесу не нанесених на карту.
SYSTEM CALLS
fork() After a fork() the child inherits the attached shared memory segments.
exec() After an exec() all attached shared memory segments are detached from the process.
exit() Upon exit() all attached shared memory segments are detached from the process.
RETURN VALUE
У разі невдачі обидві функції повертають -1 помилка з вказівкою помилки. На повертає успіх Шмат адреса додається сегмент поділюваної пам'яті, і shmdt повертає 0.
9. SHMCTL
SYNOPSIS
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
DESCRIPTION
Наступні CMDS доступні:
IPC_STAT використовується для копіювання інформації про сегмент поділюваної пам'яті в буфер BUF. Користувач повинен мати доступ на читання до розділяється сегменту пам'яті.
IPC_SET застосовується для зміни користувачем вніс в рідині, ГУР, або режим членів shm_perms області. Тільки самий нижній 9 біт режимі використовуються. Shm_ctime членів також оновлюється. Користувач повинен бути власником, творцем, або супер-користувача.
IPC_RMID використовується для позначення цього сегмента, оскільки знищені. Це фактично буде знищений після останнього звернення. (Тобто, коли shm_nattch член пов'язаних shmid_ds структури дорівнює нулю.) Користувач повинен бути власником, творцем, або супер-користувача.
Користувач повинен забезпечити, що сегмент, в кінцевому рахунку знищені, у противному випадку його сторінок, які були звинувачувати в залишиться в пам'яті і свопу.
Крім того, супер-користувач може заборонити або дозволити заміна сегмент поділюваної пам'яті з наступними CMDS: (Linux тільки)
SHM_LOCK запобігає заміна розділяється сегменту пам'яті. Користувач повинен провини в будь-якої сторінки, які повинні бути присутніми після замок включений.
SHM_UNLOCK дозволяє сегмент поділюваної пам'яті, помінялися.
IPC_INFO, SHM_STAT і закликає SHM_INFO контролю використовуються МПХБ (8) програми з надання інформації про виділені ресурсів. У майбутньому вони можуть бути змінені в міру необхідності або переміщені в процес інтерфейс файлової системи.
RETURN VALUE
0 повертається у випадку успіху, -1 у випадку помилки.
10. SEMGET
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
DESCRIPTION
Ця функція повертає ідентифікатор семафора безлічі пов'язаних з аргумент ключа. Новий набір семафорів nsems буде створено, якщо ключ має значення IPC_PRIVATE або якщо існуючий набір семафора, пов'язані з ключем і IPC_CREAT стверджується в semflg (тобто semflg IPC_CREAT і не дорівнює нулю).
Присутність у semflg полів IPC_CREAT і IPC_EXCL відіграє ту ж роль, що стосується існування семафорів, як наявність O_CREAT і O_EXCL в режимі аргумент відкритих (2) системний виклик, тобто функція не semget якщо semflg стверджує, як і IPC_CREAT IPC_EXCL і семафорів вже існує для ключа.
Після створення, молодші 9 біт аргументу semflg визначити права доступу (для власника, групи та ін) для набору семафорів. Ці біти мають той самий формат, і той же зміст, як аргумент в режимі відкритого (2) або Creat (2) системних викликів (хоча права на виконання не мають сенсу для семафорів, і запис означає дозвіл на зміну значення семафора) .
RETURN VALUE
У разі успіху, що повертається значення буде ідентифікатор семафора безлічі (невід'ємне ціле число), в іншому випадку повертається -1, із зазначенням помилка помилку.
11. SEMOP
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semop(int semid, struct sembuf *sops, unsigned nsops);
DESCRIPTION
Набір операцій, що містяться в подачок виконується атомарному, тобто операції виконуються в той же час, і лише якщо всі вони можуть одночасно виконуватися. Поведінка системи виклику, якщо не всі операції можуть бути виконані негайно залежить від наявності IPC_NOWAIT прапор в окремих областях sem_flg, як зазначено нижче.
Кожна операція виконується на sem_num-й семафора з семафорів, де перший семафор з безлічі семафорів 0. Існують три види діяльності, розрізняються за значенням sem_op.
Якщо sem_op є позитивним цілим числом, операція додає це значення семафора значення (semval). Крім того, якщо SEM_UNDO стверджується, для цієї операції, система оновлень процес скасування оцінок (semadj) для цього семафора. Ця операція завжди можете продовжити - він ніколи не змушує процес чекати. Викликає процес має змінити дозвіл на семафорів.
RETURN VALUE
У разі успіху повертає системний виклик 0, в іншому випадку вона повертає -1 помилка з вказівкою помилки.
12. SEMCTL
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semctl(int semid, int semnum, int cmd, ...);
DESCRIPTION
Допустимі значення для УМК є:
IPC_STAT Копіювання інформації з семафорів структури даних у структуру, на яку вказує arg.buf. Semnum аргумент ігнорується. Викликає процес повинен мати доступ на читання привілеї семафорів.
IPC_SET Створити значення деяких членів структури semid_ds вказує arg.buf на семафор структури набору даних, оновлення також його sem_ctime членів. Розглянуто членів від користувача поставляється semid_ds структури, на яку вказує arg.buf є sem_perm.uid sem_perm.gid sem_perm.mode / * тільки низькою 9-біт * /
Ефективного код користувача викликає процесу, повинно бути, супер-користувач, або матчі творець або власник набору семафорів. Semnum аргумент ігнорується.
IPC_RMID Негайно видаліть семафорів і структуру даних пробудження всіх зупинених процесів (з поверне помилку і помилку встановлений EIDRM). Ефективного код користувача викликає процесу, повинно бути, супер-користувач, або матчі творець або власник набору семафорів. Semnum аргумент ігнорується.
GETALL Повернутися semval для всіх семафорів множини в arg.array. Semnum аргумент ігнорується. Викликає процес повинен мати доступ на читання привілеї семафорів. GETNCNT Системний виклик повертає значення semncnt для semnum-й семафора безлічі (тобто число процесів, що очікують збільшення semval для semnum-й семафора безлічі). Викликає процес повинен мати доступ на читання привілеї семафорів.
GETPID Системний виклик повертає значення sempid для semnum-й семафора безлічі (наприклад, PID процесу, який виконав останній дзвоник для semop semnum-й семафора безлічі). Викликає процес повинен мати доступ на читання привілеї семафорів.
GETVAL Системний виклик повертає значення semval для semnum-й семафорів множини. Викликає процес повинен мати доступ на читання привілеї семафорів.
GETZCNT Системний виклик повертає значення semzcnt для semnum-й семафора безлічі (тобто число процесів, що очікують на semval з semnum-й семафора безлічі стати 0). Викликає процес повинен отримати доступ на читання привілеї семафорів.
SETALL Встановити semval для всіх семафорів безлічі використанням arg.array, оновлення також sem_ctime член semid_ds структурі, приєднаної до набору. Скасування запису видаляються змінених семафори у всіх процесах. Процеси спати на очікування черги розбудили, якщо деякі semval стає 0 або збільшується. Semnum аргумент ігнорується. Викликає процес має змінити права доступу на семафорів.
SETVAL Встановіть значення для semval arg.val для semnum-й семафорів безлічі, оновлення також sem_ctime член semid_ds структурі, приєднаної до набору. Скасування запису видаляються змінених семафори у всіх процесах. Процеси спати на очікування черги розбудили, якщо semval стає 0 або збільшується. Викликає процес має змінити права доступу на семафорів.
RETURN VALUE
У разі невдачі повертає -1 semctl помилка з вказівкою помилки. В іншому випадку системний виклик повертає невід'ємне значення в залежності від CMD наступним чином:
GETNCNT Значення semncnt.
GETPID Значення sempid.
GETVAL Значення semval.
GETZCNT Значення semzcnt.
Всі інші CMD повертаються значень 0 в разі успіху.
13. Бiблiотечнa функцiя FTOK
SYNOPSIS
# include <sys/types.h>
# include <sys/ipc.h>
key_t ftok(const char *pathname, int proj_id);
DESCRIPTION
Ftok функція використовує особистість файл з ім'ям в заданому шляху (які повинні ставитися до існуючої, доступною файлу) і 8-ми значущих бітів proj_id (який повинен бути відмінним від нуля), щоб створити key_t типу System V IPC ключ, відповідний для використання з msgget (2), semget (2), або shmget (2).
Отримане значення є однаковим для всіх шляху до файлів, що ім'я того ж файлу, при тому ж значенні proj_id використовується. Повертане значення має бути інакше, якщо (одночасно існуючі) файли чи проекту ідентифікатори відрізняються.
RETURN VALUE
У разі успіху згенерованої значення key_t повертається. У разі невдачі повертається -1, із зазначенням помилка помилка як для статистики (2) системний виклик.
Висновок: в даній лабораторній роботі я ознайомився з основнимим системними викликами, провів опис та аналіз данних функцій операційної системи.