Работа с файловой системой
Системное программное обеспечение ЭВМ
Лабораторный практикум
для студентов специальности 1 – 40 02 01
«Вычислительные машины, системы и сети»
всех форм обучения
В 2-х частях
Часть 1
В. А. Супонев, А. А. Уваров, В. А. Прытков
Операционные системы
Минск БГУИР 2008
УДК 004.451(075.8)
ББК 32.973.26-018.2я73
С 40
Р е ц е н з е н т :
Проф. кафедры информационно-вычислительных систем
УО «Военная академия Республики Беларусь»,
канд. техн. наук Д. Н. Одинец
Супонев В.А., Уваров А.А., Прытков В.А
С 40 | Системное программное обеспечение ЭВМ: Лабораторный практикум для студентов специальности 1 – 40 02 01 «Вычислительные машины, системы и сети». В 2 ч. Ч. 1. Операционные системы / В.А.Супонев, А.А.Уваров, В.А.Прытков – Минск : БГУИР, 2008. – 36 с. ISBN 978-985-488-365-6 (ч.1) |
В лабораторном практикуме описаны лабораторные работы по курсу «Системное программное обеспечение ЭВМ». Первая часть практикума посвящена изучению принципов организации операционных систем. В теоретической части каждой лабораторной работы приводятся базовые понятия и концепции, а также основные функции и структуры для их использования на примере операционных систем Windows XP и Linux. Практическая часть каждой лабораторной работы содержит задание на выполнение. |
УДК 004.451(075.8)
ББК 32.973.26-018.2я73
ISBN 978-985-488-365-6 (ч.1) | © Супонев В. А., Уваров А. А., Прытков В. А., 2008 |
ISBN 978-985-488-366-3 | © БГУИР, 2008 |
Содержание
Введение………………………………………………………………………. 4
Лабораторная работа № 1. Знакомство с Linux. Понятие процессов …….. 4
1.1. Знакомство с Linux ……………………………………………………. 4
1.2. Понятие процессов ……………………………………………………. 8
1.2.1. Linux …………………………………………………………….. 9
1.2.2. Windows ………………………………………………………… 10
1.3. Задание ………………………………………………………………… 11
Лабораторная работа № 2. Синхронизация процессов ……………………. 11
2.1. Linux ……………………………………………………………………. 12
2.2. Windows ………………………………………………………………... 16
2.3. Задание …………………………………………………………………. 17
Лабораторная работа № 3. Взаимодействие процессов……………………. 18
3.1. Linux ……………………………………………………………………. 18
3.2. Windows ………………………………………………………………... 20
3.3. Задание …………………………………………………………………. 22
Лабораторная работа № 4. Работа с потоками……………………………… 23
4.1. Linux ……………………………………………………………………. 23
4.2. Windows ………………………………………………………………... 24
4.3. Задание …………………………………………………………………. 26
Лабораторная работа № 5. Асинхронные файловые операции. Динами-
ческие библиотеки …………………………………………………………… 26
5.1. Асинхронные файловые операции……………………………………. 26
5.1.1. Linux ……………………………………………………………... 27
5.1.2. Windows …………………………………………………………. 27
5.2. Динамические библиотеки ……………………………………………. 28
5.2.1. Linux ……………………………………………………………... 28
5.2.2. Windows …………………………………………………………. 29
5.3. Задание …………………………………………………………………. 29
Лабораторная работа № 6. Разработка менеджера памяти ………………… 30
6.1. Общие сведения ………………………………………………………... 30
6.2. Задание ………………………………………………………………….. 31
Лабораторная работа № 7. Эмулятор файловой системы ………………….. 32
7.1. Общие сведения …………………………………………………………. 32
7.2. Задание ………………………………………………………………….. 34
Литература …………………………………………………………………….. 35
ВВЕДЕНИЕ
Лабораторные занятия предполагают выполнение каждого задания в двух вариантах: под Linux и Windows. При этом будем считать, что студенты обладают базовыми навыками программирования под Windows, полученными при обучении на предшествующих курсах. Основные моменты, связанные с программированием под Unix-системы[1], будут рассмотрены в теоретической части каждой лабораторной работы данного практикума.
Лабораторная работа №1
Знакомство с Linux. Понятие процессов
Цель работы: ознакомиться с основами разработки программного обеспечения (ПО) под Linux; научиться создавать процессы под Unix и Windows, освоить базовые принципы работы с ними.
Знакомство с Linux
Для комфортной работы в среде Linux существует большое количество оконных менеджеров (KDE, Gnome, WindowMaker), интерактивных сред разработки (KDevelop, NetBeans, SlickEdit), текстовых редакторов (Kate, KWrite, OpenOffice Writer) и прочих графических средств, принцип работы которых уже стал более-менее привычен Windows-пользователю. Однако для понимания основ функционирования Linux и разработки приложений под Unix-подобные ОС необходимо иметь навыки работы с текстовой консолью и консольными приложениями, такими как ViM, gcc, gdb и др. Выполнение задания лабораторной работы №1 предполагает использование исключительно консольных инструментов. В дальнейшем студент может выбрать наиболее удобную для него среду разработки.
Разработка приложений под Linux предполагает освоение следующих операций:
· работы с файловой системой;
· создания и редактирования текстовых файлов;
· компиляции и линковки программ;
· запуска исполняемых файлов;
· использования встроенных страниц справки (команды man).
Рассмотрим перечисленные операции подробнее.
Работа с файловой системой
Файловые системы, используемые в Linux, организованы по древовидному принципу. В отличие от FAT и NTFS, здесь нет отдельных дисков, обозначаемых литерами. Файловая система имеет один общий корень, обозначаемый символом ‘/’, и иерархию каталогов, исходящую из него. Все дополнительные файловые системы, размещающиеся как на разделах жесткого диска, так и на CD, DVD дисках, флэш-накопителях, дискетах и т.д., встраиваются в общее дерево в виде подкаталогов. Процесс связывания внешней файловой системы и локального каталога называется монтированием (см. команду mount).
Существуют два основных способа адресации файла или директории: относительный и абсолютный. В первом случае файл адресуется относительно текущей директории. При абсолютной же адресации указывается полный путь к файлу от корня файловой системы:
/home/somefile.txt
В данном случае файл somefile.txt находится в каталоге home, который, в свою очередь, расположен в корневой директории. Абсолютный адрес должен начинаться с символа ‘/’ – ссылки на корневой каталог. При указании как абсолютного, так и относительного адресов можно использовать метаобозначения ‘.’ (текущий каталог) и ‘..’ (родительский каталог).
Для работы с файлами и директориями в среде Linux используются следующие основные команды:
pwd | Получение абсолютного адреса текущей директории | |
cd | Смена текущей директории | |
ls | Получение списка файлов и каталогов в текущей директории | |
cp | Копирование файлов или каталогов | |
mv | Перемещение/переименование файлов или каталогов | |
rm | Удаление файлов | |
mkdir | Создание новой директории | |
rmdir | Удаление пустой директории | |
cat | Вывод на экран содержимого файла | |
more (less) | Страничный вывод содержимого файла | |
tail | Вывод на экран n последних строк файла | |
chmod | Смена прав доступа к файлу | |
chown | Смена владельца файла |
Подробное описание этих и других команд можно получить на страницах встроенной помощи (команда man).