- 五月文哥在思考什么?
- b.多线程并发并行的实现一般要解决两个基本问题,线程调度和线程同步。而多线程实现的困难很本在于硬件是设计为通用功能的,也就是计算机跑着各式各样的计算任务。首先,如果使用单一的线程调度模型显然是效率很低的,所以现代操作系统一般引入多层次的线程模型;第二,各式各样的计算任务也意味计算机资源在被使用的方式也是多种多样的,再正交一个N个线程,复杂度乘N! 2009-5-1 12:33
- b.进程、线程、纤程和分布式任务都是“计算任务”,从纵向看只是粒度不同,从横向看会有任务性质的不同(比如管理任务和被管理任务),这些理解都不是十分难。但是加上个处理器实现和操作系统实现,问题的复杂度好像增加了一个数量级。这是什么现象?抽象的“计算任务”需要一个具体的物理载体来实现。如果我们把计算机系统分层,那么硬件的操作模式是一个比较明显的分隔线,分隔任务与实现。但是作为软件的操作系统却在实现的一层。可见操作系统与CPU有着相当的紧密的关系。 2009-5-3 13:05
- b.多线程讲多了好像系统只需要线程的调度和切换。大错特错!系统级或者叫系统范围内的“线程”调度就是进程调度,也可以简单的理解为进程就是内核线程,而线程就是用户线程。这种理解简化难点在“计算任务”的切换和调度分成两层——内核级和用户级。而且从宏观上看似没有必要,想内核分配一微秒CPU时间给进程A,进程A再将这一微秒分配(利用线程库的调度功能)给自己的多个用户线程,但从微观下看可能未必了。 2009-5-3 19:41
- a.越发觉得翻译文章是帮助学习的一种很重的方法。它有很多优点,比如翻译是建构性的。无人愿意不断重发明轮子,但重发明轮子是必须的。要在物理学有所建树必需重当一回牛顿;再如,翻译能够让你的思维充分流动,经常能够发现一些平时很容易忽略但很重要的细节;还有,翻译本身就是一种创造活动,翻译结果完全可当作学习笔记,也方便其他人获取信息,真是一举多得。 2009-5-7 1:05
- c.代码学习走完了第六个十天,就也是两个月了。不知道为什么,虽然时间一天天过去,到现在我还是见不到上班的那一天,但是我一点都不慌。可能是因为我觉得自己在一个月内变化太大了,我很可能不需写个小软件来证明自己的能力,随着时间一天天过去,或许在忽然间我就找到份工作了。细想一下,其实更重要的是我对计算机了解越来越透切了,对工作不迷惑就像我学哲学后对人生不迷惑一般。 2009-5-7 1:17
- b.一直奇怪“策略”和“战略”是什么东东,原来它们还是方法和工具!今天发现经常与“策略”一起的“机制”一样是方法和工具。只是这两对方法在描述方法的不同侧面。策略与战略是整体与局部的关系,策略与机制是动态与静态的关系。机制有机械的意思,机械意味着固定和自动,所谓应变机制指的是应对变化有一套固定被测定为较好自动处理方法。策略是在机制的基础上再作具体问题具体方法调整。举个例子,计算机为了实现并发处理引入了中断机制;而为了解决速度不同的中断事件引入了中断优先级处理策略。 2009-5-11 12:06
- b.机制有机械机理的意思。但相对机理强调内部结构和组件间序关系不同,我觉得人工机制强调的是系统面对外部事件时应变规则。这个有点像编程时的分支流程,也就是先判断一个条件事件,然后自动选择一条最有效的处理分支,产生一个最有价值的效果。我们在设计一个人工机制时,就是对这些分支的设计,包括评价各分支的效益。 2009-5-11 20:07
- b.其实机制和策略算是设计理论方面的内容。对于应用或驱动开发人员来说还不算合适,因为设计任务一般是统筹工作,属于系统设计人员的职责。开发人员一般在一个大框架内演绎,可设计可编程可演绎的空间很有限的,不是说没有设计。比如,别说开发人员,系统设计师也不会设计一个新的并发机制现有的中断机制,他们对中断优先级策略的调整也是很有限的。而应用开发人员更多在做一些更具体更特殊的收尾工作。 2009-5-12 2:51
- c.今天去打球比赛了一场,输了。我在想场外高手可能有人会不屑我的打球心态,觉得竞争意识不足,友谊程度不够。我在想这种态度不是很好很主流吗?过去是中国人讲友谊第一,接着洋人讲锦标第一,现在混杂了,叫安全第一。我就是主张安全第一! 2009-5-12 22:54
- b.哇靠,似乎有些是避免不了的了,要系统要质化就涉及系统的每一部分,今天再往里跳,跳入计算机的心脏——CPU。来吧,我看你有多复杂。 2009-5-15 1:15
- b.这几天碰上两个架构(architecture)设计例子——I/O子系统架构和CPU架构设计,似乎这种架构设计在人工系统中处处可见,嗯,沉下气来好好归纳一下这两个例子! 2009-5-16 0:57
- b.架构(也称体系结构)设计概念由“架构”和“设计”组成。架构表现为一个实体,有外在行为功能和内部结构组成;设计的工作过程也考虑架构实体的成本-性能比。有这样的一句话,架构师主要关心的是成本和性能。 2009-5-16 1:35
- c.第七个十天走完。搞定了中断机制并全面了解了总线系统。最后总觉得不够通透了,所以还是决定“正襟危坐”,开始解开CPU,学习汇编语言。 2009-5-17 13:16
- b.不要把CPU内的寄存器看得很神秘,其实大部分和内存的作用是一样的,只不过快点而已。包括段寄存器、堆栈寄存器和索引寄存器,它们和数据寄存器也是运算用的,只不过它们用来算“地址”。 2009-5-17 18:01
- b.相对标准的东西,专用的东西会提高(产出)性能(improve performance)!专用何以能如此呢?性能又为何物呢?性能与价值又有什么样的关系呢? 2009-5-18 21:27
- b.原来我的理性一直在试图做一件事情,就是试图技术化一切未知的东西。换种说法,叫试图清楚明确的控制自己生活,包括学习、工作和爱情。之前小结了一下“学习方法论”也是在做这样一件妄想的事情,想控制自己的未来。但这只是主观意愿而已,事实往往有无法预知的东西。比如我说学习要有目标,有了之后又怎样怎样。这个有了目标只是一个假设,试想有谁能一开始能一个明确的目标?举个例子,比如我的目标是当个黑客,但是在我完成“当黑客”前我必须了解“黑客”具体涵义。也就是说,在达到一个终极目标的过程中会一结辅助性的次级目标需要先完成。嗯 ,很有意思。 2009-5-20 18:34
- b.同一个程序(计算任务)可以在不同的ISA上移植证明了语义的表达与语义的实现是可以分离的。也就是说,只要我能够实现语义,你管我CPU怎么样搬数据和跳转控制流程的。 2009-5-20 19:41
- b.研究了计算机I/O系统好几天,明白了为什么设计自己的操作系统的想法是多么狂妄(至少要设计个像样的点操作系统是很难的)。第二,我也明白了其实设计的原则在I/O系统和操作系统设计中是通用的。总结一下设计原则,这个很有价值。 2009-5-23 22:51
- b.计算机除了CPU和内存以外全部都是外设(peripheral ),包括主板的南北桥芯片,只过南北桥只有控制器,没有对外输出的机械部分而已。外设都需要软件驱动的,所以南北桥也需要安装驱动程序。 2009-5-23 23:33
- b.这两天思考一些与“工作”有关的问题,因为作一种存在生物,无论是什么形式,都要“工作”!老师要教学,学生要学习,工程师要设计要施工,小麻雀要觅食,CEO要下达命令,等等等等……那么,工作有什么样的性质?如何分类?并且工作从哪一刻开始? 2009-5-24 20:15
- b.在分析了计算机系统的分层思想后,得到了一些有关“工作”的性质、分类和着手点的初步的结论。第一,工作或多或少有是设计任务,设计与解决问题(解题)有某名的关系;第二,工作在横向很难分类,纵向有层次关系,每层都有内在结构和外在功能;第三,工作(设计)一般只单一层内开展(为什么说一般,因为高手是可以看穿各层的);第四,工作开始于完全了解了下一层的外在功能和上一层的结构需求开始。 2009-5-25 19:28
- b.之前利用分层的体系结构与组织方式、外在功能与内在结构的概念的确很好解构了复杂的人工系统;但是有一点没有提出来,就是内在结构中的各元素的存在性问题。有一些元素是必须有的,而另一些是可选的。比如,计算机系统有没缓存功能是可选的,有没有内存功能不是可选的。这让我想到了,系统设计的第一步是有什么,第二步是有多少,属于精化设计的问题,原来。 2009-5-27 18:39
- b.很多教材一开始总是说我们研究(study)什么内容,讨论(discuss)什么问题,我在想研究跟设计有什么相似的地方和不同的地方。好像二者都是在解题,都是由已知到未知的转化。只是已知、未知(也就是结果)和转化方式都不太相同?! 2009-5-27 21:37
- c.第八个十天已经走完。最大的收获不是解构了CPU,因为CPU涉及的面太广,解构它只能是初步的,必须写一些具体程序才能更好的分析CPU行为,比如CPU指令是如何实现一个软件功能;最大的收获是总结了什么是设计,设计和工作的性质何时开始工作等属于方法论的内容。 2009-5-28 12:04
- a.其实跳出圈圈都是哲学家干的事情。一个没有哲学素养的人,不是被感性迫疯而自杀,就是被理性驱逐而杀人。 2009-5-28 12:32
- a.其实跳出圈圈都是哲学家干的事情。一个没有哲学素养的人,不是被感性迫疯而自杀,就是被理性诱狂而杀人。 2009-5-28 12:42
May 2009
最新推荐文章于 2021-07-31 00:52:38 发布