Доброго времени суток, орионщики и им сочувствующие
Давно не писал, но это не значит, что забросил. Работа по развитию ОС идёт, к НГ постараюсь выложить сборку со всеми последними новинками. А пока хочу рассказать о том, что сделано.
С момента последней публикации версии 3.83, была "переходная" версия 3.84, в которой принципиально изменился механизм запуска оболочки ОС и некоторый функционал самой оболочки, удалось обойти существующее ранее ограничение размера копируемого оболочкой файла. Исполняемый файл оболочки изменился: DC$ -> SHELL, о ней напишу отдельный пост, т.к. там "много букв" (и картинок).
ОС "научилась" работать с т.н. "оверлейными" (или "системными") программами, работающими в специальной области второй страницы ОЗУ, работают эти программы "параллельно" основным, находящимся в нулевой странице ОЗУ пользователя, т.о. в ОС появился функционал псевдо многозадачности, о чём позже распишу подробнее.
На данный момент проходит тестирование версия 3.85, в которой реализован комплекс мер по ускорению работы с дисками, в частности - с виртуальным ( G: ). Для этого введён новый протокол (v3) работы с ORI-сервером (версия приложения 3.06 и выше), поддерживающий двойное кэширование операций чтения/записи каталога. На уровне ОС также организовано кэширование (отключаемое) каталогов всех дисков. При групповых операциях с несколькими файлами кэширование позволяет значительно ускорить работу за счёт минимизации лишних операций чтения/записи каталога.
Также серьёзным новшеством стала поддержка работы с директориями (подкаталогами) виртуального диска, на этом останавлюсь подробнее. Имеются в виду переходы в подкаталоги и обратно прямо с Клиента, т.е. с Ориона-128/ПРО. Теперь фактически приложение сервера на IBM-PC можно свернуть в трей и работать с виртуальным диском полностью на Орионе
Работа с директориями (подкаталогами) на виртуальном диске.
В версии 3.85 ОС DSDOS (ORI-сервер версии 3.06 и выше) появилась возможность удалённой работы с директориями с помощью выполнения запросов с ПРК "Орион".
Директория - это надстройка над файловым протоколом ОС DSDOS, она представляет собой специальный метафайл, ассоциированный с соответствующей директорией на сервере. Метафайлы сервер генерирует автоматически при чтении текущего каталога, на основании имеющихся там директорий, физически этих файлов на сервере нету.
Сама ОС DSDOS ничего не "знает" про директории, она работает только с файлами. Орион "видит" метафайлы в виде обычных файлов, которые присутствуют в каталоге диска "G:".
При поступлении запроса на загрузку такого метафайла, сервер отправляет Ориону файл, содержимое которого представляет собой текстовую строку полного пути к директории на сервере (для информации), после чего выполняет переход в эту директорию, обновление списка файлов нового каталога и установку признака обновления каталога (используется системой кэширования в ОС DSDOS v3.85). Т.о. последующие файловые операции на Орионе принудительно прочитают новый каталог и уже будет работа с содержимым новой директории.
Имя метафайла директории всегда начинается с символа "." (точка), далее следует от одного до семи произвольных символов, допустимых в именах файлов ОС DSDOS. Если имя директории на сервере длиннее семи символов, то лишние обрезаются. Также производится преобразование букв к верхнему регистру, а русских букв к латинским, т.к. в ОС русские буквы в именах файлов недопустимы.
Метафайл с именем ".." ассоциирован с переходом на уровень вверх (по направлению к корневому каталогу на сервере).
Также есть обратная возможность: создавать новые директории в текущем каталоге виртуального диска. Для этого Орион должен отправить серверу команду записи файла, имя которого начинается с точки, поле которой следует от одного до семи символов, допустимых в именах файлов ОС DSDOS. Содержимое файла не имеет значения и игнорируеся сервером (в будущем возможно будет использоваться для создания на сервере директорий с длинными именами), в связи с этим для ускорения процесса, достаточно передать в теле файла один байт (минимальный размер файла в ОС DSDOS). Попытка записать на виртуальный диск файл, имя которого начинается с двух точек приведёт к ошибке, т.к. имя ".." зарезервировано под метафайл перехода на директорию выше! Также запрещено записывать на виртуальный диск файл, имя которого состоит из одной точки.
Копирование, переименование, изменение атрибутов и удаление метафайлов в текущей версии не поддерживаются!
Примеры работы с директориями виртуального диска с помощью команд ОС DSDOS:
G: - выбираем текущим виртуальный диск;
L .MYDIR - переход к директории "MYDIR" на сервере;
L G:.MYDIR - вариация предыдущей команды с явным указанием диска (для случая, когда текущий диск - другой);
L .. - переход к директории уровнем выше;
I .MYDIR B000 - вариация команды перехода к директории "MYDIR", начальная область ОЗУ пользователя не затирается информацией о полном пути к директории на сервере;
T .MYDIR - переход к директории "MYDIR" с выводом на экран полного пути на сервере;
S .NEWDIR 0,1 - создание новой директории "NEWDIR" на сервере в текущем каталоге.
Соответственно, в пакетных файлах также возможна работа с директориями.
В оболочке ОС DSDOS (SHELL v4.1 и выше) работа с директориями упрощена и происходит прозрачно для пользователя. Оболочка умеет распознавать метафайлы директорий и обрабатывает их соответствующим образом. Для смены директории достаточно выбрать её имя и нажать "ВК" (Enter), в результате чего оболочка отправит серверу команду загрузки соответствующего метафайла, после чего выполнит обновление содержимого каталога текущей панели, т.о. мы фактически перейдём в выбранную директорию. Выбор директории с именем ".." выполнит переход на уровень вверх.
Сортировка каталога на сервере производится таким образом, что в начале списка всегда идут метафайлы директорий, а затем следуют ORI-файлы. Метафайл перехода на уровень вверх всегда самый первый в списке.
При переходе в директорию, каталог всегда выводится с начала (вверху самый первый файл в списке, т.е. в большинстве случаев это метафайл ".."), указатель устанавливается на него.
Также есть возможность создать новую директорию в текущем каталоге, для этого нужно нажать клавишу "7", далее откроется окно диалога для ввода семи символов имени директории. Лидирующая точка уже присутствует, её вводить не нужно! Завершается ввод нажатием "ВК" (Enter). В случае успеха, новая директория появится в списке файлов текущей панели. В случае ошибки откроется окно с соответствующим сообщением ОС DSDOS, далее можно будет повторить ввод имени новой директории ("ВК" или Enter) или отменить создание директории (ESC или F4). Как и в других диалогах ввода строк, оболочка запоминает вводимое ранее имя директории, его можно вставить, нажав стрелку "вверх" или дописать к введённому - стрелка "вниз".
Метафайлы нельзя выделять и производить над ними операции копирования, перемещения, удаления, изменения атрибута защиты, т.к. в текущей версии ОС DSDOS нет поддержки соответствующих операций на уровне протокола с сервером.
Также с метафайлами не работают команды "F3", "F4" и пр. аналогичные макросы в оболочке.
Узнать полный путь к выбранной директории на сервере можно нажав "T"+"ВК"(Enter), это выполнит распечатку содержимого метафайла соответствующей командой ОС DSDOS. При этом, согласно вышеописанному механизму, автоматически произойдёт переход в эту директорию на сервере (сервер получит команду чтения содержимого метафайла и выполнит переход в ассоциированный каталог), т.о. после возврата в оболочку на текущей панели будет содержимое этой директории.





Ответить с цитированием