一个完整可用的操作系统主要由 4 部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如下图所示: 用户应用程序是指那些字处理程序. Internet 浏览器程序或用户自行编制的各种应用程序: 操作系统服务程序是指那些向用户所提供的服务被看作是操作系统的部分功能的程序. 在 Linux 操作系统上,这些程序包括 X 窗口系统. shell 命令解释系统以及那些内核编程接口等系统程序:操作系统内核程序即是本书所感兴趣的部分,它主要用于对硬件资源的抽象和访问调度. Linux 内核的主要用途就…
Linux-0.11内存管理模块是源码中比較难以理解的部分,如今把笔者个人的理解发表 先发Linux-0.11内核内存管理get_free_page()函数分析 有时间再写其它函数或者文件的:) /* *Author : DavidLin *Date : 2014-11-11pm *Email : linpeng1577@163.com or linpeng1577@gmail.com *world : the city of SZ, in China *Ver …
前言 Makefile对于从来没有接触过的人来说是相当别扭的(比如我),但它确实又是非常重要的,它描述了一个Image是如何形成的,理解它也许并不能帮我解决实际问题,而且编写Makefile的工作也许根本不需要我们来做,但是,学习它能给我们一个更广阔的视角,说不定就能为某些难题.bug提供解决思路.这篇文章也只是对Makefile的初探,待到对Makefile有更深刻的理解之后,我会对这篇文章进行更新~ Tips 在查看Makefile源码之前最好熟悉gas常用的命令参数 as A B A -a…
上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一段代码(linux0.11的启动分析部分会在另一部分中再分析,由于此文仅涉及c与汇编代码的问题,). after_page_tables: pushl $ # These are the parameters to main :-) pushl $ pushl $ pushl $L6 # retur…
学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. 含义一:数据结构 stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out). 在这种数据结构中,数据像积木那样一层层堆起来,后面加入的数据就放在最上层.使用的时候,最上层的数据第一个被用掉,这就叫做"后进先出". 与这种结构配套的,是…