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

📄 process.h

📁 哈工大的几个人开发的操作系统pyos的部分源码
💻 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 + -