SimSo Web 开发者手册(中文版)



1  序言
         本文档是一个非详尽的开发人员文档,其目标是帮助未来的simso-web应用程序维护人员开始使用代码。 本文档是在假设开发人员使用UNIX环境的前提下编写的,假定开发人员对Javascript和Angular UI已经有基本的了解。

2  入门
        Simso web是一个基于simso的图形界面。 它作为一个完整的客户端应用程序(无需服务器端)使用JavaScript编写,并使用PypyJS(Pypy的JavaScript实现)来运行Python以执行simso。 用于前端开发的主要框架/工具是Angular JS和Bootstrap。

2.1  获取代码
        代码在这里可以在github上找到:https://github.com/MaximeCheramy/simsoweb。 由于simso-web嵌入了它自己的simso版本,它被包含在一个git子模块的形式中。 要设置您的工作副本,您必须运行以下命令:

                                                                                                                                                                                                           

git clone https://github.com/MaximeCheramy/simso-web.git
cd simso-web/submodules/simso
git submodule init
git submodule update

———————————————————————————————————————————————————


2.2  架构
2.2.1 概述

          该项目由三个主要组成部分组成:

          •HTML / Javascript / AngularUI前端

          •Simso:用于运行模拟的组件。

          •Simso和Javascript应用程序之间的Python Bridge(桥梁)


    图1:Simso web的主要组件


2.2.2 用例

        为了理解代码的结构,我们将介绍一个典型的simso-web用例:

       1.用户在配置视图中设置配置。

       2.用户点击“运行”按钮

                •使用配置视图中的参数(文件js / controlers / config-controler.py)创建一个python配置脚本。这个脚本然后被执行并创建一个python“配置”对象。

               •桥的“run()”方法被称为(py / simso-bridge.py)并启动Simso仿真。

       一旦完成,一个包含模拟结果的变量就可以被javascript应用程序读取。

       3.用户点击“结果”按钮:现在显示结果。一些python函数(在py / simso-bridge.py中)用于聚合结果。

2.2.3 HTML / Javascript / Angular UI前端

        前端基于MVC架构。

         •Model:模型文件包含在js / services /目录中。

           他们被称为“服务”。主要服务有:

                   {conf-service.js:包含所有与模拟配置相关的数据。这些数据将被用来生成配置脚本。

                   {pypy-service.js:包含所有与虚拟机初始化相关的代码。

         •视图:视图文件包含在部分/文件夹中。他们是HTML文件。有两个主要观点:

                   {配置视图是用户可以设置模拟参数的地方。

                   {结果视图是用户一旦运行就可以看到模拟结果的地方。

         •控制者:控制者位于js / controlers /目录中。

2.2.4  Python桥梁
         该桥梁负责将配置传递给simso,收集结果并将其传回给javascript。 brige的源文件位于py /文件夹中。


图2:Python桥梁


2.2.5  Simso

        Simso作为子模块集成在simso-web中。 Simso的文档可以在这里找到:http://homepages.laas.fr/mcheramy/simso/doc。

3  进入代码
        本节的目标是解释代码中棘手或重要的部分,并解释一些设计选择。

3.1  python虚拟机

        从这篇文章开始,Pypy.js没有任何形式的文档。 在这一节中会对使用的函数做一些说明。

3.1.1 设置

        通过

3.1.2  运行一个python脚本

        首先,确保你有权访问pypyService。 执行Python代码的代码应该如下所示:

                                                                                                                                

pypyService.vm.exec(code).then(function() {
    // Your code
}, logScriptErrors);

————————————————————————————————

        其中,logScriptErrors是config-controlers.js中定义的函数。 这个函数会在对象作为参数包含“名称”、“消息”和“跟踪”时被调用。

3.1.3 管理import

        由于pypy.js将会在用户的浏览器中运行自己的python环境,所以捆绑所有需要的模块是非常重要的。 所有捆绑模块的列表可以在lib/modules/index.json中找到。

3.1.4 将变量传入和传出python

        我们使用在js / app.js中定义的JavaScript全局变量“python”来传递来自python的变量。 将变量从javascript传递给python很简单:

                                                                                           

python["variable_name"] = myObject;

—————————————————

但是,在某些情况下,将变量从python传递到javascript可能会有点棘手。

                                                                                            

import js
...
js.globals["python"]["variable_name"] = myObject;

——————————————————————————————

         棘手的部分来自myObject需要是pypy.js可以转换为JavaScript对象的事实。传递复杂对象最简单的方法就是通过Hash散列表(就像你在javascript中那样)。

3.2将Simso集成在配置中
3.2.1调度程序自动检测机制

        Simso-web具有用于自动检测所有simso调度程序的功能,它们自己需要的参数,任务和/或处理器。 在Simso的代码中,每个调度程序都佩带“调度程序”装饰器(在simso / schedulers / init .py中声明)。 这里是一个例子:

                                                                                                                                

@scheduler("simso.schedulers.CC_EDF",
            required_proc_fields = [
              { ’name’: ’speed’, ’type’: ’float’, ’default’: ’1.0’ }
            ]
  )

————————————————————————————————

由于执行所有这些装饰器需要手动导入所有的调度器在pypy.js(这不一定是我们想要的),simso-web不直接使用它们。 而是读取py / simso-schedulers.py中的所有调度程序描述。 执行shell脚本tools / schedulers_discovery.sh时会自动生成该文件。

当添加/删除调度程序时,调度程序discovery.sh脚本必须再次执行!

ETM检测所有的执行时间模型(ETM)必须在py / simso-etm.py中声明。 这里是一个ETM声明的例子:

                                                                                                                     

{

               ’name’ : ’acet’,
               ’display_name’ : ’ACET’,
               ’required_fields’ : [],
               ’required_proc_fields’ : [],
               ’required_task_fields’ : [
                          {
                            ’name’ : ’acet’,
                            ’display_name’ : ’acet (ms)’,
                            ’type’ : ’float’,
                            ’default’ : ’0’

                          },
                          {
                            ’name’ : ’et_stddev’,
                            ’display_name’ : ’ET std dev (ms)’,
                            ’type’ : ’float’,
                            ’default’ : ’0’

                          }
                ]

},

——————————————————————

3.3 控制器层次结构


图3:配置控制器作用域层次结构



图4:结果控制器作用域层次结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然!我可以为您提供一些关于SimSo模拟器的基础教程。 SimSo是一个用于多核处理器调度模拟的开源工具。使用SimSo,您可以模拟多核处理器上的任务调度和执行过程,以便更好地了解和优化系统性能。 以下是一个简单的SimSo模拟器教程的步骤: 步骤1:安装SimSo 首先,您需要在您的计算机上安装SimSo模拟器。您可以从SimSo的官方网站(https://github.com/SimSo/simso)上下载最新版本的源代码,并按照安装说明进行安装。 步骤2:创建任务集 在SimSo中,您可以通过编写一个任务集文件来定义多核处理器上的任务。任务集文件是一个文本文件,其中包含了每个任务的属性,如任务的到达时间、执行时间、优先级等。 步骤3:定义调度算法 SimSo支持多种调度算法,包括先来先服务(FCFS)、最短作业优先(SJF)、最短剩余时间优先(SRTF)等。您可以在SimSo中选择一个适合您的需求的调度算法,并进行相应的配置。 步骤4:运行模拟器 一旦您完成了任务集和调度算法的定义,您可以运行SimSo模拟器来模拟多核处理器上的任务调度过程。通过运行SimSo的命令行界面,并指定任务集文件和调度算法,您可以启动模拟器并获得相应的结果。 这只是一个简单的SimSo模拟器教程的概述,实际上还有许多更复杂的功能和配置选项可供您探索。如果您对SimSo模拟器感兴趣,我建议您查阅SimSo的官方文档,其中提供了更详细的教程和示例代码。 希望这个简单的教程能对您有所帮助!如果您有任何其他问题,我很乐意为您解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值