被导师催着赶着走上了-这条-不归路-


从最基本的介绍起

装系统:

前期搞个虚拟机就可以了,一般使用vmware的虚拟机,virtualbox容易爆炸不稳定。。。

下载一个ubuntu的镜像,然后疯狂next就可以了


下文件:

传说中最精简的Linux源码也可是有200万行代码的,,,,,

推荐几个下载内核的网址:

https://www.kernel.org

http://www.oldlinux.org/index_cn.html


最最最常用的命令:

打开一个文件:

cd /usr/include/linux

查看当前目录下有什么东西(显示全部):

ls -a

回到上层目录下:

cd ../

查看该层目录下某个文件的属性:

file 文件名

http://blog.csdn.net/ljianhui/article/details/11100625


源代码目录的整体框架:

http://blog.csdn.net/hxg130435477/article/details/7946433


前期学习指南

最简单的方式是,从百度找学习的方向,然后用命令行打开一个个学习,然后学习完毕后从虚拟机复制到主机再写一发博客

我是从"最感兴趣"“最重要”的东西开始学习

这类的大方向主要有:

各个文件夹的属性,引导与初始化,中断处理,时钟管理,物理内存管理,进程管理,虚拟内存管理等等

200万代码肯定看不完,但是通其中的结构和原理,就已经足够强大了

http://www.oschina.net/question/587367_156024

http://www.92csz.com/study/linux/6.htmhttp://zhidao.baidu.com


进入这篇的主题:time.h

源代码如下:位置在:/usr/include/linux/time.h

#ifndef _LINUX_TIME_H
#define _LINUX_TIME_H

#include <linux/types.h>


#ifndef _STRUCT_TIMESPEC
#define _STRUCT_TIMESPEC
struct timespec {
	__kernel_time_t	tv_sec;			/* seconds */
	long		tv_nsec;		/* nanoseconds */
};
#endif

struct timeval {
	__kernel_time_t		tv_sec;		/* seconds */
	__kernel_suseconds_t	tv_usec;	/* microseconds */
};

struct timezone {
	int	tz_minuteswest;	/* minutes west of Greenwich */
	int	tz_dsttime;	/* type of dst correction */
};


/*
 * Names of the interval timers, and structure
 * defining a timer setting:
 */
#define	ITIMER_REAL		0
#define	ITIMER_VIRTUAL		1
#define	ITIMER_PROF		2

struct itimerspec {
	struct timespec it_interval;	/* timer period */
	struct timespec it_value;	/* timer expiration */
};

struct itimerval {
	struct timeval it_interval;	/* timer interval */
	struct timeval it_value;	/* current value */
};

/*
 * The IDs of the various system clocks (for POSIX.1b interval timers):
 */
#define CLOCK_REALTIME			0
#define CLOCK_MONOTONIC			1
#define CLOCK_PROCESS_CPUTIME_ID	2
#define CLOCK_THREAD_CPUTIME_ID		3
#define CLOCK_MONOTONIC_RAW		4
#define CLOCK_REALTIME_COARSE		5
#define CLOCK_MONOTONIC_COARSE		6
#define CLOCK_BOOTTIME			7
#define CLOCK_REALTIME_ALARM		8
#define CLOCK_BOOTTIME_ALARM		9

/*
 * The IDs of various hardware clocks:
 */
#define CLOCK_SGI_CYCLE			10
#define MAX_CLOCKS			16
#define CLOCKS_MASK			(CLOCK_REALTIME | CLOCK_MONOTONIC)
#define CLOCKS_MONO			CLOCK_MONOTONIC

/*
 * The various flags for setting POSIX.1b interval timers:
 */
#define TIMER_ABSTIME			0x01

#endif


对其中的各种定义的符号作解释也是可以百度到的:

linux系统进程间隔定时器Itimer:

http://www.educity.cn/linux/513972.html


CLOCK_REALTIME与CLOCK_MONOTONIC的区别:

http://igaozh.iteye.com/blog/1675767


继续为这个专题付出可以学习的链接:

linux的时间操作:

http://blog.csdn.net/scottgly/article/details/6568513

http://www.cnblogs.com/yaozhongxiao/archive/2013/04/14/3020353.html




补充几篇深度好文,对Linux的时钟中断讲得深入浅出,而且源代码也有分析:

http://blog.chinaunix.net/uid-11449555-id-2873961.html

http://blog.chinaunix.net/uid-11449555-id-2873962.html

http://blog.chinaunix.net/uid-11449555-id-2873963.html

http://blog.chinaunix.net/uid-11449555-id-2873964.html