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

    
    
  • 相关阅读:
    Linux0.12内存寻址
    Linux0.12任务调度与进程切换
    Mapreduce实例——倒排索引
    解决echart警告:Can't get dom width or height
    Mapreduce实例——MapReduce自定义输入格式
    Mapreduce实例——ChainMapReduce
    Mapreduce实例——二次排序
    设计模式中介者模式
    设计模式七大原则
    Mapreduce实例——MapReduce自定义输出格式
  • 原文地址:https://www.cnblogs.com/yasmi/p/5210553.html
Copyright © 2011-2022 走看看