`
kongweile
  • 浏览: 506016 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Linux 内核堆栈

 
阅读更多

所有进程(包括内核进程和普通进程)都有一个内核栈,在x86的32位机器上内核栈大小可以为4KB或8KB,这个可以在编译内核的时候配置。内核栈的用 途有两个:1)当进程陷入内核态,即内核代表进程执行系统调用时,系统调用的参数就放在内核栈上,内核栈记录着进程的在内核中的调用链;2)在内核栈被配 置成8KB大小的情况下,当中断服务程序中断当前进程时,它将使用当前被中断进程的内核栈。
对于用户进程,其既有用户地址空间中的栈,也有它自己的内核栈。而内核进程就只有内核栈。

 

每一个进程(包括普通进程和内核进程)的地址空间都分为用户地址空间和内核地址空间两部分,在32位的x86机器上,用户地址空间的范围是0~3G,内核 地址空间的范围是3G~4G.对于不同的进程,其用户地址空间会随着进程不同而不同,但所有进程的内核地址空间则都是一样的。对于内核进程,由于其始终运 行在内核态,所以没有用户地址空间,其对应的tast_struct结构体中的mm域也就被赋值为NULL。而堆的概念应该是只存在于进程的用户地址空间 中,所以内核进程是没有堆一说的。内核线程可以用kmalloc 或vmalloc在运行时申请内存。kmalloc或vmalloc申请到的内存在整个内核中都可以使用。比方说 内核线程a申请到了一块内存A, 只要把该内存的首地址传给另一个内核线程b,则在b中同样也可以使用这块内存。

分享到:
评论

相关推荐

    linux内核堆栈.

    linux内核堆栈.

    深入Linux内核网络堆栈

    本文将讲述内核模块的编写者如何利用Netfilter的钩子来达到任何目的,以及怎样将网络传输从一个Libpcap的应用中隐藏掉。尽管Linux2.4支持对IPV4,IPV6以及DECnet的钩子,本文只提及IPV4的钩子。但是,对IPV4的大多数...

    Linux 打印堆栈方法

    linux内核堆栈打印方法 dump_stack() 或 __backtrace() linux应用层堆栈打印方法 int backtrace(void **buffer, int size); 获取当前的调用栈信息,结果存储在buffer中,返回值为栈的深度,参数size限制栈的最大...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux...

    深入Linux网络核心堆栈 netfilter详解.doc

    深入Linux网络核心堆栈 netfilter详解

    linux内核分析 MOOC

    linux内核分析,非常好的视频教程,带你入门到腾飞。 本课程从理解计算机硬件的核心工作机制(存储程序计算机和函数调用堆栈)和用户态程序如何通过系统调用陷入内核(中断异常)入手,通过上下两个方向双向夹击的...

    深入Linux网络核心堆栈

    2.1 - Linux内核对数据包的处理 2.2 - Netfilter对IPv4的hook 3 - 注册和注销Netfilter hook 4 - Netfilter 基本的数据报过滤技术[1] 4.1 - 深入hook函数 4.2 - 基于接口进行过滤 4.3 - 基于地址进行过滤 4.4 ...

    疯狂内核之——Linux预备知识.pdf

    1.3.1 Linux内核中的链表 15 1.3.2 Linux双循环链表综合实例 29 1.4 内核汇编语言规则 30 1.4.1 GNU的x86汇编语言 32 1.4.2 嵌入式汇编语言 33 1.5 必要的硬件知识 37 1.5.1 EU模块 38 1.5.2 SU模块 39 1.5.3 PU模块...

    深入分析Linux内核源码

    深入分析Linux内核源码 前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 ...

    linux 内核源代码分析

    1. 1 Linux内核简介 1. 2 Intel X86 CPU系列的寻址方式 1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架...

    linux-0.11-dev,演示任务的内核态堆栈的位置

    解压后,安装bochs,后点击图标后,执行a1.out,回车。

    LINUX内核源代码情景分析

    1. 1 Linux内核简介 1. 2 Intel X86 CPU系列的寻址方式 1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架...

    linux内核源代码情景分析

    《linux内核源代码情景分析》(非扫描电子版本) 第1章 预备知识 1.1 Linux内核简介 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的...

    Linux内核源代码分析视频课-视频教程网盘链接提取码下载.txt

    然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在...

    Linux内核情景分析(二级标题).pdf

    1.1 Linux内核简介 1.2 Intel X86 CPU 系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux 内核源代码中的C语言代码 1.5 Linux内核代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 ...

    基于官方 Linux 内核 4.4.32,并进行了一些修改的Apollo Linux 内核

    Apollo 内核为运行 Apollo 软件堆栈提供了必要的内核级支持。 在第一个版本中,我们在 linux 目录下添加了最流行的解决方案 Linux Kernel。

    深入理解linux核心堆栈

    介绍netfilter的基本应用,以及Linux的核心堆栈,最后介绍了hook函数的应用。

Global site tag (gtag.js) - Google Analytics