66534

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

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

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

Напишите набор программ, удовлетворяющих теоретическому понятию оверлея. Каждый оверлей должен осуществлять какие-либо вычисления, выводя результаты в терминал, далее он передает управление другому оверлею из комплекса. Всего в комплексе должно быть не менее 4 оверлеев.

Русский

2014-08-22

46 KB

1 чел.

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

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

—————————

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

ОТЧЕТ

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

«Управление памятью в ОС UNIX и Windows»

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

Студент:

Никитин А. С.

гр. 2088/1

Преподаватель:

Степанова Т. В.

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

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

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

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

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

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

  1.  Напишите набор программ, удовлетворяющих теоретическому понятию оверлея. Каждый оверлей должен осуществлять какие-либо вычисления, выводя результаты в терминал, далее он передает управление другому оверлею из комплекса. Всего в комплексе должно быть не менее 4 оверлеев.
    Все оверлеи почти одинаковы, за исключением последнего, который не загружает новый оверлей, а просто завершает работу.
    #include <stdio.h>

    int main(int argc, char **argv) {
       
    int i;
       
    puts("Overlay #1");
       
    for (i = 0; i < 10; i++) printf("%d ", i); //Оверлеи по очереди //выводят числа от 0 до 39
       
    puts("\b");
       
    execve("overlay2", NULL, NULL); //Запуск следующего оверлея
       
    return 0;
    }
  2.  Напишите программу, которая будет измерять среднее время доступа к внутренней и внешней памяти (чтение данных из оперативной памяти и с внешней памяти, в качестве которой выступает CD-ROM диск). Сравните и обоснуйте полученные результаты.
    #include <stdio.h>
    #
    include <time.h>
    #
    include "windows.h"

    #
    define N 134217728 //Будет производиться чтение 128 Мб из файла

    int main(int argc, char **argv) {
       
    HANDLE file;
       
    char *src, *dest;
       
    long int tm;
       
    int rd;
       
    file = CreateFileA("E:\\Sleep.flac", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //Открытие файла
       
    if (file == INVALID_HANDLE_VALUE) return 0;
       
    puts("File opened");
    //Далее идёт выделение памяти под два буфера, в один из которых будет
    //прочитан файл, а во второй будет скопировано содержимое первого
       
    src = (char *) GlobalAlloc(GPTR, N*sizeof(char));
       
    if (src == NULL) {
           
    CloseHandle(file);
           
    return 0;
       }
       
    dest = (char *) GlobalAlloc(GPTR, N*sizeof(char));
       
    if (dest == NULL) {
           
    CloseHandle(file);
           
    GlobalFree(src);
           
    return 0;
       }
       
    puts("Memory allocated");
       
    tm = clock();
    //Чтение файла
       
    ReadFile(file, (LPVOID) src, N*sizeof(char), (PDWORD) &rd, NULL);
       
    tm = clock() - tm;
       
    printf("File read - %ld ms\n", tm);
       
    CloseHandle(file); //Закрытие файла
       
    tm = clock();
    //Копирование памяти
       
    CopyMemory((PVOID) dest, (PVOID) src, (SIZE_T) N*sizeof(char));
       
    tm = clock() - tm;
       
    printf("Memory copied - %ld ms\n", tm);
       
    GlobalFree(src); //Освобождение памяти
       
    GlobalFree(dest);
       
    return 0;
    }

Чтение с CD

Чтение из памяти

Первый запуск

34485 мс

93 мс

Второй запуск

140 мс

94 мс

После первого запуска программы, данные с CD-диска кешируются, и если сразу запустить программу второй раз, то чтение пройдёт гораздо быстрее.

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

  1.  Где хранится адрес таблицы сегментов?
    Адрес таблицы сегментов хранится в дескрипторе процесса.
  2.  Предположим, что в адресном пространстве процесса располагаются таблицы используемых процессом сегментов и страниц. Каким образом ядро может выгрузить это пространство из памяти?
    Сначала выгружаются все страницы и сегменты, кроме тех, в которых хранятся таблицы. После этого можно выгрузить таблицы, но в дескрипторе процесса необходим дополнительный параметр, указывающий на факт выгрузки таблиц. После этого, при необходимости доступа к какой-либо странице, ядро сможет сначала загрузить таблицу, а потом необходимую страницу.
  3.  Что следует предпринять программе обработки отказов в том случае, если в системе исчерпаны страницы памяти?
    Необходимо выбрать одну из страниц, и выгрузить её. Как правило это страницы, к которым было меньше всего обращений за какой-то промежуток времени, или к которым дольше всего не было обращений.

4. Выводы

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


Приложение

Исходные тексты программ


 

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

40513. Былины Киевского цикла 20 KB
  Три типа персонажей: князь Владимир богатыри враги Князь Владимир центральный персонаж но богатырь главный герой.
40515. Былички 21.5 KB
  Былички. Былички истории о покойниках леших домовых память о древнеславянской мифологии. Былички мифологические рассказы о духах природы и домашнего очага. По композиции былички: мемораты воспоминания о встрече; фабулаты есть сюжет повествование.
40516. ГЕНЕАЛОГИЧЕСКАЯ КЛАССИФИКАЦИЯ ЯЗЫКОВ 320 KB
  Шаповал ГЕНЕАЛОГИЧЕСКАЯ КЛАССИФИКАЦИЯ ЯЗЫКОВ Новосибирск 2002. ОСНОВНЫЕ ПОЛОЖЕНИЯ ГЕНЕАЛОГИЧЕСКОЙ КЛАССИФИКАЦИИ ЯЗЫКОВ Понятие генеалогической классификации Генеалогическая классификация основана на определении родственных отношений между языками. При этом доказывается общность происхождения родственных языков и демонстрируется их развитие из единого часто реконструируемого специальными способами языка который получает название праязык. При генеалогической классификации языков прежде всего выясняется степень их родственных отношений и...
40517. Классификация согласных по различным признакам 24 KB
  2 По способу образования по характеру преграды: смычные взрывные: чистые смычные например: [б] [г]. аффрикаты смычнощелевые например: [ц] [ч]. вибранты дрожащие например: [р] щелевые фрикативные однофокусные например: [j] [ф] [в] двухфокусные сложные щелевые шипящие щель образуется в двух местах. 3 По месту образования по активному органу: губные: губногубные билабиальные например : [п] губнозубные лабиодентальные например: [ф] язычные: переднеязычные: зубные например: [т]...
40518. Линейное членение звукового потока. Суперсегментные фонетические явления 30 KB
  Слоговые подходы к выделению и определению. Членение речевого потока на слоги происходит во всех языках мира. Слог минимальная произносительная единица речи состоит из одного или нескольких звуков. Методы выделения слога: Слог представляет звукосочетание за один выдох.
40520. Мёртвый язык 203.5 KB
  Обычно такое происходит когда один язык полностью заменяется другим языком как например коптский язык был заменён арабским а множество исконных американских языков были вытеснены английским французским испанским и португальским языками. Точная смерть языка также наступает в том случае когда язык претерпевает эволюцию и развивается в другой язык или даже в группу языков. Примером такого языка служит латинский язык мёртвый язык который является предком современных романских языков.
40521. Морфологическая классификация языков мира 22.5 KB
  Морфологическая классификация языков мира. выделял два типа языков: флективные корни изменяются нефлективные агглютинирующие механически связаны части слова.: предложил ввести третий тип языков: аморфные без грамматической структуры разделил флективные на синтетические и аналитические. фон Гумбольдт Учение о внутренней форме языка: ввел четвертый тип языков: инкорпорирующие полисинтетические уточнил понятие флективный язык: Шлегели менялась внутренняя флексия Гумбольдт включил фузионные аффиксальные языки ...