美文网首页
1.创建第一进程

1.创建第一进程

作者: 月下蓑衣江湖夜雨 | 来源:发表于2021-02-15 23:51 被阅读0次

    第一步:进程表数据结构

    进程表就是个结构体数组

    #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函数

    相关文章

      网友评论

          本文标题:1.创建第一进程

          本文链接:https://www.haomeiwen.com/subject/vpxmxltx.html