Downgrade forever!!! » Другие проекты http://fdd5-25.net » Dos live cd » Каким должен быть DOS Life CD
Страниц (2): [1] 2 »
1. Uzix - 20 Ноября, 2006 - 14:42:16
http://dospage.by.ru/artcl007.shtm
http://dospage.by.ru/artcla08.shtm

(Отредактировано автором: 20 Ноября, 2006 - 14:43:55)

2. RomanKarpach - 20 Ноября, 2006 - 19:12:59
Внимание! Эта статья может показаться кому-то сказкой или утопией, однако автор абсолютно серьезен. Возможно, некоторые позиции рассматриваются с позиции исключительно пользователя (то есть, что бы хотелось видеть), а не с позиции программиста (что возможно сделать), однако автор еще раз напоминает, что он пока не претендует на звание профессионала в программировании и надеется на помощь более квалифицированных людей.

По-моему, идея DOS настолько хороша, что прекращать ее развивать было бы довольно глупо. Почему бы не продолжить то, что Microsoft и IBM, заблуждаясь, бросили? Сейчас довольно модна идея написания очередной Unix-подобной системы с мощной защитой, системой безопасности и системой восстановления сбойных ситуаций. Я ничего такого не предлагаю. Все вышеизложенные функции ложатся на программиста, пишущего программы для нашей системы. Взамен он получит то, чего ему не даст ни Windows, ни Unix, ни другая подобная им система. Он получит полный контроль над всем, что работает в данный момент. Все будет зависеть только от его мастерства и умения...

Пока мне самому не под силу писать такой сложный проект, однако, я надеюсь, эту идею подхватят и другие, да и я сам буду совершенствоваться... Пока же я попробую сформулировать здесь основные свои представления о том, какой должна быть "возрожденная" DOS. Вы же присылайте свои дополнения, пожелания и вопросы. Также объявляется конкурс на лучшее название системы. Пишите автору - baldr@pisem.net.

Итак, что же должна уметь делать наша новая операционная система и каковы будут ее главные особенности?

Однозначно нужно писать для разных процессоров разные части процедур. То есть, при инсталляции будет определяться тип процессора и в зависимости от него, система будет компоноваться наиболее производительными частями, написанными специально для такого процессора. Однако, следует избегать большого числа файлов. В идеале - два-пять... А чтобы скомпоновать рабочую версию системы, также инсталлятор будет, определив процессор и "железо", вписыватЬ, например, в места вызова процедур (которые будут различаться по размеру и адресу) сами эти адреса. То есть, при инсталляции система будет почти что заново собираться... Долго, но практично и надежно. Конечно, блоки должны быть между собой совместимы. Пока еще я не решил, как быть с добавлением новых устройств или изъятием пользователем уже имевшихся... Возможно, идея технологии plug'n'play не так уж и плоха, однако, ее реализация должна быть ненавязчивой и ограниченной.

Мне нравится принцип системы, построенной на прерываниях. Также предлагается система прерываний, как и в нынешней DOS. Однако, следует отойти от принципа "главного" прерывания системы - 21h. Или хотя бы для начала (для первых альфа-версий!) реализовать в нем или похожем совершенно иную структуру вместо существующей. То есть, убрать редкоиспользуемые функции, а добавить новые. Об исправлении проблемы реентерабельности, думаю, говорить излишне! Механизм перехвата прерываний должен проходить через систему для нормальной работы с TSR-программами, которые могут выгружаться и загружаться произвольно. Загружаться, скорее всего, с конца, а выгружаться из произвольного места "цепочки". И корректно возвращать управление после завершения. Найдутся, конечно, такие программисты, которые захотят писать напрямую в таблицу прерываний, но этому помешать у системы не получится... И "слава Нортону", Ибо в этом основная идеология... Но о том, как можно исправить трудности с таким подходом - немного ниже...

Она должна будет уметь абсолютно корректно работать с уже существующими программами для MS-DOS (PC- и совместимыми). Это одно из главных условий, ибо программ для DOS написано огромное количество, и переходить на систему, в которой все придется писать "с нуля" не захочется никому. Однако, я предлагаю запускать их в режиме "эмуляции" то есть, для того, чтобы запустить exe- или com-файл старой DOS, нужно "замаскировать" следы присутствия нашей системы и создать иллюзию присутствия старой системы. Это значит - повесить ложный обработчик прерываний 21h, 20h, 2Fh и прочих, находившихся ранее в ведоме старой DOS и необязательно поддерживаемой нами. Не беда, если 10% из старых программ запускаться все-таки не будут, однако больше - это уже серьезно!

Наша система не должна зависать сама по себе!! DOS прекрасно в этом смысле организована (исключая некоторые моменты, вроде все той же повторной входимости и др.). И наша система должна это унаследовать! То есть, код системы должен быть наиболее чистым от "багов". Если система зависнет, то это уже - некорректная работа внешней программы, но сама по себе - не должна.

Далее... Работа с верхней памятью должна проходить абсолютно свободно и безупречно. Ибо даже на 386 компьютерах она уже есть... Хоть мало, но есть. И поддерживать ее надо!

Кстати, очень желательно, даже необходима работа не в защищенном, а в реальном режиме! Если получится организовать так называемый "нереальный" режим, то это будет очень даже прекрасно! Переход в защищенный режим по первому же приказу программы - это обязательно... Однако, там не обязательно предоставлять обширный сервис. Пускай сами думают. А может и получится? Но это в идеале...

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

А теперь я расскажу об одной полезной функции, которая, по замыслу, должна облегчить работу как программистам, так и пользователям... Это будет что-то вроде "автоматического инспектора системы". Он будет время от времени "проползать" по самым важным местам системы и исправлять по-возможности, "нехорошие" ситуации. Возьмем, к примеру, те же TSR-программы, запущенные в обход системы. Если автор такой программы хочет, чтобы его грубое вмешательство в механизм перехвата прерываний было исправлено, то после завершения работы его TSR-программа оставляет в памяти заглушку вроде jmp far oldvect и какого-нибудь идентификатора... По нему наш "инспектор" определит "честного диверсанта" и корректно его завершит с возвратом прерывания следующему по списку обработчику. Своеобразный "сантехник"! Или, обнаружив какой-нибудь бесконечный цикл (а как его обнаружишь? но это только пример!), принять решение о вмешательстве... Обязательно такой "инспектор-сантехник" должен быть отключаемым... А то представьте себе, что ваша программа только начала изменять вектор прерывания, а тут вылезает "инспектор" и меняет какую-то часть на свою... Или еще чего похуже. Значит, программист должен установить что-то вроде системного флага о своем желании разрешить/ запретить такое вмешательство. Кстати, этот инспектор запускать часто совершенно ни к чему... Ибо противоречит он все той же идеологии... Раз в 5-10 минут или реже...

(Добавление)
Отсутствие многозадачности
Отсутствие графической оболочки
Отсутствие системы подкачки (свопинга)
Отсутствие кэширования
Объектно-событийная модель
Что необходимо реализовать в новой ОС

Рассмотрим первый пункт более подробно. Отсутствие многозадачности - на мой взгляд, серьезный недостаток данной ОС. Он вытекает как следствие того, что механизм работы DOS основан на прерываниях. Это делает весьма затруднительной (может быть даже невозможной) реализацию многозадачности. Как известно, многозадачные системы основаны на виртуальных машинах (ВМ). Каждый выполняющийся процесс работает в свой ВМ, управляемой менеджером ВМ. В ОС Windows этим менеджером является VMM32. Все процессы не работают напрямую ни с памятью, ни с другим оборудованием. Доступ ко всем устройствам обеспечивают драйверы виртуальных устройств. Это дает большие преимущества над прерываниями, так как любую возникшую ошибку можно обработать и генерировать Exception (исключение) и не допустить сбоя в выполняющемся процессе. Так же это дает преимущества и в защите, так как процессы выполняются в различных областях памяти (тоже виртуальных). И, наконец, сама многозадачность - это постоянное переключение между процессами. Некоторые, конечно, заблуждаются, думая что это переключение затормаживает систему. Но это неверно, поскольку каждый процесс имеет свой приоритет. Переключение на процессы с более низким приоритетом производится реже, чем на процессы с высоким приоритетом. Таким образом, время переключения несоизмеримо со временем выполнения самих процессов.
Все это отсутствует в DOS.
Теперь перейдем к графическому интерфейсу. Кто-то, возможно, скажет, что в DOS это легко поправить. Но сразу возникнет вопрос: ведь ОС DOS рассчитана на работу в текстовом режиме. Как будут работать в ней другие программы? К тому же, это не принесет большой пользы при отсутствии механизма ВМ, так как этот графический интерфейс не сможет делать ничего, кроме как служить в качестве файлового менеджера.
В DOS также не реализована система подкачки - использования диска в качестве оперативной памяти. Здесь надо заметить, что существующие программы DOS, которые якобы осуществляют подкачку при отсутствии свободной памяти, на самом деле просто записывают значения некоторых переменных в файл и освобождают место в памяти, храня их в файле до тех пор, пока они вновь не понадобятся. Это не есть подкачка. Возьмем для примера систему свопинга в Windows. Процессы, выполняющиеся при недостатке памяти, даже и не подозревают о том, что они используют диск, так как они работают (как уже было сказано выше) в виртуальной области памяти, которой управляет менеджер ВМ. Он и осуществляет подкачку в случае недостатка памяти. Это происходит совершенно без ведома самой программы. При этом совершенно необязательно, чтобы в файл подкачки помещались именно значения переменных. Туда может помещаться абсолютно все. То есть файл подкачки является как бы "продолжением" оперативной памяти. Таким образом, количество выполняющихся процессов в системе с ВМ и свопингом практически ограничено только объемом свободного места на диске или максимальным объемом файла подкачки.

Продолжение следует…

Андрей Лукичёв (pasprog@narod.ru), DNK Software 22 марта 2002 г.

Внимание! Все, кто согласен, можете также писать сюда, в этом разделе будем собирать всех недовольных... (baldr)


(Добавление)

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

3. Uzix - 20 Ноября, 2006 - 19:24:23
Профессиональных программистов - в студию. Может соберем под знаменем доса команду программистов, работающих на добровольных началах? Как в сообществе Опен Сорц...

4. Профессор - 21 Ноября, 2006 - 08:20:25
Нда, это было бы круто.

5. Uzix - 21 Ноября, 2006 - 08:57:10
Но мое личное мнение - нужно оставить дос таким, какой он есть - хотя музыка в фоне и не помешала бы

6. RomanKarpach - 21 Ноября, 2006 - 13:14:05
Да, только мне нужны программисты

7. MEGAHERZ - 25 Ноября, 2006 - 13:33:48
ИМХО, не нужно ничего программировать специально для DOS Live CD, кроме BAT-файлов: есть куча готовых решений под DOS (на сайте, где размещена статья, есть средства для реализации многозадачности в DOS).

А если к ней прикручивать многозадачность, то это может кончиться двояко
1) прикручивание "костылей" к старому ядру, и получаем аналог Windows 3.11/95
2) переписывается код и получается новый дистрибутив Linux
Правда, может получиться и нечто самобытное, но не факт, что совместимое.

P.S. Есть проект FreeDOS 32, там пытаются реализовать нечто похожее.

8. MEGAHERZ - 25 Ноября, 2006 - 20:47:56
Цитата:
хотя музыка в фоне и не помешала бы

Но ведь я уже который раз говорю, что такое существует для MP3 и OGG: вот ссылка. Программу выгодно отличают от всех остальных отсутствие нужды в драйверах звуковой карты. У меня напрямую подключалась к SB Audigy и интегрированному звуку от Intel. В общем, вещь!



(Отредактировано автором: 25 Ноября, 2006 - 20:50:30)

9. dedv - 12 Декабря, 2006 - 13:39:20
Нужно в загрузочном меню добавить пункты, позволяющие загрузку системы с драйвером HIMEM.SYS, HIMEM.SYS+EMM386.EXE, и с QuarterDeck, а также без менеджеров памяти (как это организовано в FreeDOS Full CD). Сделать это нужно для удобства пользователей и большей совместимости систем с DOS Life CD. Наглядный тому пример - на IBM ThinkPad (PIII 800 MHz, 256 MB RAM, internal modem 33600, network LAN card, 14" TFT 24-bit color, DVD-ROM, IrDA port, 20 GB HDD) сразу после тестирования памяти, производимом Quarterdeck, система выдаёт "на гора" сообщение об ошибке: Abnormal program termination: Divide by zero и с предложением перезагрузить систему или терминировать программу, вызвавшеую ошибку. При нажатии на T (Terminate) система наглухо виснет. При запуске же FreeDOS во всех режимах (с HIMEM.SYS+EMM386, HIMEM.SYS only, без менеджеров памяти) всё отлично работает. Я думаю, стоит авторам (Роману Карпачу и Николаю Счастлёнку) скачать дистрибутив FreeDOS на CD и поучиться у его разработчиков, как и что нужно делать, ведь только с HIMEM.SYS+EMM386 у них хватает памяти на всё, и избавиться наконец от глючного и всеми ненавистного Quarterdeck. Не хватит памяти скажете? А как я тогда из-под чистого MS-DOS 6.22 только с HIMEM.SYS создал в расширенной памяти пять RAM дисков размером в 32767 КБ каждый? И загрузил все драйвера в расширенную память при помощи DEVICEHIGH, даже те, которые оговаривались на этом форуме как те, которые не загружаются в дополнительную память? Кстати, я профессиональный программист под DOS и готов сотрудничать на добровольных началах (хотя в качестве благодарности хотел бы получить ноутбук 8088 с CGA монитором ;) , но это так сказал).

10. Профессор - 12 Декабря, 2006 - 16:00:25
О! Так и надо сделать! Выбор менеджера в ручную! Точна! Диг386, и многа базовой памяти остаёца после резедентной загрузки музона? Скока она жрёт? Если мало, то Рулёz.

11. UFO - 12 Декабря, 2006 - 17:40:40
Цитата:
ведь только с HIMEM.SYS+EMM386 у них хватает памяти на всё

Когда я использовал в повседневной работе ДОС, то я тоже обходился только HIMEM.SYSом и EMM386. И тоже для моих задач этого хватало.
Причём это было даже на 386DX40 (ОЗУ - 2 или 4МБ - точно не помню).

12. Uzix - 12 Декабря, 2006 - 18:30:58
Значитъ так, девочки и малчики, слушайте увлекательнкю таблицу:
Код:

Модули, использующие адреса памяти ниже 1 МБ:
 
  Имя            Размер         Обычная память     Верхняя память
  --------        ----------------   ----------------   ----------------
  MSDOS     19 776   (19K)   19 776   (19K)        0    (0K)
  HIMEM           784    (1K)       784    (1K)          0    (0K)
  EMM386      3 408    (3K)     3 408    (3K)          0    (0K)
  4DOS         7 536    (7K)     4 448    (4K)    3 088    (3K)
  DOSKEY     4 688    (5K)     4 688    (5K)           0    (0K)
  PRN2FILE    6 192    (6K)     6 192    (6K)           0    (0K)
  NICE          2 688    (3K)     2 688    (3K)           0    (0K)
  CSOUND       384    (0K)        384    (0K)           0    (0K)
  KILL           2 800    (3K)     2 480    (2K)        320    (0K)
  [eee410]    1 904    (2K)     1 904    (2K)            0    (0K)
  SETVERM       320    (0K)          0    (0K)         320    (0K)
  HYPERDKX    31 072   (30K)      0    (0K)    31 072   (30K)
  ANSI          3 616    (4K)          0    (0K)       3 616    (4K)
  DISPLAY     4 944    (5K)          0    (0K)       4 944    (5K)
  RFL               768    (1K)          0    (0K)         768    (1K)
  RKS              896    (1K)          0    (0K)         896    (1K)
  DOSLFN    12 736   (12K)          0    (0K)     12 736   (12K)
  CTMOUSE    3 552    (3K)          0    (0K)     3 552    (3K)
  XMSDSK        688    (1K)          0    (0K)        688    (1K)
  Свободно   609 248  (595K)    608 304  (594K)       944    (1K)
 
Сведения о памяти:
 
  Тип памяти           Размер        Занято      Свободно
  ----------------        -----------   -----------   -----------
  Обычная               655 360         47 056     608 304
  Верхняя                  62 944         62 000           944
  Зарезервировано             0                0              0
  Память XMS       66 980 384   12 906 016   54 074 368
  ----------------       -----------   -----------   -----------
  Всего памяти:      67 698 688    13 015 072    54 683 616
 
  Ниже 1 МБ:            718 304       109 056       609 248
 
  Максимально допустимый размер программы:          607 984   (594K)
  Наибольший свободный блок верхней памяти:             608     (1K)
  Сегмент HMA недоступен.

это при himem+emm. Теперь qemm:
Код:

 
Модули, использующие адреса памяти ниже 1 МБ:
 
  Имя            Размер         Обычная память     Верхняя память
  --------  ----------------   ----------------   ----------------
  MSDOS     19 760   (19K)   19 760   (19K)         0    (0K)
  QEMM386       784    (1K)        784    (1K)          0    (0K)
  4DOS          7 440    (7K)      4 448    (4K)   2 992    (3K)
  [eee410]     1 904    (2K)      1 904    (2K)          0    (0K)
  RFL                768    (1K)          0    (0K)        768    (1K)
  KILL            2 800    (3K)          0    (0K)      2 800    (3K)
  DOSKEY      4 688    (5K)          0    (0K)      4 688    (5K)
  CTMOUSE    3 552    (3K)          0    (0K)      3 552    (3K)
  PRN2FILE     6 192    (6K)          0    (0K)      6 192    (6K)
  NICE           2 416    (2K)          0    (0K)      2 416    (2K)
  XMSDSK         688    (1K)          0    (0K)        688    (1K)
  SETVERM        320    (0K)          0    (0K)        320    (0K)
  HYPERDKX 31 072   (30K)          0    (0K)   31 072   (30K)
  ANSI            3 616    (4K)          0    (0K)     3 616    (4K)
  DISPLAY      4 944    (5K)          0    (0K)      4 944    (5K)
  RKS               896    (1K)          0    (0K)         896    (1K)
  DOSLFN     12 736   (12K)          0    (0K)   12 736   (12K)
  CSOUND         384    (0K)          0    (0K)        384    (0K)
  Свободно   644 608  (630K)    628 144  (613K)     16 464   (16K)
 
Сведения о памяти:
 
  Тип памяти           Размер        Занято      Свободно
  ----------------         -----------   -----------   -----------
  Обычная               655 360        27 216       628 144
  Верхняя                 94 528        78 064         16 464
  Зарезервировано           0                0                0
  Память XMS         66 948 800    13 225 664    53 723 136
  ----------------  -----------   -----------   -----------
  Всего памяти:      67 698 688    13 330 944    54 367 744
 
  Ниже 1 МБ:            749 888       105 280       644 608
 
  Всего отображаемой памяти (EMS):               67 272 704     (64M)
  Свободно отображаемой памяти (EMS):            53 723 136     (51M)
  Максимально допустимый размер программы:          627 824   (613K)
  Наибольший свободный блок верхней памяти:           9 136     (9K)
  Сегмент HMA недоступен.

Делаем выводы(ценя каждый килобайт!)

 Наверх Powered by exBB 1.9.1 • ultraGrey skin design by Slaver   


[ Script Execution time: 0.0021 ]   [ Gzip Disabled ]