• 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

    
    
  • 相关阅读:
    攻防世界-web-Web_php_unserialize(PHP反序列化漏洞)
    攻防世界-web-unfinish(sql二次注入)
    【第19次CCF CSP认证】Markdown渲染器 (模拟)
    c++类 构造函数 析构函数 拷贝构造函数
    linux快速配置网络脚本
    编译安装openresty
    编译openresty出现的报错
    编译安装libmcrypt
    编译安装PHP支持环境libiconv
    Spring Boot-内置的Tomcat服务器配置详解
  • 原文地址:https://www.cnblogs.com/yasmi/p/5210553.html
Copyright © 2020-2023  润新知