Ограничения поддержки POSIX
В KasperskyOS ограниченно реализован интерфейс POSIX с ориентацией на стандарт POSIX.1-2008 (без поддержки XSI). Прежде всего ограничения связаны с обеспечением безопасности.
Ограничения затрагивают:
- взаимодействие между процессами;
- взаимодействие между потоками исполнения посредством сигналов;
- стандартный ввод-вывод;
- асинхронный ввод-вывод;
- использование робастных мьютексов;
- работу с терминалом;
- использование оболочки;
- манипуляции с дескрипторами файлов.
Ограничения представлены:
- нереализованными интерфейсами;
- интерфейсами, которые реализованы с отклонениями от стандарта POSIX.1-2008;
- интерфейсами-заглушками, которые не выполняют никаких действий, кроме присвоения переменной
errno
значенияENOSYS
и возвращения значения-1
.
В KasperskyOS сигналы не могут прервать системные вызовы Call()
, Recv()
, Reply()
, которые обеспечивают работу библиотек, реализующих интерфейс POSIX.
Ядро KasperskyOS не посылает сигналы.
Ограничения взаимодействия между процессами
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Создать новый (дочерний) процесс. | Заглушка |
|
| Зарегистрировать обработчики, которые вызываются перед и после создания дочернего процесса. | Не реализован |
|
| Ожидать остановки или завершения дочернего процесса. | Заглушка |
|
| Ожидать изменения состояния дочернего процесса. | Не реализован |
|
| Ожидать остановки или завершения дочернего процесса. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Запустить исполняемый файл. | Заглушка |
|
| Перевести процесс в другую группу или создать группу. | Заглушка |
|
| Создать сессию. | Не реализован |
|
| Получить идентификатор группы для вызывающего процесса. | Не реализован |
|
| Получить идентификатор группы. | Заглушка |
|
| Получить идентификатор родительского процесса. | Не реализован |
|
| Получить идентификатор сессии. | Заглушка |
|
| Получить значения времени для процесса и его потомков. | Заглушка |
|
| Послать сигнал процессу или группе процессов. | Можно посылать только сигнал |
|
| Ожидать сигнала. | Не реализован |
|
| Проверить наличие полученных заблокированных сигналов. | Не реализован |
|
| Получить и изменить набор заблокированных сигналов. | Заглушка |
|
| Ожидать сигнала. | Заглушка |
|
| Ожидать сигнала из заданного набора сигналов. | Заглушка |
|
| Послать сигнал процессу. | Не реализован |
|
| Ожидать сигнала из заданного набора сигналов. | Не реализован |
|
| Ожидать сигнала из заданного набора сигналов. | Не реализован |
|
| Создать неименованный семафор. | Нельзя создать неименованный семафор для синхронизации между процессами. Если передать функции ненулевое значение через параметр |
|
| Создать/открыть именованный семафор. | Нельзя открыть именованный семафор, который был создан другим процессом. Именованные семафоры (как и неименованные) являются локальными, то есть они доступны только тому процессу, который их создал. |
|
| Задать атрибут мьютекса, который разрешает использование мьютекса несколькими процессами. | Нельзя задать атрибут мьютекса, который разрешает использование мьютекса несколькими процессами. Если передать функции значение |
|
| Задать атрибут барьера, который разрешает использование барьера несколькими процессами. | Нельзя задать атрибут барьера, который разрешает использование барьера несколькими процессами. Если передать функции значение |
|
| Задать атрибут условной переменной, который разрешает использование условной переменной несколькими процессами. | Нельзя задать атрибут условной переменной, который разрешает использование условной переменной несколькими процессами. Если передать функции значение |
|
| Задать атрибут объекта блокировки чтения-записи, который разрешает использование объекта блокировки чтения-записи несколькими процессами. | Нельзя задать атрибут объекта блокировки чтения-записи, который разрешает использование объекта блокировки чтения-записи несколькими процессами. Если передать функции значение |
|
| Создать спин-блокировку. | Нельзя создать спин-блокировку для синхронизации между процессами. Если передать функции значение |
|
| Создать или открыть объект разделяемой памяти. | Не реализован |
|
| Отобразить в память. | Нельзя выполнить отображение в память для взаимодействия между процессами. Если передать функции значения |
|
| Задать права доступа к памяти. | По умолчанию функция работает как заглушка. Чтобы использовать функцию, требуется задать специальные параметры ядра KasperskyOS. |
|
| Создать неименованный канал. | Нельзя использовать неименованный канал для передачи данных между процессами. Неименованные каналы являются локальными, то есть они доступны только тому процессу, который их создал. |
|
| Создать специальный файл FIFO (именованный канал). | Заглушка |
|
| Создать специальный файл FIFO (именованный канал). | Не реализован |
|
Ограничения взаимодействия между потоками исполнения посредством сигналов
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Послать сигнал потоку исполнения. | Нельзя послать сигнал потоку исполнения. Если передать функции номер сигнала через параметр |
|
| Получить и изменить набор заблокированных сигналов. | Заглушка |
|
| Восстановить состояние потока управления и маску сигналов. | Не реализован |
|
| Сохранить состояние потока управления и маску сигналов. | Не реализован |
|
Ограничения стандартного ввода-вывода
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Выполнить форматированный вывод в файл. | Не реализован |
|
| Использовать память как поток данных (stream). | Не реализован |
|
| Использовать динамически выделенную память как поток данных (stream). | Не реализован |
|
| Выполнить форматированный вывод в файл. | Не реализован |
|
Ограничения асинхронного ввода-вывода
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Отменить запросы ввода-вывода, которые ожидают обработки. | Не реализован |
|
| Получить ошибку операции асинхронного ввода-вывода. | Не реализован |
|
| Запросить выполнение операций ввода-вывода. | Не реализован |
|
| Запросить чтение из файла. | Не реализован |
|
| Получить статус операции асинхронного ввода-вывода. | Не реализован |
|
| Ожидать выполнения операций асинхронного ввода-вывода. | Не реализован |
|
| Запросить запись в файл. | Не реализован |
|
| Запросить выполнение набора операций ввода-вывода. | Не реализован |
|
Ограничения использования робастных мьютексов
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Вернуть робастный мьютекс в консистентное состояние. | Не реализован |
|
| Получить атрибут робастности мьютекса. | Не реализован |
|
| Задать атрибут робастности мьютекса. | Не реализован |
|
Ограничения работы с терминалом
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Получить путь к файлу управляющего терминала. | Функция только возвращает или передает через параметр |
|
| Задать параметры терминала. | Скорость ввода, скорость вывода и другие параметры, специфичные для аппаратных терминалов, игнорируются. |
|
| Ожидать завершения вывода. | Функция только возвращает значение |
|
| Приостановить или возобновить прием или передачу данных. | Приостановка вывода и запуск приостановленного вывода не поддерживаются. |
|
| Очистить очередь ввода или очередь вывода, или обе эти очереди. | Функция только возвращает значение |
|
| Разорвать соединение с терминалом на заданное время. | Функция только возвращает значение |
|
| Получить путь к файлу терминала. | Функция только возвращает нулевой указатель. |
|
| Получить путь к файлу терминала. | Функция только возвращает значение ошибки. |
|
| Получить идентификатор группы процессов, использующих терминал. | Функция только возвращает значение |
|
| Задать идентификатор группы процессов, использующих терминал. | Функция только возвращает значение |
|
| Получить идентификатор группы процессов для лидера сессии, связанной с терминалом. | Функция только возвращает значение |
|
Ограничения работы с оболочкой
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Создать дочерний процесс для выполнения команды и канал с этим процессом. | Функция только присваивает переменной |
|
| Закрыть канал с дочерним процессом, созданным функцией | Функцию нельзя использовать, так как ее входным параметром является дескриптор потока данных, возвращаемый функцией |
|
| Создать дочерний процесс для выполнения команды. | Заглушка |
|
| Раскрыть строку как в оболочке. | Не реализован |
|
| Освободить память, выделенную для результатов вызова интерфейса | Не реализован |
|
Ограничения манипуляций с дескрипторами файлов
Интерфейс | Назначение | Реализация | Заголовочный файл по стандарту POSIX.1-2008 |
---|---|---|---|
| Сделать копию дескриптора открытого файла. | Поддерживаются дескрипторы обычных файлов, стандартных потоков ввода-вывода, сокетов и каналов. Не гарантируется, что будет получен наименьший свободный дескриптор. |
|
| Сделать копию дескриптора открытого файла. | Поддерживаются дескрипторы обычных файлов, стандартных потоков ввода-вывода, сокетов и каналов. Через параметр |
|