Шпаргалка по "Программированию и компьютерам"

Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка

Краткое описание

Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"

Содержимое работы - 12 файлов

1 алгоритмич языки и программирование.doc

— 79.00 Кб (Открыть файл, Скачать файл)

2 Технология программирования.doc

— 81.00 Кб (Открыть файл, Скачать файл)

3 базы данных. управл бд ..doc

— 227.00 Кб (Открыть файл, Скачать файл)

4 информационные технологии.doc

— 131.50 Кб (Открыть файл, Скачать файл)

5 проектирование АСОИУ.doc

— 861.00 Кб (Открыть файл, Скачать файл)

6 Дискретная математика.doc

— 91.50 Кб (Открыть файл, Скачать файл)

6 Математическая логика и теория алгоритмов.doc

— 92.50 Кб (Открыть файл, Скачать файл)

7 МО+ТПР.doc

— 177.50 Кб (Открыть файл, Скачать файл)

8 системное программное обеспечение. операц системы.doc

— 140.00 Кб (Скачать файл)

 Наконец,  для указателя на следующий блок внутри блока нужно выделить место. Емкость блока, традиционно являющаяся степенью двойки (многие программы читают и пишут блоками по степеням двойки), таким образом,  перестает быть степенью двойки, т.к. указатель отбирает несколько байтов.

 Поэтому метод связного списка обычно не используется в чистом виде.

 Связный список с использованием индекса

 Недостатки  предыдущего способа могут быть устранены путем изъятия указателя  из каждого дискового блока и  помещения его в индексную  таблицу в памяти, которая называется FAT (file allocation table).  Этой схемы придерживаются многие ОС (MS-DOS, OS/2, MS Windows и др.)

 По-прежнему,  существенно, что запись в директории  содержит только ссылку на первый блок и т.о.  можно локализовать файл независимо от его размера.

 Минусом этой схемы может быть необходимость поддержки в памяти этой довольно большой таблицы.

 Индексные узлы

 Четвертый и последний метод  выяснения  принадлежности блока к файлу - связать  с каждым файлом маленькую таблицу, называемую индексным узлом (i-node), которая  перечисляет атрибуты и дисковые адреса блоков файла (см. рис 12.4). 

 Каждый  файл имеет свой собственный индексный  блок,  который содержит адреса блоков данных.  Запись в директории, относящаяся  к файлу, содержит адрес индексного блока.  По мере заполнения файла указатели на блоки диска в индексном узле принимают осмысленные значения.

 Индексирование  поддерживает прямой доступ к файлу, без ущерба от внешней фрагментации.

 Первые  несколько адресов блоков файла  хранятся непосредственно в индексном  узле, т.о. для маленьких файлов индексный узел хранит всю необходимую  информацию, которая копируется с диска в память,  в момент открытия файла. Для больших файлов один из адресов  индексного узла  указывает на блок косвенной адресации.  Этот блок содержит  адреса дополнительных блоков диска.  Если этого недостаточно используется  блок двойной косвенной адресации, который содержит адреса блоков косвенной адресации. Если и этого недостаточно используют блок тройной косвенной адресации.

 Эту схему  использует Unix (а также  файловые системы HPFS, NTFS и др.). Такой подход позволяет при фиксированном, относительно небольшом размере индексного узла,  поддерживать работу с файлами, размер которых может меняться от нескольких байт до нескольких гигабайт.  Существенно, что для маленьких файлов используется только прямая адресация, обеспечивающая максимальную производительность.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 5. Системы программирования. Принципы построения  и функционирования. Компиляторы. Ассемблеры, трансляторы. Загрузчики.

 

 Под интерфейсом  ОС понимаются специальные интерфейсы системного программирования, которые предназначены для выполнения следующих задач:

 1) Управление  процессами, включающее в себя: запуск, остановку, завершение процесса, задание и изменение приоритета, взаимодействие процессов между собой (поддержка семафоров, бьютексов и т.д).

 2) Управление  памятью, включающее: считывание  блока памяти, освобождение, изменение  параметров доступа и т.д

 3) Управление  в/в, включающее: обработку запросов  к виртуальным устройствам, файловые операции и т.д

 Что касается пользовательского интерфейса ОС, то он реализуется с помощью специальных  программных модулей, которые получают команду и интерпретируют ее в  выводы понятные ОС. Таким интерпретатором  может быть, например, command.com в MSDOS, SHELL в Unix системах.

 Задача  интерпретатора провести лексический  и синтаксический анализ команды, а  затем либо самостоятельно выполнить  команду, либо обратиться к другим модулям  ОС, используя определенный интерфейс API (интерфейс прикладного программирования).

 По сути API представляет собой набор функций, которые могут использоваться как  при разработке прикладных программ, так и с системными модулями самой  ОС.

 Существует  несколько уровней реализации API:

 1) На уровне ОС, это означает что объектный код, выполняющий функции API, входит в состав ядра ОС. При таком способе достигается максимальная эффективность выполнения функций, поскольку функции будут выполняться в привилегированном режиме.

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

 Примером  может служить набор функций WinAPI. Программы написанные с использованием таких кодов не всегда хорошо выполняются  при запуске в различных версиях ОС.

 2) Реализация  функций API на уровне системы программирования. В данном случае функции представляются в виде специальных библиотек языка программирования.

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

 3) На уровне внешних библиотек. Эти функции поставляются в виде библиотек, процедур и функций созданных сторонним разработчиком и при разработке программы в конкретной системе программирования происходит вызов соответствующей библиотеки. Очевидно что эффективность работы таких функций самая низкая.

 Платформенно-независимый  интерфейс POSIX

 Представляет  собой некий стандарт описания системных  интерфейсов для открытых ОС. Стандарт базируется на Unix системах, но допускается его реализация и в других ОС.

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

 Разработка POSIX имела целью обеспечить переносимость приложений в Unix системах. Считается что если программа написана с соблюдением стандарта POSIX, то она будет выполняться во всех POSIX совместимых ОС. Но на самом деле это требование не выполняется, причина в различных подходах к реализации POSIX интерфейса.

 POSIX включает целую группу стандартов: POSIX 1 – POSIX 12.

 Например, в POSIX.6 описывается системная безопасность, в POSIX.7 – администрирование системы. Помимо этого существует документ POSIX.0, который стандартом не является, а представляет собой рекомендацию по сипользованию.

 Транслятор — это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей программу на результирующем (выходном) языке.

 Отметим следующее.

 1. Сам транслятор является программой, т.е. транслятор — это часть программного обеспечения (ПО), он представляет собой набор машинных команд и данных и выполняется компьютером, как и все прочие программы в рамках операционной системы (ОС). Все составные части транслятора представляют собой динамически загружаемые библиотеки или модули этой программы со своими входными и выходными данными.

 2. Исходными  данными для работы транслятора  служит программа на исходном  языке программирования — некоторая  последовательность предложений входного языка. Эта программа называется входной, или исходной, программой. Обычно это символьный файл, но этот файл должен содержать текст программы, удовлетворяющий синтаксическим и семантическим требованиям входного языка. Кроме того, этот файл несет в себе некоторый смысл, определяемый семантикой входного языка. Часто файл, содержащий текст исходной программы, называют исходным файлом.

 3. Выходными  данными транслятора является  программа на результирующем  языке. Эта программа называется  результирующей программой. Результирующая программа строится по синтаксическим правилам выходного языка транслятора, а ее смысл определяется семантикой выходного языка.

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

 Таким образом, компилятор отличается от транслятора  лишь тем, что его результирующая программа всегда должна бить написана на языке машинных кодов или па языке ассемблера. Результирующая программа транслятора, в общем случае, может быть написана на любом языке — возможен, например, транслятор программ с языка Pascal на язык С.

 Интерпретатор — это программа, которая воспринимает исходную программу на входном (исходном) языке и выполняет ее.

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

 В отличие  от трансляторов, интерпретаторы не порождают  результирующую программу — в  этом принципиальная разница между  ними.

 Трансляторы с языка ассемблера («ассемблеры»)

 Определение языка ассемблера

 Язык ассемблера — это язык низкого уровня. Структура и взаимосвязь цепочек этого языка близки к машинным командам целевой вычислительной системы, где должна выполняться результирующая программа. Применение языка ассемблера позволяет разработчику управлять ресурсами (процессором, оперативной памятью, внешними устройствами и т. п.) целевой вычислительной системы на уровне машинных команд. Каждая команда исходной программы на языке ассемблера в результате компиляции преобразуется в одну машинную команду.

 Компилятор  с языка ассемблера зачастую просто называют «ассемблер» или «программа ассемблера».

 Загрузчики занимаются процессом загрузки.

 Загрузка - это процесс копирования образа программы с жесткого диска в  основную память. Таким образом, программа  переходит в состояние, когда  она уже может работать. В некоторых  случаях загрузку программы может сопровождать выделение места или сопоставление виртуальных адресов страницам на диске.

9 методы и средства защиты информации.doc

— 216.00 Кб (Скачать файл)

Практика МО+ТПР.doc

— 307.50 Кб (Открыть файл, Скачать файл)

Практика МС+СИИ.doc

— 205.00 Кб (Открыть файл, Скачать файл)

Информация о работе Шпаргалка по "Программированию и компьютерам"