.: [предыдущая | оглавление | следующая] :.

3.5 Связь с операционной системой

Современные компьютеры оснащены мощным программным обеспечением, обеспечивающим эффективную производительность и управление вычислительным процессом. Это означает, что когда программист создает свою программу, он должен учитывать, что его программа будет только частью более сложной программы. Обычно говорят, что прикладная программа (программа пользователя) в процессе выполнения взаимодействует с операционной системой. Операционная система - это совокупность программ, создающая сервис по вводу и выводу информации на конкретные устройства, а также осуществляющая управление этими устройствами. Кроме того, она обеспечивает поддержку файловой системы и управление задачами. Здесь важно отметить, что прикладная программа сама не вводит и не выводит информацию, а использует возможности операционной системы(ОС). Обычно та часть ОС, которая отвечает за ввод/вывод информации, называют BIOS (Basic Input Output System).

Механизм взаимодействия с BIOS основан на так называемых программных прерываниях. Мы уже вскользь говорили о прерываниях (см. раздел «Модель вычислений»). Однако не рассматривали программных прерываний. Ввод/вывод обычно организован асинхронно., т.е. если устройство вводит или выводит информацию, то это делается на основе аппаратного прерывания, с которым связана некоторая программа, называемая драйвером устройства. Этот драйвер обычно пишет или читает информацию в специально выделенном участке ОП, называемом буфером. Программное прерывание - это приказ BIOS прочитать или записать информацию в этот буфер. Рассмотрим пример, клавиатура - устройство посимвольного ввода информации, для нее существует специальное прерывание и драйвер. Когда пользователь нажимает клавишу, происходит аппаратное прерывание, текущая программа прерывается и выполняется драйвер клавиатуры, который читает код нажатой клавиши из регистра данных устройства и записывает этот код в выделенный буфер, который называется кольцевым. После того, как код символа помещен в кольцевой буфер, возобновляется выполнение прерванной программы. Каким образом, прикладная программа может прочитать код нажатой клавиши, как раз это и делает программное прерывание. Т.е. прикладная программа дает приказ операционной системе прочитать код нажатой клавиши из кольцевого буфера и вернуть этот код прикладной программе.

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

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

.: [предыдущая | оглавление | следующая] :.