3.23[Q]s

为什么已经在容器里了,但是无法运行命令?

官方文档和实际项目有所出入,即官方文档里的运行命令是simbricks-run,但并没有找到定义改操作的文件,我现在要在实际项目中寻找能运行程序的命令,应该如何寻找?

为什么要有"插槽",即中间步PCIe的接口,直接让PCIeChannel接到self上,省略掉中间的add_if不行吗?

什么是磁盘镜像格式?"Gem5 支持 raw,QEMU 支持 raw/qcow2"什么意思?

什么叫把文件当真实的硬盘来读写?这是怎么做到的?

为什么一定要替换为主机为Gem5适配的I40E主机类?直接用原来的不行吗?

为什么对于Host0,1要加入两个盘,cfg和tar?只用一个不行吗?

复制代码
# create disk images
distro_disk_image = system.DistroDiskImage(sys, "base")
# Disk images shipped with simbricks
class DistroDiskImage(DiskImage):
    def __init__(self, h: sys_host.FullSystemHost, name: str) -> None:
        super().__init__(h)
        self.name = name
        self.formats = ["raw", "qcow2"]

    def available_formats(self) -> list[str]:
        return self.formats

    def path(self, inst: inst_base.Instantiation, format: str) -> str:
        path = inst.env.hd_path(self.name)
        if format == "raw":
            path += ".raw"
        elif format == "qcow2":
            pass
        else:
            raise RuntimeError("Unsupported disk format")
        DiskImage.assert_is_file(path)
        return path

    def toJSON(self) -> dict:
        json_obj = super().toJSON()
        json_obj["name"] = self.name
        json_obj["formats"] = self.formats
        return json_obj

    @classmethod
    def fromJSON(cls, system: sys_base.System, json_obj: dict) -> DiskImage:
        instance = super().fromJSON(system, json_obj)
        instance.name = utils_base.get_json_attr_top(json_obj, "name")
        instance.formats = utils_base.get_json_attr_top(json_obj, "formats")
        return instance

这里构建镜像的逻辑是什么?输入base时,得到的是什么?

我在experiments目录下创建了生成的sim_logger.py后,在目录下生成了__pycache__和其中的文件/workspaces/simbricks/experiments/pycache/sim_logger.cpython-310.pyc,这个文件还不可打开,这都是什么?为什么会生成?有什么用?

解析命令,并将命令注入到模拟节点的代码是在哪里?怎么实现的?

这里host将app加入,即add_app方法后,再BaseLinuxHost基类里,add_app方法就只是将app加入到applications当中,我现在就是迫切的想知道System是在哪段代码里定义了对Host的application操作?

复制代码
def simple_instantiation(
    simulation: sim_base.Simulation,
) -> inst_base.Instantiation:
  instance = inst_base.Instantiation(sim=simulation)
  instance.preserve_tmp_folder = False
  instance.create_checkpoint = True
  return instance

这是simple_instantiation方法,实现了什么?然后再往后如何定位对application操作呢?

这个def()->:中,->是什么意思?

simulator = st(simulation)什么意思?"for comp in system._all_components.values(): # 遍历System中所有组件(Host/NIC/Switch等) if comp in simulation._sys_sim_map: # 跳过已分配模拟器的组件(避免重复) continue"为什么要跳过已分配模拟器的组件?什么叫已分配模拟器的组件?

有个问题,在使用simple_simulation方法时,会传入很多组件,但是simulator是在每个for循环中构建的,simulator也没加入到simulation当中里啊?即我现在感觉最后return的simulation和在for循环中构建的simulator无关,因为我没看到它们之间建立关系的代码

在simulation里写的代码,和在system里写的,分工是怎样的?就是我之前一直以为system里写的才是对各个组件的模拟逻辑,但实际上好像是simulation里?那么system里好像就只是在不断定义不同的组件?

这里st(simulation)当中,st是什么?类型是什么?

我现在是在docker容器当中遇到的这个问题,那我现在安装,即执行pip install命令,是安装到哪?如果关闭容器,下次再启动时,是否还有这个文件?

相关推荐
2401_831824962 小时前
高性能压缩库实现
开发语言·c++·算法
2401_874732532 小时前
C++中的策略模式进阶
开发语言·c++·算法
steins_甲乙2 小时前
C# 通过共享内存与 C++ 宿主协同捕获软件窗口
开发语言·c++·c#·内存共享
曲幽2 小时前
FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!
python·单元测试·pytest·api·fastapi·web·httpx·testclient·依赖项覆盖
章鱼丸-2 小时前
DAY34 GPU 训练与类的 call 方法
开发语言·python
2501_945423542 小时前
C++跨平台开发实战
开发语言·c++·算法
英俊潇洒美少年2 小时前
函数组件(Hooks)的 **10 大优点**
开发语言·javascript·react.js
Oueii2 小时前
分布式系统监控工具
开发语言·c++·算法
小陈工2 小时前
2026年3月24日技术资讯洞察:边缘AI商业化,Java26正式发布与开源大模型成本革命
java·运维·开发语言·人工智能·python·容器·开源