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 + -
显示快捷键?