📄 process.h
字号:
#ifndef _PYOS_PROCESS_H_
#define _PYOS_PROCESS_H_
// 定义进程结构
struct struct_pyos_Process{
unsigned int CpuTime ; // 进程被分配的 cpu 时间大小
unsigned int TssSelector ; // 进程的 TSS 段选择符
} ;
// 定义任务状态段(TSS)结构
struct struct_pyos_TSS{
unsigned short Link ; // 链接字段
unsigned short UnUsed0 ; //未用
unsigned int Esp0 ; // 零级堆栈指针
unsigned short SS0 ; // 零级堆栈基址
unsigned short UnUsed1 ;
unsigned int Esp1 ;
unsigned short SS1 ;
unsigned short UnUsed2 ;
unsigned int Esp2 ;
unsigned short SS2 ;
unsigned short UnUsed3 ;
unsigned int Cr3 ;
unsigned int Eip ;
unsigned int Eflags ; // 在进程初始化时,需要将此标志中的“IF(中断许可位)”置 1 ,否则切换后新进程不能响应中断
unsigned int Eax ;
unsigned int Ecx ;
unsigned int Edx ;
unsigned int Ebx ;
unsigned int Esp ;
unsigned int Ebp ;
unsigned int Esi ;
unsigned int Edi ;
unsigned short Es ;
unsigned short UnUsed4 ;
unsigned short Cs ;
unsigned short UnUsed5 ;
unsigned short Ss ;
unsigned short UnUsed6 ;
unsigned short Ds ;
unsigned short UnUsed7 ;
unsigned short Fs ;
unsigned short UnUsed8 ;
unsigned short Gs ;
unsigned short UnUsed9 ;
unsigned short Ldt ;
unsigned short UnUsed10 ;
unsigned char T :1 ;
unsigned short UnUsed11 :15 ;
unsigned short EnableIO ; // I/O 许可位图
} ;
/* 定义任务状态段描述符 */
struct struct_pyos_TSSItem{
unsigned short LimitLength_0_15 ; // TSS 的限长的 0~ 15 位
unsigned short Base_0_15 ; // 基址的 0~15 位
unsigned char Base_16_23 ; // 基址的 16~23 位
unsigned char Saved_1 : 1; // 保留,需置为 1
unsigned char B :1 ; // B 位(忙位),在进程初始化时,需置为 0 ,表示此进程可用
unsigned char Saved_010 :3 ; // 保留需置为 010 ;
unsigned char DPL :2 ; // 特权位
unsigned char P : 1 ; // P位(存在位)
unsigned char LimitLength_16_19 : 4 ; // 限长的 16~19 位
unsigned char AVL : 1 ; //AVL(软件可自行利用)位
unsigned char Saved_00 : 2 ; // 保留,需置为 00
unsigned char G : 1 ; // G位(粒度位)
unsigned char Base_24_31 ; // 基址的 24~31 位
} ;
// 定义任务门
struct struct_pyos_TSSGate{
unsigned short UnUsed0 ; // 未用,置为0
unsigned short TSSSelector ; // 任务状态段的段选择符
unsigned char UnUsed1 ; // 未用,置为0
unsigned char Type_0101 : 4 ; // 类型
unsigned char Saved0_0 : 1 ; // 置为 0 ;
unsigned char DPL : 2 ; // 特权级
unsigned char P : 1 ; // 存在位
unsigned short UnUsed2 ; // 未用,置为0
} ;
// 进程管理类
class class_pyos_Process{
public:
static struct_pyos_Process ProcessQueue[ 4 ] ; // 进程队列
static struct_pyos_TSS TSS[ 4 ] ; // 任务状态段
static void Init() ; // 进程管理初始化
static unsigned int CurrentProcessNumber ; // 当前正在执行的进程号
} ;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -