1.大学虽然学习了操作系统,计算机组成原理等基础课,可是当时没有认识到他的重要性,对于这些课程只是不挂科就好,所以也就没深入的学习和理解.不过靠着大学的软件工程课程,现在打算在系统的看以下<深入理解计算机系统>这本书,看了第一章,真的是吹爆这本书,建议所有写程序的可以看下,对于计算的理解会更深入一个层次.

虽然大学对于计算机已经有一些概念了,不过这里还是总结下自己模糊的地方或者以前理解有问题的地方,算是提高下自己.

2. 

主存:临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据.

内存:内部存储器,包含了寄存器,高速缓冲器等等.在这里专业术语中内存指的不是内存条,虽然生活中我们经常把内存看作内存条.

大致关系如下:主存和内存以及一些概念-风君雪科技博客

 转载自:知乎-乔乔-缩头者

3.

计算机系统中也有抽象,比如: 文件,虚拟内存等等.

文件: I/O设备.

虚拟内存: 程序存储器的抽象. 主存 + I/O设备.

进程: 正在运行的程序的抽象. 主存 + I/O设备 + 处理器.

虚拟机: 对整个计算机的抽象. 主存 + I/O设备 + 处理器+操作系统.

4. 一点感悟: 学习了基础知识,在回过头看java的语言,java只不过是这些抽象概念的具体实现,IO,集合,线程等等.剩下的就是熟悉api调用,jvm虚拟机也和操作系统有点类似,都有堆栈等一些基本的数据结构,复杂的是jvm的垃圾回收机制要自己回收对象占用的堆内存,这中间就涉及到了很多复杂的算法,可达性算法,复制-清除算法,标记-清除算法等等,其他的和操作系统的设计思想没有改变,毕竟它也是按照虚拟机的抽象来实现的一个虚拟机.在编译程序的时候,jdk会把.java文件编译成平台无关的.class文件,只要有虚拟机,就能运行这些程序,所以算是多了一层封装把.    c封装汇编,java封装c,最终实现了jvm这一伟大的设计.

我们会发现即使高层的设计在怎么变,底层的思想还是不会改变,因为计算机的架构是经过时间的检验的,如果要推翻从头设计的话,估计还要在经过个100年,这么长的时间就算从商业角度也不会允许.

就和我们人类的基因经过这么长时间也没有改变一样,因为底层一变,所牵扯的复杂的高层就会发生翻天覆地的变化.