第二个问题,我让 chatGPT 以时间顺序回答,为什么 1984 年的 Mac OS 会排在 1985 年 Windows 的后面?????????????
第三个问题,作为一个 AI 大规模数据训练模型,它竟然不知道 MINIX 3 ,对于程序员的我们来说这个回答稍微欠佳,我问他的这种方式大家不要学,这不过是用的一种比较非常规的问法。
还有,它竟然不知道鸿蒙 OS ?????? 问题四:操作系统的结构都有哪些?
如果说上面那个问题我有点计较的话,那 gpt 的这个回答就有点很不充分了,它竟然没有回答宏内核结构。
ßΩ我之前的文章中就解释过什么是宏内核和微内核,详见 https://mp.weixin.qq.com/s/qwlif22TskeGYLh5FpV9Pg
一句话解释:宏内核和微内核最大的区别就是,宏内核的用户服务和内核服务都保存在相同的地址空间中,它们都由内核进行统一管理,而微内核的用户服务和内核服务会保存在不同的地址空间中。
其实宏内核和单体结构的区别不是很大,但这还是两ß种不同的内核结构,区别在于宏内核可以动态加载,实现可插拔。 问题五:为什么 Windows 的程序在 Linux 上无法运行?
gpt 又给我道歉了,我都不习惯了。它这道歉的速度和频率比我媳妇多了好几倍。
它漏答了指令集架构,这是很重要的一点。
其中一点是因为 Linux 系统和 Windows 系统的格式不同,格式就是协议,就是在固定位置有意义的数据。Linux 下的可执行程序文件格式是 elf,可以使用 readelf 命令查看 elf 文件头。
而 Windows 下的可执行程序是 PE 格式,它是一种可移植的可执行文件。
还有一点是因为 Linux 系统和 Windows 系统的 API 不同,这个 API 指的就是操作系统的 API,Linux 中的 API 被称为系统调用,是通过 int 0x80 这个软中断实现的。而 Windows 中的 API 是放在动态链接库文件中的,也就是 Windows 开发人员所说的 DLL ,这是一个库,里面包含代码和数据。Linux 中的可执行程序获得系统资源的方法和 Windows 不一样,所以显然是不能在 Windows 中运行的。 问题六:请你解释一下什么是系统调用?