eugrus Перевод:
Домашняя страница
StreamOS - это проект свободной операционной системы. Разработчики используют язык программирования Pascal. Оболочки программирования - KDevelop + Free Pascal. Система планируется, как мультизадачная для выполнения научных вычислений или для другой работы. Если вы хотите подключиться к команде разработчиков, то пишите [ post-factum] на [rambler] точка ru. Будем очень признательны.
Этот сайт посвящен операционной системе StreamOS. Вы можете ознакомиться с принципами системы и загрузить исходные коды.
Новости
16.04.2005 - новая Лицензия версии 1.7 в разделе загрузок.
8.04.2005 - пофиксил несколько багов, добавил поддержку циклов в программах, некоторые файловые функции... Получайте версию 0.11.
1.04.2005 - с праздником! А также получайте новые исходные коды. Кстати, версия 0.2 будет сохранять суффикс "pre", а вместо финальной будут появляться 0.11, 0.12... И так до 0.2.
24.03.2005 - у Kacher'а, видите, модем сгорел! Ну то и что? Это не повод отходить от дел! Вон Palua, так у него вообще инета нет! А работает... Короче говоря, когда Kacher что-то сделает, тогда и запишем в разработчики...
23.03.2005 - появилась бета графического шелла GShell by Nobody для StreamOS в разделе загрузок.
20.03.2005 - выложил версию 0.2 preview. Основные нововведения - работа с питанием через APM.
18.03.2005 - 1. У нас появился еще один разработчик с ником Nobody. 2. Готовится к выпуску версия 0.2 Vorskla. 3. Немного изменился логотип системы.
8.03.2005 - всех женщин с праздником! У меня для вас сюрприз - версия 0.1 ГОТОВАЯ!!! Смотрите раздел загрузок...
26.02.2005 - версия 0.0.2 под лицензией UPL доступная для загрузки.
24.02.2005 - поскольку нам все равно когда-то придется выпускать версию 0.1, то у меня уже есть несколько версий, как ее назвать: Maidan, Dnipro, Vorskla, Slobida, Shatsk. Если у кого-то есть лучшие идеи или желание все это обсудить, пишите post-factum'у.
18.02.2005 - начинаю реализацию системных вызовов. Использую POSIX-Стандарты. Готовлю к выпуску версию 0.0.2.
3.02.2005 - работает ввод/вывод! Пока что НЕ standalone. Запущено первое приложение.
28.01.2005 - подключился еще и Blaze.
25.01.2005 - команда разработчиков: я, A.D., Kacher и Palua.
11.01.2005 - автор решил переписать систему "с нуля", сохранив основные принципы.
(с) post-factum, Наталенко Александр, 2005 год.
Основные концепции:
На этой странице вы можете узнать об основных концепциях ОС StreamOS
Данная операционная система началась разрабатываться в 2004 году. Тогда была цель только выучить так называемую оккупационную мультизадачность. Принцип последней - оккупация всех доступных аппаратных ресурсов системой и выдача их по необходимости разным приложениям. Для реализации этой цели использовалась виртуальная машина - специальный язык интерпретации команд приложений. Это дает возможность реализовать высокую защищенность системы и стабильность работы за счет контроля выполнения приложений и извещение об ошибках.
Система базируется как стабильная, быстрая и защищенная для одновременного выполнения научных вычислений. На текущий момент основной акцент при разработке делается на многозадачность и расширение возможностей виртуальной машины.
Сейчас система переписывается "с нуля", так как изменено отношение к самой системе. Сейчас это не проект мультизадачности. Разработчики планируют именно ОС.
ОС StreamOS имеет текстовый интерфейс. Конечно, это можно назвать недостатком, но основное назначение системы может это опровергнуть. Система создается для продолжительной автономной работы, для чего графический интерфейс не всегда нужен. Яркий пример - Unix. Но StreamOS не имеет ничего общего с этой выдающейся системой.
В системе не применяется реальная многозадачность, так как время переключения между процессами было бы чрезвычайно большим, и быстрого выполнения процессов не могло бы быть.
Документция:
На этой странице вы можете почитать документацию по ОС StreamOS
Понятие
Процесс - это совокупность любых действий, которые относятся к единому целому в едином адресном пространстве и кванте мудьтизадачности, направленная на реализацию или достижение любых действий в отношении к пользователю, контролируется ядром ОС.
Системный вызов - это реализация функций программ в виде машинного кода на виртуальной машине ОС.
Принципы взаимодействия и системные вызовы
Программные вызовы виртуальной машины базируются на POSIX-Стандартах, хотя пока что полностью им не отвечают.
Запуск системы начинает из загрузку ядра в память загрузчиком. Потом управление передается ядру. Ядро выполняет встроенный системный вызов call_shell, запуская таким образом консоль управления.
Дальше пользователь системы имеет право запускать или уничтожать процессы, останавливать работу системы.
При загрузке процесса система выполняет вызов create_process(nm:string):boolean, где nm - название процесса, а возвращается 0 при успешном выполнении операции, и 1 - при неудачном.
Эта функция выполняет такие команды: сначала идет поиск свободного адресного пространства в дескрипторах процессов. При неудачном поиске система отказывается создавать процесс. Дальше (если свободное место найдено) система выполняет операцию присваивания адресному пространству имени процесса и текущего флагу "p" - приостановлено. Потом приоткрывается файл процесса, увеличивается значение счетчику процессов на 1 и выводится сообщение о создании процесса. Сам код процесса загружается в память, а файл процесса закрывается.
Система ориентируется на флаги процессов при их выполнении. "s" - процесс не существует, "p" - процесс приостановлен, "r" - процесс выполняется, "sh_dwn" - система выключается и посылает сигнал процесса для сохранности данных. В последнем случае команды процесса выполняются один раз единым блоком, не перерывая целостное завершение работы процесса.
Версия 0.0.2 дополнительно предусматривает флаг "term" для обозначения тех процессов, которые временно не нуждаются в выполнении. Разность между флагами "p" и "term" очевидная - первый просто сигнализирует о временном переключении ядра на другие процессы, а последний дает возможность приостановленным процессам не занимать ресурсы процессора.
Завершение работы процесса выполняется по его просьбе - командой exit виртуальной машины. В этом случае вызывается функция destroy_process(pd:integer):boolean. Она также может вызвана по желанию пользователя, если процесс не отвечает на любые вызовы (хотя, такое, в принципе, исключено самым строением системы; процесс может "повиснуть" только или из-за ошибки в коде, или из-за поломки самой системы).
Переключение процессов осуществляется с помощью функции switch:boolean. В этом случае система изменяет указательное число на процесс на 1 (если достигнут максимум maxprocesscount или дальше процессы не существуют, то все начинается с 1).
Функция system_halt:boolean выполняется в случае критической остановки системы.
Функция system_stop:boolean выполняется в случае необходимости быстрой остановки системы без сохранения данных.
Функция shutdown:boolean посылает сигналы процессам о завершении работы для сохранности данных и перерывает свою работу.
Кроме того, существуют функции виртуальной машины для выполнения разных приложений. Эти функции постоянно возобновляются. Детальное описание появится немного спустя.
Разделы Ссылки и Разработчики не перевожу.