![bret Profile](https://pbs.twimg.com/profile_images/1830876100152426496/8c1Uq53g_x96.jpg)
bret
@BretHatin
Followers
997
Following
3K
Statuses
1K
I guess a small intro from my side: I am writing a kernel in my free time after work. I am a beginner and would love to surround myself with other people in the same field. The kernel currently has a basic memory management subsystem and supports ELF loading, going forward I want to have a basic scheduler, a network and graphics stack. It is a sort of like art project for me, I dont have a roadmap on what I would like to do with the OS but my ultimate goals would to be have a unix and windows compatible subsystems natively integrated into the OS with Nix like package management. I would also like to have some sort of interpreted/JITed language inside running in ring 0 akin to TempleOS or OsakaOS.
1
2
14
I never knew about VMS. And it is crazy that Unix in the end won, when we could have done much much better. We can have a renaissance in OS. Rethink everything Unix has done and reason whether it is really a good design.
Great comment on HN (from lproven) “The problem with the Unix lowest-common-denominator model is that it pushes complexity out of the stack and into view, because of stuff other designs _thought_ about and worked to integrate. “It is very important never to forget the technological context of UNIX: a text-only OS for a tiny, already obsolete and desperately resource-constrained, standalone minicomputer. It was written for a machine that was already obsolete, and it shows. “No graphics. No networking. No sound. Dumb text terminals, which is why the obsession with text files being piped to other text files and filtered through things that only handle text files. “While at the same time as UNIX evolved, other bigger OSes for bigger minicomputers were being designed and built to directly integrate things like networking, clustering, notations for accessing other machines over the network, accessing filesystems mounted remotely over the network, file versioning and so on. “I described how VMS pathnames worked in this comment recently: “People brought up on Unix look at that and see needless complexity, but it isn't. “VMS' complex pathnames are the visible sign of an OS which natively understands that it's one node on a network, that currently-mounted disks can be mounted on more than one network nodes even if those nodes are running different OS versions on different CPU architectures. It's an OS that understands that a node name is a flexible concept that can apply to one machine, or to a cluster of them, and every command from (the equivalent of) "ping to (the equivalent of) 'ssh' can be addressed to a cluster and the nearest available machine will respond and the other end need never know it's not talking to one particular box. “50 years later and Unix still can't do stuff like that. It needs tons of extra work with load-balancers and multi-homed network adaptors and SANs to simulate what VMS did out of the box in the 1970s in 1 megabyte of RAM. “The Unix was only looks simple because the implementors didn't do the hard stuff. They ripped it out in order to fit the OS into 32 kB of RAM or something. “The whole point of Unix was to be minimal, small, and simple. “Only it isn't any more, because now we need clustering and network filesystems and virtual machines and all this baroque stuff piled on top. “The result is that an OS which was hand-coded in assembler and was tiny and fast and efficient on non-networked text-only minicomputers now contains tens of millions of lines of unsafe code in unsafe languages and no human actually comprehends how the whole thing works. “Which is why we've build a multi-billion-dollar industry constantly trying to patch all the holes and stop the magic haunted sand leaking out and the whole sandcastle collapsing. “It's not a wonderful inspiring achievement. It's a vast, epic, global-scale waste of human intelligence and effort. “Because we build a planetary network out of the software equivalent of wet sand. “When I look at 2022 Linux, I see an adobe and mud-brick construction: Mosque_of_Djenn%C3%A9#/m... “When we used to have skyscrapers. “You know how big the first skyscraper was? 10 floors. That's all. This is it: . “The point is that it was 1885 and the design was able to support buildings 10x as big without fundamental change. “The Chicago Home Insurance building wasn't very impressive, but its design was. Its design scaled. “When I look at classic OSes of the past, like in this post, I see miracles of design which did big complex hard tasks, built by tiny teams of a few people, and which still works today.”
0
0
3
RT @caballerobrah: Great comment on HN (from lproven) “The problem with the Unix lowest-common-denominator model is that it pushes comple…
0
1
0
RT @yacineMTB: Jobs are temporary, followers are forever. Never hold back a post because you are afraid of losing your job
0
77
0
@sasuke___420 yeah i know i am lazy atm and posted this on a haste i will move to smaller dtype at some point.
0
0
0
@IgorJMichalak I wonder if it is easy to use custom allocators in Ada? I group allocations everytime and hate how Rust makes it too hard (although even Rust doesn't have typed indexes).
1
0
1
@ryanjfleury I agree. Also, you mentioned something along the lines of that you would prefer to self host your own toolchain at some point, would you try to implement the idiosyncrasies of msvc/clang/gcc?
0
0
0
@pixqc This is what I sort a do when I write in C but for similar reasons as it has no namespaces, and it is easier to grep it. gdt_init(); scheduler_init(); scheduler_append_task(); scheduler_idle_loop(); scheduler_switch_task(); ...
1
0
33
Yes, it would be interesting to know how do you handle memory management. I remember Will's talk on Systems Distributed discussing guest memory hashes being the same on two different runs, which is very impressive, so would like to know what exactly it is hashing over and the methods, etc.. Also interested in the scheduler, even though you pin the hypervisor to a single physical core, how do you deal with other stuff like, for example, irregular clock ticks for preemptive scheduling. Also how do you figure out cache strategies, pipelining done by the single core, a lot of these things are not documented well if you dive deep enough, but these could be a source of non-determinism.
0
0
1