⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 block_free.c

📁 虚拟地址空间基于文件的操作系统
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -