- 论坛徽章:
- 0
|
本帖最后由 hanyudeye 于 2013-05-25 00:50 编辑
------------------------- -
- 青菜炒萝卜
-
- 1.洗青菜 --p1
- 2.洗萝卜 --p2
- 3.开煤气 --p3
- 4.炒 青菜和萝卜 --p4 -
- 目录 - -
------------------------------------------
- p1
1.端水盆
2.洗第一棵青菜 -
-3.洗第二棵青菜
-洗好青菜放一边
-----------------------------------------
p2.
.........洗萝卜... -
------------------------------------------
瞎说的
程序就像我们做事情一样,一步一步的.每一步分成两块,'洗' 和 '青菜' ,'洗'是 动词 ,谓词的一种,就是 '干 什么事'的'干','青菜'是'名词',是对象。在我看来,世界上就两种东西,一个是物,一个是对物的操作,物是有一个状态的,你一去操作他,他就变化成别的状态了。
现在假设cpu就是看的懂那青菜炒萝卜的‘菜谱’的东西,内存就是那个‘菜谱’,那么cpu 就一步一步做贝,干吗那么复杂。但是既然他那么复杂了,我们做事情也得复杂了。就像家里只有一扇门的,我们打开一扇门就行了。但是有三扇门才能进房的话,我们必须开三扇门,做事的复杂跟物的复杂性有关系的。
cpu 一步一步地炒青菜,但应该做哪一步呢?洗萝卜还是开煤气。cpu里有一个IP(指令指针/程序计数器,名字多得很),这东西有什么吊用呢?因为我们把程序放在一块内存里,cpu一条一条地读了,执行。读什么呢,洗青菜,洗就洗呗,cpu下一步做什么呢?洗萝卜,但我凭什么洗呀(cpu说)。我们复读机放磁带的时候,那个磁头也是一个一个读音乐数据的,但是转盘还得转啊,转到哪才能读哪个声音。cpu那个容量小,读了执行了就把数据都扔了。(自己随便想吧,我这脑袋就只能这样了)
然后同理也要有一个数据指针指向数据(386里是什么eax,ebx,ecx..)妈的,我洗青菜关指针什么事啊,我洗的是对象。指针确实没什么用,他就是一个东西的附属物。就像我们是一个独立的个体,但有了指针我们有了附属了,我们变复杂了,我们有了一个电话号码,别人通过电话号码能间接的找到我们,还有我们有家庭住址一样,我们变的复杂了。好了,指针就是这没吊用的东西,但指针也是一个东西。
好,现在还是‘洗青菜’,做哪一步,‘洗青菜’,ip指针指着‘洗青菜’这条指令,数据指针指着‘青菜’。就像我们看着菜谱,看到啊‘,好,青菜在哪,我来洗。
我往下洗,妈的怎么洗呢,怎么跳到后面了,后面是洗青菜的详细过程。跳就跳后面吧,比如我们的菜谱是一本书,我们得翻到p1页呀,我先把目录折一个角,然后跳到后面看怎么洗青菜的,这个折角就是再弄出一个复杂的东西保存目录的状态呀,这就是我们为什么要复杂化。386用了个堆栈的东西作为保存前面的状态的东西。我们现在要保存哪些状态呢(’洗青菜‘嘛,我们要保存’洗青菜‘的指令的位置啊,还要保存’青菜‘对象的,一定要用堆栈吗,当然可以不用。我们洗青菜吗,要到后面看详细过程,我们可以把状态保存在一个地方,比如记载在书的最后一页,然后去看怎么洗菜,洗完菜要返回去做下一件事,我们得翻倒最后看下一件事在哪里,这是一个死的过程。我没想明白,大家自个想吧。
好了,现在堆栈也有了,那分段是什么呢?先是8086的分段,我们程序不能只做一件事呀,叫别的程序也来做把。那我现在不洗青菜了,先暂停,先叫小刚这个程序来唱首歌。但程序是由做什么来的,程序里的地址是完全的地址,哪边做什么已经固定住了,就像我’洗青菜‘已经占着一块内存了,下次还是只能占那快内存,是绝对地址嘛,指着的那东西是固定的。8086分段就是那么来的,把地址分成了两块,------+-------段地址 + 偏移地址,现在’洗青菜‘找指令的时候 就得两个地址加起来,(不会表达了)
8086里一个程序能够改变另一个程序的内存数据的,就像我在洗青菜,小刚在唱歌,我能把小刚的唱片给扔了,要扔也得他扔啊,我管的着么。现在突然有操作系统了,他说,你们别炒了,你们自己做自己的事,不能那个互相干扰,怎么弄呢?’小明‘,你说你要多少内存(做多少事,说出来,还有小刚,你要多少内存,说出来。(细节不清楚)。现在就有80386的选择子保护,’你们谁要是敢干扰对方,我就便你。‘操作系统说。这里假如操作系统给了你一个很大的内存界限,你还是能弄掉别人的数据的。怎么寻址的,好像 (选择子) + (偏移)。这里有很多指针指来指去,但是你已经不知道自己的内存地址是什么了,你的段地址已经被选择子指到一个内存值中去了
我是一个房子的主人,我是操作系统,我是背景人。小明在洗菜,他准备烧一顿丰盛的晚饭,小刚在唱歌,他们在两个不同的房间里,中间有墙壁隔开。先来说说什么是jb分页。分页也是一大堆指针指来指去,就是为了找一个页表,页头。现在我是操作系统,这东西我管,小明你要做饭,我先看看有多少内存,然后看看你有多大,把分成一块一块地该如何分,如果你挺大的,就在磁盘里把你分成一块一块(这里细节不知道,操作磁盘每个扇区是512B吧,而分页是4k,可能不用分的)然后再设置好多指针啊,还有什么磁盘里的一块一块地址保存到表里,内存分配了多少一块一块的,也把分配的指针分配到表里,然后加载几块到内存让你先做起来,我一开使就能操作磁盘的,现在还会,没有退步,我把剩下的多少块存在磁盘里。这大概是分页吧??过了
我是操作系统,软件对外输入输出都是同过我,外面输入也是通过我。什么是中断呢?外面有快递过来了,是给我的或所管理的软件的,这就是输入。他TMD放下就走,我不知道啊,那么我得经常打开门看看,‘草’,送过来也不跟我说。我经常开门看,就是好像轮询的方式。这个耗资源。中断呢,就是他把东西送来了,还蹿了两脚门,喊我出去拿东西,这就是中断,不但有东西,还有行为。这就像是windos的消息机制,(妈的,我死读书,一直没懂),外面输入的行为哪儿来的呢,因为每个外面的输入都有个中断号,一堆的转换后到做事情那边去了(糊弄糊弄了,自己想把)
小明在洗菜,小刚在唱歌,妈的可我只有一个cpu呀,只能做一件事呀,那么小明先洗一颗青菜,然后暂停,小刚你唱一首歌。暂停这东西,就要保存一些东西。小明洗菜内部到能保存到堆栈的,可那两家伙互不侵犯呀(男女授受不清),保存到小明的堆栈,万一小明退出了呢??我这里逻辑全是错误的。!!!外部要切换任务,比如说想听歌(小刚,来一首歌),内部操作系统也要切换程序(小刚,你唱一会,小明洗会菜),完全是什么原因要多出来个TR(任务寄存器呢??),方便吗??还有那么复杂的任务状态表。
后记:没上过大学,在一家软件公司实习大半年了(两个人的公司),一直死读书,纠结那些形式的东西,看不进特烦恼,现在出来了,失业大半年了。
哪位大大能指我条道,我想学会编程,教教我。我也没什么理想,想的就是像做开源软件一样,做做玩玩,不想整天上班上班!我的需求不高,有些东西既然不是必需,那干嘛还要他呢? 我的qq是:1191552161,我现在就这想法,不知行不行的通,哪位大大帮帮我! |
|