Laboratornaya_Rabota_5
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РФ Федеральное учреждение высшего профессионального образования Московский технический университет связи и информатики
Кафедра системного программирования
Лабораторная работа 5
«РАБОТА С ФАЙЛАМИ И КАТАЛОГАМИ ОС GNU/LINUX. ПОСТРОЕНИЕ КАРТЫ ВИРТУАЛЬНОЙ ПАМЯТИ ПРОЦЕССА»
по дисциплине:
Операционные системы
Выполнил студент
группы БФИ 1901
Рахимов Е.К.
Проверила:
Алексанян Диана Ашотовна
Москва 2021
Цель работы:
построить карту виртуальной памяти;
изучить основные системные вызовы и функции в ОС GNU/LINUX для работы с файлами и каталогам;
Задания на лабораторную работу
1. Изучить теоретическую часть лабораторной работы.
2. Написать программу, строящую карту виртуальной памяти для процесса, идентификатор которого передается в качестве аргумента при запуске программы. Карта памяти должна быть отображена на экране или сохранена в текстовый файл (имя файла получать в качестве аргумента при запуске, создавать файл в одной директории с программой), предусмотреть наличие файла с указанным именем в директории и предложить пользователю выбор: заменить файл на новый или переименовать результирующий файл. Предусмотреть контроль ошибок открытия/закрытия/чтения файла.
3. Написать программу вывода содержимого текстового файла на экран (в качестве аргумента при запуске программы передаётся имя файла, второй аргумент (N) устанавливает вывод по группам строк (по N –строк) или сплошным текстом (N=0)). Для вывода очередной группы строк необходимо ожидать нажатия пользователем любой клавиши. Для чтения или записи файла использовать только функции посимвольного ввода-вывода getc(), putc(), fgetc(), fputc(). Предусмотреть контроль ошибок открытия/закрытия/чтения/записи файла
Ход выполнения работы
Задание 1
В первой программе нам нужно было написать программу, строящую карту виртуальной памяти для процесса, идентификатор которого передается в качестве аргумента при запуске программы. Карта памяти была сохранена в текстовый файл. Имя файла получал в качестве аргумента при запуске, создавал файл в одной директории с программой. Предусмотрел наличие файла с указанным именем в директории и предложил пользователю выбор: заменить файл на новый или переименовать результирующий файл.
Рисунок 1- Файл «Zad1.c»
Рисунок 2- Файл «Zad1.c»
Компилирую файл(Рисунок 3)
Рисунок 3 – Компилирование файла «Zad1.c»
Смотрю pid процесса при помощи команды “ps -x”, чтобы в дальнейшем использовать в программе. Далее запускаю программу с определенными параметрами: название файла с форматом и пид процесса.(Рисунок 4-5)
Рисунок 4 – Результат выполнения команды «ps -x» и запуск файла «Zad1.c»
Рисунок 5 – Результат выполнения команды «ps -x» и запуск файла «Zad1.c»
Задание 2
В второй программе нужно написать вывод содержимого текстового файла на экран (в качестве аргумента при запуске программы передаётся имя файла, второй аргумент (N) устанавливает вывод по группам строк (по N –строк) или сплошным текстом (N=0)). Для вывода очередной группы строк ожидал нажатия пользователем любой клавиши. Для чтения или записи файла использовал только функции посимвольного ввода-вывода getc(), putc(), fgetc(), fputc(). Предусмотрел контроль ошибок открытия/закрытия/чтения/записи файла(Рисунок 6-8)
Рисунок 6 – Код файла «Zad2Vivod.c»
Компилирую и запускаю файл с определенными параметрами(Рисунок 7-8)
Рисунок 7 – Компилирование и запуск
Рисунок 8 – Вывод программы
Вывод
В ходе данной лабораторной работы я изучил принципы работы с файлами и каталогами ос gnu/linux, а также научился строить карты виртуальной памяти процесса.