|
[Jun. 29th, 2009|12:37 am] |
| [ | Current Music |
| | Marilyn Manson - Coma white | ] | Обещанный пост про DOS и все такое. Из архивов. Наверное нужно переписать, но сил нету.
Скоро я в ЖЖ буду писать так, будто моей репутации падать ниже уже некуда. "Ниже пола упасть нельзя". Кстати, недавно у меня было всего пять смертных грехов, но потом я с трудом заимел шестой. Остался седьмой, самый трудный для меня.
Читаю RU.DOS, потому что это помогает вспоминать мне свою босоногую юность. Впрочем, можно и тут читать: http://groups.google.com/group/fido7.ru.dos Но в фидо больше босоногой юности. А у Ангрихренушки дзен и отсутствие всякого редактора почты поэтому у него хоть и всё крутится, но он не знает что именно у него крутится. Интересно тут динамику посмотреть: http://groups.google.com/group/fido7.ru.dos/about Пик интереса к эхе приходится на 2003-й год, а не в 1999 или 2000, когда фидо пошло на спад. DOS на моей памяти это самая дурацкая из возможных операционная система, клон CP/M. У CP/M было только одно преимущество - она занимала мало места. DOS разрабатывалась для фантастически дурацкого процессора 8086, который был каким-то клоном 8080, сознательно, чтобы программистам проще было портировать для нового проца то что они наваяли для 8080. Кажется, IBM сначали сделали компьютер IBM PC а только потом начали искать того кто бы написал для него ОС. Они позвонили тому парню, что наваял CP/M, а он где-то в отпуске был. Так что подвернулся Билли Гейтс. Просто посмотрите на названия регистров и вы, быть может, вспомните компьютер ZX Spectrum. Так же и DOS, имеет в себе некоторые рудименты от CP/M, например при загрузке COM-файла вы грузитесь на 0x100 байт вперед, потому что до этого - блок PSP. http://en.wikipedia.org/wiki/Program_Segment_Prefix В PSP хранится пара FCB блоков, если вам это что-то говорит: http://en.wikipedia.org/wiki/File_control_block Никто не относился серьезно ни к процам линейки x86, ни к DOS. Достаточно проникнутся идеей сегментов в памяти в "реальном режиме" процов x86 чтобы заломило голову. Но рынок уже забит этими машинами, так что приходится делать DOS-экстендеры - фантастический костыль представляющий собой скорее всего еще одну операционную систему, предлагающую вам API с человеческим лицом, как-то выделить кусок памяти размером больше 64 килобайта. Проблема этой новой ОС в том, что другим своим концом она торчит к DOS, с которого вы загрузились, например для того чтобы работал загруженный до нее драйвер мыши. Здравствуй AutoCAD, 3D Stduio и игра Quake. Гемор с XMS-памятью, EMS-памятью, и еще х.з. чем гармонично дополняет картину. А я, между прочим, до сих пор могу сказать чем они отличаются. Но те кто не знал, плясали с бубном редактируя AUTOEXEC.BAT и CONFIG.SYS. Кстати, в RU.DOS, бывает, до сих пор пляшут. А еще HMA-память, это кусочек размером 64 килобайта минус кажется 16 байт от тех симок не взирая на то сколько вы их засунули в комп. А еще бытовала возможность отожрать сегмент по адресу 0xA000 из видеокарты пока вы работаете в текстовом режиме. А драйвер HIMEM.SYS использовал недокументированную командуLOADALL, которая грузила что вы ей скажете в кеш элементов таблицы GDT, поэтому через этот глюк (фичей назвать это язык не поворачивается) было возможно в "реальном режиме" адресовать память выше мегабайта. А вы помните FAT12, FAT16 и наконец FAT32? Windows 95 являло собой еще одну надстройку над DOS. Она была идиотской by design, потому что это была смесь DOS, win32s, драйверов VxD и еще не ясно чего. Она не могла не глючить. И хвала Билли Гейтсу что он ввел win32 api, дабы пока они там ваяют новую Windows NT как новую OS/2, народ пусть пишет под Windows 95 используя win32 api а потом это все будет (дай БГ) работать и в NT. А пока что Intel/AMD добавляют оптимизацию, кеши, конвееры и исполнение кода по обоим сторонам условного перехода. Развитие x86 остановилось точно на 80386. Дальше было делать там нечего. Режиссер обычно редко соглашается снимать продолжение к своему фильму потому что "он все сказал". В 80386 "всё сказали". Дальше были только кеши, конвееры и out of order execution, отражающиеся только на скорости работы проца. Процессор до этого - 80286 представляет собой очень точное соответствие с ощущением что вы застряли в лифте между этажами. Это уже не 8086, но попытка сделать проц "как у взрослых пацанов", но абсолютно дурацкая. Во всем этом есть ирония судьбы - самые быстрые процы нашего времени тянутся с проца 8080 который, кажется, планировали использовать в терминалах? Начинается 64-bit era. Процы уже нужно делать 64-битными, потому что памяти мало и её как-то надо адресовать, но при этом мало кому нужны 64-битные регистры. Примеров очень мало. В NT я могу сходу вспомнить только функции которые отдают размер файла или текущее положение указателя в файле или функцию которая отдает сколько наносекунд прошло начиная с момента включения компьютера. Это проблема больших чисел, которые, как неуловимый Джо, никому не нужны. Изучать DOS, наверное, нужно, как немцам изучать историю холокоста. Это ярчайший пример как серия "неверных" движений делает неизвестно что, как в анекдоте:
Однажды Петя принёс из лесу ёжика. Ёжик быстро освоился в доме, фыркал по ночам под кроватью. Весной родители Пети поехали надачу и взяли ёжика с собой. Ёжик приносил пользу огороду: он пожрал всех медведок. К оснени ёжик совсем окреп, шёрстка стала блестящая и жёсткая. Иголки выросли длинные-предлинные, коготки на лапках заострились. Ещё у ёжика выросли большие ветвистые рога и выразительные фасетчатые глаза. Первого сентября ёжик взмахнул крыльями и улетел. И тогда все поняли, что Петя принёс из леса не ёжика, а какую-то хуйню.
Кое-где учат не только DOS но и ассемблер для 8086, 16-битный. Одна знакомая из универа не скажу какого звонит и спрашивает, ты помнишь ассемблер для DOS для 8086? Конечно помню, такое трудно забыть. И сажусь решать какие-то задачки для какого-то студента. Команда AAA и представление чисел в виде BCD-packed и последующие слезы умиления, слезы умиления, слезы умиления, я как эмо-кодер залил слезами клавиатуру. Это очень интересный момент - я никогда не видел применение BCD-packed чисел вне древних учебников по ассемблеру. А перелопатил я софта немало. Наверное, как студентов-медиков первым делом ведут в морг, этих студентов заставляют ваять что-то на асме под DOS. Но медиков после этого начинают учить тому что им нужно, а в нашем случае все этим и заканчивается.
BASIC это восхитительно. Это как раз тот инструмент который может помочь вам разочароваться в программировании и ошибочно решить что в этом предмете всё "настолько тоскливо". Кто-то предлагал запретить его на государственном уровне а учебники спалить как во время инквизиции. Я целиком поддерживаю. Если я правильно понимаю, это какой-то неудачный упрощенный клон FORTRAN-а.
После всего этого, когда начинаешь читать мануалы по процам вроде Itanium или когда пытаешься осилить Haskell, ощущение как будто сидел всю жизнь в пещере и случайно вылез на яркое солнце. Это нелегко выдержать.
Так почему это происходит? С резким развитием маломощных персональных компьютеров, у этого человечества был шанс начать писать историю с чистого листа. Но произошло все хуже, может быть потому что серьезные люди не обращали на PC внимания, и этим занимались хиппи с random-образованием но зато с энтузиазмом. Энтузиазм это хорошо, но этого мало. При его помощи можно создать вот такой девайс - очень красивый но абсолютно бесполезный, способный только предоставить доказательство настырности создателя.
Всё, на сегодня пар выпустил. |
|
|