📚 前言
本人在备考408,王道讲得的确不错,本人之前也看过哈工大【刘宏伟老师】的课,两者对比下来。
- 王道——更加基础,对小白更加友好
- 哈工大——偏实践+偏硬件(会将更多的代码+硬件设计)
PS:个人感受分享,如果说的不对,请见谅~
- 在这里分享我在学习期间,做的笔记~(里面有一些小小的心得)
- 笔记的PDF版本——应该可以在文章顶部找到下载链接~
时间——2023年8月13日12:43:46
🌸章节汇总
第一章——计算机系统概述(硬件+软件)
第二章——数据的表示和运算
第三章——存储系统
第四章——指令系统
第五章——中央处理器
第六章——总线
第七章——输入输出系统
🚀 学习心得
⌛ 2023年8月5日星期六
学习计算机组成与操作系统——更多的是在告诉我们设计的思想与解决冲突的方法
并介绍了前辈们在设计系统时,一步一步如何走过来的
从最先开始的简单暴力的系统,到越来越复杂,能够处理更多情况,更多的数据!
在学习时,就像从在学计算机的历史一样!
如何从简单的系统,到复杂的系统?
通过更多的操作——空间、存储器、添加硬件、修改结构…
面对各种问题如何解决——异步,同步,锁,优先级,算法,综合方法,加一层…
如何评估这是有效的优化?
1、制定一系列性能指标
2、设定基准程序,跑分
3、针对具体问题,具体分析!
最重要的一个思想:
如果一层解决不了!那么就再加一层!!!
还有一个计算机人的思想:
- 如果当前的系统或软件或硬件满足不了你,那么就自己去做一个,能够满足自己需求的东西!
- Vue的诞生、Redis的诞生、Java的诞生…太多大佬都是不安于现状,为了实现自己的想法,而且制作了一个新的东西!
⌛ 2023年8月9日星期三
我如何使用C语言制作操作系统呢?就和Unix一样?
使用C语言制作操作系统的基本思路是将C代码编译成目标文件,并将其链接成可执行文件。下面是一个大致的步骤指南,帮助你了解如何开始使用C语言制作操作系统:
- 确定目标架构:确定你要开发的操作系统将运行在哪种硬件架构上,例如x86、ARM等。
- 学习底层编程知识:了解计算机体系结构和底层原理,掌握与操作系统开发相关的概念和技术,如内存管理、中断处理、设备驱动等。
- 编写引导加载程序:编写一个简单的引导加载程序,用于在计算机启动时加载操作系统。
- 编写内核:使用C语言编写操作系统的内核代码,包括处理中断、系统调用、进程管理、内存管理、设备驱动等核心功能的实现。
- 构建启动代码:编写汇编语言代码,用于初始化系统环境、跳转到C代码的入口点等。
- 编译和链接:使用交叉编译工具链将C代码编译成目标文件,并将其链接成可执行文件。这个过程可能需要一些特定的工具和配置,以生成适用于目标硬件架构的可执行文件。
- 调试和测试:进行系统调试和测试,修复错误和问题。
- 开发系统库和工具:根据需要,编写操作系统的标准库、工具链、命令行解释器等。
- 优化和改进:对操作系统进行性能优化和功能改进,确保其稳定性和可靠性。
需要注意的是,使用C语言制作操作系统并不意味着完全依赖于C语言。在实际开发中,可能需要借助汇编语言来处理一些底层细节,如启动代码、中断处理等。因此,了解汇编语言也是很重要的。
此外,Unix操作系统是一个非常复杂和成熟的操作系统,要实现像Unix一样完整和强大的功能,需要耗费大量的时间和精力。初学者可以尝试从一个较简单的操作系统开始,逐步扩展和改进,以逐渐理解和掌握操作系统的开发过程。参考教程、书籍和其他资源,积极参与相关的开发社区和讨论也是很有帮助的。