Этим Вы окажете большую помощь науке и медицине. См. подробнее: http://solidstate.karelia.ru/~yura/pyldin/yura/computing.htm |
Norton Commander, версия 3.0
Результаты работы утилит для упаковки программ
diet, pklite, lzexe и wwpack
Чтобы не было неоднозначности, перед сжатием файла, он был распакован (если до этого был упакован) и была выполнена команда оптимизации заголовка и таблицы перемещения exe-файла "wwpack o имя_файла". Для распаковки программ использовалась программа UNP.EXE версии 4.11.
На практике файл nc.exe упаковывать крайне не рекомендуется, так как он остаётся резидентным в памяти. И от упаковки nc.exe будет проигрыш в занимаемой памяти. Однако рекомендуется выполнить команду "wwpack o nc.exe", чтобы nc.exe занимал меньше места на диске.
nc.exe желательно не упаковывать, т.к. будет проигрыш в занимаемой памяти | |||||
В поставку Norton Commander 3.0 входит 18 файлов:
nc.exe, ncmain.exe, nc.hlp, 123view.exe, dbview.exe, paraview.exe, pcxview.exe, rbview.exe, refview.exe, wpview.exe;
mci.exe, mci.hlp - управление электронной почтой;
mcidrivr.exe - резидентный драйвер электронной почты;
chkmail.bat - командный файл для посылки сообщений по электронной почте;
read.me, inread.me, serial.txt - документация;
ser-test.exe - проверка работоспособности коммуникационных портов.
В процессе работы Norton Commander 3.0 создаются файлы:
nc.mnu, nc.ext, nc.ini, mci.ini;
mciaddr.bk - список адресов электронной почты;
mci.log - протокол сеанса электронной почты.
В настоящее время Norton Commander 3.0 (1989 года) уже практически никем не используется, так как в 1993 году появился более удобный Norton Commander 4.0. Ниже будет приведён список, какие недостатки имеет Norton Commander 3.0 по сравнению с более новой 4.0 версией Norton Commander:
1) В NC 3.0 не поддерживается упаковка и распаковка файлов и работа с архивами (Alt-F5 и Alt-F6 не задействованы).
2) Не задействована клавиша Серая *, что приводит к неудобствам в выделении группы файлов.
3) Нельзя работать с каталогами целиком.
4) Нет набора цветов "Color 2".
5) Фиксированы промежутки времени перед включением сохранителя экрана (список 3, 5, 15 минут и т.д...).
- приведённый список конечно не полный, но достаточный для обзора и сравнения двух версий 3.0 и 4.0 Norton Commander.
Список рекомендуемой литературы по этим вопросам:
Краткий обзор EXE упаковщиков
для EXE-файлов формата MS-DOS.
AINEXE 2.2 сжимает очень быстро, но имеет невысокую степень сжатия (в особенности для маленьких файлов). Также у AINEXE большой и медленный распаковщик. EXE-файл, упакованный AINEXE - нельзя распаковать назад (программа UNP воспринимает файлы упакованные AINEXE 2.2 за упакованные версией 2.1 и программа UNP.EXE - зависает). AINEXE при упаковке не оптимизирует таблицу перемещения файла, что тоже негативно сказывается на степени сжатии файла.
EXEPACK - это один из первых EXE-упаковщиков, разработанный ещё в начале 80-х годов. Он самый простой из всех - он сжимает только таблицу перемещения и повторяющиеся символы в коде и всё, к тому же у упакованного файла делает заголовок 512 байт (видимо для совместимости с самыми ранними версиями MS-DOS). При упаковке оптимизирует таблицу перемещения. Также существовала не только отдельная программа EXEPACK, а также была возможность компоновщиком LINK создавать сразу упакованные файлы (что широко использовалось в Microsoft Fortran).
DIET - сжимает достаточно быстро, но имеет медленный распаковщик. Степень сжатия - примерно такая же, как у PKLITE и LZEXE. При сжатии DIET не изменяет таблицу перемещения, и при распаковке - получается оригинальный файл. Не сжимает оверлейные файлы. Если у сжимаемого EXE файла не было элементов перемещения, то если распаковывать назад с помощью UNP, то UNP может полностью испортить файл. Также DIET умеет сжимать и COM-файлы.
OPTLINK - этот упаковщик был разработан фирмой Symantec и использовался исключительно внутри Symantec. Пользователям сам этот упаковщик - не доступен. С помощью OPTLINK были упакованы графические просмотрщики в Norton Commander, а также программы из пакета Norton Utilities и всё. В OPTLINK применялся двухпроходной метод сжатия - сначала сжималась таблица перемещения, а уже во втором проходе - вся программа. По степени сжатия OPTLINK примерно такой же, как и PKLITE.
PKLITE - тоже не оптимизирует таблицу перемещения при сжатии (если не дан ключ -a или -e). После распаковки - файл в точности совпадает с оригиналом. У PKLITE большой, но быстрый распаковщик. PKLITE очень надёжен. Умеет упаковывать также и COM-файлы.
LZEXE - сжимает файлы чуть-чуть слабее, чем DIET или PKLITE (хотя у DIET, PKLITE, LZEXE - приблизительно один и тот же метод сжатия, ну только с таблицей перемещения разница). LZEXE автоматически оптимизирует таблицу перемещения, имеет быстрый распаковщик, очень надёжен. Не сжимает COM-файлы и оверлейные EXE-файлы. После распаковки EXE-файла, упакованного LZEXE, желательно давать команду "WWPACK o" для оптимизации таблицы перемещения файла (а то после LZEXE она представлена в таком виде, что другие упаковщики будут значительно хуже сжимать этот распакованный файл).
WWPACK 3.02 - использует двухпроходной метод сжатия (сначала сжимается таблица перемещения, а потом файл целиком). Не сжимает COM-файлы. Алгоритм и степень сжатия у WWPACK значительно более лучше, чем у DIET, PKLITE, LZEXE. Скорость распаковщика - средняя. Единственная замеченная проблема - если у файла не было элементов в таблице перемещения, то UNP не сможет распаковать файл назад до конца - распакуется только второй проход, а первый - нет.
APACK - для маленьких по объёму файлов - показывает лучшую на сегодняшний день степень сжатия. Для крупных EXE-файлов всё же по степени сжатия иногда UPX перегоняет. APACK не распаковывает файлы назад. APACK использует двухпроходной метод сжатия, сначала сжимается таблица перемещения, а потом файл целиком. Причём авторами APACK в августе 1998 года был придуман принципиально новый метод сжатия таблицы. В LZEXE и WWPACK там сжатие заключалось в записи разности между соседними элементами. А в APACK - сжатая таблица состоит практически целиком из символом с кодом 1, а в программный код, в места, где должны быть элементы - вместо нулей записываются два специальных байта. А потом распаковщик просто сканирует распакованный код, ищет эти два байта, и заменяет их уже на необходимый адрес смещения. Если в сжатом коде вместо 1 встречается что-то другое, то это знак для распаковщика, что эти два байта надо обойти (т.к. это часть программного кода, а не элемент перемещения). В марте 1999 года этот метод был перенят разработчиками UPX. Благодаря этому гениальному методу у EXE файла можно считать почти совсем исчезает таблица перемещения (за исключением небольшого числа 3-байтовых разностей). Вот поэтому степень сжатия у APACK и UPX с таким колоссальным отрывом опережает все остальные созданные EXE-упаковщики. Как уже говорилось, APACK не распаковывает назад. Но APACK - идеальная вещь для разработчиков небольших программ, так как раз есть исходные тексты, то необходимости восстанавливать оригинальный EXE-файл здесь нет. Так что если Вы программируете (для MS-DOS) и выкладываете на Ваш Web-сайт исходные тексты и уже скомпилированные EXE-файлы, то непременно упаковывайте их APACK (правда, если EXE-файлы получаются крупные, попробуйте UPX, крупные файлы он нередко сжимает сильнее).
Далее будет приведена таблица, в которой будет показано, насколько быстро сжимают различные упаковщики EXE файлов, а также насколько быстро выполняется распаковочная процедура (которая дописывается к упакованному EXE-файлу). Для теста был выбран хорошо сжимаемый EXE-файл (содержащий в основном графические данные). Тестируемая программа при запуске ничего не делает (сразу обратно выходит в командную строку). Чтобы результат был более реальный и наглядный - было проведено 20 запусков из BAT-файла. Тест был проведён на компьютере 386SX с тактовой частотой 40 MHz и системой MS-DOS 6.20.
Не упакован | EXEPACK | DIET | PKLITE | LZEXE | WWPACK | AINEXE | |
Длина EXE файла | 130288 | 52839 | 25629 | 24438 | 25155 | 23042 | 24081 |
Время сжатия упаковщиком | - | 5 сек. | 26 сек. | 1 мин. 26 сек. | 40 сек. | 10 мин. 41 сек. | 4 сек. |
Время 20 запусков | 6 сек. | 6 сек. | 7 сек. | 5 сек. | 5 сек. | программа оказывается не рабочей | 10 сек. |
Выше был приведён обзор наиболее распространённых EXE-упаковщиков для файлов dos/exe - формата.
С другими форматами EXE-файлов обстановка выглядит следующим образом:
EXE файлы OS/2 и NE-формата ("New Executable") можно упаковать только упаковщиком NELITE
EXE файлы Win16-формата (для Windows 3.x) лучше всего упаковать PKLITE 2.01 (есть ещё PACKWIN, но у него намного ниже степень сжатия и бывают сбои в работе, а PKLITE - очень надёжный).
EXE файлы, созданные в системе программирования TMT Pascal, обычно очень даже неплохо упаковывает TMTPACK, который входит в комплект поставки TMT Pascal. Однако можно попробовать ещё и 32LITE и UPX, иногда 32LITE или UPX могут сжать лучше.
Файлы формата DJGPP2/COFF, созданные в FPC (Free Pascal) - лучше сжимать только UPX, так как практика показала, что лучше чем UPX файлы формата DJGPP2/COFF никто не сжимает (32LITE - отстает в степени сжатия для формата DJGPP2/COFF).
Для оставшихся форматов EXE-файлов, которых множество - WATCOM/LE, WDos/X, DPMI/PE и т.д. - следует попробовать UPX и 32LITE. Для файлов этих форматов очень часто 32LITE оказывается лучше UPX. Но следует иметь ввиду, что 32LITE не умеет распаковывать назад.
И наконец, для самых распространённых на сегодняшний день Win32 - EXE-файлов практически всегда лучшим оказывается UPX. Для файлов Win32 формата создано множество EXE-упаковщиков, начиная от самых первых PKLITE32 и WWPACK32 и кончая современными MEW, UPX и ASPACK. В случае очень больших по размеру EXE-файлов ASPACK перегоняет по степени сжатия UPX. Но ASPACK не умеет распаковывать назад. Очень хорошие показатели сжатия дают MEW и особенно Upack, но они не умеют распаковывать назад. А также MEW и Upack находятся пока ещё в стадии разработки. А по надёжности и скорости распаковщика конечно же лидирует UPX. Также, кроме очень высокой скорости распаковщика и высокой надёжности, для большинства Win32 файлов UPX также показывает и лучшую степень сжатия.
Ссылки по теме Norton Commander:
1) http://dssp.karelia.ru/~ivk/new2/Inflect/L_1_8.htm - Общая характеристика. Возможности Norton Commander. Передвижение по каталогам, быстрый поиск по имени. Работа с окнами. Работа с командной строкой. Выбор группы Файлов. Меню функциональных клавиш. Команды линейки меню.
2) http://dfe3300.karelia.ru/koi/posob/os/index.shtml - Работа с Norton Commander. Обзор похожих на Norton Commander оболочек и операционных систем.
3) http://solidbase.karelia.ru/edu/zonna/2_NC.htm - Учебник по работе с Norton Commander (8 глав, интерактивное учебное пособие).
Эта WEB-страничка последний раз изменялась 7 января 2007 года.
Тогда следующая статья для Вас! http://solidstate.karelia.ru/~yura/pyldin/yura/linux_freedos.htm |