2009年5月30日 星期六

还是老外大学好

    今天查资料的时候,无意间看到了一篇文章"世界最著名大学教育向我们开放了"。诸多大学的免费教育,哈哈,很是适合我们这样喜欢自学的人。以前我曾经下载过一个"算法导论"的视频课程,可惜我E文听力并不是很好,但那教授和助教确实跟国内大学比,似乎更让学生富有求知欲望,我很希望我们有那么的课程,可惜,事实似乎并不如我们所料。

    berkeley分校的计算机课程我想我以后应该看看了,我这两年学的好多东西都出自这所大学,得表示一下谢谢。呵呵,突然想到我们所谓的"精品课程"的东西,都是抄来抄去,有什么意思了,浪费大家时间,没人去看你们那些破东西的,就TMD的给领导看,你们教领导还是学生,太悲哀了,这样的大学氛围。

    下面为全文,实为转载,网络中搜索太多了,实在找不着原作者,转载未贴原作者,如有不妥,望谅解。

 

/*****************************************************************************/

 

一、伯克利

加州大学伯克利分校 http://webcast.berkeley.edu/courses.php

作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。实在不行,用google搜搜吧!

  伯克利的视频都是.rm格式,请注意转换

  二、麻省

麻省理工学院 http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm

麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。鉴于PDF格式,推荐使用FoxIt Reader。

  www.core.org.cn , (中国大陆)推荐

  www.myoops.org , (中国台湾)

二、卡耐基梅隆 http://www.cmu.edu/oli/

卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。

四、犹他

犹他大学 http://ocw.usu.edu/front-page/Courese_listing

犹他大学类似于麻省理工,提供大量的课程课件

五、塔夫茨

塔夫茨大学 http://ocw.tufts.edu

塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。

六、公开

英国公开大学 http://openlearn.open.ac.uk/course/index.php

英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。

七、约翰霍普金斯

约翰霍普金斯 http://ocw.jhsph.edu/topics.cfm

只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。

八、Connexions

http://cnx.rice.edu

CNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。

九、索菲亚

索菲亚大学 http://sofia.ocw.cn/gallery

无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。

十、华盛顿

华盛顿大学 http://www.cs.washington.edu/education/course-webs.html

华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。

牛津、斯坦福、耶鲁大学联合网站

http://www.alllearn.org

哥伦比亚大学

http://ci.columbia.edu/ci

伯克利音乐学院

http://www.berkleeshares.com

杜克大学法律中心

http://www.law.duke.edu/cspd/lectures

圣母大学

http://ocw.nd.edu

英国格雷莎姆学院

http://www.gresham.ac.uk/default.asp

加州大学Irvine分校

http://ocw.uci.edu

富布莱特学校

http://ocw.fetp.edu.vn/home.cfm

日本东京大学

http://ocw.u-tokyo.ac.jp/english

日本早稻田大学

http://www.waseda.jp/ocw/index.html

日本大阪大学

http://ocw.osaka-u.ac.jp/index.php

法国巴黎高科

http://graduateschool.paristech.org





再给个看大学视频播客的



斯坦福大学 http://itunes.stanford.edu

加州大学伯克利分校http://itunes.berkeley.edu

普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast

美国西南理工http://pocast.swtc.edu/lecture/index.php

加州大学洛杉矶分校http://www.bruincast.ucla.edu

西肯塔基大学http://blog.wku.edu/podcasts

Dupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html

纽约城市大学http://podcast.york.cuny.edu/lectures

莱斯大学http://webcast.rice.edu

加州大学圣地亚哥分校http://podcast.ucsd.edu

剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html

美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts

杜克大学法律学院http://www.law.duke.edu/webcast

乔治敦大学 http://webcast.georgetown.edu

芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast

波士顿学院 http://frontrow.bc.edu

哈佛商学院在线

http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml;jsessioned=NVHF0YFBS5ZCGAKRGWDR5VQBKE0YIISW

威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm

约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html

伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm

普林斯顿大学 http://uc.princeton.edu/main/index.php

英国泰晤士报MBA http://uc.princeton.edu/main/index.php

耶鲁大学 http://www.yale.edu/opa/podcast/

 

/*****************************************************************************/

2009年5月28日 星期四

Barcelona艺术夺得三冠

Barcelona是一支伟大的、团结的、艺术的球队。他们赢得了09年至高无尚的三冠。

电视机房的最后的山摇地动,将在30天后的毕业过后仍旧震撼人心。对面的女生无法感受到如此炽热的情怀,所以,请来了敷衍了事的保安。我依然在想,是不是那些女生们跟男生拍拖的时候才会感觉如次的疯狂。

Stylish Barcelona take United's crown。

2009年5月25日 星期一

强奸了你还不能出声

科学发展观已经已经“科学”广播了几个月,每个学院派什么所谓的领导一次一次地自我高潮,并堂而皇之地让广大P民也跟着自慰。靠,你以为我们还是那些被奴化的人啦,脱开裤子也跟你一起意淫啊,也太看不起我们了。自己都不相信,觉得泛而空的东西,为什么还要拿来不断地去强奸别人呢。


小学时候,学的课本感觉我们的课本说鲁迅老人家是某某集团的代言人一样,其实长大了才知道,根本不是。要是现在鲁迅老人家还在,非要狗血淋头地抨击我们这样已经腐烂到佳的社会了。


4W亿,5%用在医疗保障和教育上,还科学发展观!好好想想,能让百姓看到教育平等和重要性吗,能让老百姓感觉生命受到保障吗,能让老百姓感受到一个不缺乏人权的社会吗,能让百姓感觉到自己是社会的主人吗?我们的公仆?


垄断是可持续发展的;国外人民都生活在水深火热当中;我们的人权是全世界最好的;我们的农民采访都是乐呵呵的;我们的“干”部深入群众拉动内需…………


谁都想让我们的祖国变得强大,但请不要让我们看到它一直偏离我们百姓的想法。


2009年5月15日 星期五

科技战略

咸郎平教授有一篇文章“中华文化不养高科技”与阿Q精神”讲得还是很好的,虽然那是2004年的文章了。地址为:http://www.jsmedia.tv/bbs/viewthread.php?tid=93&extra=page%3D1

咸郎平难得的是直面现实,针砭时弊,并能提出一些较好的解决方案和建议。相对于张五常,我更倾向于认为他为某一小撮利益团体做辩护和扩大他们的利益。

当然,兼听则明,偏听则暗,五常兄也是有可取之处的。

2009年5月14日 星期四

一批砖家

我们身边怎么这么多鸟人号称砖家呢!

这是去年的一则新闻:2008年11月8日,全球第一部《网络成瘾临床诊断标准》在我国通过专家论证,网瘾正式纳入精神病诊断范畴。其界定中一项量化的指标是每天连续使用网络达到或超过6小时,且这种症状达到或超过3个月。

我一不小心就是精神病患者了,我操你个砖家,是不是想挨爆菊了!

这所谓网瘾正式纳入精神病诊断范畴还不要紧,后面有一个“山东临沂杨永信网络成瘾戒治中心拉到了聚光灯下。这位自称“快乐使者”的“全国戒网专家”,将绝大部分都是被骗来并强迫接受治疗的孩子的太阳穴或手指接通电极,以纠正他们的“走偏”行为”。my god,这个世界真是变态,这个骗子真是无敌地伟大,还叫嚣“如果不能很好地控制网瘾的蔓延,会造成“亡党亡国”的后果,会让整个中华民族“断子绝孙”,会让美国人在上个世纪七十年代叫嚣的“不战而胜”变成现实,会让中国文化在网络帝国主义的文化侵略中消失! ”

中国怎么就这么多无耻和无知的砖家呢。不过想想,生活在这片神奇的土地上,有什么不可能捏

2009年5月11日 星期一

茅于轼,人民的敌人!

《茅于轼----我反对限价房和经济适用房》

一伪经济学家,某某利益集团的一帮凶。

出来混,迟早要还的。

2009年5月8日 星期五

真和谐

究竟多少中国贪官在国外“潜伏”?早在2001年新华社就报道说,中国有超过4000名贪污、贿赂犯罪嫌疑人携带50多亿元人民币公款逃到国外,其中绝大多数是贪官。去年8月,“两许”在美国被定有罪时,美国加州警方曾透露,中国反贪局和公安部向美方列出“中国贪官外逃名单”,1000多人榜上有名……

这还是是官方统计呢,还有不敢公布的呢……

话说国企

呵呵,今天上天涯看了篇有关电信强行摊派任务给员工的文章,看得心里凉飕飕滴,地址为:http://www.tianya.cn/publicforum/content/free/1/1555803.shtml

有个回帖挺贴切的:电信虽然改为企业了,但那种令人作呕的机关作风根植之深,外人难以想象,到处散发着令人深恶痛绝的政治霉味。电信这种垃圾企业,并不缺乏人才,但体制之痼疾,早该倒闭一万次,非但如此,电信员工不得重生。

真TMD的什么鬼企业,操蛋!国家花那么多钱拉动内需,几乎都给了国企或者有国企背景的企业了,一部分人在原有的基础上更加富有了,可他们喜欢在国外拉动别人的内需,而穷的更穷,还是买不起东西。缺乏公平,缺乏监督,权利主宰一切……一切感觉灰蒙蒙!

2009年5月7日 星期四

The component's frame in TinyOS

TinyOS里 Component有一个Frame的概念,挺起来确实有点悬乎乎的,不知道是啥子东西。

孙利民的《无线传感器网络》第343和344页有下面三个说法:

1.一个经过封装的私有数据帧(data frame);

2.任务、命令和事件处理程序在帧的上下文中这行并切换帧的状态;

3.TinyOS采用静态分配存储帧,这样在编译时就可以决定全部应用程序所需要的存储器空间。帧是一种特殊的符合C语法的结构体(struct),它不仅采用静态分配而且只能由其所属的组件直接访问。TinyOS不提供动态的存储保护,组件之间的变量越权访问检查是在编译过程中完成的。除了允许计算存储器空间要求的最大值,帧的预分配可以防止与动态分配相关的额外开销,并且可以避免与指针相关的错误。另外,预分配还可以节省执行事件的开销,因为变量的位置在编译时就确定了,而不用通过指针动态地访问其状态;

后来去官方的帮助,找到主题“[Tinyos-help] About Components Frame”,Phil做了还算详细的解答。里面提到:
1."nesC compiles to C; take a look at build//app.c to see the generated C. The C compiler/assembler then assigns the layout of variables in the data or bss sections, which are distinct from the stack."
2."the FRAME concept just means the variables and data(initialized or not, as in data or bbs sections of the exec elf files) ofthe C program”

关于the data or bss sections:
bss段(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小。
data段(已手动初始化的数据)段则为数据分配空间,数据保存在目标文件中。
需要更详细了解the data or bss sections的可以参考一下赵迥老师的《Linux内核完全剖析》第3章节。或者《Linkers and Loaders.pdf》,它有中文版。

现在最最需要我们做的是什么呢,就是去查看build//app.c。这个app.c文件是nesC编译器编译之后生成的C文件,比如你make micaz之后就会生成。我以前装的是TinyOS1.X的,同样我现在也拿其中一个应用程序“CntToLedsAndRfm”来说,其路径为:
“opt/tinyos-1.x/apps/CntToLedsAndRfm/build/micaz/app.c”

通过命令make micaz docs我们可以在“opt/tinyos-1.x/doc/nesdoc/micaz/index.html”中点击“CntToLedsAndRfm”的链接,然后我们看Component Graph,了解到最后CntToLedsAndRfm会wire“AMStandard.nc”这个组件。这个组件source: tos.system.AMStandard.nc。

我们截取AMStandard.nc的实现(implementation)中的一部分代码:
implementation{
bool state;
TOS_MsgPtr buffer;
uint16_t lastCount;
uint16_t counter;

// Initialization of this component
command bool Control.init() {
result_t ok1, ok2;
call TimerControl.init();
ok1 = call UARTControl.init();
ok2 = call RadioControl.init();
state = FALSE;
lastCount = 0;
counter = 0;
dbg(DBG_BOOT, "AM Module initialized\n");
return rcombine(ok1, ok2);
}
.............................

然后我们对照CntToLedsAndRfm/build/micaz/app.c中的相应代码:
# 82 "C:/tinyos/cygwin/opt/tinyos-1.x/tos/system/AMStandard.nc"
bool AMStandard$state;
TOS_MsgPtr AMStandard$buffer;
uint16_t AMStandard$lastCount;
uint16_t AMStandard$counter;

static inline
# 88 "C:/tinyos/cygwin/opt/tinyos-1.x/tos/system/AMStandard.nc"
bool AMStandard$Control$init(void)
{
result_t ok1;
result_t ok2;
AMStandard$TimerControl$init();
ok1 = AMStandard$UARTControl$init();
ok2 = AMStandard$RadioControl$init();
AMStandard$state = FALSE;
AMStandard$lastCount = 0;
AMStandard$counter = 0;
{ } ;
return rcombine(ok1, ok2);
}

首先:
bool state;
TOS_MsgPtr buffer;
uint16_t lastCount;
uint16_t counter;
这一个就是所谓的帧,它们在生成的app.c后都变成了全局变量,对哦,就是静态分配的,不管这些所谓的帧里的变量有没有初始化。其实初始化的话就放到data段中,没被初始化的就放在bss段中而已,根本不影响它这个“帧”的地位。
而上面说的“帧是一种特殊的符合C语法的结构体(struct)”怎么理解呢?
我以前看过一份“System Architecture Directions for Networked Sensors.ppt---Qiuhua Cao(qc9b@cs) Computer Science Department University of Virginia”。可以通过网络上搜索获得。这应该是早期的nesC语法或者早期的TinyOS编程模式。PPT里面提及:
Concepts in TinyOS (cont.)
Frame
ØContains all permanent state for component (lives across events, commands, and threads)
ØThreads, events, and commands execute inside the component’s frame
ØOnly one per component
•Like static class variables, not internal class variables.(类似C++总的静态数据成员,它被类的所有对象共享,而不是属于某个对象的,在存储上只需要存储一处,就可以供所有对象使用,只要对静态数据成员的值更新一次,所有对象的该静态成员值都被更新)
Ø Fixed size
Ø Statically allocated at compile time

Frame example:
Ø Frame declaration
#define TOS_FRAME_TYPE AM_obj_frame
TOS_FRAME_BEGIN(AM_obj_frame) {
int addr;
char type;
char state;
char* data;
char msgbuf[30];
}
TOS_FRAME_END(AM_obj_frame);

ØUse of frame Variables:
VAR(state) = 0;

这样开来,TOS_FRAME_BEGIN(AM_obj_frame) { ××××××} TOS_FRAME_END(AM_obj_frame); 就应该是所谓的符合C语法的结构体(struct),呵呵。

它不仅采用静态分配而且只能由其所属的组件直接访问,这个我们又怎么理解呢?

uint16_t lastCount; ------> uint16_t AMStandard$lastCount;
$是什么东西呢,在刚才的[Tinyos-help]中有提及:
“$ is an almost never used but legal character in C identifiers”
其实"AMStandard$lastCount"在C语言中完全就是合法的标志符,你可以写一个测试程序:
#include
int main(int _argc, char* _argv[])
{
int AMStandard$lastCount = 215;
printf("AMStandard$lastCount:%d\n", AMStandard$lastCount);
return 0;
}
gcc编译后运行是通过的嘛。只是我们平时很少用来着。

这里你是否想到lastCount为什么经过nesC编译后要加一个所谓的“AMStandard$”的前缀(其实AMStandard$lastCount是一个变量,是个整体)呢?我看来,这就是应该算是刚提出的问题“而且只能由其所属的组件直接访问”的含义了吧。你要访问lastCount,现在编译器把它生成带“AMStandard$”前缀的变量,而没有生成带““google$”的前缀”,你说谷歌“google”组件里也有这个lastCount,或者百度baidu也有,但他们被编译没生成AMStandard$lastCount啊,至多根据规则生成google$lastCount或者baidu$lastCount啊(开个玩笑)。又因为“组件之间的变量越权访问检查是在编译过程中完成的”,所以,这样就不能相互乱访问别的组件里的帧变量了,也就是私有了,当然也就是“只能由其所属的组件直接访问”了。当然,帧里的变量都是全局变量,那么当然自然就“帧的预分配可以防止与动态分配相关的额外开销,并且可以避免与指针相关的错误。”了。不过,要是你有恶意的话,你闲着蛋疼修改app.c文件的这些变量,想想会有什么结果呢,呵呵,当然,其实这一点意思都没有。

app.c生成的带$的函数是不是一个道理呢?动下脑筋吧.

但是command bool Control.init()中的
result_t ok1;
result_t ok2;
却并不属于所谓的帧。它们只是普通C语言函数中的局部变量,当然不是全局变量。生成的app.c已经说得足够清楚了。


参考资料:
[1] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004649.html
[2] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004654.html
[3] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004657.html
[4] System Architecture Directions for Networked Sensors
--- Qiuhua Cao (qc9b@cs) Computer Science Department University of Virginia

Twins

平时我不怎么对娱乐新闻感冒的,无非是看看美女而已,呵呵。

阿娇最近复出了,我持一种欢迎的态度。其实她有什么错,他们拍的那些艳照对于一个正常人来说都很可能亲自做过,只是,照片没有被这样无情地公布而已。

唱歌好听就可以了嘛,拍拖也是正常的嘛,拍点艺术照也未尝不可。

2009年5月5日 星期二

ch17_实验环境设置与使用方法

Bochs http://bochs.sourceforge.net/

Bochs 2.3.7 released on June 3, 2008
http://sourceforge.net/project/showfiles.php?group_id=12580&package_id=17475&release_id=604138

sls-0.99pl.tar.bz2
http://sourceforge.net/project/showfiles.php?group_id=12580&package_id=27799&release_id=146898

ch16_建造工具

ch16_建造工具
这章比较简单,主要是认识一下内核磁盘映像文件的工具程序。

除了书本详细介绍之外,有以下代码可以参考下。
Ø sizeof buf 和sizeof(buf)其实是一样的buf是变量了,不是类型,类型就不可以省略括号了。详细见本文件夹中的文档。
Ø 135-137行的代码可以借鉴一下。
for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
if (write(1,buf,c)!=c)
die("Write call failed");
Ø 143-152行的代码可以借鉴一下。
for (c=0 ; c sizeof(buf))
c = sizeof(buf);
if (write(1,buf,c) != c)
die("Write call failed");
i += c;
}

ps:说明sizeof和strlen之间的区别
[1] 详解sizeof和strlen。http://mazhijing.blog.51cto.com/215535/68644
[2] 解析C语言中的sizeof。http://wf66.com/page/20068/15633A89E3.htm

ch15_库文件

有待补充

ch14_头文件

深入浅出VA函数针对stdarg.h文件里的那几个宏,和实现细节http://www.ibm.com/developerworks/cn/linux/l-va/

ch13_内存管理

有待补充

ch12_文件系统

有待补充

ch11_数字协处理器

有待补充

ch10_字符设备驱动程序

有待补充

ch09_块设备驱动程序

有待补充

ch08_内核代码

skip_atoi中的const用法.mhtvsprintf.c中skip_atoi中的一些语法http://blog.chinaunix.net/u/27708/showart_236772.html
vsprintf_c(linux1.0)注释.pdfLinux 1.0 内核注解-linux/kernel/vsprintf.chttp://blog.chinaunix.net/u3/90306/showart_1847949.html
gcc中格式化输出函数的研究(非常好和全)http://bbs.chinaunix.net/viewthread.php?tid=24825

ch07_初始化程序

有待补充

ch06_引导启动程序

// doc

常用中断 - Linux0_11内核学习笔记http://blog.chinaunix.net/u3/93809/showart_1900188.html
bootsect.s文件经常问的问题(第二页比较整齐)http://www.oldlinux.org/oldlinux/viewthread.php?tid=6049&extra=page%3D1
BOIS中断向量表http://blog.csdn.net/kevintian/archive/2008/09/30/3793207.aspx
软盘控制器编程方法.pdf赵炯老师 翻译的,对理解bootsect有用
oldlinux学习笔记--引导与启动三个汇编程序的总结还是很清晰的,很好。http://blog.chinaunix.net/u/22326/showart_315835.html

// code

boot_from_MBR:编写MBR从硬盘启动linux0.11完全过程http://www.oldlinux.org/oldlinux/viewthread.php?tid=4856

ch05_Linux内核体系结构

有待补充

ch04_80×86保护模式及其编程

这个章节及其重要,如果不懂的话,后面的看也没用,晕人你还不赔钱。其实这章的话一定要耐心的看,也不需要花几个时日。以前我去听那个微机接口的课的话,因为没有体系结构和保护模式等这些概念的尝试,晕完去,加上老师又讲得快,愣是把我们当成啥都懂的人。所以,很晕很难受。自己看《Linux内核完全剖析》,完全是因为我当时打算看《深入理解Linux内核》第三版中的第二章,非常之不理解,刚好同学买了一本剖析,于是借过来当成手册看,中文比英文看得快些,有助肠胃消化。第三章我觉得稍微有难度的就是关于“保护”那个小节,务必要做到掌握于心,条分缕析似的。

Intel80386.chm
http://www.oldlinux.org/oldlinux/viewthread.php?tid=9206
oldlinux翻译组
http://www.oldlinux.org/oldlinux/viewthread.php?tid=147
保护模式概述oldlinux一版主说的,他其实自己也是个计算机老师http://www.oldlinux.org/oldlinux/viewthread.php?tid=7297

待补充,只是因为当时暂时没写

ch03_内核编程语言和环境

ch03_内核编程语言和环境

1. GNU as的知识
光靠《Linux内核完全剖析》里面介绍的还是不够的,或许我们还需要补充点什么,特别是我以前学汇编时候不怎么好的情形下,更需要投入精神。分界线上面的我想还是认真应该看的,分界线下面的也就花点时间遛遛,不花什么时间。
Ø 《IBM-PC汇编语言程序设计(第2版)》沈美明、温冬婵著的。这个大学一般的汇编教材,我只看了第二章和第三章。特别是第二章,我以前学的汇编就当没学过,所以,花了一个下午和一个晚上认真的学习了下。
Ø 《Linux 中 x86 的内联汇编》,一个在IBM工作的印度工程师写的,很好。IBM里的文章一般条分缕析,很是适合学习,入门应该先看这个。
地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/index.html
Ø 《GCC的内嵌汇编语法》,据说是一个叫灵溪的人写的。这个是一定要看的。
Ø 《对《gcc中的内嵌汇编语言》一文的补充说明》,这个的话是对《GCC的内嵌汇编语法》的再补充。务必配合上面灵溪的一起看。
----------------------------------------分界线-------------------------------------------------------------
Ø 《汇编语言指令集》。当平时查字典看吧。
Ø 《Linux 汇编器:对比 GAS 和 NASM》,有多余的时间,也可以看看这个。
地址:http://www.ibm.com/developerworks/cn/linux/l-gas-nasm.html
Ø 《Linux汇编语言开发指南》。这篇文章也是不错的。本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生。地址:http://www.ibm.com/developerworks/cn/linux/l-assembly/

2. 内存布局的基础知识,如下:
堆和栈的区别1.pdf,堆和栈的区别2.pdf和堆和栈的区别3.pdf有重复的,未修改过。

更详细的请看书籍 《嵌入式Linux上的C语言编程实践》--韩超 魏治宇 廖文江。它的第13章 C语言程序的内存布局,写得挺好的。主要跟《Linux内核完全剖析》第三章的内核编程语言和环境中的3.5 Linux0.11目标文件格式 有一定的联系,BSS段说得也挺清楚的。里面例子也很丰富。在线阅读的链接为:http://book.51cto.com/art/200902/111788.htm

3. C函数调用机制
关于《Linux内核完全剖析》中的“3.4.1 C函数调用机制”,《深入理解计算机系统》有更详细的介绍,推荐看。因为过程调用那部分不是完全理解,然后刚好搜索了下,网上介绍说这书讲解得不错。这本书有中英版本。中文很多勘误,详见china-pub:http://www.china-pub.com/18133。点击勘误建议。英文的话可以在CSDN上下载,4点M的才是完全版,而且几乎那些勘误都改正过来的了,中文对照着英文看好一些。下面分条再强调一下:
Ø 同样的一段代码,书里面的汇编后的代码很可能跟你系统自己去汇编的不一样,我曾经用过以前学习TinyOS时装的Cygwin和FC10,两者的GCC版本都不一样,出来的.S汇编代码是跟书里是有差距的。
Ø 就像中文翻译的第151页里说的,不是很清楚C编译器为什么会为有些函数在栈中分配这么多未使用的存储(strorage),也就是为使用的那些栈帧区域。而原作者在第149页说分配这些浪费了的区域是为了改进高速缓存的性能(these wasted areas are allocated to improve the cache performance)。但究竟怎么改进,我还是不懂。
Ø “3.7.5 Recursive Procedures”中程序里面的第11行和第16行,我老觉得好像没有这样的写法的啊,而且我亲自去编译,不是这样的,根本不用去取地址(leal)。
1 fib_rec:
Setup code
2 pushl %ebp Save old %ebp
3 movl %esp,%ebp Set %ebp as frame pointer
4 subl $16,%esp Allocate 16 bytes on stack
5 pushl %esi Save %esi (offset -20)
6 pushl %ebx Save %ebx (offset -24)
Body code
7 movl 8(%ebp),%ebx Get n
8 cmpl $2,%ebx Compare n:2
9 jle .L24 if <=, goto terminate
10 addl $-12,%esp Allocate 12 bytes on stack
11 leal -2(%ebx),%eax Compute n-2
12 pushl %eax Push as argument
13 call fib_rec Call fib_rec(n-2)
14 movl %eax,%esi Store result in %esi
15 addl $-12,%esp Allocate 12 bytes to stack
16 leal -1(%ebx),%eax Compute n-1
17 pushl %eax Push as argument
…………
Ø 《深入理解计算机系统》里“3.7 过程”里的习题最好做一下,好经典。

4. ld
目标模块文件和可执行目标文件的结构都是很重要的。不然很难想象机器是怎么工作的,代码到底放在硬件的哪里运行,怎么装载。下面补充一些有之有关的知识,在书里有的话也就不谈了。
Ø 如何解读vmlinux.lds.S文件。这个还是相对简单的一点的,刚开始的不需要那么复杂,慢慢入手就是了地址:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=52469&page=&view=&sb=&o=&vc=1
Ø GCC编译的背后(第一部分:预处理和编译) 、CC编译的背后(第二部分:汇编和链接)。
地址1:http://oss.lzu.edu.cn/blog/article.php?tid_1545.html
地址2:http://oss.lzu.edu.cn/blog/article.php?tid_1546.html
这个非常不错,有很多参考资料。务必看。
Ø 《链接器和加载器(Linker and Loader)》中译版 (colyli 译)。赵迥老师推荐的,要学习有关目标文件和链接程序的基本工作原理的话,强烈推荐,也是高手必经之路。一百多页,**天也差不多。地址:http://www.linuxsir.org/bbs/showthread.php?t=264036
Ø 有待进一步的研究

5. 内联函数inline
Ø C语言的inline。暂时未看,收录。地址:http://blog.chinaunix.net/u2/74524/showart_1710175.html

2009年5月2日 星期六

自慰科学发展观

每天广播都是科学发展观,什么新闻,什么活动,什么会议,什么比赛,什么建设,什么什么等等,非要掏出科学发展观的JJ不断地自慰,自己玩就玩了嘛,即使你去买性趣用品躲“相关部门”里一天猛弄10次,然后让早已麻木的大家看不见,听不着不就行了,为什么还要不断强奸别人的耳朵呢。你说你真的科学发展了,做了对学生或者人民(姑且还没达到公民的高度,因为我们经常被定义为一小撮或者说是P民的)有益而实在的工作,我们是很乐意听取,并且也会主动参与。但事实却是,很多让人民失望了,唉。

东西和成果不是吹出来的,不是搞浮夸风的。衙门的学府,只会不断败坏社会,永远得不到良性地发展