Linux 内核 回顾: ISA】的更多相关文章

设计上 ISA 总线非常老了, 并且是非常地低能, 但是它仍然持有一块挺大的控制设备的 市场. 如果速度不重要并且你想支持老式主板, 一个 ISA 实现要优于 PCI. 这个老标准 的另外一个好处是如果你是一个电子爱好者, 你可轻易建立你自己的 ISA 设备, 显然对 PCI 是不可能的. 另一方面, ISA 的许多缺点是它紧密绑定在 PC 体系上; 这个接口总线有所有的 80286 处理器的限制并且给系统程序员带来无穷的痛苦. ISA 设计(从原始的 IBM PC 继承下来 的)的另一个大问题…
[5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE (4.18--4.24)期中总结 SECTION 0 学习目录 第一周<计算机是如何工作的?>http://www.cnblogs.com/lwr-/p/5211491.html 第二周<操作系统是如何工作的?> http://www.cnblogs.com/lwr-/p/52356…
linux内核的linux-3.6.5\Documentation\kbuild\makefiles.txt Linux Kernel Makefiles This document describes the Linux kernel Makefiles. === Table of Contents === Overview === Who does what === The kbuild files --- 3.1 Goal definitions --- 3.2 Built-in obje…
写在前面 宗旨:把话说清楚,把道理讲透彻. 约定:所有代码均来自Linux内核2.6.24版. 建议:本文介绍得十分详细,但也略显繁琐,读者可以先看“Ⅴ.总结”部分带注释的源码,如果哪里不清楚,再回头看详细解释. 正文 预备知识 位图: 在Linux下,从数据结构上看,位图本质上是一个数组,数组的每个元素都是long型的(即32bit或64bit). 假设在32位系统下,某long型数组有128个元素,那么,从逻辑上看,这个数组就是一个128行×32列的bit阵列,就是所谓的位图,见下面的示意图…
20169212<Linux内核原理与分析>课程总结 每周作业链接汇总 第一周作业:完成linux基础入门实验,了解一些基础的命令操作. 第二周作业:学习MOOC课程--计算机是如何工作的:完成实验楼上配套实验一,反汇编一个简单的C程序,分析堆栈变化情况:阅读学习教材<Linux内核设计与实现>第1,2,18章内容. 第三周作业:使用自己的ubuntu按照书进行基本实验,遇到的一些问题及解决. 第四周作业:学习MOOC课程--操作系统是如何工作的:完成实验楼上配套实验二,使用自己的…
Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在执行call的时候,eip保存的是call语句下一条指令的地址)的地址保存在当前栈顶,然后设置eip的值为要跳转到的函数的开始的地址 ret指令:将之前使用call指令的保存在栈里面的地址恢复到eip中去. 2.实验相关 用自己的Ubuntu来搭建实验所需要的环境.但是在使用用apt-get命令安装…
两个月Linux内核的学习,让我理解了Linux内核的基本工作原理,包括进程管理.内存管理.设备驱动.文件系统,从分析内核到了解整个系统是如何工作的.如何控制管理资源分配.进程切换并执行.各种策略和结构让系统运行时更有效率等.每周都要看视频.做实验.写博客,在一点一滴的积累中,我逐渐弄清楚Linux内核的脉络,更令我感到欣喜的是本来略感散乱的知识点也在最后一节课的总览里看到了其内在联系.苟有恒,学好Linux不是梦! 一.博客目录 第一周<计算机是如何工作的?> http://www.cnbl…
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 linux-2.6.37 版源码为例分三个阶段来描述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能 MMU .设置一级页表等,而第三阶段则主要为C代码,包括内核初始化的全部工作. 一. Linux 内核自解压过程 在 linux 内核启动过程中一般能看到图1内核…
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE(2.29——3.6)构造一个简单的Linux系统MenuOS SECTION 1 Linux内核源代码简介 1.操作系统的两把宝剑(回顾上一讲) 中断上下文的切换——保存现场&恢复现场 进程上下文的切换 2.Linux内核源代码简介 打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的…
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK SIX(3.28--4.3)进程的创建与描述 SECTION 1 进程描述 1.进程控制块--PCB 2.进程描述符--struct task_struct 1. pid_t pid又叫进程标识符,唯一地标识进程 2. 第1295行,list_head tasks即 进程链表 - 双向循环链表链接起了所有的进程,也表示…
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 不知不觉,在网易云课堂上追了两个多月的课程<Linux内核分析>就要告一段落了.在课程即将结束的时刻,我想将这八周的课程串起来,进行一个简单的总结,同时讲一讲自己上这门课的感悟和体会,以期再接再厉,继往开来. 每一周的视频,我都认真看过,并完成了测验,撰写了相关的博客,下面首先进行简单的回顾和总结: 第一周:从一…
--译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 This document describes the Linux kernel Makefiles 本文档介绍了Linux内核的Makefile === Table of Contents === 目录 === 1 Overview === 1 概述 === 2 Who does what === 2…
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人. 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件.基本上,Linux内核中每一个目录下边都会有一个 Kconfig文件和一个Makefile文件.对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都…
1.前言  编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多驱动,不懂硬件的我们,看到都头大.本人第一次安装gentoo的时候,内核编译了5次,前4次主要失败原因是以太网卡驱动.无线网卡驱动.显卡驱动.声卡驱动都没一次性配置正确.虽然gentoo提供了genkernel命令,可以自动帮你编译内核,但还是想自己手工尝试下. 2.获取本机驱动信息 既然跟内核挂钩…
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 在本次的实验中,我们将通过简单分析Linux内核代码来探讨操作系统的启动过程. 计算机启动的过程其实在Andrew S.Tanenbaum所著的<现代操作系统>(中文版第18页)中就有大略的描述: 1.计算机启动时,存储在RAM中的BIOS程序检查计算机的所有设备,包括RAM.键盘.鼠标.ISA及PCI总线上的设…
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&…
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人. 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件.基本上,Linux内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件.对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都不…
1, 关于操作系统理论的最初级的知识.不需要通读并理解<操作系统概念><现代操作系统>等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线.内存的关系(很粗略即可),等等. 2, 关于C语言.不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表.散列表等数据结构的C实现,用过gcc编译器,就可以了.当然,如果已经精通C语言显然是大占便宜的. 3, 关于CPU的知识.这块儿可以在学习内核过程中补,但这样的话你…
http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的.因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux. 这个……还是有点太泛了吧,我…
如题目所示,为什么要称作“内核内存管理”,因为内核所需要的内存和用户态所需要的内存,这两者在管理上是不一样的. 这篇文章描述内核的内存管理,用户态的内存管理在以后的文章中讲述. 首先简单的说明一下下面的描述所需要的基础知识: 1,以下描述适用于32位系统 2,32位系统的线性地址(或称为逻辑地址,下面统称为线性地址)0-4G,其中的3G-4G的地址空间由内核使用.宏PAGE_OFFSET 为0xC0000000(3G),也是内核空间和用户空间的分界.但是linux内核并没有把整个1G空间用于线性…
每周作业链接汇总 第一周作业:对实验楼<Linux 基础入门(新版)>课程的学习,其中有用户及文件权限管理.Linux 目录结构及文件基本操作.环境变量与文件查找.文件打包与解压缩等共17节的内容,并且每一节都有配套实验操作. 作业链接:http://www.cnblogs.com/crisgy/p/5907128.html 二维码: 第二周作业:网易云课堂<Linux内核分析>第一节计算机是如何工作的.课本第1章--Linux内核简介,第2章--从内核出发,第18章--调试. 作…
上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等,而第三阶段则主要为…
续博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令.就进入Linux内核启动阶段,与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程. 第一阶段为内核自解压过程.第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等.而第三阶段则主要为…
      从题目中可以看到,这篇文章是以我读<Linux内核设计与实现>而想到的其他我读过的书,所以,这篇文章的主要支撑点是<Linux内核>.       开始读这本书已经是很久以前的事了,不过,由于时间和精力原因,没有认真的分析和深入研究这本书所涉及的诸多内容,现在想来,仍旧很是遗憾,直到最近,再次把这本书拿过来阅读,才勉强可以说是对书中的知识点有了一定的了解,我说的这种了解,远达不到精通的地步,可能略懂才更适合我.       好吧,首先先简单的介绍下这本书.这本书的作者是…
sysfs 与 /sys sysfs 文件系统总是被挂载在 /sys 挂载点上.虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上:针对以前的 sysfs 挂载位置不固定或没有标准被挂载,有些程序从 /proc/mounts 中解析出 sysfs 是否被挂载以及具体的挂载点,这个步骤现在已经不需要了.请参考附录给出的 sysfs-rules.txt 文件链接.…
内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射.页面分配.页面回收.页面交换.冷热页面.紧急页面.页面碎片管理.页面缓存.页面统计等,而且对性能也有很高的要求.本文从内存管理硬件架构.地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理的软硬件架构做一些宏观上的分析总结. 内存管理硬件架构 因为内存管理是内核最为核心的一个功能,针对内存管理性能优化,除了软件优化,硬件架构也做了很多的优化设计.下图是一个目前主流处理器上的存储器层次结构设计方案.…
本文内容由公众号“格友”原创分享. 1.引言   (不羁的大神,连竖中指都这么帅) 因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人.虽然大家可能都听过钱钟书先生的名言:“假如你吃个鸡蛋觉得味道不错,又何必认识那个下蛋的母鸡呢?” 但是如果真是遇到一个“特别显赫”的鸡蛋,很多人还是想看看能生出这颗神蛋的母鸡的,或者想听听这只母鸡的故事. 其实,在Linux内核的代码里,就隐藏着关于Linus大神的一些美妙故事. (本文同步发布于:http://www.52im.net/thr…
Linux 内核学习经验总结 学习内核,每个人都有自己的学习方法,仁者见仁智者见智.以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下. 内核学习,一偏之见:疏漏难免,恳请指正. 为什么写这篇博客 刚开始学内核的时候,不要执着于一个方面,不要专注于一个子系统就一头扎到实际的代码行中去,因为这样的话,牵涉的面会很广,会碰到很多困难,容易产生挫败感,一个函数体中(假设刚开始的时候正在学习某个方面的某个具体的功能函数)很可能掺杂着其他各个子系统方面设计理念(多是大量…
终极资料 1.<Understanding Linux Network Internals> 2.<TCP/IP Architecture, Design and Implementation in Linux> 以下博客内容可用于导读. 自底向上 链路层质料 1.linux内核网络协议栈架构分析,全流程分析-干货: https://blog.csdn.net/zxorange321/article/details/75676063 2.专栏:Linux内核网络栈源代码分析 htt…
Linux内核之内存管理 Linux利用的是分段+分页单元把逻辑地址转换为物理地址; RAM的某些部分永久地分配给内核, 并用来存放内核代码以及静态内核数据结构; RAM的其余部分称动态内存(dynamic memory); 整个系统的性能取决于如何有效的管理动态内存; 尽力优化对动态内存的使用, 尽量做到需要时使用, 不需要时释放; 内核如何给自己分配动态内存: 页框管理和内存区管理对连续内存去处理的两种不同的技术; 非连续区的管理是处理不连续内存去的一种技术; 内存管理必须知道的几个主题技术…