Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6262.pdf
Скачиваний:
37
Добавлен:
13.02.2021
Размер:
6.54 Mб
Скачать

61

1.9.2 Список заданий выполняемых работ

Все задания лабораторных работ ориентированы на использование среды разработки Eclipse, изученной в предыдущем подразделе.

Сами проекты данной лабораторной работы должны находятся в директории

/home/upk/lab7.

Чтобы подключить к Eclipse нужную рабочую среду, следует:

выйти из среды разработки Eclipse, если она еще запущена;

правой кнопкой мыши активировать меню значка EclipseC, расположенного

на рабочем столе и выбрать пункт меню «Свойства...»; в результате, откроется окно, показанное на рисунке 1.23 (вкладка «Запуск»);

отредактировать команду запуска, указав рабочую область среды Eclipse в директорию /home/upk/lab7, как показано на рисунке 1.24;

закрыть окно «Eclipse — Свойства» и снова запустить среду разработки,

которая должна содержать проекты лабораторной работы №7, как показано на рисунке 1.25.

Рисунок 1.23 — Окно свойств для запуска Eclipse

62

Рисунок 1.24 — Отредактированное окно свойств для запуска Eclipse

Рисунок 1.25 — Проекты лабораторной работы №7

63

Замечание

Для того, чтобы вызвать в окно редактора нужный исходный текст проекта, необходимо:

в «Project Explorer» раскрыть нужный проект и найти исходный текст программы, как показано на рисунке 1.25;

дважды, левой кнопкой мыши, активировать имя программы, текст которой появится в окне редактора Eclipse.

Общая методика выполнения всех лабораторных работ предполагает, что студент, перед выполнением каждой из них, изучает теоретический материал, изложенный в первом разделе руководства. Такой подход позволяет лучше усвоить все вопросы и успешно подготовиться к сдаче экзамена.

1.9.3 Проблема типов в языке С

Как было объявлено во введении данного методического пособия, вторая часть изучаемой дисциплины предполагает интенсивное использование языка программирования С.

В вводной части первого раздела уточняется, что тема №7, посвященная подсистеме управления вводом-выводом, рассматривается из пространства пользователя через интерфейс API, обеспечиваемый ядром ОС.

Для взаимодействия с интерфейсом API, любая ОС предоставляет библиотеку libc (glibc для ОС Linux), которая создается в момент компиляции ядра ОС и является набором функций, обеспечивающих системные вызовы к этому ядру.

Сама библиотека libc написана на языке С, с возможными вставками на языке assembler, поэтому она, наряду с синтаксисом системных вызовов, создает семантическое представление, которое формируется у программиста и восприниматся им как базовые функции ОС.

Таким образом, язык C, в своем базовом функциональном наполнении, становится синонимом некоторой обобщенной ОС, для которой пришется прикладное программное обеспечение.

Язык С, заменяя аппаратно ориентированный язык assembler, берет на себя все

проблемы, связанные с определением типов данных:

тип char — минимально адресуемый тип данных, соответствующий размер-

ности одного байта, вызывает проблемы кодировок символов и строковых типов данных;

тип int — привязан к размерности базовых целочисленных регистров процес-

сора, поэтому является основным источником проблем, поскольку, исторически, все системные вызовы ОС ориентированы на этот тип данных;

тип float — обычно рассматривается как дополнительный тип данных, свя-

занный с сопроцессором вещественных типов данных; этот тип данных не используется в ядре ОС и может вызвать проблемы только в приложениях.

Использование модификаторов типов short и long только добавляют количество

64

проблем:

модификатор short определяется как тип, который не превышает размерности типа int;

модификатор long определяется как тип, который не меньше, чем размер-

ность типа int.

Таким образом, учитывая плеяду 8, 16, 32 и 64-битных архитектур современных процессоров, следует очень тщательно относиться к размерности типов данных в разрабатываемых прикладных программах.

Цель данного подраздела анализ типов данных, используемых в ОС УПК АСУ. Необходимо:

прочитать учебный материал подраздела 1.1 и осознать важность стандарта POSIX и специфику программирования на языке С;

освоить использование утилиты getconf для целей изунения параметров используемой ОС;

запустить среду разработки Eclipse и, в рамках тестового проекта lab7.1, на

примере текста листинга 1.1, исследовать основные типы языка С для используемой ОС.

Замечание

Особое внимание следует обратить на размерность структуры mbr, которая соответствует структуре MBR блочных устройств.

1.9.4 Анализ структуры MBR блочных устройств

Основу операций работы с файловой системой ОС составляют системные вызовы open(...), close(...), read(...), write(...) и lseek(...), которые:

входят в системную библиотеку libc (glibc) и обеспечивают побайтный обмен данными с файлами ОС;

на основе их формируются функции потокового ввода-вывода, например,

fopen(...), fclose(...), fread(...), fwrite(...), fseek(...) и другие, формирующие библиотеки стандартного ввода вывода ОС.

Для демонстрации примеров работы с операциями системного ввода-вывода выбрана задача анализа структуры MBR блочных устройств, поскольку:

хотя сама MBR и не входит ни в одну файловую систему, но работа с ней необходима для правильного взаимодействия с любым блочным устройством;

структура MBR имеет набор полей, имеющих строгое позиционирование, поэтому неправильное использование типов данных языка С может иметь не-

предсказуемый результат.

Эту часть лабораторной работы следует выполнять в процессе изучения подраздела 1.2 данного руководства.

Изучив описание системных вызовов open(...), close(...), read(...) и write(...), следу-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]