Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 20, 2019 3:38 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
PostPosted: Mon Oct 17, 2016 3:18 pm 
Offline

Joined: Tue Oct 04, 2016 10:05 pm
Posts: 44
Siemargl wrote:
В gcc действительно свой субаллокатор, в tcc я делать пока не стал - используется системный.

Но прикрутить libc от gcc (в виде PE DLL) к не си- программам будет нетривиально.

А выкусить только аллокатор в объектный файл нереально?


Top
   
PostPosted: Mon Oct 17, 2016 3:26 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
//DG, я вообще-то написал по дефолту. А если кому-то нужно сделать подмену. Например, для тестирования или отладки, то вот тогда и lib_init вызывать лишь при необходимости.
А то сейчас программы вынуждены из-за прихоти разработчиков таких библиотек таскать с собой вот это http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdll.inc А так бы GetProcAddress было бы достаточно.


Top
   
PostPosted: Mon Oct 17, 2016 3:29 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Там в левом нижнем углу написано Free memory(KB): 203716, а это меньше, чем запрошено(203716 < 1048576).
Это не мешает выделить виртуальную память, т.е. диапазон адресов. Если ты начнёшь эту память обнулять, получишь страничную ошибку, когда физическая память закончится.
Я проверял в VBox и VMware Player c 256 Мб


Top
   
PostPosted: Mon Oct 17, 2016 3:37 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge, попробую по-другому тогда объяснить.
Приложение1 резервирует всю память,
Приложение2 резервирует всю память,
..............
потом, когда приложения начнут её использовать, кто-то словит pagefault.


Top
   
PostPosted: Mon Oct 17, 2016 4:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
0CodErr
Словит, когда свободные страницы закончатся. Но в твоём случае вылезает не страничное нарушение, a gpf - общее нарушение защиты.


Top
   
PostPosted: Mon Oct 17, 2016 4:10 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge wrote:
Но в твоём случае вылезает не страничное нарушение, a gpf - общее нарушение защиты.
Да это, похоже, не к этой теме относится.
Quote:
Словит, когда свободные страницы закончатся.
Хорошо, как перед использованием какой-либо страницы определить, свободна она, или её уже кто-то другой использует?
Ты говорил, что надо В цикле с шагом в 4Кб пройти по всем страницам. Это закрепит физ. страницы по адресам. Так почему бы ядру самому не закрепить страницы?


Top
   
PostPosted: Mon Oct 17, 2016 4:21 pm 
Offline

Joined: Tue Oct 04, 2016 10:05 pm
Posts: 44
0CodErr wrote:
//DG, я вообще-то написал по дефолту. А если кому-то нужно сделать подмену. Например, для тестирования или отладки, то вот тогда и lib_init вызывать лишь при необходимости.
А то сейчас программы вынуждены из-за прихоти разработчиков таких библиотек таскать с собой вот это http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdll.inc А так бы GetProcAddress было бы достаточно.

Так и я говорю: по дефолту ты просто прокидываешь адрес стандартных процедур. То, что надо с собой что-то таскать - совсем другой вопрос.


Ококок, я воспринял "lib_init" как абстрактный вызов для инициализации данной библиотеки. А ты о конкретном lib_init, извини. еще не привык к вашему языку :D


Top
   
PostPosted: Mon Oct 17, 2016 4:23 pm 
Offline

Joined: Tue Oct 04, 2016 10:05 pm
Posts: 44
0CodErr wrote:
Serge wrote:
Но в твоём случае вылезает не страничное нарушение, a gpf - общее нарушение защиты.
Да это, похоже, не к этой теме относится.
Quote:
Словит, когда свободные страницы закончатся.
Хорошо, как перед использованием какой-либо страницы определить, свободна она, или её уже кто-то другой использует?
Ты говорил, что надо В цикле с шагом в 4Кб пройти по всем страницам. Это закрепит физ. страницы по адресам. Так почему бы ядру самому не закрепить страницы?

В Колибри есть что-то типа MEM_RESERVE/MEM_COMMIT? Ну, вызываешь ты функцию "дай мне памяти, ядро и закрепи-ка физические сразу" или просто "зарезервируй мне диапазон".
А то если нет подкачки, резервирование без закрепления - странная штука.


Top
   
PostPosted: Mon Oct 17, 2016 4:45 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Хорошо, как перед использованием какой-либо страницы определить, свободна она, или её уже кто-то другой использует?
Ты про физическую страницу ? Физический адрес которой не имеет смысла в виртуальном адресном пространстве процесс ? А что это тебе даст ?


Top
   
PostPosted: Mon Oct 17, 2016 4:50 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge, нет, я про виртуальную, которую будет использовать процесс в юзермоде.


Top
   
PostPosted: Mon Oct 17, 2016 5:02 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Страница выделяется при первом обращении к ней. И остаётся закреплённой, пока процесс её не вернёт ядру.


Top
   
PostPosted: Mon Oct 17, 2016 5:10 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge, первое обращение может совершить и любой другой процесс, зарезервировавший эту память. Получается, кто первый встал — того и тапки? :lol: А остальные pagefault поймают.


Top
   
PostPosted: Mon Oct 17, 2016 5:15 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1259
Ну обсуждалось же уже, тему перечитай.


Top
   
PostPosted: Mon Oct 17, 2016 6:03 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
первое обращение может совершить и любой другой процесс, зарезервировавший эту память.
Нет, не может. У другого процесса другое адресное пространство. Общее только пространство ядра, юзерспейс индивидуальный.


Top
   
PostPosted: Mon Oct 17, 2016 6:08 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Обсуждалось-то оно обсуждалось, а толку? Мне больше всего "понравился" 3-ий пункт алгоритма Serge viewtopic.php?f=2&t=3297&start=15#p65652
Ну разве кто-то будет использовать эту ОС для серьёзных вещей? Представьте, что от этого зависила бы работа дорогостоящего оборудования. Я уж не говорю про жизнь людей. А тут, понимаешь, Скрестить пальцы.
Так и представляю, пишет кто-то багрепорт, а Serge ему: "Пальцы скрещивали?" :)
Quote:
Нет, не может. У другого процесса другое адресное пространство.
А я и не про это вовсе. Если 2 приложения зарезервируют каждый всю свободную память, то при обращении к ней рано или поздно у кого-то будет pagefault.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4 5 6 Next

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:  
cron
Powered by phpBB® Forum Software © phpBB Limited