内核学习之旅
内核学习之框架流程,函数使用,个人理解
vialily
从开局到牛马
展开
-
内存管理(一)
早期内存的使用方法: 程序访问的内存就是物理内存,要保证程序访问的时候,使用内存的要小于等于物理内存.这种方式有两个问题:1.进程地址空间不隔离,恶意的程序会修改其他程序的数据;2.内存使用的效率很低,比如内存短缺的时候,你需要把整个内存全部交换到交换分区里面,导致程序的使用效率很低. 针对以上问题,大哥们想出一个分段的机制,其核心思想是建立在一个虚拟地址空间,在虚拟地址...原创 2020-03-07 23:20:12 · 91 阅读 · 0 评论 -
宏的使用
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedefunsi...转载 2020-03-06 14:57:02 · 944 阅读 · 0 评论 -
内存管理-------序
关于内核内存管理的学习,我想先大致理清一下各个概念之间的关系以及为什么会出现这个概念.还有就是运行的流程图(持续补充,想到什么就来补上) 第一次接触内存管理是从学C语言时malloc()函数开始的,当时老师讲了虚拟内存,听的也是一知半解,关于虚拟内存,我很好奇的是怎么个虚拟法以及带来的效果.但是要明白虚拟内存,应该先了解什么是MMU,页表,物理内存,物理页面,建立映射关...原创 2020-03-06 11:54:28 · 86 阅读 · 0 评论 -
设备驱动
头文件:linux/cdev.h//描述字符设备共性信息的结构体struct cdev { struct kobject kobj; //内核用于管理驱动的结构体 struct module *owner; //THIS_MODULE const struct file_operations *ops; //操作方法集,提供给用户层的方法 struct ...原创 2020-03-05 00:19:13 · 100 阅读 · 0 评论 -
Linux内核模块(下)
5.模块传参类比应用层代码传参://应用层int main(int argc,char *argv[]);int mian(int argc,char **argv);在 执行程序的时候,可以通过命令行的方式给main函数传递参数//同样在执行内核模块的时候,也可以给内核模块传参...原创 2020-02-29 20:31:41 · 153 阅读 · 0 评论 -
Linux内核模块(上)
Linux内核模块1.概念为什么 Linux内核要引用模块的机制? Linux内核采用宏内核架构,即操作系统的绝大部分功能都在内核中实现,并且都在内核空间(特权模式)下运行;而与之相反的另一种流行的架构是微内核架构,它把操作系统最基本的功能放入内核中,而其他大部分的功能(如设备驱动等)都放到非特权模式下,这种架构具有很好的动态扩展性,即在内核运行时加载一组目标代码来实现某...原创 2020-02-26 17:49:05 · 261 阅读 · 0 评论