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

    
    
  • 相关阅读:
    Training: WWW-Robots
    Training: Stegano I
    Encodings: URL
    利用Nginx实现域名转发 不修改主机头
    C++删除目录和复制目录函数
    获取文件大小的函数
    日志打印函数
    拉起上级目录程序
    安卓TabHost页面
    有趣的人形时钟
  • 原文地址:https://www.cnblogs.com/yasmi/p/5210553.html
Copyright © 2011-2022 走看看