Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Apr 25, 2019 9:14 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 35 posts ]  Go to page Previous 1 2 3
Author Message
PostPosted: Sat Oct 30, 2010 1:30 pm 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
FireWall wrote:
Цитата: "Ну, как минимум, идентификатор - самая важная информация о процессе."

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

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

_________________
ушёл...


Top
   
PostPosted: Sat Oct 30, 2010 1:32 pm 
Offline
User avatar

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

_________________
ушёл...


Top
   
PostPosted: Sat Oct 30, 2010 11:09 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Адрес страничного каталога в некоторых случаях используется как pid, для поиска потоков в одном адресном пространстве.


Top
   
PostPosted: Mon Nov 01, 2010 10:27 pm 
Offline

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

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


Top
   
PostPosted: Wed Aug 15, 2012 7:35 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 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


Attachments:
File comment: изменённый код ядра kernel/ удалён
SysFn_alt_check.7z [117.2 KiB]
Downloaded 144 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 35 posts ]  Go to page Previous 1 2 3

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited