Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт сен 22, 2017 6:03 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу Пред. 1 2 3
Автор Сообщение
СообщениеДобавлено: Сб окт 30, 2010 1:30 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
FireWall писал(а):
Цитата: "Ну, как минимум, идентификатор - самая важная информация о процессе."

Если Вы имеете в виду PID/TID, то это пока имено TID - идентификатор потока. Насколько я понимаю, пока в KolibriOS идентификатора процесса нет. (Поэтому я пока и продублировал возврат этого значения в двух подфункциях.)

Да, фактически это так. Просто в документации обычно пишут PID/TID, т.к. никакого разделения пока нет.

_________________
ушёл...


Вернуться к началу
СообщениеДобавлено: Сб окт 30, 2010 1:32 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
Вместо базового адреса, можно возвращать максимальный номер слота.

_________________
ушёл...


Вернуться к началу
СообщениеДобавлено: Сб окт 30, 2010 11:09 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Адрес страничного каталога в некоторых случаях используется как pid, для поиска потоков в одном адресном пространстве.


Вернуться к началу
СообщениеДобавлено: Пн ноя 01, 2010 10:27 pm 
Не в сети

Зарегистрирован: Ср сен 15, 2010 7:22 pm
Сообщения: 101
Цитата: "Если это базовый адрес процесса, то он 0 для всех. Значение имело смысл до перехода к страничной памяти."

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


Вернуться к началу
СообщениеДобавлено: Ср авг 15, 2012 7:35 pm 
Не в сети

Зарегистрирован: Ср сен 15, 2010 7:22 pm
Сообщения: 101
Пожалуй всё-же придётся "перевернуть эту страницу" :wink:

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

Почему хуже?
(1) Не даёт выигрыша в скорости (ибо в SysFn09 основное время занимает переключение ring3 -> ring0 -> ring3).
(2) Не даёт выигрыша в размере исполняемого файла, так как буфер на 1024 байта (что конечно расточительно) можно хранить в BSS либо даже в динамически выделенном блоке.
(3) Также и даже ещё более неудобен для C-обёртки

P.S

Чтобы не подумали, что мне просто слабо реализовать эту идею - в прикреплённом файле (SysFn_alt_check.7z) находится реализация...

Содержимое архива:

libkosw.a – статическая библиотека, используемая для alt_ch.kex (начальный эскиз в отладочной версии; исходники находятся в папке src)
остальные файлы - проект изменённого ядра с новым системным вызовом, а также тестовой программы.

bin/

alt_ch.kex – программа, показывающая идентичность результатов нового системного вызова (содержащегося в kernel.mnt, находящемся здесь же) и SysFn9 для непустых слотов;

kernel.mnt – ядро ($Revision: 2640 $) с новым системным вызовом, помещённым вместо зарезервированной системной функции 27;

cpu_count.kex – программа, сравнивающее время исполнения (в тиках процессора):
- собственно затрачиваемое на саму функцию
- затрачиваемую на зарезервированную системную функцию SysFn19 с собстенно кодом (+ сама функция):
paleholder:
ret ; kernel.asm строчка 5214
- затрачиваемое на SysFn9 (+ сама функция).
Исходники программы также находятся в src/ .

include/

Здесь находятся заголовочные файлы для libkosw.a (совпадают с соответствующими из папки src/ ).

kernel_changed/

Здесь находятся новые или изменённые файлы ядра (с сохранением относительного расположения):

kernel32.inc – изменённые строчки (248 – 251):
; < FireWall>
; new system functions
include "process_thread_info.inc"
; < /FireWall>

process_thread_info.inc – файл, содержащий код нового системного вызова (ничего нового – это слегка реструктурированный код SysFn9);

core/syscall.inc – изменённые строчки (150 - 153):
; < FireWall>
dd proc_thread_info ; 27-Process and thread info (alternative for SysFn09)
; < /FireWall>
; dd undefined_syscall ; 27-reserved


Вложения:
Комментарий к файлу: изменённый код ядра kernel/ удалён
SysFn_alt_check.7z [117.2 КБ]
82 скачивания
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу Пред. 1 2 3

Часовой пояс: UTC+03:00


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB