Linux0.11
朱有鹏老师
朱有鹏,先后从事电子工程师、单片机软件工程师、嵌入式linux软件工程师、物联网软件工程师、架构师等工作,朱老师物联网大讲堂创始人,畅销书作者。擅长U-Boot、linux kernel等嵌入式底层和系统层开发、架构设计。擅长汇编、C/C++、Java、C#等常用开发语言,2015年起录制的在线视频课程《朱有鹏老师嵌入式linux核心课程》累计学习人数超300万。2016年与IBM合作制作基于IBM Waston平台的物联网系统开发教程,授予“IBM技术专家”。2018年开始与华为认证合作,开发HCDP-IoT相关的课程体系、视频课程、实验平台、案例等,被授予“华为云享专家”。
展开
-
linux中的设备名称和设备号
看赵炯博士的《linux 0.11 源代码注释》已经两三周了,从今天起开始将一些个人总结和感悟分小标题写出来,聊作记忆以供后来查看。在linux0.11源码的 /linux/boot/bootsect.s中,有一个标号定义ROOT_DEV! ROOT_DEV: 0x000 - same type of floppy as boot.! 0x301 - first partition原创 2012-03-09 16:46:32 · 14660 阅读 · 0 评论 -
linux/mm/memory.c/do_wp_page and un_wp_page
void do_wp_page(unsigned long error_code,unsigned long address){#if 0/* we cannot do this yet: the estdio library writes to code space *//* stupid, stupid. I really want the libc.a from GNU */原创 2012-05-25 18:20:13 · 1626 阅读 · 0 评论 -
linux/mm/memory.c/put_page
// put_page用来完成物理页面与一个线性地址页面的挂接,从而将一个// 线性地址空间内的页面落实到物理地址空间内,copy_page_tables函数// 只是为一个进程提供了在线性地址空间的一个页表及1024页内存,而当时// 并未将其对应的物理内存上。put_page函数则负责为copy_page_tables开// 的“空头支票”买单。// page为物理地址,a原创 2012-05-25 16:45:46 · 4991 阅读 · 0 评论 -
linux/mm.memory.c/copy_page_tables
// 总的来说,copy_page_tables是一个被fork调用的功能函数,完成在fork一个// 子进程时将父进程的内存以一个页表为单位复制给子进程,从而让子进程可以// 共享父进程的内存页面。int copy_page_tables(unsigned long from,unsigned long to,long size){unsigned long * from_p原创 2012-05-25 11:36:40 · 7485 阅读 · 1 评论 -
linux/mm/memory.c/free_page_tables()
看linux0.11的源码有一段时间了,发现前期的轮廓建立起来后,重点马上到了具体操作上。即函数,毕竟OS本身是由一系列函数组成的,“源码面前了无秘密”,所以要深刻理解操作系统的神奇,深入理解每一个函数的每一行代码很是关键。接下来一段时间,会随着学习的步骤,参看赵炯博士的内核注释和网上其他达人的点评注解,以每个函数为题目进行一个个人的注解。姑且厚颜算作原创吧,不为其他,只为记录下学习印记,加深原创 2012-05-24 17:01:18 · 2121 阅读 · 0 评论 -
linux/fs/inode.c/_bmap() and bmap()
// bmap函数的实体。用来实现文件数据块号到设备中的逻辑块号的映射。// inode是文件i节点指针,block是要操作的文件数据块号,creat为创建标志// 有0和1两种情况。若create为0(不置位)则只是映射。换句话说,若block// 对应的逻辑块不存在,还是返回inode->i_zone[block],此时应该是0.// 若create为1(创建标志置位)则blo原创 2012-05-31 17:13:39 · 2848 阅读 · 2 评论 -
linux/fs/namei.c/permission()
/* * permission() * * is used to check for read/write/execute permissions on a file. * I don't know if we should look at just the euid or both euid and * uid, but that should be easily chang原创 2012-05-30 20:11:19 · 1117 阅读 · 0 评论 -
linux/mm/memory.c/do_no_page
// 处理缺页异常的函数体。address是事发地点线性地址。void do_no_page(unsigned long error_code,unsigned long address){int nr[4];unsigned long tmp;unsigned long page;int block,i;address &= 0xfffff000;// a原创 2012-05-29 15:51:50 · 2266 阅读 · 0 评论 -
linux/mm/memory.c/int share_page(unsigned long address)
/* * share_page() tries to find a process that could share a page with * the current one. Address is the address of the wanted page relative * to the current data space. * * We first check i原创 2012-05-29 11:49:02 · 977 阅读 · 0 评论 -
linux/mm/memory.c/try_to_share()
/* * try_to_share() checks the page at address "address" in the task "p", * to see if it exists, and if it is clean. If so, share it with the current * task. * * NOTE! This assumes we have c原创 2012-05-28 20:14:53 · 1111 阅读 · 0 评论 -
找人一些研究linux内核,呵呵
自己建了一个QQ群,群号215614748。主要讨论linux0.11内核学习,目前自己在学习中,愿跟有兴趣、喜欢讨论的童鞋共同学习提高get_empty_page和get_free_page函数的区别:get_free_page函数仅仅是在主内存区找到一页空闲物理内存,分析get_free_page内部代码可知,get_free_page实际上是通过遍历mem_map数组,从最后一项原创 2012-05-25 18:23:04 · 1212 阅读 · 0 评论