Управление памятью в Windows

Страницы работы

12 страниц (Word-файл)

Содержание работы

Министерство образования  и науки Российской Федерации

Федеральное агенство по образованию

Государственное образовательное учреждение
высшего профессионального образования

«Комсомольский-на-Амуре государственный технический университет»

Факультет Компьютерных технологий

Кафедра математического обеспечения и применения ЭВМ

Лабораторная работа №3

По курсу «ОСО»

Выполнил:                                                                                                                                             Рогозин ВА.

Проверил:                                                                                                                                               Тихомиров В.А.

Вариант:                                                                                                                                                                           16

Комсомольск-на-Амуре

2007

Тема:                Управление памятью в Windows.

Цель:               Изучить теоретические вопросы управления памятью в Windows и освоить приёмы практической реализации этого управления с использованием системных функций.

Задание:1) Внимательно изучить ниже прилагаемый теоретический материал;

2) Набрать и проверить работоспособность программных модулей, представленных на листингах 1-3. Тексты программ вместе с результатами их тестирования вставить в отчет;

3) выполнить индивидуальное задание в соответствии с выданным преподавателем вариантом:

Зарезервировать  память 30 Мбт. Выделяя порциями необходимую память считать в нее последовательно от 1 до 20 дискет. Найти контрольную сумму считанных байтов. Записать эти дискеты на винчестер в файлы в виде отдельных образов.
Выполнение

Пример 1. Программа получает в индивидуальное пользование относительно большой участок памяти, при этом используются три разных метода. По умолчанию программа работает с блоком памяти объемом 75 Мбайт. Это значение приемлемо для тестирования механизмов выделения/освобождения памяти. Если вы захотите работать с блоком памяти другого размера, его размер (количество мегабайт) можно указать в командной строке при запуске программы.

Листинг 1.

#include <iostream.h>

#include <windows.h>

#include <stdio.h>

extern   "C"       int        printf_oem(const char *s, ... )

{

            va_list ap;

    va_start(ap,s);

            char      src[256];

            vsprintf(src,s,ap );

    va_end(ap);

            char      oems[256];

            CharToOem(src,oems);

            return printf(oems);

}

#define printf  printf_oem

////////////////////////////////////////////////

//Процедура для превращения ANSI в OEM (ASCII)

char* ATO(char* text)

{char* buf;

buf=(char*)malloc(strlen(text)+1);

CharToOem( text, buf);

return (buf);

}

////////////////////////////////////////////////

char *p=NULL;

#define MEGABYTE 1048576

#define KBYTE 1024

#define MSIZE 75

void main(int argc, char *argv[])

{

  char choice;

  int asd=34;

  int msize=0;

  if (argc>1) msize=atoi(argv[1]);

  if (!msize) msize=MSIZE;

  do

  {

            int valid=1;

    cout<<ATO("1 - Выделить ")<<msize<< ATO("MB памяти\n");

    cout<<ATO("2 - Зарезервировать ") <<msize<<ATO("MB памяти\n");

    cout<<ATO("3 - Зарезервировать ") <<msize<<ATO("MB памяти и выделить в ней  1MB\n");

    cout<<ATO("4 - Выход\n");

    cout<<ATO("Ваш выбор: ");

    cin>>choice;

            switch (choice)

            {

            case '1':

                        cout<<ATO("\nВыделение памяти\n");

                        p=(char *)VirtualAlloc(NULL, msize*MEGABYTE,MEM_COMMIT,PAGE_READWRITE);

                        break;

            case '2':

                        cout<<ATO("\nРезервирование памяти\n");

                        p=(char *)VirtualAlloc(NULL, msize*MEGABYTE,MEM_RESERVE,PAGE_READWRITE);

                        break;

            case '3':

                        cout<<ATO("\nРезервирование и частичное выделение памяти");

        p=(char *)VirtualAlloc(NULL, msize*MEGABYTE,

                                                                 MEM_RESERVE, PAGE_READWRITE);

                        cout<<ATO("\nВыделение\n");

                      VirtualAlloc(p, MEGABYTE, MEM_COMMIT, PAGE_READWRITE);

                        break;

            case '4':

                        exit(0);

            default:

                        cout<<ATO("\nЧего-чего?\n");

                        valid=0;

            }

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
131 Kb
Скачали:
0