{"id":16836482,"url":"https://github.com/orangecms/mugenschedcfg","last_synced_at":"2026-02-14T20:03:31.565Z","repository":{"id":84739300,"uuid":"90494140","full_name":"orangecms/mugenschedcfg","owner":"orangecms","description":"generates scheduling plans for the Muen Separation Kernel","archived":false,"fork":false,"pushed_at":"2017-05-10T23:47:03.000Z","size":394,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-06T02:42:38.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orangecms.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-06T22:12:53.000Z","updated_at":"2021-07-25T14:58:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"634f51aa-7eef-479c-b2ab-c0e306a581e9","html_url":"https://github.com/orangecms/mugenschedcfg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/orangecms/mugenschedcfg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecms%2Fmugenschedcfg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecms%2Fmugenschedcfg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecms%2Fmugenschedcfg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecms%2Fmugenschedcfg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orangecms","download_url":"https://codeload.github.com/orangecms/mugenschedcfg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecms%2Fmugenschedcfg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29454724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T12:13:36.762Z","updated_at":"2026-02-14T20:03:31.549Z","avatar_url":"https://github.com/orangecms.png","language":"Ada","funding_links":[],"categories":[],"sub_categories":[],"readme":"Mugenschedcfg\n=============\n\n\nOverview\n--------\nThe `mugenschedcfg` tool generates scheduling plans for the [Muen][1]\nSeparation Kernel (SK) based on a given scheduling configuration. See the\ntool's usage information (`mugenschedcfg -h`) for details about how to invoke\nit. An introduction to the scheduling concept of the Muen SK in general is\ngiven in section 3.4.7 of the project [report][2].\n\nThe configuration allows the user to specify the following scheduling\nproperties:\n\n- Number of CPU cores\n- The tick rate of the CPUs\n- Security constraints to meet\n  - Same CPU domains\n  - Simultaneous execution domains\n- Subject specifications\n- Score functions\n- Number of plans to generate\n- Plans\n  - Weighting of plan importance\n  - Levels\n  - Subjects of a plan\n  - Chains with throughput metric\n\n\nMode of Operation\n-----------------\nEach plan specifies multiple *levels* in CPU tick units. The tick count must\nincrease from one level to the next and also be a multiple of the previous,\nlower level:\n\n    \u003clevels\u003e\n     \u003clevel ticks=\"10\"/\u003e    \u003c!-- 1 --\u003e\n     \u003clevel ticks=\"40\"/\u003e    \u003c!-- 2 --\u003e\n     \u003clevel ticks=\"160\"/\u003e   \u003c!-- 3 --\u003e\n     \u003clevel ticks=\"1920\"/\u003e  \u003c!-- 4 --\u003e\n    \u003c/levels\u003e\n\nThe last level defines the total ticks in this plan (1920 here).\n\nA plan defines which subjects it contains, either by explicit reference:\n\n    \u003csubjects\u003e\n     \u003csubject ref=\"s26\" minLength=\"30\"/\u003e\n\t ...\n    \u003c/subjects\u003e\n\nOr by selecting all defined subjects:\n\n    \u003csubjects\u003e\n     \u003cselectAll\u003e\n      \u003csubject ref=\"s26\" minLength=\"30\"/\u003e\n     \u003c/selectAll\u003e\n    \u003c/subjects\u003e\n\nThe above statement selects all defined subjects and adjusts the `minLength`\nproperty of subject `s26` for this specific plan. This allows for the flexible\ndefinition of subject properties at global and plan-local scope.\n\nEach subject in a given plan specifies at which level it is intended to be\nscheduled, which basically defines the *frequency* of the subject in a concrete\nplan.  For example if a subject is scheduled at level 2 in the above example,\nit would repeat every 40 ticks (if feasible). The tool will plan at least one\nexecution slot of this subject in the given plan depending on the overall\nconfiguration and inter-plan dependencies.\n\nScore functions and chains are used to quantify the increase of throughput\nrelative to the assigned scheduling ticks of a single subject or a subject\ngroup. It enables the tool to grant more ticks to subjects which benefit the\nmost. Score functions are piecewise linear functions which can be defined at\nthe desired accuracy by specifying `x,y` coordinates of points on the function\ngraph:\n\n    \u003cfunction name=\"identity\"\u003e\n     \u003cpoint x=\"0.0\" y=\"0.0\"/\u003e\n     \u003cpoint x=\"1.0\" y=\"1.0\"/\u003e\n    \u003c/function\u003e\n\nA value `y` is calculated from a given input value `x` using linear approximation.\n\nChains defined at plan scope assign a score function to one or more subjects in\nthe plan.\n\n\nPerformance Properties\n----------------------\nSubject performance requirements can be described by the following\nconfiguration properties:\n\n- The frequency of a subject (`level` property)\n- Minimal total ticks to schedule a subject in a plan (`minLength` property)\n- Plan weighting: Subjects in plans with a high weight are given more CPU time\n- Score functions and chains: The tool will try to maximize the sum of scores\n  over all chains (the total score).\n\n\nSecurity Properties\n-------------------\nSubjects which must not be executed simultaneously can be assigned to exclusive\n*simultaneous domains*. The tool enforces that such subjects never run\nsimultaneously on different CPU cores. This mechanism can be used as a\npotential countermeasure against memory-based side channel attacks.\n\nSubjects which must run on different CPUs can be members of exclusive *CPU\ndomains*. The tool then schedules the subjects so they are not executed in the\nsame CPU. This mechanism can be used as a potential countermeasure against\ncache-based side channel attacks (after carefully analyzing the CPU topology of\nthe target platform).\n\n\nBuild \u0026 Usage\n-------------\nThe tool is part of the Muen project and relies on Muen libraries to compile.\nIt is therefore built as an integral part of the Muen toolchain as described in\nthe main Muen README file.\n\n\nVisualization\n-------------\nThe `mugenschedcfg` tool provides a Gnuplot script to visualize generated\nscheduling plan data. This is not only useful to get a quick overview of the\ngenerated plans, but it also enables the intuitive verification of specified\nperformance and security properties.\n\n\nExamples\n--------\nThe [PDF](plans/complex.pdf) depicts a visualization of the complex example\nscheduling plan specified in the `plans/complex.xml` file. The configuration\ndeclares 12 plans to be generated, with a total of 47 subjects and 4 CPU cores.\nEach CPU is represented by a different colors in the graph.\n\nThe first 3 plans are intended for use during system startup where only a few\nsubjects are active to perform initialization. Plans 4-12 use chains and score\nfunctions to prioritize certain subjects depending on the workload.\n\nThe following security properties are active in this configuration:\n\n- Subject *s34* is not allowed to run simultaneously with *s[35-38]*\n- Subject *s34* is not allowed to run simultaneously with *s[24-27]*\n- Subjects *s[35-38]* are not allowed to run simultaneously with *s[24-27]*\n\n- Subject *s34* must run on a different CPU than *s[24-27], s[39-42], s[43-46]*\n\n\nStatus and Limitations\n----------------------\nThe tool has started as a student project during an internship and has since\nbeen stabilized by the Muen team. It is still in beta status, so please report\nbugs you might encounter to the muen-dev mailing list (see below).\n\nThe Muen demo system successfully uses the tool to generate scheduling plans\nautomatically during integration. Checkout the `policy/Makefile` targets in the\nMuen source tree for details on how this is achieved.\n\nThe tool assumes certain properties of the input data which cannot be ensured\nby XSD 1.1 schema validation. The respective validators to enforce these\nproperties are not yet implemented (see the TODO file).\n\n\nContact\n-------\nIf you have any questions regarding the tool or suggestions on how to improve\nit, please write an email to the Muen development team's mailing list at\n\n    muen-dev@googlegroups.com\n\n[1]: https://muen.sk \"Muen website\"\n[2]: https://muen.codelabs.ch/muen-report.pdf \"Muen project report\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forangecms%2Fmugenschedcfg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forangecms%2Fmugenschedcfg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forangecms%2Fmugenschedcfg/lists"}