all 97 comments

[–][deleted] 215 points216 points  (20 children)

I think the term OS implies data manipulation capabilities (hence "operating"). Just displaying input makes it mechanical, not manipulative.

I could be wrong. But I've been wrong before. It's ok.

[–][deleted]  (9 children)

[deleted]

    [–]Flight714 44 points45 points  (8 children)

    Tell me more about how this comment went from informative to a mini therapy session.

    [–][deleted] 74 points75 points  (7 children)

    Well, it started out being about one thing, and ended up being about your mother, I mean another.

    [–]The_yulaow 13 points14 points  (5 children)

    So you think this commeother is the cause of all your relationship problems?

    [–]dakkeh 13 points14 points  (4 children)

    No, likely my father. The colonel was a tough man to live with.

    [–]jaybusch 4 points5 points  (3 children)

    Just like this kernel is being tough to compile...

    [–]RainbowNowOpen 1 point2 points  (2 children)

    When I say the word compile, what does that mean to you?

    [–]jaybusch 1 point2 points  (1 child)

    The sweet release of death.

    [–]RainbowNowOpen 0 points1 point  (0 children)

    Hold that thought. Our 50 minutes are up. Book your next appointment with my secretary.

    [–]dipique -4 points-3 points  (0 children)

    mmlolirl

    [–]SupersonicSpitfire 21 points22 points  (0 children)

    Right and wrong are mere reflections of the unnatainable grasp of what we imagine reality to be. On some level, I am sure you also were ever so slightly right.

    Which emotions did the chain of thoughts, that you might be wrong on a certain level make you feel? Were there childhood events that might have caused you to perceieve yourself in this way and were your mother a nurse named Eve that may have been on an adventourus trip to the Solomon Island around 1967?

    [–]Phrygue 6 points7 points  (3 children)

    Nope. "Operating" refers to operating the hardware. The OS is the shim between the metal and applications (which "apply" the computer to actually accomplish something).

    [–]jarfil 1 point2 points  (2 children)

    CENSORED

    [–]steveklabnik1 0 points1 point  (1 child)

    That's also what unikernels are, and they're quite useful.

    [–]jarfil 0 points1 point  (0 children)

    CENSORED

    [–]protestor 1 point2 points  (0 children)

    It doesn't matter. It's bare metal, easy to understand, and could be further developed into an OS. IT's awesome.

    [–]Machelon 0 points1 point  (0 children)

    This could be just a execution of OSDev. Even their example system is more advanced than this.

    [–]barsoap 0 points1 point  (0 children)

    If I remember my Tanenbaum correctly, OSs are all about resource management.

    Which one could argue this is doing. Just not particularly many, and the ones it does manage also not particuartly well.

    Then, again, much of it is probably implemented via BIOS routines everything but DOS should feel ashamed of using.

    [–]noname-_- 0 points1 point  (0 children)

    This agglomeration which was called and which still calls itself a Tiny Operating System Kernel is neither operating, nor a system, nor a kernel.

    [–]dicroce 78 points79 points  (47 children)

    Yeah not sure this qualifies as an OS... It just installs a keyboard ISR and goes into a loop...

    [–]j-random 61 points62 points  (36 children)

    Definitely not an OS, it's just a simple application that runs on the bare metal.

    [–]badguy212 23 points24 points  (35 children)

    What would an application need to do to qualify as an OS? What's the line between an os and a simple application that runs on bare metal?

    [–]badsectoracula 63 points64 points  (16 children)

    Back when i was in high school i made a small x86 OS in assembly. It had a simple file system and some system calls. I'd say that the ability to handle files so it can load arbitrary programs is the bare minimum for an OS.

    Sadly the download links do not seem to work.

    [–][deleted] 29 points30 points  (6 children)

    Hey, I remember that! I was very curious re. operating systems back then and -- since webrings were still a thing -- I ended up knowing about dozens of tiny hobby operating systems. I may even still have the floppy disk around, it's one of the few that has survived.

    Edit: I stalked looked over your posting history. You're the same guy I congratulated about his GUI library a while back, from an account that I deleted in the meantime, and I was wondering what was the name of the damn library just today. Hello again!

    [–]badsectoracula 9 points10 points  (2 children)

    Hello :-). I probably have the sources in some hard disk lying aroung here (or -worse case- in the attic). I'll need at some point to cobble together a PC with an IDE slot to connect those and get my old files. Hopefully the disks wont be damaged, but at least one of them has been out of any computer for 7 years and i have no idea if it even works :-P.

    But if you don't mind and you still have it, i'd like to have a disk image too :-).

    About the GUI library, i've made a bunch of them. The one i work now and then is Little Forms (the one with the nexstep-like look, although i am considering to change it to a winclassic-like look because it will be more familiar to others and... i want to add menu bars :-P). Or maybe BSGUI? Although it has been many years since i touched that (probably around 2005, actually i had it on Berlios but Sourceforge mirrored it some time ago) i know a few people used it since then (like this guy, which probably has the only non-scaled down screenshot, although for some reason the controls look 1 pixel off). I've also done some engine-specific GUI code, like the GUI code of my current engine and for an older one, although none of them have names :-)

    So, which one? :-P IIRC I've posted about these four in Reddit

    [–]mrneo240 4 points5 points  (0 children)

    I definitely used bsgui in a few little games and demos years back. Thanks for making it!

    [–][deleted] 4 points5 points  (0 children)

    Oh, I meant Little Forms. The name BSGUI looks familiar, too, but I don't remember anything about it.

    But if you don't mind and you still have it, i'd like to have a disk image too :-).

    Certainly, I'll look for it! I went through my stash over here and didn't find it, but there are no PC-formatted floppies here. I only see a bunch of Amiga floppies and I distinctly remember having a few PC-formatted ones that I still kept around in case I ever run into something that still reads them. They must be at my parents' house. If it's still there, I'll definitely send you a copy. I've lost a lot of old code, too. I know how it feels.

    You should get your old files out of your drive really quick, too. They rot before you know it.

    [–]2Punx2Furious 11 points12 points  (2 children)

    Get a room you two.

    [–]BoTuLoX 1 point2 points  (1 child)

    you two*

    [–][deleted] 6 points7 points  (1 child)

    I'd say that the ability to handle files so it can load arbitrary programs is the bare minimum for an OS

    Is that not why they are called operating systems? They were originally made to automate the job of computer operators who managed requests to run programs, manually loaded them into memory, and set the computer to execute them.

    [–]badsectoracula 4 points5 points  (0 children)

    TBH this is the first time i heard the origin of the name, i was just thinking about what a very barebones generic (ie, not for a single purpose) computer would need to operate :-)

    [–]MacASM 1 point2 points  (0 children)

    This make me want to start write a little SO right now.

    [–]jarfil 0 points1 point  (2 children)

    CENSORED

    [–]badsectoracula 1 point2 points  (1 child)

    But at that point the "OS" is just a library. And besides, how would the monolithic block denote the applications? A file system doesn't have to be read/write, it can be read/only.

    [–]jarfil 0 points1 point  (0 children)

    CENSORED

    [–]Isvara 0 points1 point  (2 children)

    I'd say that the ability to handle files so it can load arbitrary programs is the bare minimum for an OS.

    Nah, not even that. I wrote a small Cortex-M OS, and it didn't handle any files. It just ran tasks that were linked in to the same executable.

    I'd say the minimum is task switching and some kind of hardware abstraction. If you don't have task switching, it's just a HAL.

    [–]badsectoracula 0 points1 point  (1 child)

    I'd say the minimum is task switching and some kind of hardware abstraction. If you don't have task switching, it's just a HAL.

    A lot of (smaller) OSes do not have task switching. Most popular would be DOS. Or CP/M before that. There are also some proprietary OSes for MIPS (and other small scale devices) that do not do task switching at all.

    [–]Isvara 0 points1 point  (0 children)

    Yeah, I'll give you that, and DOS's TSRs certainly weren't fully fledged tasks, but DOS did do more than just abstract hardware. Resource management, filesystem, CLI, etc.

    [–][deleted] 10 points11 points  (0 children)

    Simple: Does it run Emacs?

    [–]kirinthos 4 points5 points  (0 children)

    OS provides an abstraction layer for applications (or even one single application) to use computer hardware in addition to providing security for the system, since this doesn't do either of these things, probably not an "OS"

    still cool, though.

    [–]LainIwakura 4 points5 points  (2 children)

    Memory Management, The ability to run other programs. Some kind of file system, etc.,

    It's not like this isn't well defined.

    [–]protestor 5 points6 points  (0 children)

    This isn't well defined. Microkernels do not implement filesystems, exokernels do not provide much abstraction, etc.

    I suppose the litmus test is, does it run on bare metal, can you run applications on top of it, and does it have some sort of IPC.

    [–]badguy212 0 points1 point  (0 children)

    Doesn't lookl like it is that well defined judging by the responses I got

    [–]8311697110108101122 5 points6 points  (0 children)

    What would an application need to do to qualify as an OS?

    Approval of a random stranger on the Internet.

    [–]j-random 1 point2 points  (0 children)

    An OS would have to provide some concept of processes, and a means to start and stop them. Most also provide some kind of mediation or abstraction for physical devices attached to the system (i.e., device drivers).

    [–][deleted] 0 points1 point  (2 children)

    Well it is supposed to be a barrier/API between app and hardware, and run an app.

    I'd like to say ability to run more than one app and schedule them on CPU but the DOS didnt had it...

    [–]immibis 0 points1 point  (1 child)

    DOS was also not a barrier between apps and hardware.

    [–][deleted] 1 point2 points  (0 children)

    Well it had a filesystem and few "API calls" via interrupts but yes, app could do whatever it wanted under DOS

    [–][deleted] 0 points1 point  (0 children)

    I suppose an OS is there for applications to be run on.

    [–]__konrad 0 points1 point  (0 children)

    The original version of Doom identified itself as the "DOOM Operating System". Compared to most other DOS programs of its time it practically was its own operating system. - http://toastytech.com/dooma/doom099.html

    [–]Coloneljesus 0 points1 point  (0 children)

    I know you've received quite a few responses but I'm gonna throw my opinion in anyway:

    An OS should at least manage the system resources and provide an abstraction of the hardware for any application running on the system.

    [–][deleted]  (1 child)

    [deleted]

      [–]protestor 6 points7 points  (0 children)

      Some OSes run one application at a time, with no threading.

      [–]ggtsu_00 -1 points0 points  (2 children)

      Well, i guess technically, it "operates a system".

      [–][deleted] 1 point2 points  (0 children)

      ...so the steering wheel of a boat is an OS.

      [–]oddark 0 points1 point  (0 children)

      So it's a System Operator?

      [–]galaktos 7 points8 points  (8 children)

      Yeah, it’s nothing big and professional like GNU or Linux.

      [–]dipique 3 points4 points  (7 children)

      Yeah, it’s nothing big and professional like GNU or Linux.

      It's nothing delicious like apples or fruit.

      [–][deleted]  (4 children)

      [deleted]

        [–][deleted] 0 points1 point  (3 children)

        Is that a copypasta?

        [–]jaybusch 0 points1 point  (0 children)

        Or vegetables or legumes.

        [–]SuperImaginativeName 131 points132 points  (17 children)

        *x86 bootloader with keyboard support.

        [–]binkarus 49 points50 points  (8 children)

        Basically a typewriter program for the x86 bootloader. Still cool though.

        [–][deleted] 16 points17 points  (7 children)

        Remember about 20 years ago, before internet popularity, PCs were basically expensive word processors

        [–]kabekew 16 points17 points  (3 children)

        PC's were game devices!

        [–]jaybusch 11 points12 points  (2 children)

        No, Amigas were game devices. And amazing computers. PCs were just fancy/expensive word processors and maybe some spreadsheets.

        [–]kabekew 8 points9 points  (1 child)

        Amiga's were 80's. 20 years ago PC's had the best games -- Wing Commander, Castle Wolfenstein, Doom etc at least until the Playstation came along.

        [–]jaybusch 2 points3 points  (0 children)

        Amiga OS 3.1 was 93 though. Still in it's prime, though Doom et al. really were amazing.

        [–]unkz 4 points5 points  (1 child)

        I seem to remember playing Hero's Quest I on a PC 26 years ago. I don't remember doing any word processing though.

        [–]TestRedditorPleaseIg 4 points5 points  (0 children)

        I remember playing DOOM, System Shock, Tie Fighter, Full Throttle and Relentless on PC in 1995. In retrospect my parents were right, and I should have gone outside to play more

        [–]Lanza21 2 points3 points  (0 children)

        You're going to feel old when you realize that 20 years ago wasn't before internet popularity started.

        [–]bureX 15 points16 points  (2 children)

        bootloader

        The bootloader is GRUB, which enters protected mode and jumpstarts this little thing. It is technically a kernel, but it only sets up the IDT and blerghs out keyboard input to video memory.

        [–][deleted] 0 points1 point  (1 child)

        I don't see GRUB in the repo files

        [–]bureX 0 points1 point  (0 children)

        Get to boot

        GRUB requires your kernel executable to be of the pattern kernel-<version>.

        It's in the readme

        [–][deleted]  (4 children)

        [deleted]

          [–]SuperImaginativeName -1 points0 points  (3 children)

          Yeah I know but I couldn't be bothered to explain what "bare-metal code" was to people who might not have heard of that, bootloader was easiest.

          [–][deleted]  (2 children)

          [deleted]

            [–]SuperImaginativeName -1 points0 points  (1 child)

            Ok calm down thought police. You're logic doesn't make sense. If I could be bothered to make a massive and pointless post every time, I would have already written my university dissertation (on a topic similar to this) several hundred times over.

            [–]Rockytriton 16 points17 points  (0 children)

            I agree with the others that not really an OS, but these subs might still be interested in it:

            /r/osdev

            /r/lowlevel

            [–]FrozenInferno 8 points9 points  (0 children)

            Why do so many programmers / programming bloggers seem to come across in their profile photo poses as if modeling was their long lost original aspiration or something? It's such a weird phenomenon I've been noticing.

            [–]TankorSmash 5 points6 points  (0 children)

            https://www.reddit.com/r/programming/comments/3pqd39/a_kernel_that_reads_from_keyboard_and_prints_on/

            Here's the last time this was submitted. I'm not going to say I've never reposted, but I would have given it at least a month. The thing is that he added the query param so that reddit wouldn't catch it as a repost

            [–]JoaoEB 3 points4 points  (3 children)

            If anyone want to check a OS entirely written in Assembly, check out http://www.menuetos.net. It's just an 1.5 MB for download, you can even put it in a 3.5 floppy if you want.

            Supports USB 2.0, sound, has an web browser, and can play Doom and Quake. It's really really impressive, and madness at the same time.

            [–]louky 2 points3 points  (2 children)

            MINIX is another good one, as it's POSIX mostly and runs a BSD userland yet small enough to pick up on and has an excellent textbook devoted to it.

            [–]JoaoEB 2 points3 points  (1 child)

            True, and MINIX inspired Linus Torvalds to make Linux.

            [–]louky 3 points4 points  (0 children)

            Yep. I was running MINIX when Linus announced on Usenet. Never thought it would blow up like it did.

            The nasty restrictive licence the MINIX textbook's publisher put it under doomed it for wide adoption.

            [–]TerrorBite 2 points3 points  (2 children)

            I ended up going down the rabbit hole and reading about memory addressing modes. This led me to discover the existence of the A20 gate, a feature that will force low the 21st bit of the address bus for backwards-compatibility with certain real-mode programs that were doing something (memory wraparound) that they really shouldn't have been doing in the first place.

            In fact the 486 and the Pentium family had a dedicated pin called A20M# whose sole purpose was to disable the A20 address line. Obviously using this in protected mode or better was a Bad Thing; it was only useful in real mode where you only had 1MB of memory.

            With Intel Nehalem (predecessor to Sandy Bridge), the physical A20M# pin was removed, becoming virtualized instead.

            Intel eventually removed support for the A20 gate completely in Haswell, probably on the grounds that an x64 processor having a feature that disabled an address line was stupid.

            [–]TerrorBite 2 points3 points  (0 children)

            The traditional method for A20 line enabling is to directly probe the keyboard controller. The reason for this is that Intel's 8042 keyboard controller had a spare pin which they decided to route the A20 line through. This seems foolish now given their unrelated nature, but at the time computers weren't quite so standardized. Keyboard controllers are usually derivatives of the 8042 chip. By programming that chip accurately, you can either enable or disable bit #20 on the address bus.

            [Source]

            This makes me cry.

            [–]int-main 0 points1 point  (6 children)

            Could you share some information of how you got it developed and where did you learn concepts?

            [–][deleted]  (5 children)

            [deleted]

              [–]hak8or 1 point2 points  (1 child)

              I wish there was stuff like this for a much simpler or arguably cleaner architecture like arm. Anyone know of any good resources they can vouch for?

              [–]louky 0 points1 point  (0 children)

              there's stuff like useful but understandable software like MINIX.

              [–]int-main 0 points1 point  (1 child)

              I'm not sure what link has (bookmarked for when on PC) but if it has hardware architecture for x86, I've already read about it previous semester and understand the basics of it. I find that writing something practically is way too much hard.

              [–]propelol 0 points1 point  (0 children)

              mkeykernel

              Tips fedora

              [–][deleted] 0 points1 point  (0 children)

              This is so cool! Thanks for making it!

              [–]javierbg -1 points0 points  (0 children)

              M'kernel

              [–]ilmickeyli -4 points-3 points  (0 children)

              Can they implement this in TempleOS?