рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

III. Распределение виртуальной памяти

III. Распределение виртуальной памяти - Лабораторная Работа, раздел Компьютеры, Процессы в ОС Linux (II) Каждый Процесс Имеет Свое Собственное Виртуальное Адресное Пространство. Ос L...

Каждый процесс имеет свое собственное виртуальное адресное пространство. ОС Linux хранит адреса виртуальной памяти каждого процесса. Эти адреса доступны процессу и могут быть получены из глобальных переменных exent, edata, end (рис. 2).

 

Задание 6.

6.1. Используя начальную версию программы procmemory.c , зарисуйте в отчете распределение памяти процесса, как это сделано на рис. 2. Покажите на рисунке расположение и адреса main, showit, cptr, buffer1, i и память, выделенную в куче для buffer2.

6.2. Вставьте в программу системный вызов fork после оператора int i=0. Что будет напечатано? Убедитесь, что данные (например, i) в обоих процессах имеют одинаковые виртуальные адреса.

 

/* procmemory.c */

/* Program to display address information about the process */

/* Adapted from Gray, J.S., Interprocess Communication in UNIX: The Nooks & Crannies, Prentice-Hall, 1997, program 1.4 */

#include <stdio.h>

#include <string.h>

#include <sys/types.h>

#include <stdlib.h>

#include <unistd.h>

 

/* Below is a macro definition */

#define SHW_ADR(ID,I) (printf("ID %s t is at virt.address: %8Xn", ID,&I))

 

extern int etext, edata, end; /* Global variables for process memory */

 

char *cptr = "This message is output by showit()n"; /* Static */

char buffer1[25];

int showit (); /* Function prototype */

 

main ()

{

int i = 0; /* Automatic variable */

 

/* Printing addressing information */

printf ("nAddress etext: %8X n", &etext);

printf ("Address edata: %8X n", &edata);

printf ("Address end : %8X n", &end);

 

SHW_ADR ("main", main);

SHW_ADR ("showit", showit);

SHW_ADR ("cptr", cptr);

SHW_ADR ("buffer1", buffer1);

SHW_ADR ("i", i);

strcpy (buffer1, "A demonstrationn"); /* Library function */

write (1, buffer1, strlen(buffer1) + 1); /* System call */

showit(cptr);

 

} /* end of main function */

 

/* A function follows */

int showit (p)

char * p;

{

char *buffer2;

SHW_ADR("buffer2", buffer2);

if ((buffer2 = (char *)malloc ((unsigned) (strlen(p) + 1))) != NULL)

{

printf("Alocated memory at %Xn", buffer2);

strcpy (buffer2, p); /* copy the string */

printf ("%s", buffer2); /* Didplay the string */

free (buffer2); /* Release location */

}

else

{

printf ("Allocation errorn");

exit (1);

}

}

 

– Конец работы –

Эта тема принадлежит разделу:

Процессы в ОС Linux (II)

На сайте allrefs.net читайте: "Лабораторная работа по курсу "Операционные системы""

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: III. Распределение виртуальной памяти

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Завершение процесса
В нормальной ситуации процесс завершается одним из двух способов (см. лаб. работу 3): - системным вызовом exit; - возвратом из функции main.

Ожидание завершения процесса
После создания дочернего процесса и родительский и дочерний процессы выполняются и диспетчируются независимо. В некоторых ситуациях необходимо, чтобы родительский процесс ожидал завершения дочернег

II. Совместный доступ к файлам
Задание 5. Напишите программу pr5.c в соответствии со схемой, представленной на рис. 1. Родительский процесс открывает существующий текстовый файл

Вопросы
1. Каково назначение системных вызовов wait, waitpid? 2. Как в родительском процессе можно узнать о завершении дочернего процесса, не прерывая основной ра

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги