首页 > 编程语言 >又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统

时间:2022-10-13 11:36:59浏览次数:69  
标签:www Exec GR8CPU Unix 纯手工 设计 CPU 加载

之前发过好几期这方面的展示,不同与FPGA的是这种系统化的设计能够让大家对这些东西有一个更加全面的认识。


1、纯手工打造CPU的那些牛人们,欣赏令人叹为观止的纯手工布线和高超技

​http://www.armbbs.cn/forum.php?mod=viewthread&tid=25985​

2、【自己动手搭建完整计算机系统】从数字逻辑基础,CPU设计,虚拟机实现,汇编器,编译器到操作系统设计一条龙

​http://www.armbbs.cn/forum.php?mod=viewthread&tid=89124​


3、为了帮助学生学习计算机架构和工作原理,布里斯托大学制作16位计算机平台,100多个

​http://www.armbbs.cn/forum.php?mod=viewthread&tid=23367​


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载



硬件设计:


GR8CPU是在面包板上构建功能齐全的计算机。第一个版本GR8CPU Rev2拥有600多条电线,74个集成电路和79个LED灯。它是一个8位架构,考虑了简单性和处理能力。CPU可以访问256字节的RAM,已经为其编写了功能齐全的Tic-Tac-Toe游戏。


到目前为止,正在构建第二个GR8CPU Rev3。第一个CPU有很多有趣的工作要做:具有65536字节的内存,改进的算法和设计上更高的速度,该CPU是有史以来最复杂的面包板CPU。


 


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_unix_02




最早效果:

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_php_03


 



RAM模块已完成

 


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_php_04



设计ALU

 

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_unix_05



完成ALU设计:

 


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_unix_06



视频卡设计

 


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载_07



完成视频输出电路:

 


又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载_08

 

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载_09


 



类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)可靠地防止进程退出后发生内存泄漏。


实现了动态内存管理后,开始文件系统的制作,实现从磁盘中加载文件:

 

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载_10



视频展示,在视频中,大家可以看到gr8nix变得栩栩如生,它成功加载并运行了一个Shell程序,该程序又加载并运行了您想要的任何其他程序。


​https://www.bilibili.com/video/BV1vX4y1V735/​

首先,Exec负责加载程序并运行它们。Exec首先进行一些完整性检查:文件是否存在?它是程序文件吗?这是有效的吗?接下来,Exec通过检查每个节条目并将其偏移量添加到其长度中来查找可执行文件的长度。Exec找到的长度是这些计算出的最大长度。


此后,Exec调用thread_launch,这是一种用于准备启动线程的方法。Exec通过向过程中添加一些原始数据来完成:用户ID,指向分配的内存的指针,运行的命令行以及工作目录等等。

又一位纯手工打造CPU的牛人,并汇编实现类Unix系统,支持文件系统_加载_11

微信公众号:armfly_com


标签:www,Exec,GR8CPU,Unix,纯手工,设计,CPU,加载
From: https://blog.51cto.com/u_15785540/5752675

相关文章

  • 读取PLC时间转换为UNIX 时间做网络同步比较
    JZGKCHINA工控技术分享平台最近在安全行业里做读取PLC内部故障事件分析的工作,发现在PLC网络里采用NTP时间同步基本上没有,因为在工控领域PLC更多承担业务层面控制需求的实现,......
  • 简析 Linux 的 CPU 时间
    从CPU时间说起...下面这个是 ​​top​​ 命令的界面,相信大家应该都不陌生。top-19:01:38up91days,23:06,1user,loadaverage:0.00,0.01,0.05Tasks:151......
  • 记一次 .NET 某电子病历 CPU 爆高分析
    一:背景1.讲故事前段时间有位朋友微信找到我,说他的程序出现了CPU爆高,帮忙看下程序到底出了什么情况?图就不上了,我们直接进入主题。二:WinDbg分析1.CPU真的爆高吗?要......
  • 计算机组成原理实验报告 单周期控制部件及MIPS CPU实现
    目录​​一.实验目的​​​​二.实验设备及环境​​​​三.实验任务​​​​四.实验步骤​​一.实验目的1.理解MIPS指令结构,理解MIPS指令集中常用指令的功能和编码。2.熟悉单......
  • CPU工作原理
    CPU工作原理CPU只知道两件事:从内存中取出指令执行指令,然后回到1❓CPU从哪里取出指令呢?➡PC寄存器(ProgramCounterRegister)即程序计数器⭐存放的是指令在内......
  • 简析 Linux 的 CPU 时间
    从CPU时间说起...下面这个是top命令的界面,相信大家应该都不陌生。top-19:01:38up91days,23:06,1user,loadaverage:0.00,0.01,0.05Tasks:151total,......
  • 【CPU】缓存一致性、CPU基础
    PU的位宽、寻址总线、数据总线CPU的位宽和寄存器一次能够存储的大小相关,比如一个大于4字节的数据,我们用32位的CPU显然是无法存储它的,自然就无法一次性处理它而总线位宽和......
  • 记一次某制造业ERP系统 CPU打爆事故分析
    一:背景1.讲故事前些天有位朋友微信找到我,说他的程序出现了CPU阶段性爆高,过了一会就下去了,咨询下这个爆高阶段程序内部到底发生了什么?画个图大概是下面这样,你懂的。按......
  • mysql CPU过高排查
    最近发现mysqlCPU使用率高,将排查步骤记录一下一、top命令找到PID为24319二、vmstat1查看一下CPU使用率三、pidstat-u查看一下CPU使用率​四、pidstat-t-p2431......
  • mpstat -P ALL 10 不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息
        ......