操作系统
文章平均质量分 85
计算机体系结构,操作系统,Hypervisor等
京雨
华中某科技大学大四在读
展开
-
交叉编译 lmbench(riscv64)
将 libtirpc 安装到对应的 sysroot 下,riscv64-unknown-linux-gnu-gcc 默认的 sysroot 是工具链所在的位置。报错 rpc/rpc.h 找不到,以及 undefined reference to `pmap_set’ 这样的错误。添加 -I/usr/include/tirpc 解决 rpc/rpc.h 头文件找不到的问题。将工具链移动到 /opt/riscv 下(opt 下经常放一些工具)参考 https://twd2.me/archives/15827。原创 2024-10-30 00:32:22 · 168 阅读 · 0 评论 -
交叉编译 perl-5.40.0(riscv64)
https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2024.09.03 从这里获取交叉编译工具链。https://github.com/arsv/perl-cross/releases 这里获取 perl-cross-1.5.3 的源码(对应perl-5.40.0)https://www.perl.org/get.html#unix_like 这里获取 perl-5.40.0 的源码。借助 perl-cross 进行交叉编译。原创 2024-10-27 20:58:41 · 421 阅读 · 0 评论 -
RPM 打包入门(基于openEuler)
主要参考内容(均为官方文档):本文的环境:WSL2 + Qemu + OpenEuler24.03提到的所有示例,均在该环境下测试。原创 2024-06-21 16:20:26 · 1455 阅读 · 0 评论 -
Qemu 启动 OpenEuler24.03(riscv64)
本文使用 WSL2 Ubuntu22.04虚拟机。原创 2024-06-20 17:22:59 · 595 阅读 · 0 评论 -
了解 RISC-V IOMMU
软件。原创 2024-04-09 09:53:55 · 1963 阅读 · 0 评论 -
【学一点RISC-V】ACLINT(高级核心本地中断控制器)文档
【此 RISC-V ACLINT 规范定义了一组内存映射设备,这些设备为多 HART RISC-V 平台上的每个 HART 提供处理器间中断 (IPI) 和定时器功能】。在多 HART RISC-V 平台上运行的操作系统、引导加载程序和固件需要这些 HART 级 IPI 和定时器功能。SiFive 核心本地中断器 (CLINT) 器件已在 RISC-V 领域广泛采用,以提供机器级 IPI 和定时器功能。不幸的是,原创 2024-03-08 14:19:04 · 1535 阅读 · 0 评论 -
实践:qemu 运行 linux riscv with AIA(APLIC&IMSIC)
但我在文中提供的仓库中,未发现 patch 文件(仅找到了对比,如果一个一个复制粘贴则太多了,也可能是我的方式不正确),索性直接下载其源代码。这些补丁也可在 riscv_aia_v14 分支中找到,网址是:https://github.com/avpatel/linux。这里我使用了ubuntu-base的文件系统,如果有需要可以参考我之前的博客,或者使用其他文件系统也可以。按照前文内容,在 Linux-6.8-rc5 的基础上,添加相应的patch即可。,直接下载 riscv_aia_v14分支的代码。原创 2024-03-07 13:26:52 · 1675 阅读 · 2 评论 -
RISCV 中断控制器 PLIC & APLIC (非MSI部分)
在 RISC-V 系统中,【平台级中断控制器(PLIC)负责处理通过导线而非 MSI 发出信号的外部中断】。当系统中的 RISC-V 硬件没有 IMSIC 时,硬件本身也不支持 MSI,此类硬件的所有外部中断都必须通过 PLIC。但是,【即使在有 IMSIC 且大多数中断都通过 MSI 通信的计算机中,某些设备中断仍通过专用线路发出信号的情况也很常见】。特别是对于不需要在系统中启动总线事务的设备(或设备控制器)来说,支持 MSI 的成本尤其高昂,因此有线中断是一种省钱的替代方案。原创 2024-03-05 14:58:56 · 2304 阅读 · 0 评论 -
【Jailhouse论文】Look Mum, no VM Exits! (Almost)
多核 CPU 已成为许多现代嵌入式系统的标准组件。它们的虚拟化扩展使得可以隔离服务,并且在实现混合关键性或其他分割系统方面变得越来越流行。我们介绍了Jailhouse,一个基于Linux的、与操作系统无关的分区型虚拟化监控程序,它使用了新颖的架构方法,将 Linux(一个功能强大的通用系统)与严格隔离的特殊用途组件结合起来。我们的设计目标是以简单性取胜于功能,并建立一个最小的代码库,最大限度地减少监控程序的活动。硬件直接分配给客户机,并结合延迟初始化方案,原创 2024-02-22 23:50:59 · 747 阅读 · 0 评论 -
SPEC CPU 2017 Qemu RISCV
部分问题同x86上执行一致, 可以参考我的 quick start 的记录的博客: https://blog.csdn.net/jingyu_1/article/details/135695701。https://blog.csdn.net/zhangkefan116/article/details/128019033 (这篇文档中提到的问题, 基本都遇到了, 参考并可解决了)注意: 以下的记录均为 根用户 的操作, 在存在用户的情况下, 则类似于使用了。类似名字的压缩包,这就是制作tools的源码。原创 2024-01-26 17:59:06 · 1349 阅读 · 0 评论 -
ubuntu-base(arm64与riscv64) 根文件系统, 并用qemu启动
Qemu 启动 Linux(aarch64 与 riscv64):https://blog.csdn.net/jingyu_1/article/details/135746098?Ubuntu-base 镜像: https://cdimage.ubuntu.com/ubuntu-base/releases/jammy/release/,你也可以选择你需要的版本进行安装。配置,比如遇到我上面所说的情况,或者后续内核缺少某个模块的时候再来修改配置,重新编译,(以及后续提到的安装内核模块)原创 2024-01-24 15:00:01 · 1621 阅读 · 0 评论 -
SPEC CPU 2017 quick start
我这里选择在 linux(ubuntu22.04.3) 上安装 SPEC CPU 2017,gcc、g++、gfortran 均使用 sudo apt install xxx 安装(其版本为11.4.0)官方的 SPEC CPU 2017 在 Unix Systems 安装示例:https://www.spec.org/cpu2017/Docs/install-guide-unix.html以下是官方提供的系统需求:我自己的配置:x86-64、Linux、32G内存、512G磁盘这部分我没有操作,官方提供示原创 2024-01-19 13:37:14 · 2602 阅读 · 1 评论 -
构建 aarch64 以及 riscv64 交叉编译工具链(裸机)
工具链官方仓库:https://github.com/riscv-collab/riscv-gnu-toolchain。我要安装的是 riscv64-unknown-elf-xxx 交叉编译工具,对应的是 Newlib 部分。其他工具链也类似,在给出的两个官方链接中提供了所有的交叉工具链,选择合适的工具构建即可。因为我的需求是构建裸机的程序,所以我选择了裸机相关的交叉工具链。表示的是 通用的、无特定的系统供应商 的含义。为了在任意位置可以使用,将其添加到环境变量中。,和我的操作系统和平台架构是一致的。原创 2024-01-16 18:01:19 · 1880 阅读 · 0 评论 -
Qemu 之安装(源码安装)
这部分参考文档 https://wiki.qemu.org/Hosts/Linux。,会编译安装各种平台的Qemu模拟器(aarch64,riscv64等)如果要添加新的目标平台,则直接在qemu的源码目录执行。的64位机器,以及两个平台上的应用程序。表示的是模拟整个物理机,使用。,然后重新配置、编译、安装即可。仅模拟用户应用程序,使用。之后就可以在任意目录下使用。指定了随后的安装路径。,建议自定义一个路径。我这里的配置支持模拟。原创 2024-01-16 15:04:48 · 1276 阅读 · 0 评论 -
学习体系结构 - AArch64内存管理
本指南介绍了AArch64中的内存转换,这是内存管理的关键。它解释了如何将虚拟地址转换为物理地址转换表格式,以及软件如何管理转 换转译后备缓冲器(TLB)。这些信息对于任何正在开发底层代码的人都很有用,比如启动代码或驱动程序。它与任何正在编写设置或管理内存管理单元(MMU)代码的人特别相关。在本指南的最后,您可以检查您的知识。您将了解如何将虚拟地址转换为物理地址。您将能够命名不同的地址空间,并描述地址空间如何映射到翻译的各个阶段。您还将了解软件何时必须执行TLB维护,以及TLB维护命令的语法。原创 2023-12-31 18:00:13 · 1286 阅读 · 0 评论 -
学习体系结构 - AArch64 异常模型
在 AArch64 中,只能将 EL0 中的异常到更高的异常级别处理,而不会将异常处理到 EL0,也没有 EL0 向量表。如执行态和安全态一章所述,**PE 也只能在复位或发生异常或从异常返回时改变执行态。**AArch32 和 AArch64 执行状态之间的交互称为进程间交互。原创 2023-12-31 17:49:17 · 1512 阅读 · 8 评论 -
学习体系结构 - Arm 通用中断控制器 v3 和 v4
借助DeepL翻译 + 个人补充一些内容建议提前阅读: arm 的 异常模型。原创 2023-12-28 09:33:43 · 2067 阅读 · 0 评论 -
Linux 目录与命令记录(自用)
Linux系统文件分区比较复杂,先保留,后期再继续看一、初学者的建议一些经验Linux严格区分大小写Linux中所有内容以文件形式保存,包括硬件硬盘文件是/dev/sd[a-p]光盘文件是/dev/sr0等改一些环境变量、服务配置等等,如果写在命令行里面只是临时生效,写在配置文件里面,才能永久生效。Linux不靠扩展名区分文件类型下面这些特殊,本身不需要,为了方便管理员看压缩包 .gz .bz2 .tar.bz2 .tgz等二进制软件包 .rpm网页文件 .htm原创 2021-10-10 23:47:42 · 130 阅读 · 1 评论 -
【论文】 虚拟机 和 Linux容器 的 最新性能比较
云计算广泛使用虚拟机(VM),因为它们允许工作负载相互隔离,并在一定程度上控制资源使用。然而,虚拟化所涉及的额外抽象层次会降低工作负载的性能,而这种性能会以更低的性价比转嫁给客户。基于容器的虚拟化的最新进展简化了应用程序的部署,同时继续允许控制分配给不同应用程序的资源。在本文中,我们探讨了传统虚拟机部署的性能,并将其与 Linux 容器的使用进行了对比。我们使用了一套对 CPU、内存、存储和网络资源有压力的工作负载。**我们使用 KVM 作为代表性管理程序,使用 Docker 作为容器管理器。原创 2023-12-14 13:45:18 · 1253 阅读 · 0 评论 -
学习体系结构 - AArch64 虚拟化
这个寄存器包含了一系列的字段,原创 2023-12-20 14:15:01 · 1488 阅读 · 0 评论 -
计算机系统启动过程
处理器的启动过程, 实际上就是一个特定程序的执行过程。这个程序我们称之为。原创 2023-12-04 15:38:04 · 1024 阅读 · 0 评论