内存管理模型:1、地址映射-虚拟地址到物理地址的映射;2、物理内存分配。 Linux可支持的地址空间由处理器硬件来决定的,假设为32位地址,那么共有4GB,其中0-3GB为用户空间,3G-4G为内核空间-内核空间被分成4个部分:a、内核代码,已初始化内核数据,未初始化内核数据等等。b、vmalloc ...
分类:
系统相关 时间:
2016-05-24 01:36:34
阅读次数:
375
内核模块编译 1、实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷。 Linux模块可以通过静态或动态的方法加载到内核空间, ...
分类:
其他好文 时间:
2016-05-22 21:40:52
阅读次数:
195
1、 理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷。 Linux模块可以通过静态或动态的方法加载到内核空间,静态加载 ...
分类:
系统相关 时间:
2016-05-22 13:54:33
阅读次数:
195
内核模块编译 1、实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷。 Linux模块可以通过静态或动态的方法加载到内核空间, ...
分类:
系统相关 时间:
2016-05-22 00:30:51
阅读次数:
255
编译生成新内核 一、实践原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷。 Linux模块可以通过静态或动态的方法加载到内核空间 ...
分类:
系统相关 时间:
2016-05-20 23:43:50
阅读次数:
262
I/O模型 在开始NIO的学习之前,先对I/O的模型有一个理解,这对NIO的学习是绝对有好处的。我画一张图,简单表示一下数据从外部磁盘向运行中进程的内存区域移动的过程: 这张图片明显忽略了很多细节,只涉及了基本操作,下面分析一下这张图。 用户空间和内核空间 一个计算机通常有一定大小的内存空间,如一台 ...
分类:
编程语言 时间:
2016-05-20 19:33:29
阅读次数:
193
IO中的几种形式 基于字节:InputStream、OutputStream 基于字符:Writer、Reader 基于磁盘:File 基于网络Socket 最终都是字节操作,字符到字节要编码转换。耗时,容易乱码 1,磁盘IO 磁盘设置,应用程序只能系统调用,要内核空间和用户空间切换, 标准访问文件 ...
分类:
编程语言 时间:
2016-05-19 23:26:58
阅读次数:
286
在linux下对上面的文件进行静态编译(考虑到前面开发板上移植的某些库还没有添加进去)生成read-mem目标文件,然后进行反汇编并将反汇编生成的文件导入到当前目录下的dump上去。
这里红箭头指向的两行是比较重要的两行,将3传给r7,然后使用了SVC系统调用指令,这时PC指针会从用户空间进入到内核空间(通过一个固定的入口),第二步会取r7寄存器里面的值3, 然后根据这个值查一个表确定要调用那个系统调用(即对于3的系统调用内核代码)。
系统就是通过固定入口进入内核空间,然后取出系统调用编号,在利用编号查找上...
分类:
系统相关 时间:
2016-05-12 22:53:24
阅读次数:
340
访问文件的方式访问文件的方式
标准访问文件方式
直接IO方式
同步访问文件方式
异步访问文件方式
内存映射方式 读取和写入文件IO操作都需要调用操作系统提供的接口,读和写分别对应read和write两个系统调用,那么就存在内核空间和用户空间地址切换的问题,因为磁盘设备是由操作系统管理的,为了保护系统运行安全将内核运行的内存空间和用户程序的内存空间进行隔离,那么必然存在数据需要从内核空间向用户空间复...
分类:
其他好文 时间:
2016-05-12 14:06:29
阅读次数:
477
Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF)供各个进程使用,称为“用户空间“。因为每个进程可以通过系统调用进入内核,因此Li...
分类:
其他好文 时间:
2016-05-07 11:26:21
阅读次数:
256