Работа с файловой системой

Системное программное обеспечение ЭВМ

Лабораторный практикум

для студентов специальности 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).

Наши рекомендации