Minix - Ich habe was vor

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1424
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: Minix - Ich habe was vor

Beitrag von davidvajda.de »

Gut, hier der erste Ansatz, ich habe gerade keine Lust mehr

Code: Alles auswählen

#include <stdio.h>

#define RAM_SIZE	1024*1024
#define	SEG_SIZE	1024
#define	SEG_END		1024
#define RAM_START	0

int	used_ram = 0;

struct free_list {
	struct free_list *next;
	int seg_start;
	int seg_len;
}

struct free_list	*free_head = NULL;

int init_free_list () {
	if (free_head == NULL) {
		if((free_head = (struct free_head *) malloc (sizeof (struct free_head))) == NULL) {
			fprintf (stderr, "Kein Speicherplatz");
			exit (1);
		}
	}
	free_head->next = NULL;
	free_head->seg_start = 0;
	free_head->seg_end = SEG_SIZE-1;
	used_ram = RAM_SIZE - SEG_SIZE;	

return free_head->seg_start; 
}

int alloc_mem () {
	free_list *ptr;
	free_list *ptr2;

	for (ptr = free_head;  ptr->next != NULL; ptr = ptr->next);

	if((ptr->next = (struct free_list *)malloc (sizeof (struct free_list))) == NULL) {
		fprintf (stderr, "Fehler");
		exit (1);
	}
	ptr->seg_size = SEG_SIZE;
	ptr->next = NULL;
	for (ptr2 = free_head;  ptr2->next != NULL;	ptr2 = ptr2->next) {
		if ((ptr2->next->seg_start - ptr2->seg_start) >= SEG_SIZE*2) 
			break;
	}
	if (ptr2->next == NULL) {
		ptr2->next = ptr;
		ptr->seg_start = ptr2->seg_start + SEG_SIZE;
		return seg_start;
	}
	else {
		ptr->next = ptr2->next;
		ptr2->next = ptr;
		ptr->seg_start = ptr2->seg_start + SEG_SIZE;
	}
}

int main (void) {

}
Antworten