Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка
Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"
Наконец, для указателя на следующий блок внутри блока нужно выделить место. Емкость блока, традиционно являющаяся степенью двойки (многие программы читают и пишут блоками по степеням двойки), таким образом, перестает быть степенью двойки, т.к. указатель отбирает несколько байтов.
Поэтому метод связного списка обычно не используется в чистом виде.
Связный список с использованием индекса
Недостатки
предыдущего способа могут быть
устранены путем изъятия
По-прежнему, существенно, что запись в директории содержит только ссылку на первый блок и т.о. можно локализовать файл независимо от его размера.
Минусом этой схемы может быть необходимость поддержки в памяти этой довольно большой таблицы.
Индексные узлы
Четвертый и последний метод выяснения принадлежности блока к файлу - связать с каждым файлом маленькую таблицу, называемую индексным узлом (i-node), которая перечисляет атрибуты и дисковые адреса блоков файла (см. рис 12.4).
Каждый файл имеет свой собственный индексный блок, который содержит адреса блоков данных. Запись в директории, относящаяся к файлу, содержит адрес индексного блока. По мере заполнения файла указатели на блоки диска в индексном узле принимают осмысленные значения.
Индексирование поддерживает прямой доступ к файлу, без ущерба от внешней фрагментации.
Первые несколько адресов блоков файла хранятся непосредственно в индексном узле, т.о. для маленьких файлов индексный узел хранит всю необходимую информацию, которая копируется с диска в память, в момент открытия файла. Для больших файлов один из адресов индексного узла указывает на блок косвенной адресации. Этот блок содержит адреса дополнительных блоков диска. Если этого недостаточно используется блок двойной косвенной адресации, который содержит адреса блоков косвенной адресации. Если и этого недостаточно используют блок тройной косвенной адресации.
Эту схему использует Unix (а также файловые системы HPFS, NTFS и др.). Такой подход позволяет при фиксированном, относительно небольшом размере индексного узла, поддерживать работу с файлами, размер которых может меняться от нескольких байт до нескольких гигабайт. Существенно, что для маленьких файлов используется только прямая адресация, обеспечивающая максимальную производительность.
5. Системы программирования. Принципы построения и функционирования. Компиляторы. Ассемблеры, трансляторы. Загрузчики.
Под интерфейсом ОС понимаются специальные интерфейсы системного программирования, которые предназначены для выполнения следующих задач:
1) Управление
процессами, включающее в себя: запуск,
остановку, завершение
2) Управление памятью, включающее: считывание блока памяти, освобождение, изменение параметров доступа и т.д
3) Управление в/в, включающее: обработку запросов к виртуальным устройствам, файловые операции и т.д
Что касается
пользовательского интерфейса ОС, то
он реализуется с помощью
Задача интерпретатора провести лексический и синтаксический анализ команды, а затем либо самостоятельно выполнить команду, либо обратиться к другим модулям ОС, используя определенный интерфейс API (интерфейс прикладного программирования).
По сути API представляет собой набор функций, которые могут использоваться как при разработке прикладных программ, так и с системными модулями самой ОС.
Существует несколько уровней реализации API:
1) На уровне ОС, это означает что объектный код, выполняющий функции API, входит в состав ядра ОС. При таком способе достигается максимальная эффективность выполнения функций, поскольку функции будут выполняться в привилегированном режиме.
Основным недостатком является полная непереносимость полученной результирующей программы, она будет жестко зависеть от той архитектуры под которую разрабатывалась.
Примером может служить набор функций WinAPI. Программы написанные с использованием таких кодов не всегда хорошо выполняются при запуске в различных версиях ОС.
2) Реализация функций API на уровне системы программирования. В данном случае функции представляются в виде специальных библиотек языка программирования.
Описание этих функций входит в стандарт языка программирования, что обеспечивает более широкую переносимость. Эффективность же выполнения подобных функций становится ниже.
3) На уровне внешних библиотек. Эти функции поставляются в виде библиотек, процедур и функций созданных сторонним разработчиком и при разработке программы в конкретной системе программирования происходит вызов соответствующей библиотеки. Очевидно что эффективность работы таких функций самая низкая.
Платформенно-независимый интерфейс POSIX
Представляет собой некий стандарт описания системных интерфейсов для открытых ОС. Стандарт базируется на Unix системах, но допускается его реализация и в других ОС.
Согласно POSIX стандартизированными являются: задача обеспечения безопасности, задача реального времени, процессы администрирования, сетевые функции и обработка транзакций.
Разработка POSIX имела целью обеспечить переносимость приложений в Unix системах. Считается что если программа написана с соблюдением стандарта POSIX, то она будет выполняться во всех POSIX совместимых ОС. Но на самом деле это требование не выполняется, причина в различных подходах к реализации POSIX интерфейса.
POSIX включает целую группу стандартов: POSIX 1 – POSIX 12.
Например,
в POSIX.6 описывается системная
Транслятор — это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей программу на результирующем (выходном) языке.
Отметим следующее.
1. Сам транслятор является программой, т.е. транслятор — это часть программного обеспечения (ПО), он представляет собой набор машинных команд и данных и выполняется компьютером, как и все прочие программы в рамках операционной системы (ОС). Все составные части транслятора представляют собой динамически загружаемые библиотеки или модули этой программы со своими входными и выходными данными.
2. Исходными
данными для работы
3. Выходными
данными транслятора является
программа на результирующем
языке. Эта программа
Компилятор — это транслятор, который осуществляет перевод исходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера.
Таким образом, компилятор отличается от транслятора лишь тем, что его результирующая программа всегда должна бить написана на языке машинных кодов или па языке ассемблера. Результирующая программа транслятора, в общем случае, может быть написана на любом языке — возможен, например, транслятор программ с языка Pascal на язык С.
Интерпретатор — это программа, которая воспринимает исходную программу на входном (исходном) языке и выполняет ее.
Интерпретатор, так же как и транслятор, анализирует текст исходной программы. Однако он не порождает результирующую программу, а сразу же выполняет исходную в соответствии с ее смыслом, заданным семантикой входного языка. Таким образом, результатом работы интерпретатора будет результат, определенный смыслом исходной программы, в том случае, если эта программа синтаксически и семантически правильная с точки зрения входного языка программирования, или сообщение об ошибке в противном случае.
В отличие от трансляторов, интерпретаторы не порождают результирующую программу — в этом принципиальная разница между ними.
Трансляторы с языка ассемблера («ассемблеры»)
Определение языка ассемблера
Язык ассемблера — это язык низкого уровня. Структура и взаимосвязь цепочек этого языка близки к машинным командам целевой вычислительной системы, где должна выполняться результирующая программа. Применение языка ассемблера позволяет разработчику управлять ресурсами (процессором, оперативной памятью, внешними устройствами и т. п.) целевой вычислительной системы на уровне машинных команд. Каждая команда исходной программы на языке ассемблера в результате компиляции преобразуется в одну машинную команду.
Компилятор с языка ассемблера зачастую просто называют «ассемблер» или «программа ассемблера».
Загрузчики занимаются процессом загрузки.
Загрузка - это процесс копирования образа программы с жесткого диска в основную память. Таким образом, программа переходит в состояние, когда она уже может работать. В некоторых случаях загрузку программы может сопровождать выделение места или сопоставление виртуальных адресов страницам на диске.
Информация о работе Шпаргалка по "Программированию и компьютерам"