硬件设计
gr8cpu是在面包板上构建功能齐全的计算机。第一个版本gr8cpu rev2拥有600多条电线,74个集成电路和79个led灯。它是一个8位架构,考虑了简单性和处理能力。cpu可以访问256字节的ram,已经为其编写了功能齐全的tic-tac-toe游戏。
到目前为止,正在构建第二个gr8cpu rev3。有很多有趣的工作要做:具有65536字节的内存,改进的算法和设计更高的速度,该cpu是有史以来最复杂的面包板cpu。
最早效果:
ram模块已完成:
设计alu:
完成alu设计:
视频卡设计:
完成视频输出电路:
类unix系统设计
gr8nix是受unix启发的操作系统,unix是1970年代发布的简单多用户,多任务的操作系统。基于unix的思想的现代操作系统包括linux, macos和android等。gr8cpu rev3用汇编语言编写,内核由2000行汇编实现,5kb代码:
(1)多线程支持32个并发线程。
(2)理论上不受限制的运行程序数量。
(3)动态内存分配,当前大小最大为8 kb。
(4)真正的程序执行与位置无关(动态应用程序加载)。
但是,gr8nix并不完美,由于硬件限制,gr8nix无法:
(1)保护内存免受进程侵害。
(2)从尝试运行无效指令中恢复。
(3)可靠地防止进程退出后发生内存泄漏。
实现了动态内存管理后,开始文件系统的制作,实现从磁盘中加载文件:
在视频展示中,大家可以看到gr8nix变得栩栩如生,它成功加载并运行了一个shell程序,该程序又加载并运行了大家想要的任何其他程序。
首先,exec负责加载程序并运行它们。exec首先进行一些完整性检查:文件是否存在?它是程序文件吗?这是有效的吗?接下来,exec通过检查每个条目并将其偏移量添加到其长度中来查找可执行文件的长度。exec找到的长度是这些计算出的最大长度。
此后,exec调用thread_launch,这是一种用于准备启动线程的方法。exec通过向过程中添加一些原始数据来完成:用户id,指向分配的内存指针,运行的命令行以及工作目录等等。
欧姆龙可编程控制器CP2E介绍
四通道4A输出开关模式的DC/DC电源YYT4644
共享经济如何高效落地?这个无线通信方案你一定要看
OPPO Reno7 Pro手游限定版的详细介绍
专业摄影师怎样看待iPhone11Pro的相机
又一位纯手工打造CPU的牛人 汇编语言实现类Unix系统!
保险丝管的分类
2019北京科博会,高科技值得期待
曝NVIDIA官方矿卡算力不如RTX 30
华为平板M6系列即将迎来全新的EMUI更新
为什么测量壁画内层结构,壁画层结构说明
【分享】LPWAN技术之——NB-IoT
随着老龄化和少子化程度的加深 机器人会越来越多走进老年人家庭
荣耀9、小米note3和努比亚z17有什么区别?荣耀9、小米note3和努比亚z17对比评测
ad637原理图用法实测数据解析
空袭警报器的制作教程
分享一些数字万用表的修理方法和技巧
编写第一个QT程序
为什么服务器使用的机械硬盘比固态硬盘多
Linux内核学习经验总结分享