Sujet : Re: Address bits again, Article on new mainframe use
De : anton (at) *nospam* mips.complang.tuwien.ac.at (Anton Ertl)
Groupes : comp.archDate : 13. Sep 2024, 09:13:16
Autres entêtes
Organisation : Institut fuer Computersprachen, Technische Universitaet Wien
Message-ID : <2024Sep13.101316@mips.complang.tuwien.ac.at>
References : 1 2 3 4 5
User-Agent : xrn 10.11
John Levine <
johnl@taugh.com> writes:
According to Michael S <already5chosen@yahoo.com>:
x86 Real mode segmentation is a hack to the address space. 80286
protected mode segmentation is something else. The only similarity
between the two is maximal size of segment is the same.
>
The 386 had 32 bit segments which should have made segmented code
practical and efficient and allowed giant programs with lots of
gigabyte segments. But Intel shot themselves in the foot. One problem
was that loading a segment register to switch segments remained
extremely slow so you still needed to write your program to avoid
doing so.
Yes, that was certainly a problem for those willing to use segments.
The question is if many people were willing. My impression is that
people were not really willing to use them on the 80286, and 4GB
segments would not have changed that.
The other was that they mapped all the segments into a 32 bit linear
address space, and paged the linear address space. That meant that
the total size of all active segments had to fit into 4GB, at which
point people said fine, whatever, set all the segment registers to
map a single 4GB segment onto the linear address space and used it as
a flat address machine.
That was not a problem while the 386 was current. It could also only
deal with 4GB of physical RAM, and the 386 machines I had contact with
had at most 8MB of RAM; there were bigger systems around, but not
being able to use more then 4GB was not a problem at the time. If the
reason for using segments would have been to be able to address more
memory, then going to 64 bits was certainly the better answer (and
that was taken eventually).
By contrast, if the reason for segments is that you want to use them
for memory safety, then two other properties of the 386 were not so
great:
* Only 8192 segments IIRC (hmm, what do the other 3 bits in a segment
register do?); that was ok while memories were small, but if you
want to have a segment for each C object, you quickly run out of
segments with programs that, say, build trees using malloc()ed
memory or such (even a tree with 8193 nodes would run out of
segments).
* IIRC the segment size has a pretty large granularity (however,
<
https://en.wikipedia.org/wiki/X86_memory_segmentation#80286_protected_mode>
says that the segments are limited to 16MB of size; maybe it was
either the size limit or the large granularity), which is not so
great.
I once read the "Intel 386 Microprocessor oral history panel : design
and development"
<
https://www.computerhistory.org/collections/catalog/102702019>. My
impression from reading that is that they actually wanted a flat
memory space, but were damned to do a followup for the 80286, so what
they did was something that allowed OS designers to provide a flat
address space, and also extended 80286 segments to 32 bits, without
too much implementation cost. I think they did well.
Having a separate page table per segment as you suggest elsewhere
would have slowed down segments even more, for no gain in the 386's
day. If more virtual memory per process was desired, a future
extension could have been to have a different way to construct the
linear address (e.g., using a larger segment descriptor that contains
a 52-bit base address or somesuch), and then use paging for the linear
address with PAE. If segments had been embraced by software
developers, eventually one would have had something AMD64-like, with
segment descriptors with 64-bit base addresses and 64-bit limits, and
64-bit segment registers.
- anton
-- 'Anyone trying for "industrial quality" ISA should avoid undefined behavior.' Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
Date | Sujet | # | | Auteur |
14 Aug 24 | Article on new mainframe use | 132 | | Stephen Fuld |
14 Aug 24 | Re: Article on new mainframe use | 124 | | MitchAlsup1 |
15 Aug 24 | Re: Article on new mainframe use | 123 | | George Neuner |
15 Aug 24 | Re: Article on new mainframe use | 1 | | Stephen Fuld |
15 Aug 24 | Re: Article on new mainframe use | 121 | | MitchAlsup1 |
15 Aug 24 | Re: Article on new mainframe use | 1 | | Stephen Fuld |
15 Aug 24 | Re: Article on new mainframe use | 118 | | Niklas Holsti |
16 Aug 24 | Re: Article on new mainframe use | 117 | | Lawrence D'Oliveiro |
16 Aug 24 | Re: COBOL, Article on new mainframe use | 30 | | John Levine |
17 Aug 24 | Re: COBOL, Article on new mainframe use | 5 | | Lawrence D'Oliveiro |
17 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | John Levine |
17 Aug 24 | Re: COBOL, Article on new mainframe use | 3 | | Keith Thompson |
18 Aug 24 | Re: coroutines in COBOL, Article on new mainframe use | 2 | | John Levine |
18 Aug 24 | Re: coroutines in COBOL, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
18 Aug 24 | Re: COBOL, Article on new mainframe use | 24 | | OrangeFish |
18 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | John Levine |
18 Aug 24 | Re: COBOL, Article on new mainframe use | 22 | | John Dallman |
18 Aug 24 | Re: COBOL, Article on new mainframe use | 14 | | MitchAlsup1 |
19 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | John Dallman |
23 Aug 24 | Re: COBOL, Article on new mainframe use | 12 | | Terje Mathisen |
23 Aug 24 | Re: COBOL, Article on new mainframe use | 11 | | Michael S |
23 Aug 24 | Re: COBOL, Article on new mainframe use | 10 | | Terje Mathisen |
23 Aug 24 | Re: COBOL, Article on new mainframe use | 9 | | Michael S |
23 Aug 24 | Re: COBOL, Article on new mainframe use | 6 | | John Levine |
24 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
27 Aug 24 | Re: COBOL, Article on new mainframe use | 4 | | Keith Thompson |
28 Aug 24 | Re: COBOL, Article on new mainframe use | 3 | | MitchAlsup1 |
28 Aug 24 | Re: COBOL, Article on new mainframe use | 2 | | Keith Thompson |
2 Sep 24 | Re: COBOL, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
24 Aug 24 | Re: COBOL, Article on new mainframe use | 2 | | John Dallman |
28 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
19 Aug 24 | Re: COBOL, Article on new mainframe use | 7 | | Lawrence D'Oliveiro |
19 Aug 24 | Re: COBOL, Article on new mainframe use | 6 | | John Levine |
21 Aug 24 | Re: COBOL, Article on new mainframe use | 5 | | Lawrence D'Oliveiro |
21 Aug 24 | Re: COBOL, Article on new mainframe use | 4 | | Keith Thompson |
21 Aug 24 | Re: COBOL, Article on new mainframe use | 3 | | MitchAlsup1 |
21 Aug 24 | Re: COBOL, Article on new mainframe use | 1 | | Keith Thompson |
2 Sep 24 | Re: COBOL, Article on new mainframe use | 1 | | Tim Rentsch |
16 Aug 24 | Re: Article on new mainframe use | 82 | | George Neuner |
22 Aug 24 | Re: Article on new mainframe use | 81 | | BGB |
23 Aug 24 | Re: Article on new mainframe use | 1 | | Stephen Fuld |
23 Aug 24 | Re: Article on new mainframe use | 79 | | Lawrence D'Oliveiro |
23 Aug 24 | Re: Article on new mainframe use | 77 | | BGB |
23 Aug 24 | Re: libraries, was Article on new mainframe use | 1 | | John Levine |
24 Aug 24 | Re: Article on new mainframe use | 75 | | Lawrence D'Oliveiro |
24 Aug 24 | Re: Article on new mainframe use | 1 | | BGB |
24 Aug 24 | Re: Article on new mainframe use | 73 | | John Levine |
28 Aug 24 | Re: Article on new mainframe use | 70 | | Lawrence D'Oliveiro |
29 Aug 24 | Re: Article on new mainframe use | 69 | | John Levine |
30 Aug 24 | Re: Article on new mainframe use | 68 | | Lawrence D'Oliveiro |
30 Aug 24 | Re: Article on new mainframe use | 67 | | Michael S |
30 Aug 24 | Re: Article on new mainframe use | 12 | | John Levine |
30 Aug 24 | Re: tiny COBOL, Article on new mainframe use | 11 | | John Levine |
31 Aug 24 | Re: tiny COBOL, Article on new mainframe use | 8 | | Stefan Monnier |
31 Aug 24 | Re: tiny COBOL, Article on new mainframe use | 5 | | Thomas Koenig |
2 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 4 | | Terje Mathisen |
2 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 2 | | Thomas Koenig |
2 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 1 | | Anssi Saari |
2 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 1 | | Anton Ertl |
31 Aug 24 | Re: tiny COBOL, Article on new mainframe use | 1 | | Anton Ertl |
31 Aug 24 | Re: tiny COBOL, Article on new mainframe use | 1 | | George Neuner |
2 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 2 | | Lawrence D'Oliveiro |
4 Sep 24 | Re: tiny COBOL, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
1 Sep 24 | Re: Article on new mainframe use | 6 | | Lawrence D'Oliveiro |
1 Sep 24 | Re: COBOL history, Article on new mainframe use | 3 | | John Levine |
1 Sep 24 | Re: COBOL history, Article on new mainframe use | 1 | | Lynn Wheeler |
2 Sep 24 | Re: COBOL history, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
1 Sep 24 | Re: Article on new mainframe use | 2 | | John Dallman |
2 Sep 24 | Re: Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
1 Sep 24 | Re: Article on new mainframe use | 48 | | Lawrence D'Oliveiro |
1 Sep 24 | Re: Article on new mainframe use | 47 | | MitchAlsup1 |
2 Sep 24 | Re: Article on new mainframe use | 46 | | Lawrence D'Oliveiro |
2 Sep 24 | Re: Address bits again, Article on new mainframe use | 45 | | John Levine |
2 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Thomas Koenig |
2 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Stephen Fuld |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 42 | | Lawrence D'Oliveiro |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 2 | | Terje Mathisen |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 39 | | John Levine |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 37 | | John Dallman |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | MitchAlsup1 |
5 Sep 24 | transparent huge pages (was: Address bits again) | 4 | | Anton Ertl |
5 Sep 24 | Re: transparent huge pages | 1 | | MitchAlsup1 |
5 Sep 24 | Re: transparent huge pages | 1 | | Chris M. Thomasson |
8 Sep 24 | Re: transparent huge pages (was: Address bits again) | 1 | | Lawrence D'Oliveiro |
5 Sep 24 | Re: Address bits again, Article on new mainframe use | 31 | | John Levine |
8 Sep 24 | Re: Address bits again, Article on new mainframe use | 30 | | Lawrence D'Oliveiro |
8 Sep 24 | Re: Address bits again, Article on new mainframe use | 29 | | MitchAlsup1 |
8 Sep 24 | Re: Address bits again, Article on new mainframe use | 4 | | MitchAlsup1 |
8 Sep 24 | Re: Address bits again, Article on new mainframe use | 3 | | Chris M. Thomasson |
9 Sep 24 | Re: Address bits again, Article on new mainframe use | 2 | | Lawrence D'Oliveiro |
9 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Chris M. Thomasson |
9 Sep 24 | Re: Address bits again, Article on new mainframe use | 24 | | Lawrence D'Oliveiro |
9 Sep 24 | Re: Address bits again, Article on new mainframe use | 23 | | MitchAlsup1 |
10 Sep 24 | Re: Address bits again, Article on new mainframe use | 22 | | Lawrence D'Oliveiro |
11 Sep 24 | Re: Address bits again, Article on new mainframe use | 2 | | John Levine |
11 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
11 Sep 24 | Re: Address bits again, Article on new mainframe use | 19 | | MitchAlsup1 |
12 Sep 24 | Re: Address bits again, Article on new mainframe use | 18 | | Lawrence D'Oliveiro |
12 Sep 24 | Re: Address bits again, Article on new mainframe use | 17 | | Lars Poulsen |
12 Sep 24 | Re: Address bits again, Article on new mainframe use | 13 | | Lawrence D'Oliveiro |
13 Sep 24 | Re: Address bits again, Article on new mainframe use | 3 | | George Neuner |
4 Sep 24 | Re: Address bits again, Article on new mainframe use | 1 | | Lawrence D'Oliveiro |
28 Aug 24 | Re: Article on new mainframe use | 2 | | Lawrence D'Oliveiro |
23 Aug 24 | Re: Article on new mainframe use | 1 | | George Neuner |
16 Aug 24 | Re: Article on new mainframe use | 4 | | Lynn Wheeler |
15 Aug 24 | Re: Article on new mainframe use | 1 | | Thomas Koenig |
15 Aug 24 | Re: Article on new mainframe use | 7 | | Lawrence D'Oliveiro |