{"action":"created","issue":{"url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/98","labels_url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/98/labels{/name}","comments_url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/98/comments","events_url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/98/events","html_url":"https://github.com/ReturnInfinity/BareMetal-OS/issues/98","id":93609294,"number":98,"title":"Loader","user":{"login":"Roxxik","id":9296375,"avatar_url":"https://avatars.githubusercontent.com/u/9296375?v=3","gravatar_id":"","url":"https://api.github.com/users/Roxxik","html_url":"https://github.com/Roxxik","followers_url":"https://api.github.com/users/Roxxik/followers","following_url":"https://api.github.com/users/Roxxik/following{/other_user}","gists_url":"https://api.github.com/users/Roxxik/gists{/gist_id}","starred_url":"https://api.github.com/users/Roxxik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Roxxik/subscriptions","organizations_url":"https://api.github.com/users/Roxxik/orgs","repos_url":"https://api.github.com/users/Roxxik/repos","events_url":"https://api.github.com/users/Roxxik/events{/privacy}","received_events_url":"https://api.github.com/users/Roxxik/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-07-07T19:29:08Z","updated_at":"2015-07-10T12:20:41Z","closed_at":null,"body":"I was playing with the idea about writing a simple loader for BareMetal OS so that it is possible to start another app while running (i.e. a shell starting a application or a application and a network stack running in paralell)\r\n\r\nI have some ideas but i don't know which to try out first:\r\n\r\n1. making apps PIE (position independent executables)\r\n    - the loader is easy just read from memory and jump right into it, just like the cli currently does, bot can be loaded to any location\r\n    - this needs support from the build tools i haven't found much about compilers supporting it\r\n\r\n2. having a relocator\r\n    - the relocator would disassemble the binary and translate all address that point into its own memory\r\n    - for larger application the load time needs to be considered\r\n\r\n3. don't build flat binaries, build some relocateable format (i.e. elf)\r\n    - requires to build or port a tool that can read this format\r\n\r\n4. use paging to let the applications appear all in the same location\r\n    - i think this makes other things harder, ipc in a flat memory model could be done by just passing pointers with paging this isn't possible\r\n\r\nIf anyone has some advices or suggestion, feel free to post"},"comment":{"url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/comments/120398165","html_url":"https://github.com/ReturnInfinity/BareMetal-OS/issues/98#issuecomment-120398165","issue_url":"https://api.github.com/repos/ReturnInfinity/BareMetal-OS/issues/98","id":120398165,"user":{"login":"benaryorg","id":6145260,"avatar_url":"https://avatars.githubusercontent.com/u/6145260?v=3","gravatar_id":"","url":"https://api.github.com/users/benaryorg","html_url":"https://github.com/benaryorg","followers_url":"https://api.github.com/users/benaryorg/followers","following_url":"https://api.github.com/users/benaryorg/following{/other_user}","gists_url":"https://api.github.com/users/benaryorg/gists{/gist_id}","starred_url":"https://api.github.com/users/benaryorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benaryorg/subscriptions","organizations_url":"https://api.github.com/users/benaryorg/orgs","repos_url":"https://api.github.com/users/benaryorg/repos","events_url":"https://api.github.com/users/benaryorg/events{/privacy}","received_events_url":"https://api.github.com/users/benaryorg/received_events","type":"User","site_admin":false},"created_at":"2015-07-10T12:20:41Z","updated_at":"2015-07-10T12:20:41Z","body":"@scherrey Sorry for making that ambiguous.\r\n\r\nI edited that comment.\r\n"}}