ARM Linux上的系统调用代码分析

作者:linuxer 发布于:2017-2-20 18:54 分类:进程管理

当用户空间的程序调用swi指令发起内核服务请求的时候,实际上程序其实是完成了一次“穿越”,该进程从用户态穿越到了内核态。这个过程有点象周末你在家里看片,突然有些内急,随手按下了pause按键,电影里面的世界嘎然而止了。程序世界亦然,一个swi后,用户空间的代码执行暂停了、stack(用户栈)上的数据,正文段、静态数据区、heap去的数据……一切都停下来了,程序的执行突然就转入另外一个世界,使用的栈变成了内核栈、正在执行的正文段程序变成vector_swi开始的binary code、与之匹配数据区也变化了……

一切是怎么发生的呢?CPU只有一套而已,这里硬件做了哪些动作?软件又搞了什么鬼?穿越到另外的世界当然有趣,但是如何找到回来的路?这一切疑问希望能在这样的一篇文档中讲述清楚。

本文的代码来自4.4.6内核,用ARM处理器为例子描述。

阅读全文>>

标签: ARM 系统调用

评论(8) 浏览(19811)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog