. | Содержание | 2

Управление процессами.

1. Понятие процесса как такового в Колибри очень зачаточное: процесс - объединение потоков с одним и тем же адресным пространством. У всех таких объединяемых потоков одно и то же имя и один и тот же размер используемой памяти.
Потоки, впрочем, существуют и обладают следующими характеристиками (memmap.inc из исходников ядра): 2. Процесс не идентифицируется никак; информация о потоках внутри ОС собрана в статический массив на 255 входов (нумеруемых от 0 до 255, причём 0-й слот не может использоваться, так что всего в системе может быть не более 255 потоков) (технически не в один массив, а в два разных, но сути дела это не меняет).
Некоторые системные функции принимают номер слота, некоторые - идентификатор.

3. Создание нового процесса отличается от создания потока (пожалуй, это единственное место в API, где такое отличие есть). Создание процесса: [core/taskman.inc, fs_execute] принимает на вход имя бинарного файла для загрузки, параметры командной строки для нового процесса и флаги, сейчас только то, запускается процесс как отлаживаемый или как обычный. Создание нового потока: [core/taskman.inc, new_sys_threads] принимает на вход entry point нового процесса и указатель на user-mode стек. Функция set_app_params: Завершение процесса: [core/sys32.inc, terminate] когда системный поток получает управление (главный цикл системы), одним из его действий является проход по списку процессов, поиск потоков в завершающемся состоянии и убийство таких процессов. Все нижеследующие действия происходят в контексте системного потока. 4. Взаимодействия процессов практически нет - есть только специальная системная функция для передачи данных от процесса-источника процессу-приёмнику, причём приёмник должен заранее подготовить буфер и ожидать этих данных, и некоторые возможности по отладке приложений.

5. Соответственно синхронизации тоже практически нет - один процесс может только проверить, завершился ли другой.

6. Состояния перечислены выше. 7. Планировщик циклически выделяет процессорное время всем активным потокам. Без всяких дополнительных ухищрений.

8. Другие системные функции управления потоками:
. | Содержание | 2

Pterox' DocPack R6. Last Edition: 29.05.2010. История выпусков