1、linux中的user mode的进程栈

在thread_info.h中,设置进程栈的大小为16k

#define THREAD_SIZE      16384
#define THREAD_START_SP     (THREAD_SIZE - 16)

在head.S中, 在进程切换的时候:
将内核这个进程栈的栈顶写入到了sp中,sp = init_thread_union + THREAD_SIZE
将init_task写入到了sp_el0中,设置用户空间的程序栈

__mmap_switched:
......
#ifdef CONFIG_THREAD_INFO_IN_TASKadrp    x4, init_thread_unionadd     sp, x4, #THREAD_SIZEadr_l   x5, init_taskmsr     sp_el0, x5                      // Save thread_info
#elseadr_l  sp, initial_sp, x4mov   x4, spand   x4, x4, #~(THREAD_SIZE - 1)msr  sp_el0, x4          // Save thread_info
#endif

在linux 中每一个应用程序,在内核中都有一个task_struct结构体,每个task_struct代码一个内核进程,都有一个进程栈,该栈的栈顶写入到了sp
另外,每一个应用程序,在userspace空间,都有一个程序栈,该栈的栈顶写入到了sp_el0中

总结:每个应用程序有两个栈,一个是在linux kernel中的task_struct结构体中指向的进程栈、一个是user程序中的栈

linux kernel中的进程栈相关推荐

  1. linux kernel中的栈的介绍

    目录 1.linux kernel中的中断irq的栈stack (1).arm32体系的irq的栈 (2).arm64体系的irq的栈 2.linux kernel中的栈stack (1).概念介绍: ...

  2. linux内核arc4算法,linux内核中与进程相关的数据结构(基于linux-mainline-rc4)

    1.进程描述符 struct task_struct { volatile long state; ....... struct list_head tasks; ....... struct mm_ ...

  3. Linux Kernel中AEP的现状和发展

    阿里 石洋内核月谈Yesterday AEP简介 AEP是Intel推出的一种新型的非易失Optane Memory设备,又被称作Apache Pass,所以一般习惯称作AEP.在这之前也有类似的设备 ...

  4. Linux内核中的进程组及会话

    Linux内核中的进程组及会话 将阐述Linux内核中的如下几个概念 1) 进程组 2) 会话 3) 控制终端 前面的概念来源于前人,我只是站在前人的肩膀上结合内核中的实现加深概念理解. 1.概念: ...

  5. Linux kernel 中模块化的平台驱动代码介绍

    介绍 在linux kernel中通过module_platform_driver来实现模块化平台驱动.大量的设备驱动程序都基于该种方式来实现,使用频次非常的高,在linux kernel 5.4.1 ...

  6. Linux kernel中常见的宏整理

    0x00 宏的基本知识 // object-like #define 宏名 替换列表 换行符 //function-like #define 宏名 ([标识符列表]) 替换列表 换行符 替换列表和标识 ...

  7. Linux系统中的进程管理

    Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...

  8. 搞它!!!Linux系统中查看进程和计划任务管理

    文章目录 首先我们了解一下程序和进程的关系: 一.查看进程 1.查看静态的进程统计信息(ps) 2.查看静态的进程统计信息(top) 3.pgrep命令(查询进程信息) 4.pstree命令(查看进程 ...

  9. 内存访问顺序 - part2: 屏障及Linux kernel中屏障的使用

    文章目录 屏障是什么 Linux Kernel 中的屏障 Linux 屏障 API 一般的屏障 强制性屏障 SMP 条件屏障 隐式屏障 其他屏障 屏障的开销 未来的文章 本文翻译自 Memory ac ...

最新文章

  1. 让DJANGO里的get_success_url定义的reverse_lazy带参数跳转
  2. 【数字信号处理】线性时不变系统 LTI “ 输入 “ 与 “ 输出 “ 之间的关系 ( 线性卷积计算方法列举 | 线性卷积计算案例一 | 根据 线性卷积 定义直接计算 卷积 )
  3. android第一次作业
  4. win7系统去除图标箭头的方法
  5. 结合DvaJS来写小程序
  6. ListDictionary:改进的OrderedDictionary
  7. java用户输入_如何用Java获取用户输入?
  8. 机器学习-1-.py文件的导入问题
  9. datetime数据类型_当pandas遇上数据类型问题
  10. 安装mysql2005出错_SQL Server 2005 安装遇到的错误提示和解决方法
  11. 美团架构师探秘Java生态系统,介绍JDK、JVM、JEP
  12. 云输入法linux版,ubuntu云输入法ibus cloud pinyin
  13. SECS/GEM概念
  14. 西门子、施耐德、罗克韦尔等巨头告诉你,为何你大爷始终是你大爷
  15. libcef(二)基于VS2019编写CEF简单样例
  16. SPSS 25.0中文版安装教程【001期】
  17. 通达信大资金进出指标公式
  18. 修改UE4的缓存路径
  19. 阿里云-物联网MQConsumerSTS 订阅失效问题
  20. 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题

热门文章

  1. 数据中心成为生态系统向绿色氢经济转变的催化剂
  2. 传统数据中心升级方案
  3. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
  4. ML之catboost:基于自带Pool数据集实现二分类预测
  5. 成功解决MSB8020 The build tools for v141 (Platform Toolset = ‘v141‘) cannot be found. To build using the
  6. DL:深度学习算法(神经网络模型集合)概览之《THE NEURAL NETWORK ZOO》的中文解释和感悟(四)
  7. 成功解决ImportError: Could not find 'msvcp140.dll'. TensorFlow requires that this DLL be installed in a
  8. Blockchain:《Blockchain applications in insurance》Deloitte—德勤区块链技术研究报告正文版—听课记录
  9. 深入浅出计算机组成原理学习笔记:总线-计算机内部的高速公路(第42讲)
  10. 未完全关闭数据库导致ORA-01012: not logged的解决