zoukankan      html  css  js  c++  java
  • linux源码中的核心数据结构

    寄存器

      pt_regs

    进程线程

    struct task_struct:

      进程,或者是线程数据结构,在include/linux/sched.h里面定义的,与硬件体系结构无关

    struct thread_struct

      进程或者线程,与硬件体系结构有关,是task_struct中属性

      struct thread_union

        内核进程结构,包括一个栈(大小为THREAD_SIZE 一般8kb)以及thread_info

      struct thread_info

        线程信息,包括一个task_struct 

      structr mm_struct

        在linux用户空间使用页面机制分配内存,mm_struct为进程分配用户空间,在内核态,不使用cpu内的mmu页面机制。

    描述符

    stuct desc_ptr:

        gdt,idt的结构

    gdt:

      全局描述符表 ,一个cpu有一个;描述符可能有几种类型  段描述符,TSS描述符,LDT描述符

    idt:

      中断描述符表,全系统只有一个

    ldt:

      局部描述符表,属于进程内部,但不一定进程有该表

    struct desc_struct:

      数据结构,gdt描述符或者是idt中断描述符,用于32位机器

    struct gate_struct64:

      数据结构,描述idt中断描述符,用于64位

    struct ldttss_desc64:

      数据结构,描述ldt,或者tss的描述符,用于64位

      struct tss_struct:

        tss,一个cpu使用一个tss,同个cpu上的进程使用相同的tss,在cpu_init中初始化,切换使用__switch_to函数,tss中指保留两个指针(ss0,esp0指向内核中的进程数据和栈),寄存器内容放在具体的thread_struct中。切换时候从相应内存位置载入。

    运行过程:

      初始化:init/main.c

    
    
  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/yasmi/p/5210553.html
Copyright © 2011-2022 走看看