Hi.
If someone were to ask, What is the minimum specifications I need to be able to run this OS properly? - What would it be?.
And if possible, how the OS would react under heavier constraints than the minimum requirements?
I of course could download all OSes on the "OS Project List", test them out until they break, but maybe they are doing something else in the background? Perhaps behind those kernel panics there is a terminal that is able to operate fully under 16MB of RAM?... if only the OS was able to allocate those extra 1 byte for some random dummy DMA buffer :(
Your minimum requirements
-
- Member
- Posts: 34
- Joined: Sat Sep 07, 2019 5:17 pm
- Libera.chat IRC: Superleaf1995
Re: Your minimum requirements
What is your definition of "running an OS properly"?
For what?
I need an OS to do my daily work. Since this daily work is doing QS on a Windows application written in C#, nothing other than Windows 10+ will do, period.
I need an OS to do some occassional gaming. That will require a working Steam client. Windows and Linux are an option, other OS's are not, period.
For my PDCLib project, an OS needs to have a C compiler, and the necessary support needed for hosting a C library -- file system (open / search / read / write / close / delete / rename), memory management (allocate / free), a clock if you want to have meaningful <time.h> support, and threads if you want <threads.h>.
I have plenty to do yet on that project before I can start porting it to [whatever] platform, and since Amiga is where my heart is, that one will be the first non-mainstream platform I will personally port to. I would not be interested in working on levels below that (e.g. implementing basic file system functionality or the threads system myself), but I'd be happy to (help to) port my C lib on to a system that doesn't have one yet.
For that, I'd consider minimum requirements to be...
For what?
I need an OS to do my daily work. Since this daily work is doing QS on a Windows application written in C#, nothing other than Windows 10+ will do, period.
I need an OS to do some occassional gaming. That will require a working Steam client. Windows and Linux are an option, other OS's are not, period.
For my PDCLib project, an OS needs to have a C compiler, and the necessary support needed for hosting a C library -- file system (open / search / read / write / close / delete / rename), memory management (allocate / free), a clock if you want to have meaningful <time.h> support, and threads if you want <threads.h>.
I have plenty to do yet on that project before I can start porting it to [whatever] platform, and since Amiga is where my heart is, that one will be the first non-mainstream platform I will personally port to. I would not be interested in working on levels below that (e.g. implementing basic file system functionality or the threads system myself), but I'd be happy to (help to) port my C lib on to a system that doesn't have one yet.
For that, I'd consider minimum requirements to be...
- some kind of terminal,
- some way to edit - compile - run on that terminal, or a cross-compile / file transfer setup.
Every good solution is obvious once you've found it.
Re: Your minimum requirements
@Solar I think what Leaf is asking is what the system requirements are for your OS. Like, RAM, or earliest supported CPU. But... you indirectly raise a relevant and good point: System requirements can vary depending on the intended workload and use-case.
The 32-bit versions of my OS had some silly requirements mostly because I never bothered to check for support for things - SSE, in particular, was a requirement for much of my UI. Now that I'm on x86-64, I can at least assume this stuff exists.
The current x86-64 requirements for ToaruOS are:
- A 64-bit CPU, obviously.
- Constant/consistent TSC.
- PS/2 input devices.
By the time the first consumer x86-64 CPUs were available, typical RAM in home computers was up to at least 512MB. This is more than enough to run ToaruOS with its full GUI and still be able to download and install additional packages to the ramfs, though I generally recommend at least 1GB. The ramdisk itself is around 25MB when decompressed, but the biggest memory consumer is the GUI: At a resolution of 1440x900 (which I use because it's the native panel resolution in my old ThinkPad, and because it fits nicely in a window on a 1080p host display), a fullscreen ARGB texture buffer is 5MB! And most of my apps are double-buffered. A fresh boot to a desktop with just the default applications running will use 5MB for the framebuffer (maybe that's not main memory, you're lucky!), 5MB for the working buffer, 10MB for the front and back buffers for the desktop itself, 10MB for the front and back buffers for the fullscreen semitransparent black window behind the introductory tutorial, a few MB for the tutorial itself, a few MB for the panel... that's at least a few dozen MB of just pixels! And all of those apps are also running with a naïve dynamic loader, so they've got a bunch of wasted space from shared-but-not-actually-shared libraries like the libc and the graphics library. But, the GUI is optional: ToaruOS is perfectly usable as a pure command-line OS through a serial console, or the VGA text mode terminal. A setup like that can get things down to 50MB, and that's still with the ramdisk taking up half the RAM - so with a disk boot we could get it down to 25MB. Shaving off memory after that is going to need a more tailored userspace - static binaries would be a good start.
The 32-bit versions of my OS had some silly requirements mostly because I never bothered to check for support for things - SSE, in particular, was a requirement for much of my UI. Now that I'm on x86-64, I can at least assume this stuff exists.
The current x86-64 requirements for ToaruOS are:
- A 64-bit CPU, obviously.
- Constant/consistent TSC.
- PS/2 input devices.
By the time the first consumer x86-64 CPUs were available, typical RAM in home computers was up to at least 512MB. This is more than enough to run ToaruOS with its full GUI and still be able to download and install additional packages to the ramfs, though I generally recommend at least 1GB. The ramdisk itself is around 25MB when decompressed, but the biggest memory consumer is the GUI: At a resolution of 1440x900 (which I use because it's the native panel resolution in my old ThinkPad, and because it fits nicely in a window on a 1080p host display), a fullscreen ARGB texture buffer is 5MB! And most of my apps are double-buffered. A fresh boot to a desktop with just the default applications running will use 5MB for the framebuffer (maybe that's not main memory, you're lucky!), 5MB for the working buffer, 10MB for the front and back buffers for the desktop itself, 10MB for the front and back buffers for the fullscreen semitransparent black window behind the introductory tutorial, a few MB for the tutorial itself, a few MB for the panel... that's at least a few dozen MB of just pixels! And all of those apps are also running with a naïve dynamic loader, so they've got a bunch of wasted space from shared-but-not-actually-shared libraries like the libc and the graphics library. But, the GUI is optional: ToaruOS is perfectly usable as a pure command-line OS through a serial console, or the VGA text mode terminal. A setup like that can get things down to 50MB, and that's still with the ramdisk taking up half the RAM - so with a disk boot we could get it down to 25MB. Shaving off memory after that is going to need a more tailored userspace - static binaries would be a good start.
Re: Your minimum requirements
klange wrote:@Solar I think what Leaf is asking is what the system requirements are for your OS.
Sometimes /me stupid.
OK, let's turn this around. Mimimal requirements for PDCLib... not much, really. I've been in contact with someone who took PDCLib and... ported? massacred? shredded?... it to work as the C lib for his compiler.
On a C64.
OK, granted, there was not much "standard" left once you ripped out all the `int` and `long` and replaced them with `char` since that's the only supported datatype.
But generally speaking, it will require no more than a C89 compiler (although a C99 / C11 compiler will of course add certain supported features), and 32bit. I will attempt to provide a 16-bit configuration as well; I am not sure how well that works post-C99.
Every good solution is obvious once you've found it.
Re: Your minimum requirements
My baseline requirements (I assume that's what minimum here means) are:
- SSE/SSE2 (though AVX-2 is preferred), no 32-bit support.
- Constant-time TSC and RDRAND support
- AES-NI support
- UEFI required
Re: Your minimum requirements
Hi,
Probably any computer in last 20 years can hopefully run it. Suppose there are some features that are specific to newer computers but i try to offer a legacy option (i.e. boot loader supports UEFI and BIOS builds.) Am hoping to use the native FPU but offer SSE et. al. System is 32 bit although am working to add 64 bit long mode to the system and tool chain. Even then though i would just have 32 bit and 64 bit targets for the same system.
So...there really isn't any real minimum besides the basics expected in any modern computer and what features you want.
Probably any computer in last 20 years can hopefully run it. Suppose there are some features that are specific to newer computers but i try to offer a legacy option (i.e. boot loader supports UEFI and BIOS builds.) Am hoping to use the native FPU but offer SSE et. al. System is 32 bit although am working to add 64 bit long mode to the system and tool chain. Even then though i would just have 32 bit and 64 bit targets for the same system.
So...there really isn't any real minimum besides the basics expected in any modern computer and what features you want.
OS Development Series | Wiki | os | ncc
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
-
- Member
- Posts: 5513
- Joined: Mon Mar 25, 2013 7:01 pm
Re: Your minimum requirements
- A CPU with at least 32 bits
- A MMU with paging
- Enough RAM to hold the kernel and some drivers