paging.h

来自「SimpleGraphicOperatingSystem 32位图形化操作系统 」· C头文件 代码 · 共 55 行

H
55
字号
 
#ifndef _I386_MEMORY_H_
#define _I386_MEMORY_H_

#include <Type.h>

typedef union tagPageTable{
	t_32	v;
	struct{
		unsigned present:1;
		unsigned write:1;
		unsigned user:1;
		unsigned unUsed2:2;
		unsigned access:1;
		unsigned unUsed3:2;
		unsigned globalPage:1;
		unsigned share:1;
		unsigned allocated:1;
		unsigned copyOnWrite:1;
		unsigned phyAddr:20;
	}a;
}PageTable, PageDir, *PPageTable, *PPageDir ;
/*
		union {
			struct tagPageDirectoryEntry{
				unsigned Reserved:1;
				unsigned PageSize:1;
			}PDE;
			struct tagPageTableEntry{
				unsigned Dirty:1;
				unsigned PageTableAttribute:1;
			}PTE;
		}u;
	*/
typedef struct MappingProc{
	t_32 linearAddr;	//线性地址
	void *proc;		//映射的进程
}*PMappingProc, MappingProc;

#define NORMAL_MAPPING_NUM 8
/* 这个结构用于说明一页物理内存的使用情况 */
typedef struct PageInfo{
	t_16	count;	//使用该页的引用计数,0表示没有被引用。
	t_16	other;
	//MappingProc Mapping[NORMAL_MAPPING_NUM];	//未使用
}PageInfo;	//4B
extern PageInfo *pPages;	//物理页面使用情况数组
extern PageInfo *pFirstPageData;	//指向第一个可

#define PAGE_SIZE 0x1000


#endif //_I386_MEMORY_H_

⌨️ 快捷键说明

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