Linux内核0.11代码阅读(转)】的更多相关文章

最近决定开始阅读Linux 0.11的源代码. 学习Linux操作系统的核心概念最好的方法莫过于阅读源代码.而Linux当前最新的源代码包已经有70MB左右,代码十分庞大,要想深入阅读十分困难.而Linux早期的0.11版本虽然有诸多局限,但是具备了现代操作系统的完备功能,一些基本概念沿用到了当前版本,并且代码只有300KB,非常适合阅读. 阅读源代码之前首先需要搭建实验环境,由于Linux 0.11的代码是二十年前编写的,当前版本的gcc编译器无法正常编译通过,因此需要首先将Linux 0.1…
0 总体介绍 一个完整的操作系统主要由4部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如图0.1所示.操作系统内核程序主要用于对硬件资源的抽象和访问调度. 图0.1 操作系统组成部分 内核的主要作用是为了与计算机硬件进行交互,实现对硬件部件的编程控制和接口操作,调度对硬件资源的访问,并为计算机上的用户程序提供一个高级的执行环境和对硬件的虚拟接口. 1 Linux内核模式 操作系统内核的结构模式主要可分为整体式的单内核模式和层次是的微内核模式.Linux 0.11采用了单内核模式. 如…
一.总体功能介绍 这是关于Linux-kernel-0.11中boot文件夹下setup.s源文件的实现功能的总结说明. setup.s是一个操作系统加载程序,它的主要功能是利用BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖了原先的bootsect.s程序),所取得的参数和保存在内存中的位置如下所示,这些参数将被内核中相关程序使用,如字符设备驱动程序集中的console.c和tty_io.c 程序等. setup.s程序读取并保存的参数: 然后 setup 程序将…
一.总体功能介绍 这是关于Linux-kernel-0.11中boot文件夹下bootsect.s源文件的说明,其中涉及到了一些基础知识可以参考这两篇文章. 操作系统启动过程 软盘相关知识和通过BIOS中断访问软盘 bootsect.s 代码是磁盘引导块程序,存储在磁盘的第一个扇区中(0面0道1扇区),在计算机上电BIOS自检后,BIOS 会吧引导扇区代码bootsect加载到内存0x90000处开并运行. bootsect代码主要完成以下几项工作: 加载从磁盘第二个扇区开始的4个扇区的内容(由…
# # if you want the ram-disk device, define this to be the # size in blocks. # 如果要使用 RAM 就定义块的大小(注释掉了),这是一个编译时参数,如果定义了在下面会用到. RAMDISK = #-DRAMDISK=512 AS86 =as86 -0 -a #8006汇编的编译器和连接器.后面参数分别是: LD86 =ld86 -0 # -0 生成8086目标程序, -a 生成与gas 和 gld部分兼容的代码. AS…
转自:http://blog.chinaunix.net/uid-30254565-id-5637596.html linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的list.h头文件,内核中大量的使用链表,都是基于此文件的,下面来仔细分析它: (一) 结构体的定义 首先需要明确的一点是,在数据结构书中,大部分的链表定义是这样的(双向链表): type…
转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16:59:55 分析完container_of()宏以后,继续分析list.h文件: (1)list_entry 它就是一个container_of宏,都是得到ptr所指地址的这个结构体的首地址 #define list_entry(ptr, type, member) \ container_of(…
张潇月<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验步骤 首先借助实验楼这个平台进入Linux系统,打开了Xfce终端将代码写入. 通过cd Code命令打开Code文件夹,将后面录入的代码放在文件夹中,便于下载代码,有利于后面的详细分析. 其中通过命令gcc  main.c命令来编译代码:通过gcc  -S  -o  main.s  main.c  –m32来反汇编代码.-m32代表的是32位系统.…
作者:吴乐  山东师范大学 <Linux内核分析> 孟宁 MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.程序设计与分析 mymain.c编写如下,参考了孟宁老师的设计. /* * linux/mykernel/mymain.c * * Kernel internal my_start_kernel * * Copyright (C) 2013 Mengning * */ #include <linux/types.h&g…
准备:检查是否已安装过mysql,若有便删除(linux系统自带的) rpm -qa | grep mariadb rpm -e nodeps mariadb-libs-5.5.56-2.el7.x86_64 正文: 1.cd /mnt mkdir tools cd tools 2.下载文件 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 3.解压  tar…