linux内核
tianxiawuzhei
热爱技术,喜欢探究,喜欢记录和分享。
展开
-
ARM-linux内存管理
1、ARM地址是32位,所以虚拟地址总容量也是4GB。同样分为系统空间和用户空间。对于SA-1100,也是3GB为界。 #define TASK_SIZE 0xc0000000(定义每个进程用户空间大小)#define PAGE_OFFSET 0xc0000000#define PHYS_OFFSET 0xc0000000(内存的物理地址起点)所以在系统空间,即在内核中原创 2012-04-24 19:39:16 · 6946 阅读 · 0 评论 -
Arm-linux内存管理(2)
毛德操《嵌入式系统》读书笔记。1、在ARM-Linux内核的代码中,页面大小采用4KB,区段大小为1MB,并且使页面目录PGDIR对应于ARM的首层映射表,而中间目录PMD则设置成与PGDIR等同,这样就把概念上的三层映射合并成了物理上的二层映射。#define PAGE_SHIFT 12#define PAGE_SIZE (1UL #define PMD_SHIFT 20原创 2012-04-30 23:13:48 · 1779 阅读 · 0 评论 -
Arm-linux内存管理(3)
毛德操《嵌入式系统》读书笔记。接着第二篇说1、与通用计算机系统相比,嵌入式系统中内存的组成与布局更加多样。因为长采用不同质的存储器件,如ROM/RAM等外设接口的寄存器,按内存统一编址。2、ARM-Linux内核的代码不应该是专门针对某一种特定系统的,而应该让代码的主体能够适应各种不同的ARM处理器、各种不同的板卡设计的需要。为此就要把与具体系统有关的内容剥离出来,集中原创 2012-05-05 22:39:01 · 2731 阅读 · 0 评论 -
Arm-linux的进程调度(2)
接着上一篇,看过上一篇的还记得这段吗?/* Here we just switch the register state and the stack. */switch_to(prev, next, prev);barrier();/** this_rq must be evaluated again because prev may have moved* CPU原创 2012-05-14 18:04:08 · 1705 阅读 · 0 评论 -
Arm-linux的进程调度(1)
1、大家应该都知道到Linux内核的用于进程调度的主要函数就是schedule函数,当然要进行进程调度,有许多条件需要满足,现在假设所有的条件都已经满足,要进行调度了。/* * schedule() is the main scheduler function. */asmlinkage void __sched schedule(void){struct task_str原创 2012-05-14 16:33:41 · 2212 阅读 · 0 评论 -
ARM Linux内核启动(2)
上一篇ARM Linux内核启动(1)的衔接。接着上一篇说,看下面源码:/* * Setup the initial page tables. We only setup the barest * amount which are required to get the kernel running, which * generally means mapping in原创 2012-05-17 09:32:14 · 1379 阅读 · 0 评论 -
ARM Linux内核启动(1)
通过分析可知ARM-linux内核的启动分为两个过程,首先,自解压内核到内存中;其次,跳转到解压缩之后的内核运行。压缩内核的启动部分在 linux/arch/arm/boot/compressed/head.S和arch\arm\boot\compressed\misc.c两个文件中。而分压缩内核的启动部分,是真正的linux内核的入口,在linux/arch/arm/kernel/head.S文原创 2012-05-16 23:10:03 · 1441 阅读 · 0 评论