zoukankan      html  css  js  c++  java
  • Linux中的栈:用户态栈/内核栈/中断栈

    http://blog.chinaunix.net/uid-14528823-id-4136760.html

    Linux中有多种栈,很容易弄晕,简单说明一下:
    1、用户态栈:在进程用户态地址空间底部,跟平时我们简单和理解的一样,就是虚拟地址空间中的一段,不多说~
    2、内核栈:
        跟用户态栈是独立的,在用户态和内核态切换时,需要进行切换。
        默认8k,可以通过内核配置项修改
        跟thread_info结构放在一起,公用一个union:thread_union,

    点击(此处)折叠或打开

    1. union thread_union {
    2.     struct thread_info thread_info;
    3.     unsigned long stack[THREAD_SIZE/sizeof(long)];
    4. };

    放在特殊的段中:__(".data.init_task")))

    点击(此处)折叠或打开

    1. union thread_union init_thread_union
    2.  __attribute__((__section__(".data.init_task"))) =
    3.   { INIT_THREAD_INFO(init_task) };


    点击(此处)折叠或打开

    1. ENTRY(stack_start)
    2.     .long init_thread_union+THREAD_SIZE
    3.     .long __BOOT_DS

        默认跟中断栈共享,可以通过内核配置项修改
        属于进程,即每个进程都有自己的内核栈 
    3、中断栈:
        默认跟内核栈共享
        与内核栈中的内容独立,相互不可见
        中断、异常、软中断使用此栈
        使用被打断的进程的内核栈

  • 相关阅读:
    幂等性-接口安全性
    spring 事务
    Disruptor 并发框架
    java中锁的应用
    线程池原理
    并发队列阻塞式与非阻塞式的区别
    Swagger UI教程 API 文档神器 搭配Node使用
    linux ssh_config和sshd_config配置文件
    Linux中iptables设置详细
    Linux(Centos)之安装Redis及注意事项
  • 原文地址:https://www.cnblogs.com/jingzhishen/p/4387411.html
Copyright © 2011-2022 走看看