66531

УПРАВЛЕНИЕ ПАМЯТЬЮ В ОС UNIX И WINDOWS

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

Информатика, кибернетика и программирование

Цель работы — изучение аспектов организации работы с внутренней и внешней памятью в операционных системах семейств Unix и Windows. Использованные теоретические сведения Материалы из методического пособия...

Русский

2014-08-22

148.11 KB

0 чел.

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

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ОТЧЕТ

по лабораторной работе №4

«УПРАВЛЕНИЕ ПАМЯТЬЮ В ОС UNIX И WINDOWS»

по курсу «Операционные системы»

Выполнил

студент гр. 2088/4    А.А.Чернышев

                           <подпись>

Руководитель     А.С. Коноплев

                           <подпись>

Санкт-Петербург

2011

1. Формулировка задания

Цель работы — изучение аспектов организации работы с внутренней и внешней памятью в операционных системах семейств Unix и Windows.

2. Использованные теоретические сведения

Материалы из методического пособия 08.pdf, материалы интернет ресурсов msdn.com, и rus-linux.net.

3. Результаты работы

3.1. Выполнение индивидуального задания

1) Напишите программу, которая будет сравнивать среднее время доступа к жесткому диску с включенным кэшированием записи и без него. Сравните и обоснуйте полученные результаты. Операционная система - Windows.

//========Измерение среднего времени записи на HDD========//

//========================WINDOWS=========================//

#include <windows.h>

#include <stdio.h>

#include <conio.h>

#include <time.h>

int main()

{

   int i=0;

   int n=0;

   int res;

   double start, end;

   HANDLE f;

   f=NULL;

   unsigned long offs=0;

   char* buf = new char[2*1024*1024];

   start = clock();

   for(n=0; n<1000; n++)

   {

f=CreateFile("D:\\qwe.bak",GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,       FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL);

      if(f==0) printf("Error!");

      res=WriteFile(f,buf,2*1024*1024,&offs,0);

      CloseHandle(f);

      DeleteFile("D:\\qwe.bak");

   }

   end = clock();

   printf("HDD av. write access time is %.3f s \n",(double)(end-start)/CLOCKS_PER_SEC);

   _getch();

}

Для разработки этой программы были изучены аспекты работы с дескриптором HANDLE.

В процессе разработки возникли трудности с флагами FILE_FLAG_NO_BUFFERING и FILE_FLAG_WRITE_THROUGH, поэтому было решено отключать кэширование через Диспетчер устройств -> Дисковые устройства -> <Наш жесткий диск> -> Свойства -> политика -> “Разрешить кэширование”. Для того чтобы отключить кэширование таким способом требуется перезагрузка. В итоге получили такие результаты:  для записи 2 Mb

С Кэшированием потребовалось:

Без кэширования потребовалось:

По полученным результатам, мы вполне можем судить о том, что за счет включенного кэширование заметно уменьшается время доступа к жесткому диску, и как следствие вырастает производительность компьютера.

2) Напишите программу, которая будет измерять среднее время доступа к внутренней и внешней памяти (чтение данных из оперативной памяти и с внешней памяти, в качестве которой выступает дискета 3.5). Сравните и обоснуйте полученные результаты. Операционная система - Unix. Ввиду отсутствия Floppy-дисковода, было решено замерять время чтения данных с жесткого диска.

В итоге были созданы 2 программы:

//========Измерение среднего времени чтения из HDD========//

//==========================UNIX==========================//

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <time.h>

#define BUF_SIZE 1024*8*128

int  main()

{

   double start, end;

   char *buf1= new char[1024*1024*128];

   int fp;    

   int n=0;

 

   /* fd=open("/home/artysleep/qwe.txt",O_RDWR|O_TRUNC|O_CREAT,0777);

       for(i=0; i<BUF_SIZE; i++)

       {

          write(fd,"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567", 128);

       }

       close(fd);*/ //Создание файла;

   start=clock();

   for (n=0; n<100; n++)

   {

       fp=open("/home/artysleep/qwe.txt",O_RDWR,0777);

       read(fp,buf1,BUF_SIZE*128);

       close(fp);

   }

   end=clock();

   printf("HDD av. write access time is %.3f s \n",(float)(end-start)/100/CLOCKS_PER_SEC);

   return 0;

}

//========Измерение среднего времени чтения из RAM========//

//==========================UNIX==========================//

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

#define BUF_SIZE 1024*1024*128

int main ()

{

   double start, end;

   char *buf1;

   char *buf2;

   int i;

   if((buf1 = (char*)malloc(BUF_SIZE))==NULL)

   {

       printf("Buf1 memmory error\n");

       exit(1);

   }

   if((buf2 = (char*)malloc(BUF_SIZE))==NULL)

   {

       printf("Buf2 memmory error\n");

       exit(1);

   }

   start=clock();

   for (i=0; i<100; i++)

   {

       memcpy(buf1, buf2, BUF_SIZE);

   }

   end=clock();

   printf("RAM av. write access time is %.3f s \n",(double)(end-start)/100/(double)CLOCKS_PER_SEC);

   return 0;

}

Были прочитаны 128Mb на жестком диске и в оперативной памяти.

В результате выполнения данных программ, получили такие результаты:

Исходя из полученных результатов, можно судить о том, что чтение из оперативной памяти в несколько раз быстрее, чем чтение с жесткого диска.

3.2. Ответы на контрольные вопросы

Какие из перечисленных методов распределения памяти имеют серьезный недостаток – фрагментация памяти?

Распределение памяти разделами переменной величины.

Какие задачи решает виртуальная память?

Виртуальная память решает следующие задачи:

  1.  размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;
  2.  перемещает по мере необходимости данные между запоминающими устройствами разного типа, например, подгружает нужную часть программы с диска в оперативную память;
  3.  преобразует виртуальные адреса в физические.

Перечислите возможные  причины выгрузки процесса частично или полностью на диск (свопинг ).

Ядро выгружает процесс, если испытывает потребность в свободной памяти,

которая может возникнуть в следующих случаях:

  1.  Произведено обращение к системной функции fork, которая должна выделить место в памяти для процесса-потомка.
  2.  Произведено обращение к системной функции brk, увеличивающей размер процесса.
  3.  Размер процесса увеличился в результате естественного увеличения стека процесса.
  4.  Ядру нужно освободить в памяти место для подкачки ранее выгруженных процессов.

4. Выводы

Механизмы, использующиеся для работы с памятью в ОС UNIX и Windows, повышают эффективность работы процессов, а также предоставляют некоторую свободу для программиста в реализации наиболее эффективной, по его мнению, работы с памятью его программы.


 

А также другие работы, которые могут Вас заинтересовать

12961. Классный час Давайте знакомиться 121.31 KB
  Классный час Дата: 01.04.2013 Тема: Давайте знакомиться Задачи: раскрыть личностные особенности детей познакомиться с их интересами и увлечениями формировать навыки самодисциплины содействовать созданию сплоченного классного коллектива. Оборудов...
12962. Расчет плоских стержневых систем с применением ПК SCAD 348 KB
  Лабораторная работа № 3 Тема: Расчет плоских стержневых систем с применением ПК SCAD Расчетная схема : плоская рама при соотношении жесткостей J2 = 2 J1. ДOKУMEHT 03 ...
12963. Расчет плоских стержневых систем по ПК SCAD 229.5 KB
  Лабораторная работа № 1 Тема : расчет плоских стержневых систем по ПК SCAD Задана многопролетная железобетонная балка постоянного прямоугольного сечения 40х60 см; материал бетон тяжелый класса В30. Результаты расчета по ПК SCAD Деформированная схема
12964. Методы и средства контроля параметров точности цилиндрических зубчатых колес 602.5 KB
  Лабораторная работа № 6 Методы и средства контроля параметров точности цилиндрических зубчатых колес Задание 1. Измерить величину радиального биения зубчатого колеса. Результаты занести в таблицу 1. Определить используя приложение 2 какой степени точности соотве
12965. МЕТОДЫ И СРЕДСТВА КОНТРОЛЯ ПАРАМЕТРОВ ТОЧНОСТИ ЦИЛИНДРИЧЕСКИХ ЗУБЧАТЫХ КОЛЕС 1.01 MB
  Методы и средства контроля параметров точности цилиндрических зубчатых колес Методические указания к лабораторной работе по дисциплине Метрология стандартизация и сертификация ЛАБОРАТОРНАЯ РАБОТА № 6 Методы и средства контроля параметров точности ...
12966. Измерение отклонений формы поверхностей типовых деталей машин 1.95 MB
  Измерение отклонений формы типовых поверхностей деталей машин Методические указания к лабораторной работе по дисциплине Метрология стандартизация и сертификация Лабораторная работа №1. Измерение отклонений формы поверхностей типовых деталей машин. Ц...
12967. Методы и схемы определения величины отклонений расположения шпоночного паза вала универсальными средствами измерений 476.5 KB
  Методы и схемы Определения величины отклонений расположения шпоночного паза вала универсальными средствами измерений Методические указания к лабораторной работе по дисциплине Метрология стандартизация и сертификация Лабораторная работа №3 Методы и ...
12968. ОПЕРАТИВНЫЙ КОНТРОЛЬ СОДЕРЖАНИЯ МЕТАНА И УГЛЕКИСЛОГО ГАЗА В РУДНИЧНОЙ АТМОСФЕРЕ ПРИБОРАМИ ЭПИЗОДИЧЕСКОГО ДЕЙСТВИЯ 431 KB
  ОПЕРАТИВНЫЙ КОНТРОЛЬ СОДЕРЖАНИЯ МЕТАНА И УГЛЕКИСЛОГО ГАЗА В РУДНИЧНОЙ АТМОСФЕРЕ ПРИБОРАМИ ЭПИЗОДИЧЕСКОГО ДЕЙСТВИЯ Методические указания Правила безопасности при выполнении работы 1. Перед использованием приборов изучить их конструкцию и правила пол
12969. ИСКУССТВЕННОЕ ОСВЕЩЕНИЕ 148.5 KB
  ИСКУССТВЕННОЕ ОСВЕЩЕНИЕ Цель работы. Демонстрация преимуществ и недостатков применяемых в настоящее время источников света. Изучение нормируемых качественных и количественных характеристик освещения. Оценка степени влияния отделки интерьера на коэффициент ис