Windows CE 5.x и Windows Mobile 5 и 6 позволяют запускать до 32 процессов одновременно. Каждому процессу выделяется собственная память - виртуальное адресное пространство на 32MB. Это адресное пространство Microsoft называет слот (Slot).
Если программа запрашивает память вызывая функцию malloc, то получает ее из этих 32 мегабайт.
В Windows CE 6.0 число одновременно запущенных процесов увеличино до 32*1024=32K.
Поскольку, Windows CE, как и Windows PC, это 32-битные операционные системы, то они позволяют аддресовать 2^32 = 4GB адресного просранства.
Программа (процесс) не может получить эти 4 гигабайта.
Используя VirtualAlloc или memory-mapped files (файлы отраженные в память) есть возможность получить около 1GB из математически обещанных 4GB.
Windows CE обычно хранит исполняемые файлы в компрессированном формате и распаковывает их при запуске. В критической ситуации Windows сомостоятельно может освободить физическую память связаную с запyщенной программой.
DLL или EXE загружается только для первого вызова и остается в памяти число используемых его процессов не станет 0 - все программы освободят DLL или EXE.
Windows CE имеет также специальный 32MB блок для системного кода - это слот 0 (slot 0). Здесь находятся так называемые системные DLL и EXE – приложения являющиеся частью операционной системы.
Слот 0 работает только с исполняемый кодом (DLL или EXE) и этот код не компрессирован в отличии от других приложений не являющихся системными.
В современных устройствах системные DLL и EXE даже не загружаются в оперативную память, а запускаются прямо с той памяти, где они хранятся. Этот трюк называют исполнение на месте eXecute In Place (XIP).
No comments:
Post a Comment