Мультитерминал

Беседы ни о чем

Мультитерминал

Сообщение oldpcfan82 » 22 мар 2025, 03:07

Всем привет! Примерно в 1999 году я сделал командный интерпретатор см. https://programming.mybb.ru/viewtopic.php?id=32 (строго не судите), который работал на отцовском компьютере, а отображал изображение на мамином ноутбуке, или я вводил с маминого ноутбука, а команды выполнялись на отцовском компьютере, и отображались на дисплее маминого ноутбука. Я компьютер и ноутбук соединял через COM-порт, без модема. Код для работы с COM портом я взял из примера из книги "Секреты программирования игр", потом добавил свой командный интерпретатор. У меня есть и просто командный интерпретатор без подключения через COM порт, я найду код, отокомпилирую его, и покажу вам, как он работает. Но прежде чем этим заняться я прочёл отцовскую книжку по юниксу на русском языке. Я уже что-то такое спрашивал в одном форуме, и программисты не хотели почему-то обсуждать эту тему, т.к. там реальные проблемы по программированию решаются. Сделаю уточнее, терминал или телетайп, позволяет перемещать каретку по x и y координате, и разрешение 80x25 символов, учтём что данные идут по телефонной линии или по сетевому кабелю последовательно. В общем как вы думаете как бы выглядел терминал или телетайп, который мог бы одновременно отображать от нескольких приложений запущенных на сервере? Я бы хотел бы разработать что-нибудь такое, у меня дома есть два старых ноутбука, два телефонных номера, я подсоеденю два ноутбука через модемы, а модемы через телефонные линии.

Я спросил ИИ, но ИИ может ошибаться, поэтому я хочу узнать вашего мнения. Вот что сказал ИИ по этому поводу:
 Развернуть: Ответ от ИИ
Я: Давай поговорим и пофантазируем об многозадачности в текстовом режиме. В общем есть сервер, к нему подключается простенький телетайп не важно через что - через телефонную линию или через сеть. Сервер может выполнять сразу несколько приложений, телетайп поддерживает позиционирования, т.е. сервер может послать телетайпу команду переместить каретку на x, y координату, ну пусть будет разрешения телетайп 80x25 т.е. 80 символов горизонтально, и 25 вертикально. Многозадачность есть во многих ОС допустим Windows, Linux, Mac OS, и каждая задача это может быть отдельное окошко. Как ты думаешь, как будет выглядеть такое в текстовом режиме? Только пожайлуста без кода.

ИИ: Интересная идея! Если представить многозадачность в текстовом режиме с использованием телетайпа с разрешением 80x25 символов, то визуально это могло бы выглядеть как нечто вроде примитивной версии оконной системы, но только с текстовым выводом.

Каждое «окно» могло бы занимать определенную область на экране телетайпа. Например, задачи могли бы быть представлены в виде "окон" прямоугольной формы, которые отображаются в заданных координатах. В верхней части каждого окна мог бы быть "заголовок" с названием задачи, а внутри окна - вывод данных этой задачи.

Основные принципы взаимодействия:
- **Между окнами можно переключаться:** например, с помощью горячих клавиш или команд, как это делается в оконных менеджерах.
- **Обновление окна:** сервер мог бы обновлять только конкретные участки экрана (аналог частичного перерисовывания окон).
- **Перекрытие окон:** текстовые окна могли бы "перекрывать" друг друга, но не с прозрачностью, а блокируя видимость нижних окон.
- **"Фокус ввода":** сервер определяет, в какое окно направляются пользовательские команды (ввод с клавиатуры).

Элементы интерфейса:
1. **"Границы" окна:** Для разделения областей задач, можно использовать символы вроде `+`, `-`, `|`.
2. **Статусы задач:** На экране может быть специальная строка внизу или сбоку, где выводятся мини-иконки или текстовые метки, указывающие на статус работы всех задач.
3. **Быстрый просмотр задач:** Если нужно "посмотреть" все задачи, сервер мог бы мгновенно перерисовать экран, заменив текущее состояние упрощенной текстовой диаграммой.

В таком интерфейсе главное – грамотное управление пространством. Например, фоновые задачи могут работать без видимого окна, но с текстовым уведомлением, что они активны. Относительно "смыкания" окон друг с другом и взаимодействия между ними, это может напомнить что-то вроде аналоговой версии «tile-based» систем.

Это создает своеобразную эстетику ретро-компьютинга. Как тебе такой "воображаемый текстовый GUI"?


---


Я: А как бы это выглядело бы по линии, ведь там не параллельно отсылаются данные а последовательно?


ИИ: Хороший вопрос! Последовательная передача данных через телетайп добавляет интересный технический слой к концепции многозадачности в текстовом режиме. Здесь каждое "окно" или задача, по сути, должно передаваться по очереди, и серверу нужно будет управлять этим процессом так, чтобы создать иллюзию параллельной работы. Вот как это могло бы выглядеть:

### Принципы работы в условиях последовательной передачи:
1. **Разделение времени:** Сервер использует временные интервалы (тайм-слоты), чтобы поочередно отправлять данные для обновления каждого "окна". Например, часть данных отправляется для одной задачи, затем для другой, и так далее. Это похоже на "мультиплексирование" в сетевых протоколах.

2. **Команды управления кареткой:** Чтобы текст попадал в нужное "окно", сервер добавляет к данным управляющие команды для перемещения каретки на конкретные координаты на экране. Например, перед отправкой данных для второй задачи каретка будет перемещена в верхний левый угол "второго окна".

3. **Инкрементальное обновление:** Вместо того чтобы пересылать весь "экран" целиком, сервер отправляет только измененные части окна. Это снижает нагрузку на канал связи и ускоряет обновление.

4. **Псевдоасинхронность:** Хотя данные передаются последовательно, сервер старается обновлять окна так часто, чтобы пользователь воспринимал их обновление как "одновременное". Здесь важно минимизировать задержки между обновлениями.

### Как это может выглядеть:
Представьте, что экран сначала заполняется базовой "структурой" — границами всех окон. Затем начинается процесс обновления. Например:
- Сначала выводится заголовок и содержимое первого окна.
- После этого каретка перемещается во второе окно, и данные для него отправляются.
- Аналогично для третьего окна и так далее.

Если есть перекрытие окон, сервер может, например, временно скрывать нижние окна, обновляя их только тогда, когда верхнее окно "закрыто".

### Эффект для пользователя:
Со стороны пользователя это может выглядеть так, будто данные "мигают" по экране, если обновления слишком редки. Но при высокой скорости передачи данные будут меняться плавно, и пользователь не заметит, что все происходит последовательно.

Это очень напоминает времена старых текстовых терминалов, где, несмотря на последовательный характер передачи данных, интерфейсы были вполне функциональными. Такое воображаемое решение объединяет дух ретро-технологий и креативные идеи! Как думаешь, реалистично ли это, или есть идеи для улучшения?

---

Я: А такие есть вообще ОС, которые поддерживают многозадачность для одного терминала? Мне кажется z/OS или OS/360 может что-то такое, или я ошибаюсь?

ИИ: Да, ваши предположения довольно точны! z/OS и OS/360, разработанные для больших мейнфреймов IBM, действительно обладают мощными механизмами многозадачности, которые могли бы позволить взаимодействие с несколькими задачами через один терминал. Они изначально создавались для обработки множества одновременно работающих программ или процессов, даже в условиях ограниченных интерфейсов.

**OS/360** была одной из первых систем, где задачи могли выполняться параллельно благодаря функции разделения времени (time-sharing). Через терминал можно было взаимодействовать с несколькими активными процессами, хотя интерфейс оставался текстовым и не был столь "визуальным" в плане многозадачного представления. Основное управление происходило через команды, вводимые пользователем.

**z/OS**, будучи более современной системой, значительно расширила возможности многозадачности. Она включает функции виртуализации, многопоточной обработки и управления ресурсами, которые позволяют одновременно работать с множеством процессов и приложений. Терминальный доступ к z/OS поддерживает взаимодействие с различными задачами через текстовые интерфейсы, такие как TSO/E (Time Sharing Option Extensions). Пользователь может запускать разные программы и переключаться между ними, используя текстовые команды.

И хотя эти системы не предоставляют "оконный интерфейс" в привычном виде, как в графических операционных системах, они могут организовать эффективную многозадачность на уровне текстового взаимодействия. Примеры таких подходов можно также увидеть в старых UNIX-системах или VMS, которые поддерживали терминалы и многозадачность.

Это демонстрирует, как элегантно можно было реализовать работу в многозадачных системах даже в условиях ограниченных интерфейсов. Хотели бы углубиться в технические детали или историю таких систем?
Аватара пользователя
oldpcfan82
Мастер Даунгрейда
 
Сообщения: 277
Зарегистрирован: 01 окт 2023, 22:57

Re: Мультитерминал

Сообщение gudleifr » 22 мар 2025, 12:23

oldpcfan82 писал(а):В общем как вы думаете как бы выглядел терминал или телетайп, который мог бы одновременно отображать от нескольких приложений запущенных на сервере?


Рабочий экран Дональда Кнута:
Изображение
Последний раз редактировалось gudleifr 22 мар 2025, 12:26, всего редактировалось 1 раз.
Аватара пользователя
gudleifr
Мастер Даунгрейда
 
Сообщения: 407
Зарегистрирован: 23 июн 2024, 15:14
Откуда: Питер


Вернуться в Флейм

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14