Chinaunix首页 | 论坛 | 博客
  • 博客访问: 67568
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 213
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-24 12:38
个人简介

专注的力量很大,它能把一个人的潜力发挥到极致,一旦达到那种状态你就没有了自我的概念,所有的精力集中到了一点。

文章分类
文章存档

2015年(11)

2014年(6)

我的朋友

分类: 嵌入式

2014-12-24 15:43:04


1. Linux为什么要分为用户空间和内核空间?
答:简单理解为:内核空间是内核使用,用户空间是应用程序使用。确保了系统安的安全性。

2.  用户空间和内核空间的区别:
        用户空间:(CPU处于USR模式)
        包含用户编写的应用软件,C库。整个4G虚拟地址空间,用户空间包含了0~3G,每个用户都有自己的独立3G空间。不能直接访问硬件资源。

        内核空间:(CPU处于SVC模式)
        包含了进程管理(PM),虚拟文件系统(VFS),内存管理(MM),网络协议栈,平台相关(ARCH),设备驱动(DD),内核空间包含了剩余的1G虚拟地址空间,内核1G空间对于所有的进程都是共享的。能够访问任何资源。

用户虚拟空间地址范围:0x00000000 ~ 0xBFFFFFFF
内核虚拟空间地址范围:0xC0000000 ~ 0xFFFFFFFF

两种模式的划分说明了,不同空间的软件在访问资源时,具有的权限是不一样的。



3.Linux系统调用过程
        (1)Linux系统给每一个系统调用函数都指定了一个系统调用号,例如:exit函数的系统调用号为1,write的系统调用号为4等。
        (2)每当应用程序调用系统调用函数时(例如write函数),首先跑到C库的write函数实现。
        (3)C库的write函数首先把write函数对应的系统调用号保存在R7寄存器中。
        (4)通过调用SWI或者SVC触发一个软中断异常从用户空间进入内核空间,CPU跳转到异常向量表的位置去处理。
        (5)进入到内核空间以后,从R7寄存器中取出之前保存的系统调用号
        (6)然后在内核已经定义好的系统表中,以系统调用号为索引(下标),在系统调用表中找到对应的函数(sys_write)
        (7)执行完此函数后,最后原路返回用户空间。

注意:软中断是从用户空间陷入内核空间的唯一途径。
阅读(2000) | 评论(1) | 转发(0) |
2

上一篇:没有了

下一篇:CPU为什么要有中断

给主人留下些什么吧!~~

insect232014-12-24 21:04:30