|
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). Сразу
хочу сказать - "Форум" - раздел чисто
читательский. Можете ставить на обсужде-
ние АБСОЛЮТНО любые темы! Какие-то мыш-
ления на счёт того или иного также може-
те высылать в "Форум". Вообщем, отдаю
раздел "ФОРУМ" в ваши руки, читатели.
Единственная просьба: если ваше письмо
ориентированно в данный раздел, то так
его (письмо) и помечайте (допустим, "В
Форум").
* * *
Другие статьи номера:
Похожие статьи:
В этот день... 13 ноября