Linux中的栈:用户态栈/内核栈/中断栈
http://blog.chinaunix.net/uid-14528823-id-4136760.html
Linux中有多种栈,很容易弄晕,简单说明一下:
1、用户态栈:在进程用户态地址空间底部,跟平时我们简单和理解的一样,就是虚拟地址空间中的一段,不多说~
2、内核栈:
跟用户态栈是独立的,在用户态和内核态切换时,需要进行切换。
默认8k,可以通过内核配置项修改
跟thread_info结构放在一起,公用一个union:thread_union,
点击(此处)折叠或打开
- union thread_union {
- struct thread_info thread_info;
- unsigned long stack[THREAD_SIZE/sizeof(long)];
- };
放在特殊的段中:__(".data.init_task")))
点击(此处)折叠或打开
- union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
- { INIT_THREAD_INFO(init_task) };
点击(此处)折叠或打开
- ENTRY(stack_start)
- .long init_thread_union+THREAD_SIZE
- .long __BOOT_DS
默认跟中断栈共享,可以通过内核配置项修改
属于进程,即每个进程都有自己的内核栈
3、中断栈:
默认跟内核栈共享
与内核栈中的内容独立,相互不可见
中断、异常、软中断使用此栈
使用被打断的进程的内核栈
Linux中的栈:用户态栈/内核栈/中断栈的更多相关文章
- 在linux中添加ftp用户,并设置相应的权限
在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户:在root用户下: useradd ...
- linux中添加ftp用户,并设置相应的权限
在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户:在root用户下: useradd ...
- 在Linux 中进入单用户模式的技巧
在这篇简短的文章中,我们将向你介绍在 SUSE 12 Linux 中进入单用户模式的步骤.在排除系统主要问题时,单用户模式始终是首选.单用户模式禁用网络并且没有其他用户登录,你可以排除许多多用户系统的 ...
- linux中用户组和用户
linux中用户组和用户 1.介绍 在我们的linux系统,有很多用户组,也可以手动创建用户组,不同的用户组下面有很多的用户. 2.创建用户组及有关的命令 groupadd phpzu:创建一个php ...
- Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...
- 在Linux中怎么把用户添加到组中
(1)添加用户test,初始密码123456,该用户的主目录为/home/share,用户的基本组为root,用户的shell为/bin/tcsh,要求将该用户加到mail和new组中.请问该怎么做啊 ...
- 1、 Linux中的root用户切换(转载)
su和su - 的区别 大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户,Linux中切换用户的命令是su或s ...
- Linux中组 与 用户的管理
在linux中建立组的指令是 groupadd 组名 相应的,删除组的指令: groupdel 组名 查看自己用户的组: groups 一个用户可以在多个组里面,用这个命令可以将用户添加到组: add ...
- 如何在linux中批量建立用户并设置随机密码
Ubuntu是基于linux的免费开源操作系统,同时也是真正意义上的“多任务多用户”操作系统,既然是多用户系统,自然就涉及到创建多个用户的问题.同时由于Ubuntu系统中的root用户具有最高权限,无 ...
随机推荐
- JavaScript学习笔记(12)——JavaScript自定义对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- out ref区别
1.使用ref型参数时,传入的参数必须先被初始化.对out而言,必须在方法中对其完成初始化. 2.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候. ...
- will VS be going to
1.Future - Will vs. Going to 2."Will be doing" vs. "will do" 3.Simple Future
- 文档生产工具 Doxygen
Doxygen是一种开源跨平台的,类似JavaDoc风格描述的文档系统,支持C.C++.Java.Objective-C等语言.可以从一套归档源文件开始,生成HTML,XML,pdf等不同风格的格式. ...
- iOS SEL的简单总结
@interface Person : NSObject + (void)test1; - (void)test2; @end // 根据.h文件中定义的Person类和方法 执行完这行代码 在内存中 ...
- RHEL6.3 ftp服务器参数的戏说——不看白不看,看了不白看
大家都知道ftp服务器的应用何止广,简直就是无处不在,配置简单的ftp服务谁都会,无外乎就是刚安装好ftp服务,一启动就ok了:或是达到简单的上传下载修改下/var/ftp/pub的权限,配合配置文件 ...
- 关于fputs和fgets的几个细节
C语言中两个标准IO fputs和fgets都是针对行来进行数据的读取的!这里关于这两个IO函数我有几个小细节想在这里和大家分享一下,希望能够对大家产生帮助! 首先贴上这两个函数的函数声明,下面以这两 ...
- Android开发系列之按钮事件的4种写法
经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...
- XE5 ANDROID平台 调用 webservice
服务端需要midas.dll XE5对android的平台支持很有吸引力,虽然目前用来直接开发应用到安卓市场卖赚钱可能性估计不大(安卓市场目前国内好像都是免费的天下),但是对于企业应用很是很有帮助 ...
- Linux学习1
Linux中一切皆文件,且不依靠扩展名区分文件,学习Linux必须要熟悉在字符界面进行文件的管理. 首先是Linux的查询命令. (1)ls -a是显示当前目录所有文件,包含隐藏文件,如图中文件名前加 ...