博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux源码中的核心数据结构
阅读量:5172 次
发布时间:2019-06-13

本文共 884 字,大约阅读时间需要 2 分钟。

寄存器

  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

 

转载于:https://www.cnblogs.com/yasmi/p/5210553.html

你可能感兴趣的文章
(转)MFC界面风格
查看>>
Centos7 tmux1.6 安装
查看>>
二叉树(三)
查看>>
linux加密文件系统 fsck 无法修复一例
查看>>
【linux配置】VMware安装Redhat6.5
查看>>
AI自主决策——有限状态机
查看>>
《http权威指南》阅读笔记(二)
查看>>
软件工程
查看>>
http协议
查看>>
js替换问题replace和replaceAll
查看>>
c++11 : range-based for loop
查看>>
中国农历2013,2014 (zz.IS2120@BG57IV3)
查看>>
用virtualenv建立独立虚拟环境 批量导入模块信息
查看>>
Sublime Text3 插件:convertToUTF8
查看>>
BZOJ4060 : [Cerc2012]Word equations
查看>>
hdu2089不要62(数位dp)
查看>>
JAVA输出最大值和最小值
查看>>
64位weblogic11g安装
查看>>
oracle、mysql、sql server等;流行数据库的链接驱动配置
查看>>
UvaLive 6664 Clock Hands
查看>>