Техника - молодёжи 1995-05, страница 43

Техника - молодёжи 1995-05, страница 43

HELP

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

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

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

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

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

Александр ГУСЕВ

ПРОЦЕДУРНЫЕ ВОПРОСЫ

зователем роисходила посредством ввода директив с указанием необходимых операций и параметров областей амяти (если таковые подразумевались), на ример, директива "S 4000,100" могла указывать мони ору записа ь область памяти с начапь ным адресом 4000Н и длиной 100Н байт на магнито фон. Программа монитора обычно зашивалась в ПЗУ и олучапа управление сразу после включения компьютера, что было удобно для пользователя.

Следующи! шагом в развитии ОС явилось использование в их качестве языков высокого уровня, скажем, Бейсика. Подобные языки обычно имею команды чтения/записи физическои памяти компьютера и с особнь вьзывать подпрограммы в машинных кодах, поэтому принцип связи пользователя с ресурсами машины вполне соблюдав ся Этот тип квази-ОС наиболее прижился в бытовьх микрокомпьютерах, ориентированных на работу с магнитофоном (например, в Спектруме-48, Коммодоре-64 и т.п.).

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

В 1975 году Г. Килделом специально для компьютеров на базе микропроцессора lntel-8080, поддерживающих работу с дисководом, была создана дисковая операционная система СР/М, в дальнейшем ставшая основой для разработки популярной ОС MS-DOS. Ключевым понятием СР/М является файл — некоторое количество данных, определяемых при работе с ними одним именем. Введение поня ия файла позволило заменить специфические машин-нье операции с дисководом на более приемлемые для человека. ОС СР/М была поде ена на две части — собственно дисковую операционную систему (BDOS — Basic Disk Operatng System) занимавшую ся учетом и распределением файлов на пространстве диска, и систему ввода/вывода (BIOS - Basic Input Output System), которая стала связующим звеном между дисковой ОС и "железом" компьютера. Первая часть ДОС мо ла быть перенесена на любой компьютере подходящим процессором без изменений, а вторая (по размеру относи ельно небольшая) специально программировалась для каждой машины с учетом ее аппаратных особенностей. Именно совместимость СР/М со многими ПК, а также ряд других особенностей, таких, например, как поддержка транзитных, или внешних (т.е. записанных на диске под своими именами), команд, сделала ее столь популярной среди пользователей. Что же касается прямой наследницы СР/М, ее знает всякий, кто способен прочесть выражение ай-би-эм-совместимый компью ер' без запинки: MS-DOS покорила весь мир.

С появлениен процессоров следующего поколения, поддерживающих мультизадачное^ и защиту памяти ([аких на ример как lntel-80286 и выше), в эволюции ОС наступил качественно новый этап. Системы, специально созданные под такие ЦП (например, знаменитая графическая среда Windows), помимо множества других преимуществ, предоставляют пользователю возможность одновременно обрабатывать несколько задач (строго говоря, их обработка происходит, конечно же, последовательно, но многократное за короткий промежуток времени переключение системы с одной задачу на другую создает иллюзию параллельное и). Одновременная обработка задач очень полезна при работе с медленными процессами, скажем, такими, как обмен данными через модем. Пропускная с особность телефонной линии обычно не превышает 2400 бод (300 байт в секунду), поэтому пересылка объемистого файла может за

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

Что касается недорогих домашних компьютеров, тут особой оригинальное ью и гибкостью отличается ОС EXOS, под управлением которой работав г ПК "Энтерпрайз". Само ее название (EXtention Operating System) говорит о том, что эта ОС способна к расширению. В частности, на ней базируются дисковые ОС: firmware EXDOS и software IS-DOS (модифицированный вариант СР/М) — обе совместимы по формату записи на диск с MS-DOS. EXOS позволяет также эмулировать мониторы менее сложных микрокомпьютеров, основанных на Z80, например, Спектрума-48. Подробнее об этой системе поговорим несколько позднее, а пока приведем ее блок-схему:

Обозначения: EXOS — системный вызов EXOS, ACT — опрос системных расширений с кодами действия, CHANNEL—обмен данными через каналы.

В заключение предлагается небольшая резидентная рограмма, выводящая последовательно в статусную строку 40 байт информации: о текущем состоянии всех регистров МП Z80, а также о постраничном и системном распределении сегментов памяти (выводится в следующем формате: N — количество неисправных сегментов, W — рабочих, S — зарезервированных системой, D — драйверами пользователя, U — пользователем, F — число свободных сегментов, В — номер разде ленного сегмента (В=0, если такового нет), UB — значение границы USER/EXOS). После инс алля ции исходную программу на Бейсике можно удалить. Вывод инициируется одновременным нажатием клавиш ALT и ENTER, продолжение вывода информации и выход в прикладную программу осуществляется перемещением встроенного джойстика вправо.

100 ALLOCATE 252

110 CODE l=HEX$("01,3D,F5,3A,38,00, FE,F5,28,04,F1,C3,38,00,F1,E3, 22,E3,3C,E3,ED,73,E1,3C,31 ,FF, 3C,F5,C5,D5,E5,46,DB,B2,4F,C5, 3E,FF,D3,B2,3A,F3,BF,F6,07,D3, B5,DB,B5,E6,C0,28,38,C1,79,D3, B2,E1 ,D1,C1,F1,ED,7B,E1,3C,C3, 38,00") 120 CODE T="

AFBCDEHLM2A'B'D'H'13IRIXIYPCSP-NWSDUFBUB"&CHR$(0) 130 CODE =HEX$("08,D9,F5,C5,D5,E5, D9,08,DB,B1,47,DB,B3,4F,C5,ED, 57,47, ED,5F,4F,C5,DD,E5, FD, E5, 31 ,D7,3C,3E,AA,D3,B4,F7,16,ED, 53,D7,3C, 11 ,D9,3C,F7,14,1 E,FF, D5,21 ")&WORD$( 15615+T-l) 140 CODE =HEX$("06,05,ED,5B,F6,BF, 7E, 12,13,23,7E,12,13,23,3E ID, 12,13,OE,04,E3,CB,41,20,01,2B, 7E,2O,04,07,07,O7,07,E6,0F,FE, 0A,38,02,C6,07,C6,30,12,13,0D, 20,E5,E3,3E,2C,12,13,10,CF,DB, B5,E6,04,20,FA,10,FE,OD,20,FB, BE,20,BB,31 ,F5,3C,C3,34,3D") 150 CODE S=HEX$("01 ")&WORD$(S-l)& HEX$("11,FF,3C,21")&WORD$(l)& HEX$("ED,B0,3E,3C,ED,47,ED,5E, C9")

160 CALL USR(S,0) ■

ТЕХНИКА-МОЛОДЕЖИ 5 ' 9 5

25