Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jul 17, 2019 1:48 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 66 posts ]  Go to page 1 2 3 4 5 Next
Author Message
PostPosted: Sat Oct 20, 2012 4:48 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
1. Функция 64 (sys_resize_app_memory) в каких единицах задается размер - байтах или страницах? А какой начальной адрес етой памяти? Все запрошенные страницы выделяются сразу, или когда программа пытается читать/писать там? Выделенная память заполнена чем нибудь или может содержать какого нибудь мусора.


Top
   
PostPosted: Sat Oct 20, 2012 5:18 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
фунция аналог brk() и определяет новый размер всей доступной приложению памяти. Размер задаётся в байтах, но ядро округляет вверх на размер страницы. Страницы выделяются при первом обращении к ним, ядро их обнуляет.


Top
   
PostPosted: Sat Oct 20, 2012 5:25 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
А начальной адрес это сразу после инициализированные данные или после неинициализированные?


Top
   
PostPosted: Sat Oct 20, 2012 7:11 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Не очень точный термин "начальный адрес".
Представь что это комната в которой можно менять высоту потолка вверх и вниз, а f.64 устанавливает эту высоту.
Обычный заголовок приложения:
Code:
struct  APP_HEADER
        banner          dq ?
        version         dd ?    ;+8
        start           dd ?    ;+12
        i_end           dd ?    ;+16
        mem_size        dd ?    ;+20
        stack_top       dd ?    ;+24
        i_param         dd ?    ;+28
        i_icon          dd ?    ;+32
ends
mem_size это общий размер выделенной памяти (высота потолка) после запуска приложения. Если ты увеличишь размер, то новая память будет выделяться после mem_size.


Top
   
PostPosted: Sat Oct 20, 2012 7:20 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
Не совсем ясно. Скажем так:
mem_size = $100000
и задаем eax=64, ebx=1, ecx=4096

Какой будет последний доступный адрес памяти? 100fffh или нет?


Top
   
PostPosted: Sat Oct 20, 2012 8:27 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
0x0FFF


Top
   
PostPosted: Sat Oct 20, 2012 8:37 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
Теперь ясно. Выходит что программа может сама себе уничтожит.


Top
   
PostPosted: Sat Oct 20, 2012 9:41 pm 
johnfound wrote:
Теперь ясно. Выходит что программа может сама себе уничтожит.

Это Колибри, здесь и не только такое возможно.


Top
   
PostPosted: Sat Oct 20, 2012 9:44 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
Mario wrote:
Это Колибри, здесь и не только такое возможно.

Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.


Top
   
PostPosted: Sat Oct 20, 2012 11:32 pm 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
Ну, продолжаю с вопросами...
Как правильно закончить приложение? фн.-1 завершает текущего потока. А как насчет других потоков процеса? фн.18.2 или фн.18.18? Но как узнать какие потоки принадлежат приложению?


Top
   
PostPosted: Sun Oct 21, 2012 12:09 am 
Создать в памяти структуру и каждый запускающийся поток, первым делом, должен регистрировать штатный запуск и штатное завершение себя любимого. Если он еще не сделал себе сепуку или его порешили внешние обстоятельства, то ведущий (изначальный поток) перед своим завершением расстреливает всех своих псевдодетей. Даже если их уже нет в нашем подлом и коварном мире.

Метод естественно имеет некоторые ограничения, однако в штатных ситуациях вполне работоспособен. Как пример можно посмотреть код программы zSea.


Top
   
PostPosted: Sun Oct 21, 2012 12:11 am 
johnfound wrote:
Mario wrote:
Это Колибри, здесь и не только такое возможно.

Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.

Все в твоих руках.


Top
   
PostPosted: Sun Oct 21, 2012 12:34 am 
Offline

Joined: Fri Feb 18, 2011 3:13 pm
Posts: 201
Mario wrote:
Все в твоих руках.


А как? Редактирование разрешено только участников, а регистрация выключена.


Top
   
PostPosted: Sun Oct 21, 2012 12:51 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Может сделать расширенную версию eax = -1 ebx = -1 завершающую все потоки в многопоточном приложении ?


Top
   
PostPosted: Sun Oct 21, 2012 1:36 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
johnfound: Это было сделано после спам-атаки, когда reCAPTCHA показала свою несостоятельность. Напиши, пожалуйста, в личку, я сделаю аккаунт.


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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