ZX Time
#06
09 января 2002 |
|
Форум - МНОГОЗАДАЧНОСТЬ И ОС.
Форум ──────────────────────────────────────── Читатели От редактора: Помнится ещё в самом на- чале один из читателей газеты предлагал организовать в рамках ZXTime некое подо- бие раздела "Форум" из ZX-Ревю. Сначала я это предложение проигнорировал, оправ- дывая себя фразой "А кто ж нам писать-то будет!"... Но времена меняются и сегодня мы уже имеем довольно приличный багаж писем и тем для рассуждений. И теперь я уверен, что читателями не будет проигно- рирована эта инициатива... Да? А тема обсуждения у нас сегодня... МНОГОЗАДАЧНОСТЬ И ОС ────────────────────── Первое слово предоставляется cr0acker2: Вот решил я написать на тему многоза- дачная ОС. Вообще многозадачных ос на спеке пруд-пруди. Самая первая была, са- мая лучшая. Это была ДОМЕН ОС. Она была очень хорошо раскручена. Посмотрите жур- налы 96 годов. Там все только и говорят о Спринтере и Домен ос. Она всовывала другие процессы в уже работающие, но ждущие ввода с клавы. И торможение трдо- совских программ там не было больше 25- 50 процентов. Да к оси прилагалось уйма адаптированных ТР-ДОСОВСКИХ программ. Почему же она проиграла? Я может быть не прав, но основная причина ЛЕНЬ автора. Автор бился об заклад выпустить свою ос для Спринтера. Но вот ни ОС для Спринте- ра, ни ОС для спектрума. Понимаете ОС распостранится только в том случае если она или её часть будут храниться в РОМЕ. Современные ромы вмещают в себя до 512Кб. Только схема нужна такой ром подключить! Теперь вы вот говорите, что ОС должна каждый раз интерпитироваться. Это будет очень смешно. На счёт языка я пришел к такому выводу. Язык должен быть С. С прекрасный язык правда я его не люблю. И это блеф что у спека не хватит мощи работать на С. У меня есть ХТ там стоит МИНИКС и я каждый день пользуюсь gcc. Причём у ХТ 640Кб памяти. А у спека 48- 4096. У нас в стране ходит три вер- сии С: HiSoft C, ещё версия мужика, и вечно не выпускаемая версия RST7 (Дядька RST7 ну и где твой С?). Самая нормальная из них Hisoft C. Но она не получила рас- постранения из-за своей 48сти. Я думаю она станет юзабильной если сделать сле- дущие изменения: поддержку памяти 128- 256-512-1024-4096, интерфейс АЛАСМ-лайк, редактор позволляющий редактировать текст на весь файл в ТРДОСЕ (ACEDIT), поддержка 80 символов по трём схемам, Alco, PENT, 8Profi, возможно сделать поддержку GMX. Это всё нужно в самом компиляторе. В принципе имея такой компилятор можно ничего своего не пи- сать, а портировать тот же МИНИКС. Те- перь железо... Я думаю минимальной кон- фигурацией ОС должно стать 7Mhz-256 при- чем ядро должно поностью, вместе с дра- вами и АПИ разместиться в 128 кб. При 512 она ешё что-нибудь размещает. А при 1-4 мб... В памяти должен рамешаться весь диск, а будет ли он? Теперь на ка- кую машину нужно ориентироваться... Я думаю, что нужно ориентироваться на вы- пускаемые машины. Насколько я знаю сей- час выпускаются две машины: KAY1024 и Спринтер. Нужно делать две версии ОС на кай и Спринтер. Причём чтоб они летали и на кайе, и Спринтере. В Спринтере ос должна работать в режиме Спринтер. Те- перь графическое ядро. Оно должна опи- раться на три графические примочки: 1) основной режим: NO BORDER(Alco scheme); 2) Hardware Multicolor; Эти две примочки может сделать себе каждый. Их сделать очень легко. 2) расширенный режим - это высокое расширение пента и ПРОФИ, а также GMX скорпа. У Спринтера все должно крутиться в 640x200. ОС должна прошиваться в биос. И это аксиома. Иначе она провалится. И последнее - ОС должна иметь тулзу для одаптации ТР-ДОСОВСКИХ програм к ОС. Ну вот и всё, что я хотел сказать... - - - Следующее мнение пришло от Sinus'а из Savers Alliance... В Zx Time 4 была статья о многозадач- ности с примерно таким смыслом: есть две проги в памяти, переключаем их по преры- ванию. Когда-то я так делал: тормозит жутко. imho лучше сделать по принципу вытесняющей многозадачности. Если не ставить прогам приоритеты, то вполне можно реализовать на Спеке. Итак: пред- положим есть некая многозадачная ос (а не pIS-DOS) оконного типа (ex. WICROSOFT(R) MINDOWS(TM), Work Bench, OS/2, MacOS, ...). Далее для наглядности приведу кусок кода: org #c000 ;старт программы с #c000, ;чтобы можно было держать ;много прог в банках ld ix,Wind ;адрес дескриптора окна call wOpenWindow ;открываем окно jp wMain ;и прыгаем в ОС windowFunc ;оконная функция ;) bit wPRESSED,C;нажал ли USER на кноп- ;ку? jp z,wMain ;если нет, то прыгаем в ;ОС cp #ff ;если нажата кнопка "крес- ;тик" (типа "закрыть окно") jp z, wCloseProgramm cp 1 ;первая кнопка (CLOSE) jp z, wCloseProgramm cp 2 jp z, #0000;вторая кнопка ('RST 0') cp 3 call z, changeBorder ;кнопка (BORDER) jp wMain cnangeBorder call rnd out (#fe),a ret rnd ...... Wind db 5,5,10,20 ; x,y,h,l db "Test window",0 ; window title dw windowFunc ;адрес программы- ;обработки db 1,wBUTTON,0,0,"CLOSE",0 ;номер ;элемента, тип ;элемента, x, y, ;name db 2,wBUTTON,0,2,"RST 0",0 db 3,wBUTTON,0,4,"BORDER",0 db #ff ; the end Теперь постараюсь пояснить весь этот бред. Как заметно из проги, теперь не прога главное, о наоборот, окно теперь управляет прогой. Теперь основная идея: ОС по очереди вызывает windowFunc каждо- го окна. Если проге (как и в примере) ничего не надо, то она просто передает управление ОС, иначе быстренько делает то, что надо, и, опять же, передает уп- равление ОС. И так каждое приложение. В результате, если пользователь ничего не делает, то и прога не тратит на него своих драгоценных тактов. А если он на- жал в каком-нибудь окошке кнопку, то только то приложение и среагирует. А ес- ли надо, пока пользователь ничего не де- лает или работает с другим приложением что-то посчитать, то немного изменим windowFunc: windowFunc push af,bc,de,hl ;сохраним ;регистры call myProgCalc ;что-то де- ;лаем pop hl,de,bc,af ;восстановим ;регистры bit wPRESSED,C ... .... Внимание! Чтобы не было таких диких тормозов, как в винде, процедура myProgCalc должна быть как можно быстрее. - - - Ну вот и весь "Форум" на сегодня. Те- перь слово я передаю себе:) (DWT). Сразу хочу сказать - "Форум" - раздел чисто читательский. Можете ставить на обсужде- ние АБСОЛЮТНО любые темы! Какие-то мыш- ления на счёт того или иного также може- те высылать в "Форум". Вообщем, отдаю раздел "ФОРУМ" в ваши руки, читатели. Единственная просьба: если ваше письмо ориентированно в данный раздел, то так его (письмо) и помечайте (допустим, "В Форум"). * * *
Другие статьи номера:
Похожие статьи:
В этот день... 14 декабря