6 ms·
> The 80376 doesn’t do paging. Wait - what? How is that even possible? Do they simply not have an MMU? That makes it unsuitable for both old OSes and for new O
by johnklos 4y ago
> The 80376 doesn’t do paging.
Wait - what? How is that even possible? Do they simply not have an MMU? That makes it unsuitable for both old OSes and for new OSes. No wonder it was so uncommon.
- anyfoo 4y agoIt claims itself as an "embedded" processor, so it likely just wasn't meant to run PC OSes. According to Wikipedia at least, Intel did not even expect the 286 to be used for PCs, but for things such as PBXs. And ARM Cortex M still doesn't have an MMU either, for some applications you can just do without. Especially because both the 286 and this 376 beast did have segmentation, which could subsume some of the need for an MMU (separated address spaces, if you don't need paging and are content with e.g. buddy allocation for dividing available memory among tasks).
- deleted 4y ago[deleted]
- marssaxman 4y agoIt is very common for embedded systems processors not to have an MMU. If it ran any OS at all it would likely have been some kind of RTOS.
- blueflow 4y agoUsing paging/virtual memory is not a requirement for an OS, even when all currently popular OSes make use of it. Intel CPUs before the 80286 did not have an MMU, either.
- anyfoo 4y agoDid they even call it an MMU already? The 286 only had segmentation, which arguably is just an addressing mode. It introduced descriptors that had to be resolved, but that happened when selecting the descriptor (i.e. when loading the segment register), where a hidden base, limit, and permission "cache" was updated. Unlike paging, where things are resolved when accessing memory.
- actionfromafar 4y agoI don't know what to call it, but Minix on 286 had protection between processes. (Each process had its own 64k instruction + 64k data, IIRC.) So effectively the same result as an MMU. But Minix is the only OS I know of which used this mode.
- anyfoo 4y agoYes, that's segmentation. And I was just wondering if you could call that an MMU. It's not the same result as an MMU across the board, since you have no paging: You cannot freely rearrange pages in virtual memory with their frames in physical memory, you can only "segment" linear portions of physical memory. You also cannot fault in pages on-demand at their time of being accessed, only when the whole segment is loaded (i.e. the selector written into the segment register). If an MMU is something that sits between memory and the rest of the CPU, and abstracts physical addressing away, then I argue the 286 did not have an MMU. Segmented access is more of a mandatory addressing mode, where you always access relatively to a segment's base, and have to keep within the limit. OS/2 is another OS that made use of pre-paging 286 protected mode.
- nineteen999 4y agoWikipedia refers to it as having on-chip MMU "capabilities", albeit only supporting segmentation and not paging: "The 286 was the first of the x86 CPU family to support protected virtual-address mode, commonly called "protected mode". In addition, it was the first commercially available microprocessor with on-chip MMU capabilities (systems using the contemporaneous Motorola 68010 and NS320xx could be equipped with an optional MMU controller). This would allow IBM compatibles to have advanced multitasking OSes for the first time and compete in the Unix-dominated[citation needed] server/workstation market."
- anyfoo 4y agoThanks, but I don't think I would call what the 286 had "virtual-address mode". Intel themselves referred to "virtual addresses" only in the context of paging in their 386 manual. Addresses relative to segmentation were called "logical addresses", and they translate to "linear addresses". That Wikipedia passage seems to be inaccurate, or a least not use the common terminology.
- toast0 4y agoI'm writing a hobby OS and while I am using the MMU, all of my virtual addresses are actually physical addresses too, but the MMU helps my system crash when I've broken something leading to accessing unmapped memory. If there were no MMU, I'd just have to do things right, or debug strange behavior rather than page faults.