计算机组成原理-笔记-汇总

news/2024/11/8 3:02:55/

📚 前言

本人在备考408,王道讲得的确不错,本人之前也看过哈工大【刘宏伟老师】的课,两者对比下来。

  • 王道——更加基础,对小白更加友好
  • 哈工大——偏实践+偏硬件(会将更多的代码+硬件设计)

PS:个人感受分享,如果说的不对,请见谅~ 


  • 在这里分享我在学习期间,做的笔记~(里面有一些小小的心得)
  • 笔记的PDF版本——应该可以在文章顶部找到下载链接~

时间——2023年8月13日12:43:46

🌸章节汇总

第一章——计算机系统概述(硬件+软件)

第二章——数据的表示和运算

第三章——存储系统  

第四章——指令系统

第五章——中央处理器

第六章——总线

第七章——输入输出系统

  

🚀 学习心得

⌛ 2023年8月5日星期六 


学习计算机组成与操作系统——更多的是在告诉我们设计的思想与解决冲突的方法

并介绍了前辈们在设计系统时,一步一步如何走过来的

从最先开始的简单暴力的系统,到越来越复杂,能够处理更多情况,更多的数据!


在学习时,就像从在学计算机的历史一样!

如何从简单的系统,到复杂的系统?

通过更多的操作——空间、存储器、添加硬件、修改结构…

面对各种问题如何解决——异步,同步,锁,优先级,算法,综合方法,加一层…


如何评估这是有效的优化?

1、制定一系列性能指标

2、设定基准程序,跑分

3、针对具体问题,具体分析!

最重要的一个思想:

如果一层解决不了!那么就再加一层!!!


还有一个计算机人的思想:

  1. 如果当前的系统或软件或硬件满足不了你,那么就自己去做一个,能够满足自己需求的东西!
  2. Vue的诞生、Redis的诞生、Java的诞生…太多大佬都是不安于现状,为了实现自己的想法,而且制作了一个新的东西!

 

⌛ 2023年8月9日星期三

我如何使用C语言制作操作系统呢?就和Unix一样?

使用C语言制作操作系统的基本思路是将C代码编译成目标文件,并将其链接成可执行文件。下面是一个大致的步骤指南,帮助你了解如何开始使用C语言制作操作系统:

  1. 确定目标架构:确定你要开发的操作系统将运行在哪种硬件架构上,例如x86ARM等。
  2. 学习底层编程知识:了解计算机体系结构和底层原理,掌握与操作系统开发相关的概念和技术,如内存管理、中断处理、设备驱动等。
  3. 编写引导加载程序:编写一个简单的引导加载程序,用于在计算机启动时加载操作系统。
  4. 编写内核:使用C语言编写操作系统的内核代码,包括处理中断、系统调用、进程管理、内存管理、设备驱动等核心功能的实现。
  5. 构建启动代码:编写汇编语言代码,用于初始化系统环境、跳转到C代码的入口点等。
  6. 编译和链接:使用交叉编译工具链将C代码编译成目标文件,并将其链接成可执行文件。这个过程可能需要一些特定的工具和配置,以生成适用于目标硬件架构的可执行文件。
  7. 调试和测试:进行系统调试和测试,修复错误和问题。
  8. 开发系统库和工具:根据需要,编写操作系统的标准库、工具链、命令行解释器等。
  9. 优化和改进:对操作系统进行性能优化和功能改进,确保其稳定性和可靠性。

需要注意的是,使用C语言制作操作系统并不意味着完全依赖于C语言。在实际开发中,可能需要借助汇编语言来处理一些底层细节,如启动代码、中断处理等。因此,了解汇编语言也是很重要的。

此外,Unix操作系统是一个非常复杂和成熟的操作系统,要实现像Unix一样完整和强大的功能,需要耗费大量的时间和精力。初学者可以尝试从一个较简单的操作系统开始,逐步扩展和改进,以逐渐理解和掌握操作系统的开发过程。参考教程、书籍和其他资源,积极参与相关的开发社区和讨论也是很有帮助的。


 

 


http://www.ppmy.cn/news/1027844.html

相关文章

docker配置文件

/etc/docker/daemon.json 文件作用 /etc/docker/daemon.json 文件是 Docker 配置文件,用于配置 Docker 守护进程的行为和参数。Docker 守护进程是负责管理和运行 Docker 容器的后台进程,通过修改 daemon.json 文件,可以对 Docker 守护进程进…

“深入探索JVM内部机制:解密Java虚拟机原理“

标题:深入探索JVM内部机制:解密Java虚拟机原理 摘要:本文将深入探索Java虚拟机(JVM)的内部机制,揭示其工作原理和关键组成部分,包括类加载、内存管理、垃圾回收、即时编译和运行时数据区域等。…

opencv,opengl,osg,vulkan,webgL,opencL,cuda

OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等…

代码随想录第46天 | 139. 单词拆分、多重背包

139. 单词拆分 确定dp数组以及下标的含义 dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。 确定递推公式 如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里,那么dp[i]一定是tru…

掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

numPy 通常与 SciPy( Scientific Python )和 Matplotlib (绘图库)一起使用,这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。 文章目录 1. numpy1.1 numpy简介1.2 矩阵类型的nparra…

(MySQL经验)之MySQL单表行数最好低于2000w

作为在后端开发,是不是经常听到过,mysql 单表最好不要超过 2000w,单表超过 2000w 就要考虑数据迁移了,表数据都要到 2000w ,查询速度变得贼慢。 1、建表操作 建一张表 CREATE TABLE person( id int NOT NULL AUTO_INCREMENT PRI…

Ubuntu安装bfloat16==1.1出现问题 error: subprocess-exited-with-error

报错 error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully. 解决方法 确保你的系统上已经安装了 C/C 编译器(如 gcc、g)。 如果你使用的是 Linux 系统,你可以使用包管理器来安装它们。命令如下 u…

springboot项目重启的shell命令

大家好,我是雄雄,微信公众号:雄雄的小课堂,欢迎关注。 前言 我们都知道,springboot项目启动的时候,需要如下过程: 查找 服务的进程id杀掉该进程启动服务 并且每一步都有对应的shell命令&…