block_free.c

来自「虚拟地址空间基于文件的操作系统」· C语言 代码 · 共 40 行

C
40
字号
#include "memory.h"
#define NO_FREE_BLOCK  (-1)

int get_free_block(int memory_process_number)
{
	int bn;
	struct physical_block *b;
	if((bn=(*(memory_body->free_physical_block)))<0)
		return NO_FREE_BLOCK;
	b=memory_body->physical_block+bn;
	*(memory_body->free_physical_block)=b->buf_back;
	(memory_body->memory_process+memory_process_number)
		->block_number++;
	b->state=FREE_BLOCK;
	(*(memory_body->free_block_number))--;
	return bn;
}

void free_free_block(int memory_process_number,int block_number)
{
	int processor,semaphore;
	struct physical_block *b;

	b=memory_body->physical_block+block_number;
	b->state=FREE_BLOCK;
	b->buf_back=(*(memory_body->free_physical_block));
	*(memory_body->free_physical_block)=block_number;
	(memory_body->memory_process+memory_process_number)
		->block_number--;
	(*(memory_body->free_block_number))++;

	if((processor=memory_body->wait_block->processor)>=0)
	if((semaphore=memory_body->wait_block->semaphore)>=0){
		memory_body->wait_block->processor=(-1);
		memory_body->wait_block->semaphore=(-1);
		memory_v_operation(processor,semaphore);
	}
	return;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?