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

    
    
  • 相关阅读:
    安装配置ZooKeeper及基本用法
    关于SqlServer数据库数据备份失败的问题
    input 框自动检测输入是否为数字
    nginx配置负载均衡
    nginx日志文件的配置
    nginx的proxy模块详解以及参数
    nginx配置反向代理
    正向代理和反向代理
    Linux建立虚拟ip的方法
    nginx基于ip的虚拟主机
  • 原文地址:https://www.cnblogs.com/yasmi/p/5210553.html
Copyright © 2011-2022 走看看