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

📄 free_block.c

📁 虚地址空间基于文件OS内核源代码和文件
💻 C
字号:
#include "memory.h"

void free_one_block(int physical_block_number)
{
	int i,bn,front,back;
	struct physical_block *b,*b_f,*b_b;
	struct file_window *f;
	struct memory_process *p;
	struct memory_hash *h;
	
	bn=physical_block_number;
	b=memory_body->physical_block+bn;
	f=(memory_body->file_window+b->file_window);
	p=(memory_body->memory_process+f->file.memory_process);	
	
	front=b->buf_front;back=b->buf_back;
	if(front==bn)
		p->block_ring=-1;
	else{
		if(p->block_ring==bn)
			p->block_ring=front;

		b_f=memory_body->physical_block;
		b_f=b_f+front;
		b_b=memory_body->physical_block;
		b_b=b_b+back;					
		b_f->buf_back=back;
		b_b->buf_front=front;
	};
		
	front=b->file_front;back=b->file_back;
	if(front==bn)
		f->block_ring=-1;
	else{
		if(f->block_ring==bn)
			f->block_ring=front;
		b_f=memory_body->physical_block;		
		b_f=b_f+front;
		b_b=memory_body->physical_block;
		b_b=b_b+back;					
		b_f->file_back=back;
		b_b->file_front=front;
	};

	front=b->hash_front;back=b->hash_back;
	i=memory_body->hash_function
		(b->file_window,b->logic_block_number);
	h=&(memory_body->hash[i]);
	if(front==bn)
		h->hash_ring=-1;
	else{
		if(h->hash_ring==bn)
			h->hash_ring=front;
		b_f=memory_body->physical_block;
		b_f=b_f+front;
		b_b=memory_body->physical_block;
		b_b=b_b+back;
		b_f->hash_back=back;
		b_b->hash_front=front;
	};
	free_free_block(f->file.memory_process,physical_block_number);
	return;	
}

⌨️ 快捷键说明

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