{"id":21434348,"url":"https://github.com/z1skgr/tinyos3-updates","last_synced_at":"2026-01-29T15:34:28.213Z","repository":{"id":163130798,"uuid":"308882992","full_name":"z1skgr/TinyOS3-updates","owner":"z1skgr","description":"TinyOS VM","archived":false,"fork":false,"pushed_at":"2024-11-25T07:35:16.000Z","size":2278,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T18:12:23.235Z","etag":null,"topics":["c","client-server-architecture","kernel","linux","posix","proc","pthreads","round-robin-scheduler","scheduler","threads-api"],"latest_commit_sha":null,"homepage":"","language":"C","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/z1skgr.png","metadata":{"files":{"readme":"README.md","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":"2020-10-31T13:01:58.000Z","updated_at":"2024-12-19T09:16:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"50f8deeb-143e-4ff4-ba98-069e1ffed454","html_url":"https://github.com/z1skgr/TinyOS3-updates","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/z1skgr/TinyOS3-updates","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z1skgr%2FTinyOS3-updates","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z1skgr%2FTinyOS3-updates/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z1skgr%2FTinyOS3-updates/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z1skgr%2FTinyOS3-updates/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/z1skgr","download_url":"https://codeload.github.com/z1skgr/TinyOS3-updates/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z1skgr%2FTinyOS3-updates/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28880256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"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":["c","client-server-architecture","kernel","linux","posix","proc","pthreads","round-robin-scheduler","scheduler","threads-api"],"created_at":"2024-11-22T23:34:50.497Z","updated_at":"2026-01-29T15:34:28.182Z","avatar_url":"https://github.com/z1skgr.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# TinyOS v.3 + Updates\n\nTinyOS is a very small operating system, built on top of a simple-minded virtual machine, whose purpose is\npurely educational. It is not related in any way to the well-known operating system for wireless sensors,\nbut since it was first conceived in 2003, there was a name collision that I have not yet resolved.\nThis code (in its long history) has been used for many years to teach the Operating Systems course\nat the Technical University of Crete.\n\nIn its current incarnation, tinyos supports a multicore preemptive scheduler, serial terminal devices, and a\nunix like process model. It does not support (yet) memory management, block devices, or network devices. These\nextensions are planned for the future.\n\n## Quick start\n\n```\n$ git clone https://github.com/vsamtuc/tinyos3.git\n$ cd tinyos3\n$ touch .depend\n```\nAfter downloading the code, just build it.\n```\n$ make\n```\nand try to discover system and test files. \n\n\n\nIf all goes well, the code should build without warnings. \n\n### Test\n\nSome terminal tests for Linux Ubuntu\n```\n$ gnome-terminal -e \"./terminal 0\"\n$ gnome-terminal -e \"./terminal 1\"\n$ ./test_bios2\n$ ./bios_example5\n```\n\nYou can run your first instance of tinyos,\na simulation of Dijkstra's Dining Philosophers.\n```\n$ ./mtask 1 0 5 5\nFMIN = 27    FMAX = 37\n*** Booting TinyOS\n[T] .  .  .  .      0 has arrived\n[E] .  .  .  .      0 is eating\n[T] .  .  .  .      0 is thinking\n[E] .  .  .  .      0 is eating\n E [T] .  .  .      1 has arrived\n E [H] .  .  .      1 waits hungry\n E  H [T] .  .      2 has arrived\n\u003c more lines deleted \u003e\n```\n\nThen, you are ready to start reading the documentation (you will need `doxygen` to build it)\n```\nmake doc\n```\nPoint your browser at file  `doc/html/index.html`.  Happy reading!\n\n\n### Build dependencies\n\nTinyos is developed, and will probably only run on Linux (its bios.c file uses Linux-specific system \ncalls, in particular signal streams). Any recent (last few years) version of Linux should be sufficient.\n\nWorking with the code, at the basic level, requires a recent GCC compiler (with support for C11). The\nstandard packages `doxygen` and `valgrind` with their dependencies (e.g., `graphviz`) are also needed \nfor anything serious, as well as the GDB debugger.\n\n### Upgrades \n#### Feedback Queue\n* Multilevel Feedback Queues (changes to initial  kernel_sched.c)\n    * Αrray of queues, a queue for each priority.\n    * Priotity =\u003e TCB of an integer field\n    * Quantum ends =\u003e Scheduler calculates a new value for that field, which is actually\nthe queue to which the thread will be added.\n    * First element of  first non-empty queue is the next thread.\n* Multithreading processess (syscall changes to initial kernel_thread.c)\n    * PTCB \u003c\u003e TCB \n    * CreateThread\n    * ThreadSelf\n    * ThreadJoin\n    * ThreadExit\n    * TreadDetach\n\n#### Pipes, Sockets\n* Process communication mechanisms, pipes and sockets. (syscall changes to initial kernel_socket, kernel_pipe.c, kernel_steams.c)\n   *  Socket\n   *  Connect\n   *  Listen\n   *  Accept\n   *  Shutdown\n\n* User program for standard output information about the system (syscall changes to initial kernel_proc).\n\n__Pipes, Sockets__ folder has all upgrades (includ. scheduling). For more informations [^1][^2], check doc folder. \n\n\n### Acknowledgements\n* This project was implemented for the requirements of the lesson Operating Systems\n* Many credits to  professor [Vsam](https://github.com/vsamtuc)\n\n\n[^1]: Feedback Queue  has  Feedback Queues and Threads\n[^2]: Pipes, Sockets has all upgrades (server communication and scheduling).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz1skgr%2Ftinyos3-updates","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fz1skgr%2Ftinyos3-updates","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz1skgr%2Ftinyos3-updates/lists"}