Hey there my fellow developers! I have posted on the Feedbacks cause I am willing to get suggestions and get a review!
Things you may ask:
-
Is it just GUI or is it more of a realistically simulated kernel.
It definitely is a realistically simulated kernel. Very so. It does some stuff similar to the linux kernel:
– FIle system management
– Process management
– Memory management
– Low level keyboard interactions -
Can people code / are programs files with their content strings?
Programs are files with their content being strings. But trust me, I did NOT take this lightly. I give ZERO Roblox API access. Virtually, all you will have is some Enums, all the APIs mentioned before, and core language functions like pcall, and more. It uses vLua. Code is ran locally.
Let’s take a look at a basic example: Booting it up
First page is Root/uefiboot.efi
It is the initialization of the whole project. The process manager runs this every .start()
Second page is Root/uefiselect.efi
This is the default second program that gets ran, but can be changed in Root/ueficonfig.cfg (User is unable to change yet)
Third page is Root/uefi.efi
This program simulates a basic UEFI, but of course I can’t really provide a lot of methods like a real UEFI does, but I can add some menus for my own APIs and files.
As you can see, when the button shut down is pressed, the OS shuts down accordingly.
There is some more backend tho. Shutdown is clearing all the logs, and it is gracefully terminating all the programs
What does a restart look like?
It is basically the equivalent of shutting down and starting the game again, but no leaving required.
Something that some of you will ask yourselves
“But he mentioned that programs are gracefully stopped during shut down, what happens if there is an infinite loop that won’t be gracefully stopped?”
Well, I thought of that as well!
Let’s take some notes here:
-
The log you see “A stop job is running for …” – This message is taken from the Linux kernel
Sometimes, when I go by my day and type sudo reboot in the Konsole (I use KDE) – the program gets stuck on this “A stop job is running” – and it waits for the time to end – I have no idea why tho. -
Programs are ended on Linux with signals. The main signals are: SIGINT, SIGTERM and SIGKILL
SIGINT and SIGTERM are the same stuff, but SIGINT is initiated by the user and SIGTERM is initiated by the kernel, for example.
I am doing this in my Process Manager, programs are killed with signals, names exactly as specified above.
SIGTERM and SIGINT are the “graceful stoppers” – let’s call them that.
During shut down, SIGTERM is signaled to all the currently running processes. After it is signaled to all, it waits 1 second and then checks which program was terminated and which was not.
If a program that has theis_alivevariable set to true during that search, it then tried SIGTERM 10 more times, 1 each second, hence the message “A stop job is running for… (10s timeout)”. If after 10 tries the program is still alive, SIGKILL is called, ending the program.
True multitasking is supported by the process manager as well so it makes the immersion so much more realistic.
One thing to note: Namings are currently not too perfect, expect changes.
Please rate this project a 1-10 and please, suggest me some stuff to add!
Thank you all for taking a look at my creation! I hope everyone has an amazing day!