两年前埋下的隐患
起因可以说纯属是巧合,由于软工二大作业一鸽再鸽,课上虽有演示作业相关操作和使用的技术,但我也迟迟未亲自动手实践。如今任务布置下来了,也只能硬着头皮看一看了。由于要使用新的数据库管理工具PostgreSQL(数据管理课上学的MySQL,课后我感觉MySQL不是很好用,就用MariaDB代替了,这波属于是教学与实践背道而驰了)
下载下来Windows下的安装包后,原本以为双击安装即可,没想到这玩意居然给我报错了,报错如下图所示。What?平时我安装软件也没出过问题,MySQL数据库的安装也未出现过这样的报错,真是奇怪。
其实也不难读懂意思,说我环境变量COMSPEC没有指向cmd.exe命令。
查看系统环境变量,果然,ComSpec变量的value确实不是cmd.exe
居然会是mingw64?!看来是大一配C语言环境时配炸的。修改为C:\Windows\System32\cmd.exe,重新尝试安装,成功!
意外收获修改好环境变量并安装成功后,我打开我的vscode准备记录这次的心得,看了看原来写的markdown文章,使用Markdown Preview Enhanced插件查看,结果 ...
Shell
参考教程MIT公开课——The Missing Semester of Your CS Education
课程公开笔记
What is the shell?why we need shell?These are great for 80% of use-cases(use GUI), but they are often fundamentally restricted in what they allow you to do — you cannot press a button that isn’t there or give a voice command that hasn’t been programmed.To take full advantage of the tools your computer provides, we have to go old-school and drop down to a textual interface: The Shell.
总而言之就是,图形化界面给我们提供了极大的便利,但由于将功能封装在一个个特定功能的按键等交互上,使得 ...
OS
概述无论何时要放在一个大系统环境中去理解操作系统
计算机系统组成计算机系统:硬件子系统 + 软件子系统
硬件:各种物理部件的有机组合,系统工作实体
软件:各种程序和文件,用于指挥计算机系统按指定要求协同工作
软硬件协同,硬件抽象为文件、外部shell
结构复杂的软件:工程化、社会计算性、文化性,考虑综合效益
用户视图用户、程序员、语言处理程序设计者、操作系统设计者的视图是不同的,越往下能够看到和专注的地方越底层,分层思想
硬件系统组成:中央处理器、主存、外围设备、总线
当今计算机硬件经典结构与主流组织方式:存储程序计算机。又称冯诺依曼计算机模型,现如今沿用的大得多还是该结构,由输入设备、存储器、控制器、运算器、输出设备五部分构成。
总线总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是CPU、内存、输入输出设备传递息的公用通道
计算机的各个部件通过总线相连接,外围设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统
总线类型内部总线:CPU内部系统总线:连接CPU、存储器和各种I/O模块主要部件通信总线:用于计算机系统之间通信
系统总线实例:南桥、北 ...
Make
前言:前段时间写OS的Lab2时,就已经使用了Makefile,不过较为简单,也只是一知半解。(不过前段时间听他们群里的说法Makefile也是旧日荣光了?)
概述为什么要有Makefile?应对大型工程项目,makefile可以定义了整个编译流程以及各个目标文件与源文件之间的依赖关系,出现修改时,只会重新编译修改会影响的部分,从而降低了编译的时间,提升了编译的效率。
Makefile究竟是什么?Makefile是整个工程的编译原则,定义了一系列的规则来指定文件编译顺序
Makefile给工程带来了“自动化编译”,一个make指令就可以使整个工程完全自动编译
区分GNU Make和MakefileGNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
Make gets its knowledge of how to build your program fr ...
计算机科学速成
计算机早期历史最早的计算设备:算盘,手动计算机,帮助进行加减运算,同时存储计算状态
更多计算设备诞生使得很多事情更简单,但这些设备都不是“计算机”
步进计算机:第一台可以做“加减乘除”的机器,耗时长
军队炮弹射程表
差分机、分析机的设想提出,其中分析机有了“通用计算机、自动计算机”的想法
Ada世上第一位程序员
计算机开始受到重视:美国人口普查、打孔制表机大大提高了效率,企业也开始意识到、IBM诞生
电子计算机20世纪上叶,各行各业快速发展,计算的需求急速提高
柜子大小的计算机变成房间大小,现在又变成巴掌大小了是吧,那时的计算机维护成本极高
哈佛马克一号,1秒能做3次加法或减法运算,一次乘法要花费6秒,除法要花费15秒,放眼现在还是有些难以想象的,庞大数量的原件也伴随着磨损,故障概率的提高
哈佛马克2在故障继电器中发现一只虫子,术语bug由此而来“From then on,when anything went wrong with a computer,we said it had bugs in it”
真空管诞生,可以取代继电器的更精巧的设备诞生,计算机由机电设备转向电子
“巨人1 ...
FAT12镜像查看
前言:为了搞定OS的Lab2实验——实现一个FAT12镜像查看工具,还是耗费了较多的精力的,以此文记录下收获
准备工作工具:为了方便较为直观呈现效果,采用vscode + Hex Editor插件
镜像文件:a.img 1.44MB
镜像结构:
FAT12文件系统FATFAT(File Allocation Table)文件配置表。用于记录文件所在位置的表格。
在DOS v1.0时代就已引入,是最基本的文件系统之一。
FAT家族包括:FAT12、FAT16、FAT32、ExFAT、VFAT
FAT1212位地址,故最大容量为16MB,软盘文件系统使用。
标准以FAT12组织的软盘包括以下设定:
两磁头
每磁头80个磁道
每磁道18扇区
每扇区512字节
故FAT12的标准软盘大小为2 * 80 * 18 * 512 = 1.44MB,故一个标准1.44MB的FAT12软盘共有2 * 80 * 18 = 2880扇区
文件系统为了方便组织与管理,会将磁盘分为若干层次:
扇区:磁盘上最小数据单元
簇:一个或多个扇区,是数据存储的基本单位
分区:不同功能区
上述2880扇区被分 ...
数据库(中)
MySQL基本语法(补)排序如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
通用语法:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
可以设定多个字段来排序
这语法怎么感觉奇奇怪怪的?是需要table1和table2有具有相同属性的列才可以如此书写吧?
实例:
MariaDB [RUNOOB]> SELECT * FROM runoob_tbl;+-----------+--------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | su ...
汇编
nasm汇编鉴于操作系统该门课程的放纵教学,企图用一两个小时使学生掌握繁多的汇编语言,也就浅浅记录一下汇编语言的学习吧
nasm基础入门的一些小案例我觉得这里就很好,不知是往年哪位学长/学姐整理的,感谢万分。
SECTION.data——有初始值的量,使用dX来申请空间大小
.bss——无初始值的量,使用resX来申请空间大小
.text——方法区,_start:相当于main(),没有call/ret/跳转语句默认向下执行
X
Meaning
size/bytes
b
byte
1
w
word
2
d
double word
4
q
quad word
8
t
ten word
20
鉴于int是32位,即4bytes,因此我们可以用dd和resd为其申请空间
寄存器
汇编语言中最为常见的怕不就是寄存器之间的操作了,根据寄存器的大小合理存放数据即可,当然如果寄存器中还存在有用数据时,记住push和pop也就行。
系统调用系统调用对于指定寄存器以及其对应的值是有要求的,不过也因此固定且使用方便。
函数call ...
黑草记忆
黑草记忆
2023-04-15
真是不像话啊,居然从上周躺到现在,除了上课甚至没怎么出过宿舍。整整一周的时间,看完了黑草的170话内容。这一星期的相遇,却是让我感触颇深的一周。我开始对眼前的生活感到困惑,我不明白是否将来真的会是我想要的未来,一个应该充满希望和欢乐的未来。或许是我真的孤独了,远离家人朋友,身边只是能说上几句话的人。没有人有义务一直倾听你的倾诉,你想分享的很多很多话,就算是家人朋友也不能。我开始迷茫,手足无措,该去学习了?没事的,反正期末前抓抓紧就行,毕竟从小到大我都是那种放纵自己的人,学习这玩意该学学该玩玩……话说这些真的是我想要的吗?未来好似充满着不确定,有些人忙着去干一件件事,到处折腾,这就是所谓的内卷吗?我对此,好像没有兴趣啊。
周五的那个傍晚,躺在床上的我点开了虽然一直想看却又没有付诸行动的动漫。一个没有魔法却想成为魔法帝的少年吗?老套的开局,不过我喜欢。渐渐地,我发现我喜欢上了里面的每一个角色,他们每个人都有些有肉,有自己的故事。黑色爆牛的伙伴,更准确来说是家人,真是令人羡慕呢。“永不放弃就是我的魔法”,我看着他们一次次被强大的对手打倒,却一次次不断超越自己的 ...
Bochs安装
Bochs安装谨以此篇博客记录长达一个星期之久的bochs安装之旅
实测Ubuntu18.04及Ubuntu20.04均可通过自带软件仓库顺利安装并使用,安装指令,远离折腾烦恼
sudo apt-get install bochs bochs-x
问题选用系统:debian11debian11自带软件仓库按理来说也是可以通过以上命令进行安装的,要是如此简单恐怕一分钟就可以完结收工了,可偏偏事与愿违。助教进行实验讲解时就说了,Ubuntu22.04会出现问题,如这个链接所示,表明了其Ubuntu22.04安装软件仓库中自带的Bochs2.7所遭遇的问题,无法正常启动。
先前也没当回事,毕竟debian以稳定著称,想必包管理器中所提供的应该是较为稳定可以运行的版本。可等我敲完命令,竟也遭遇了相同的问题。Bochs无论输入多少次c,始终没有输出期许的结果,可以看到以下报错真奇怪,明明Bochs的版本是2.6.11,看来不只是2.7版本存在问题,2.6.11同样存在问题
试了很多次,看来依靠本来的包管理器是不行了,只能尝试自己下载编译一份了。
操作官网下载2.7版本https://sour ...