Автор: Пользователь скрыл имя, 15 Июня 2012 в 14:25, лабораторная работа
Продумайте систему сегментного хранения информации. Исходные данные:
Программа на Cи (Си++), под Windows, Консольное приложение.
Вся доступная память представлена массивом 10 КБайт. Все операции с выделением, доступом и освобождением памяти проводятся только с памятью внутри этого массива.
printf("%s",Data1);
printf("\n\n");
int b=AllocMemory(1500);
DumpMemory();
printf("\n");
int a=AllocMemory(1500);
DumpMemory();
printf("\n");
FreeMemory(h);
DumpMemory();
printf("\n");
FreeMemory(k);
DumpMemory();
printf("\n");
FreeMemory(a);
DumpMemory();
printf("\n");
int z=AllocMemory(1000);
DumpMemory();
printf("\n");
int x=AllocMemory(5000);
DumpMemory();
printf("\n");
getch();
return 0;
}
prot.h
struct Block
{
short int Adres;
short Size;
bool Bit;
short int Handle;
bool Sort;
struct Block *next;
};
void InitMemory(void);
int AllocMemory(int Size);
void FreeMemory(int MemoryHandle);
int WriteMemory(int MemoryHandle, int Offset, int Size, void *Data);
int ReadMemory(int MemoryHandle, int Offset, int Size, void *Data);
void DumpMemory(void);
void Init(char *c, int start, int end);
void SortMemory(void);
memman.cpp
#include "prot.h"
#include <stdio.h>
#include <math.h>
char Ar[10001];
int I;
void InitMemory(void)
{
I=10000-sizeof(I);
*(int*)&Ar[0]=I;
}
int AllocMemory(int Size)
{
static int i=1;
int k=*(int*)&Ar[0];
int m=sizeof(Block);
if(i==1)
{
struct Block *tmp;
tmp=(s
tmp->
tmp->
tmp->
tmp->
k-=
k-=m;
*(int*
i++;
return tmp->Handle;
}
else
{
int f=0;
struct Block *t;
t=(str
while(
{
}
struct Block *p,*p1;
p=(str
p1=(st
while(
{
}
if ((k-=m) > Size)
{
}
else
{
}
Информация о работе Отчет по дисциплине Операционные системы