Операционные системы. Марапулец Ю.В. - 18 стр.

UptoLike

Составители: 

Второй массив содержит значения типа Boolean для каждого элемента
динамического массива. Когда программа добавляет или удаляет строки, она
устанавливает для соответствующего элемента массива bInUse значение TRUE,
если позиция занята, и FALSE, если она пуста. При добавлении строки
программа ищет пустой элемент в массиве bInUse, а при удалении определяет
позицию элемента массива, обращаясь к массиву iListLookup.
Рис 2.1 Окно, позволяющее добавлять новые элементы в список
При запуске программы осуществляется вызов функции CreateList,
которая резервирует память и инициализирует вспомогательные структуры
данных. Команда VirtualAlloc резервирует блок адресов размером 1 Мб.
Подобно остальным зарезервированным страницам, адреса должны быть
помечены флагом PAGE_NOACCESS,
пока они не будут закреплены.
BOOL CreateList ( void )
{
int i;
// зарезервировать 1 Мб адресного пространства
pBase = VirtualAlloc( NULL, // начальный адрес (произвольный)
MAX_ITEMS * ITEM_SIZE, // один мегабайт
MEM_RESERVE, // зарезервировать;
//не закреплять
PAGE_NOACCESS ); // нет доступа
if( pBase == NULL )
{
ShowErrorMsg( __LINE__ ) ;
return( FALSE ) ;
18
     Второй массив содержит значения типа Boolean для каждого элемента
динамического массива. Когда программа добавляет или удаляет строки, она
устанавливает для соответствующего элемента массива bInUse значение TRUE,
если позиция занята, и FALSE, если она пуста. При добавлении строки
программа ищет пустой элемент в массиве bInUse, а при удалении определяет
позицию элемента массива, обращаясь к массиву iListLookup.




     Рис 2.1 Окно, позволяющее добавлять новые элементы в список

     При запуске программы осуществляется вызов функции CreateList,
которая резервирует память и инициализирует вспомогательные структуры
данных. Команда VirtualAlloc резервирует блок адресов размером 1 Мб.
Подобно остальным зарезервированным страницам, адреса должны быть
помечены флагом PAGE_NOACCESS, пока они не будут закреплены.

BOOL CreateList ( void )
{
    int i;
    // зарезервировать 1 Мб адресного пространства
    pBase = VirtualAlloc( NULL,          // начальный адрес (произвольный)
                  MAX_ITEMS * ITEM_SIZE,             // один мегабайт
                  MEM_RESERVE,                      // зарезервировать;
                                              //не закреплять
                  PAGE_NOACCESS );                  // нет доступа
    if( pBase == NULL )
    {
           ShowErrorMsg( __LINE__ ) ;
           return( FALSE ) ;
                                    18