2010大事记【1】
2010年
上半年学习了数据结构与算法、数字逻辑与数字系统,前者主要的收获在于编程+思维能力的提升,在遇到一个问题时,可以提出几种不同的数据结构选择方案。数字逻辑与数字系统则是硬件的基础课程,由于我们专业并没有开设模拟电路基础,因此,将来我如果想走嵌入式方向,这门课程还得在下半学期去电子学院旁听。
主要学习的东西在下半年,也就是马上就要结束的这个学期,操作系统、组成原理、计算机网络是三门我玩命儿学了的课程,数据库系统原理一般般啦。
一、操作系统和组成原理可以合称为计算机系统,我最近看书的时候经常就把两门课的书混着看,因为我发现这就是一门课,你中有我,我中有你,相互依存的课程,一起为用户提供服务。例如:组成原理告诉我们程序是顺序执行的,在单CPU结构中,永远没有绝对的物理上的并发,程序的执行是跟着PC走,PC指向哪里,硬件电路就从哪里取来数据执行。而PC又是谁给的呢?操作系统嘛!!再比如:在操作系统中为了提高系统的吞吐率和CPU的利用率,我们提出了并发机制(进程与线程),但是这种并发是逻辑上的并发,而且更要命的是,并发带来了程序运行结果的不确定性,因为我们要确保程序运行结果的确定性,因此必须进程同步,而同步的工具是“锁”,锁的实现是要求有原子操作的,而在软件层面上是实现不了原子操作的,只能借助于硬件,就是中断禁止和中断启用;测试与置换等等。。。
二、计算机网络让我在上网时,对整个网络是怎么运行的有了更深刻的理解,我晓得了从物理层、数据链路层、网络层、运输层、应用层的各个层次的任务和功能以及结合点。
更重要的是,我觉得网络就是一个更大的操作系统。
好吧:借用一下,看下面
网络操作系统是服务于计算机网络,按照网络体系结构的各种协议来完成网络的通信、资源共享、网络管理和安全管理的系统软件。
分布式操作系统是建立在网络操作系统之上,对用户屏蔽了系统资源的分布而形成的一个逻辑整体系统的操作系统。
网络操作系统和分布式操作系统的区别是:
(1)分布性。分布式操作系统的处理和控制功能均为分布式的;而网络操作系统虽具分布处理功能,但其控制功能却是集中在某个或某些主机或网络服务器中,即集中式控制方式。
(2)并行性。分布式操作系统具有任务分配功能,可将多个任务分配到多个处理单元上,使这些任务并行执行,从而加速了任务的执行;而网络操作系统通常无任务分配功能,
网络中每个用户的一个或多个任务通常都在本地计算机上处理。
(3)透明性。分布式操作系统通常能很好地隐藏系统内部的实现细节。包括对象的物理位置、并发控制和系统故障等对用户都是透明的。例如,当用户要访问某个文件时,
只需提供文件名而无须知道(所要访问的对象)它是驻留在那个站点上,即可对它进行访问,以即具有物理位置的透明性。网络操作系统的透明性则主要指操作实现上的透明性。
例如,当用户要访问服务器上的文件时,只需发出相应的文件存取命令,而无需了解对该文件的存取是如何实现的。
(4)共享性。分布式操作系统支持系统中所有用户对分布在各个站点上的软硬件资源的共享和透明方式访问。而网络操作系统所提供的资源共享功能仅局限于主机或网络服务器中资源,对于其它机器上的资源通常仅有使用该机的用户独占。
(5)健壮性。分布式操作系统由于处理和控制功能的分布性而具有较好的可用性和可靠性,即健壮性。而网络操作系统由于控制功能的集中式特点而使系统重构功能较弱,且具有潜在的不可靠性。
三、编程方面,前半个学期做了一个GIS系统,利用C#,属于C/S架构的,后半个学期数据库课程设计属于B/S架构,利用ASP.net做的,其中数据库课程设计总结心得已经
于前面几篇博文写出。最有用的是开始使用Linux了,学会了用gcc编程,以及基本的调试工作。
四、竞赛
主要是5月份到9月份,参加了全国大学生数学建模竞赛,虽然最后没有获奖,但是我也学到了好多东西。关于数学建模给我的收益,我会再详细
介绍和总结。
有点乱,我就是想到哪写到哪,想把自己做过的事情都写出来,然后再一一总结。我现在的情况是,铺开的知识面已经非常广泛,我有很广的选择
余地,接下来我要做的就是总结总结,然后将精力收敛回来,精通一门才是最重要的!!