上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
  2012年10月16日
摘要: 简介:Linux® 内核是一个庞大而复杂的操作系统的核心,不过尽管庞大,但是却采用子系统和分层的概念很好地进行了组织。在本文中,您将探索 Linux 内核的总体结构,并学习一些主要的子系统和核心接口。您还可以通过其他 IBM 文章的链接更深入地进行学习。由于本文的目标是对 Linux 内核进行介绍并探索其体系结构和主要组件,因此首先回顾一下 Linux 的简短历史,然后从较高的层次审视 Linux 内核的体系结构,最后介绍它的主要子系统。Linux 内核具有超过 600 万行的代码,因此本文不可能进行完整的介绍。请使用指向其他内容的链接进一步学习。Linux 的简短历史尽管 Linu 阅读全文
posted @ 2012-10-16 13:16 Daniel.G 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 简介:在文件系统方面,Linux® 可以算得上操作系统中的 “瑞士军刀”。Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统。对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台。本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构。基本的文件系统体系结构Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统。例如,read函数调用可以从指定的文件描述符读取一定数量 阅读全文
posted @ 2012-10-16 13:14 Daniel.G 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 简介:对于移植 linux 到其它开发板的人来说,编写 boot loader 是一个不可避免的过程。对于学习linux的人来讲,编写 bootloader 也是一个很有挑战性的工作。本文通过对 linux引导协议进行分析,详细阐述了如何编写一个可以在 i386 机器上引导 2.4.20内核的基本的bootloader。1.概述linux运行在保护模式下,但是当机器启动复位的时候却处于实模式下。所以写bootloader做的工作也是在实模式之下的。linux的内核有多种格式,老式的zImage和新型的bzImage。它们之间最大的差别是对于内核体积大小的限制。由于zImage内核需要放在实模式 阅读全文
posted @ 2012-10-16 13:10 Daniel.G 阅读(1153) 评论(0) 推荐(0) 编辑
摘要: 简介:引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的 阅读全文
posted @ 2012-10-16 13:07 Daniel.G 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 简介:本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。2.Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3.文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。4.用户 阅读全文
posted @ 2012-10-16 13:00 Daniel.G 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。高端内存:物理内存896M以上部分称之为高端内存。内核空间分布:* 直接内存映射去(Direct Memory Region)从3G开始,最大896的线性地址区间,我们称作直接内存映射区,这是因为该区域的线性地址和物理地址之间存在线性转换关系 线性地址=3G+物理地址* 动态内存映射区(Vmalloc Region)该区域的地址由内核函数vmalloc来进行分配,其特点是线性空间连续,但对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。* 永久内存映射区(PKMap Region) 阅读全文
posted @ 2012-10-16 12:54 Daniel.G 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 虚拟内存linux操作系统采用虚拟内存管理技术,使得每个进程都有独立的进程地址空间,该 空间大小为3G,用户看到和接触的都是虚拟地址。linux将4G的虚拟地址空间划分为两个部分--用户空间与内核空间。用户空间:0--0xbfffffff内核空间:3G--4G内存分配:应用程序中:malloc函数进行动态分配linux内核中:kmalloc函数动态分配内存#include<linux/slab.h>void *kmalloc(size_t size, int flags)参数: size:要分配的内存大小 flags:分配标志,它控制kmalloc的行为。flags: GFP_AT 阅读全文
posted @ 2012-10-16 12:22 Daniel.G 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 一 地址类型* 物理地址:是指出现在cpu地址总线上的寻址物理内存的地址信号,是地址变换的 最终结果。* 逻辑地址:程序代码经过编译后,出现在汇编程序中的地址。* 线性地址:又名虚拟地址,在32位的cpu架构下,可以表示4G的地址空间,用16进制表示就是0x00000000到0xffffffff。二 地址转换(图):cpu要将一个逻辑地址转换为物理地址,需要两步:首先cpy利用段式内存管理单元,将逻辑地址转换成线性地址,再利用页式内存管理单元,把线性地址最终转换为物理地址。三 段式管理,页式管理* 段式管理(16位): 逻辑地址=段基地址+段内偏移量由逻辑地址得到物理地址的公式为:PA = 段 阅读全文
posted @ 2012-10-16 11:37 Daniel.G 阅读(273) 评论(0) 推荐(0) 编辑
  2012年10月15日
摘要: 在《GNU ARM汇编--(十五)linux下的printascii》中已经初步分析了自己写的bootloader在引导kernel时候出现的commandline在bootloader和kernel之间传递的问题,今天终于解决了,并对参数传递有一些研究: 传递的参数为:[cpp]view plaincopyprint?params->u1.s.page_size=LINUX_PAGE_SIZE;params->u1.s.nr_pages=(DRAM_SIZE>>LINUX_PAGE_SHIFT);params->commandline[COMMAND_LINE_ 阅读全文
posted @ 2012-10-15 22:29 Daniel.G 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 在前面对很多s3c2440的功能模块进行学习后,已经具备了将这些模块综合起来的条件,基于此,将前面的代码综合成一个简单的bootloader.自己写的bootloader在引导kernel的时候,串口输出只有Uncompressing Linux...和done, booting the kernel。串口有这个输出,说明kernel被正确引导了,但是串口有问题。 这篇blog只是分析解决这个问题的第一步: 既然"Uncompressing Linux..."这句打印是kernel代码中的,那kernel的其他打印怎么没有? 在arch\arm\boot\compresse 阅读全文
posted @ 2012-10-15 22:28 Daniel.G 阅读(672) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页