1.创建第一进程

第一步:进程表数据结构

进程表就是个结构体数组

#define  LDT_SIZE  2      // LDT大小
#define  NR_TASKS  1      // 支持的进程个数,Number Restriction

// 进程调度的时候,保存现场用的栈帧,保存寄存器的值
typedef struct s_stackframe {
    uint32  gs;
    uint32  fs;
    uint32  es;
    uint32  ds;
    uint32  edi;
    uint32  esi;
    uint32  ebp;
    uint32  kernel_esp;   // 内存栈指针
    uint32  ebx;
    uint32  edx;
    uint32  ecx;
    uint32  eax;
    uint32  retaddr;      // 返回地址:运行中被中断的话,存放的是eip;初始时,应存放程序入口地址
    uint32  eip;
    uint32  cs;
    uint32  eflags;
    uint32  esp;
    uint32  ss;
} __attribute__((packed)) STACK_FRAME;

// 进程定义
typedef  struct  s_proc {
    STACK_FRAME    regs;            // 寄存器现场信息
    uint16         ldt_sel;         // LDT选择子
    DESCRIPTOR     ldts[LDT_SIZE];  //
    uint32         pid;             // 进程号
    char           p_name[16];      // 进程名
} __attribute__((packed)) PROCESS;

// 进程表
PROCESS  proc_table[NR_TASKS];

第二步:添加main函数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容