2023-11-01|閱讀時間 ‧ 約 5 分鐘

学习日记[17]

    你好啊,大家。这段时间就是懒,所以才断更了,我检讨。但也不是一无所获的,我找到了一个比较符合我个人的理想环境,这里很好,人少同时,还能长时间呆在这里。

    先来补齐之前的内容。

    1.《计算机导论》操作系统篇。之前我们提到过,计算机可以分为三个部分——硬件、软件和数据。操作系统是属于软件部分,但是他是特殊的软件,因为把我们口中的理解的软件和硬件连接起来,只有通过操作系统,我们才可以直接的用硬件去加载程序。其实软件是分为两个部分,应用程序和操作系统。因为操作系统中介的特性,我们往往需要他存储在ROM中,以防止断电后该操作系统的消失。在以前我们是直接将整个操作系统放在ROM中运行,但ROM速度完全达不到日益发展的速度需要,所以现在通常使用一个程序,将ROM中的操作系统加载到RAM中,这个程序就是自举程序。

    因为硬件的迅速发展和我们对程序运行速度和总量的不断扩大,我们对操作系统的效率追求变得越来越“疯狂”。批处理系统、分时系统、个人系统、并行系统、分布式系统、实时系统等等都相继应用在不同工程之中。但我们还是讲基础的,毕竟地基不稳,盖房子也不牢固。计算机系统有五个部分组成,分别是用户界面、内存管理器、进程管理器、设备管理器、文件管理器。用户界面就不用再讲了,相信用过电子设备的人都知道这个是什么意思。内存管理器,众所周知,计算机中的内存是用来存储数据和程序的,那么数据就不用多说,管理什么的直接放进去就好。程序执行为了效率,我们就必须想一种效率高的方法进行操作。实际上,内存管理器可以分为两大类,单程序和多程序。单程序顾名思义就是在内存中每次只添加一道程序,只有在这道程序执行结束之后才可以进行下一个程序的执行,这无疑会造成无意义的资源浪费(至少在当代如此,要是以前的话就不一定了,计算机性能受限,这是客观事实)。所以为了提高效率,多程序的执行方式就不断确定下来。基本的有四种两类,非交换类——分区调度和分页调度,交换类——请求分页调度和请求分段调度。非交换类就是在程序的执行过程中,内存和硬盘之间不进行交换,反之,进行交换的就是交换类。先来非交换类,分区调度就是将内存分为不同的几个区,每次执行时将程序载入区内,可以同时载入多道程序。如果计算机中哪个部分空闲,那么就按照顺序,从顶自下的进行资源调度,数据类型来说这个就是栈。但是这个问题也很明显,每一个区的大小难以规定,如果这个区大了,那么就会造成资源的浪费,小了程序又无法进行填充进区。所以我们将内存划分成大小相等的区域——帧,程序也划分为与帧相同大小的区域——页。使用时只需要将页填充进帧中,为了更好地提高效率,我们将其填进不连续的帧中,这样只需要有空位就可以进行填充而不用特别在意连续这个条件。注意一下,是只要有空闲的帧,我们就可以填充,而不用在意程序是否完整。这种方式就是分页调度。那我们想,是不是可以再彻底一点,将所有的程序的所有页都打乱,然后再将它们放在帧中。这种方式就是请求分页调度。请求分页调度是基于计算机而言的,有没有一种方法是基于程序员而言的更加直观的方式呢?答案是有的,请求分段,将程序分为主程序和子程序后再打乱,然后将其放在内存中进行执行操作。注意,后两种方式要在内存和硬盘之间进行数据的交换。多道程序的方式有一个很好玩的点,假设有N个程序,每一个程序有a KB,那么总量大概是N*a KB,但是内存比N*a小。通常情况下,我们把这个N*a称为虚拟内存,是多道程序中可以运行的程序的最大(这里是我个人的猜测)。

    2.     数据结构和算法之间是相互作用的,在老师那里学到的一切都只是一个小部分、独立的分支。数据结构是算法的基础,倒不如说是工具,可能他不会有用,但如果用到它的时候,还是不能缺。这样说,算法是最后的产物,或许是合理的,毕竟算法就是解决问题的方法,想要解决问题,那么工具能提供很多帮助。当然我是这样理解的了。还有一个特殊的感悟——多看看他人关于这方面的见解是有帮助的,如果仅仅是我个人的胡乱猜想,这些经验不知道是什么时候才会悟出来。可能这就是上天的安排,上帝会让我们在恰当的时间领悟他想让我们知道的事物。我想把这门课学下去,老师教授的一切都太肤浅了,更有可能是我太肤浅了,片面地看着他人的行动。总之,我还是要进行这门课的学习,因为我想用死程序变成一个个鲜活的、个人理想的作品。其实还有一个目的,就是铸就个人的能力,找到一个出去的机会。

    3.     我想继续写下去,可能是有人对我说写日记是一个好习惯,一定是吧,我就这样认为了。所以,很抱歉,各位,拖更了那么久,我不是一个信守承诺的人,更是无义之人,总是屈服于曾经的陋习而不去改变。

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.