Понятие виртуальной файловой системы
Автор: oktawq • Апрель 14, 2023 • Лабораторная работа • 1,972 Слов (8 Страниц) • 190 Просмотры
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ, ГРАФИЧЕСКОГО МОДЕЛИРОВАНИЯ И КОМРЬЮТЕРНОГО ДИЗАЙНА.
Отчет по лабораторной работе №6
Тема работы «Понятие виртуальной файловой системы»
по дисциплине «Операционные системы»
студента (ки) очного отделения
____2____курса _12002004__группы
_Щеблыкина Дениса Евгеньевича_
Проверил:
Батищев Денис Сергеевич
Белгород
2022
Задание №1
#include <signal.h>
int main(void){
(void)signal(SIGINT, SIG_IGN);
while(1);
return 0;
}
Задание №2
#include <signal.h>
int main(void){
(void)signal(SIGINT, SIG_IGN);
(void)signal(SIGQUIT, SIG_IGN);
while(1);
return 0;
}
Задание №3
#include <signal.h>
#include <stdio.h>
void my_handler(int nsig){
printf("Receive signal %d,
CTRL-C pressed\n", nsig);
}
int main(void){
(void)signal(SIGINT, my_handler);
while(1);
return 0;
}
[pic 1]
Задание №4
#include <signal.h>
#include <stdio.h>
void my_handler1(int nsig){
printf("Receive signal %d,CTRL-C pressed\n", nsig);
}
void my_handler2(int nsig){
printf("Receive signal %d,CTRL-4 pressed\n", nsig);
}
int main(void){
(void)signal(SIGINT, my_handler1);
(void)signal(SIGQUIT, my_handler2);
while(1);
return 0;
}
[pic 2]
Задание №5
#include <signal.h>
#include <stdio.h>
int i=0;
void (*p)(int);
void my_handler(int nsig){
printf("Receive signal %d, CTRL-C pressed\n", nsig);
i = i+1;
if(i == 5) (void)signal(SIGINT, p);
}
int main(void){
p = signal(SIGINT, my_handler);
while(1);
return 0;
}
[pic 3]
Задание №6
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#define WRITE SIGUSR2
void child_handler(int nsig){
printf("Children receive signal %d\n", nsig);
}
int main(){
int fd[2];
size_t size;
char resstring[14];
signal(SIGUSR1, child_handler);
if(pipe(fd) < 0){
printf("Can\'t create pipe\n");
_exit(-1);
} else {
printf("Create pipe successfully %d %d \n", fd[0], fd[1]);
}
int pid = fork();
if(pid == -1){
printf("Can\'t fork child\n");
exit(-1);
} else if (pid == 0) {
pause();
size = read(fd[0], resstring, 14);
if(size < 0){
printf("Can\'t read string\n");
_exit(-1);
}
sleep(1);
printf("Children read s: %s\n",resstring);
size = write(fd[1], "Hello, world!", 14);
if(size != 14){
printf("Can\'t write all string\n");
_exit(-1);
}
sleep(1);
kill(getppid(), SIGUSR1);
close(fd[1]);
close(fd[0]);
printf("Children exit\n");
} else {
size = write(fd[1], "Hello, world!", 14);
if(size != 14){
printf("Parent can\'t write all string %d\n ", size);
_exit(-1);
}
printf("Parent write successfully\n");
sleep(1);
kill(pid, SIGUSR1);
printf("Sent read signal \n");
sleep(1);
pause();
size = read(fd[0], resstring, 14);
if(size < 0){
printf("Can\'t read string\n");
...