From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: 8086 memory space Newsgroups: alt.folklore.computers Date: Wed, 19 Jan 2005 18:54:37 -0700Brian Inglis writes:
a small secuser posting from vmshare archive from 1/12/83:
http://vm.marist.edu/~vmshare/browse.cgi?fn=SECUSER&ft=NOTE
misc other secuser postings
http://vm.marist.edu/~vmshare/browse.cgi?fn=SEND&ft=NOTE
http://vm.marist.edu/~vmshare/browse.cgi?fn=SPY&ft=NOTE
http://vm.marist.edu/~vmshare/browse.cgi?fn=TMON&ft=NOTE
http://vm.marist.edu/~vmshare/browse.cgi?fn=XASETSEC&ft=NOTE
http://vm.marist.edu/~vmshare/browse.cgi?fn=PIPE95&ft=NOTE
PROP (PRogrammable OPerator showed up in the early 80s) misc. PROP
discussion starting in 83
http://vm.marist.edu/~vmshare/browse.cgi?fn=PROP&ft=MEMO
http://vm.marist.edu/~vmshare/browse.cgi?fn=NO:OPER&ft=MEMO
some discussion from vm/esa mailing list:
http://listserv.uark.edu/scripts/wa.exe?A2=ind9908&L=vmesa-l&F=&S=&P=8551
current programmable operator description from the administrative and
planning guide:
http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/hcsg2a00/5.0?DT=20020402142448
standard/default virtual machine for PROP is the OPERATOR virtual machine.
and for something (almost) completely different:
http://www-1.ibm.com/servers/eserver/xseries/systems_management/xseries_sm/vmm.html
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Foreign key in Oracle Sql Newsgroups: comp.databases.theory,alt.folklore.computers Date: Wed, 19 Jan 2005 19:50:54 -0700DA Morgan writes:
however, in disucssions with one of the people in the following meeting
https://www.garlic.com/~lynn/95.html#13
who had been working at STL at the time, he claims to have almost single handed managed the transfer of the sql/ds code from endicott back to stl (for db2).
however, there is lots of work done on that code after it reached stl ... both by people in stl and multiple people at sjr/bldg28 having worked on system/r (as well as code that was adapted from other projects).
lots of past system/r references/posts
https://www.garlic.com/~lynn/submain.html#systemr
of course there is the sequal reunion web site:
http://www.mcjones.org/System_R/
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95.html
a couple specific items about DB2 from the above index:
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-SQL_DS.html#Index287
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-SQL_DS.html#Index290
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-DB2.html#Index339
some discussion of other code that went into DB2
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-Spreadin.html#Index271
there were lots of stuff going on in that period, epstein had graduated from berkeley (out of the ingres project) and was CTO at BLI ... which had a lot of machines in the market. he left BLI to go first to teradata and then form sybase. when he left bli, there were some number of BLI people lurking(?) around bldg.28 to backfill epstain's position. One of the luckers(?) had been a disk engineer at the plant site in the 60s and had been snarfed up in the Shugart raids ... they may have even been having meetings at some of the same locations that Shugart had used (anyway i had some number of after work meetings about whether to leave or not to leave).
minor epstein reference .... the two BLI name sakes had most recently
come out of memorex:
https://en.wikipedia.org/wiki/Ingres
some discussion from the sql reunion site:
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-Teradata.html
one of my shugart references:
https://www.garlic.com/~lynn/2002.html#17 index searching
there was from scratch open system rdbms done for os2 & aix (i believe code named shelby, circa 1989, primarily at the time focused on os2) that was also announced as db2. some of the shelby stuff was also tied up w/transarc (aka cmu camelot).
now from the dlm work that we had done somewhat implied in this
description
https://www.garlic.com/~lynn/95.html#13
there were a couple people working on (mainframe) db2 that commented that if we actually did that w/oracle ... it would put things five years ahead of where they were.
and totally unrelated to most anything
http://www.sleepycat.com/company/management.shtml
and one of the people mentioned in the above reference
also did consulting work on ha/cmp project
https://www.garlic.com/~lynn/subtopic.html#hacmp
and for even stranger reference:
http://dune.mcs.kent.edu/~farrell/sa96/notes/sendmail/usenix.html
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Thu, 20 Jan 2005 09:47:44 -0700CBFalconer writes:
i was trying to deal with the problem from a structure that was basically os/360 conventions with relocatable adcons .... a feature of executable binaries when stored on disk ... and which would be updated with fixed addresses when the binaries were brought into memory for execution. the problem was that the embedded fixed addressess would be unique to specific location of the executable binary. basically i had to make addresses relative to value that could be calculated on the fly.
not quite ten years earlier, tss/360 had dealt with the issue by separating the code and addresses (as data) ... and that the addresses could be located in private memory area separate from the instruction.
there were other systems from the 60s that also addressed the same issue.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [OT?] FBI Virtual Case File is even possible? Newsgroups: comp.arch Date: Thu, 20 Jan 2005 12:35:01 -0700eugene@cse.ucsc.edu (Eugene Miya) writes:
with historical reference to one of those agencies ... this has
embedded prior post that also makes obtuse reference to one such
agency.
https://www.garlic.com/~lynn/2005b.html#1
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Thu, 20 Jan 2005 12:50:04 -0700CBFalconer writes:
there was administrative bookkeeping kept at the end of each such file that listed the location (within the program) of each such address constant and some (possibly symbolic) information on how to initialize the address constant when the program was loaded into memory. This administrative information was commonly referred to as relocatable adcons (ADdress Constants) .... but they actually became fixed address constants at the time the program was loaded into memory for actual execution (aka the executable image out on disk and the executable image resident in memory tended to defer at least by the swizzling that went on for such address constants).
so 360 hardware architecture went to all the trouble of making instruction execution relocatable ... and then, effectively, the os/360 software guys took some short cuts and established conventions making the actually executable images in memory bound to fixed address location.
tss/360 was a parallel operating system effort that was targeted at time-sharing (aka TSS .. Time Sharing System) designed for 360/67 ... which was the only 360 with virtual memory capability. tss/360 operating system conventions went a lot further towards trying to make sure that the executable image on disk was exactly the same executable image running in memory ... and preserving the relocatable 360 hardware instruction paradigm.
In os/360 operating system convention the "relocatble address constants" that were sprinkled thru-out the binary image on disk had to be swizzled as part of bringing the image into memory for execution (and at the same time bound the in-memory image to a specific address).
TSS/360 had a one-level store, page-mapped orientation ... much more orientated towards what was on disk and what was in memory would be identical (and address independent).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Thu, 20 Jan 2005 18:10:23 -0700glen herrmannsfeldt writes:
BALR R12,0 USING *,R12assembler convention and could also be used by compilers. Normally, branch-and-link was used for calls to subroutines with the supplied to branch address ... and at the same time saving the address of where the call came from. The above sequence was special case of branch-and-link, where it didn't actually take any branch but did establish the current address in a register (w/o requiring any address constant).
a fairly typical os/360 calling convention is something like:
L R15,=A(subroutine) BALR R14,R15or
L R15,=V(subroutine) BALR R14,R15where =A(subroutine) and =V(subroutine) become address constants that are internal to the program. In standard os/360, address constants are embedded inside the program and administrative detail is added at the end of the program which the program loader uses to swizzle all address constants to their absolute value when the program is loaded.
While the standard hardware didn't provide relocation of base registers .... it did provide the BALR convention of establishing an address on the fly w/o requiring (fixed) address constant and it didn't preclude software conventions that avoided the use of fixed address constants embedded in the executable image of the code.
TSS/360 created a different type of convention where on entry to a program, certain registers had preloaded values ... one of the registers contains a pointer to block of storage outside the executable code image ... where various things like address constants were located. The other convention was something like this
L R15,=V(subroutine-executablebase) AR R15,R12 BALR R14,R15Where R12 contains "executablebase" for situation invoving displacements larger than 12bits. In os/360 terms, the value =A(subroutine-executablebase) is an absolute address constant (not a relocatible address constant requiring swizzle at program load) .... amd would be the same/constant value, regardless of the address that the program image was loaded. I used the above convention a lot in the early 70s for relocable shared segments.
One argument for =V(subroutine) address constant was that there was effectively "early binding" of the address (performed at program load time) ... and saved a register (assigning extra register for the convention) as well as saving an instruction in each calling sequence.
Now there were 360 machines that did have some additional relocation provided (not the virtual memory kind found in 360/67). System engineer on boeing account adapted a version of cp/67 (normally using paged virtual memory) to run on 360/50(?). My understanding is the 360/50 had something that I think was referred to as a DIL instruction (not part of standard 360 instruction operation) that was used in conjunction with some emulation packages (7090?) that allowed specification of base&bound .... basically a base value that the hardware added to all address calculations and then checked against the a bound value. This allowed simple contiguous address relocation (and required swapping of whole address space ... rather than the more granular paging available on 360/67.
This would be more akin to the current mainframe implementation of hardware supported virtual machines called LPARS (logical partitions) where physical memory can be partitioned into logical contiguous areas. No swapping or paging is supported by the hardware microcode for LPARs ... just the (relative) static partitioning of available physical memory. LPARS started out sort of being a significant subset of the mainframe virtual machine operating system support dropped into the hardware of the mainframe.
mainframe logical partition getting eal5 certification:
http://www-1.ibm.com/servers/eserver/zseries/security/eal5_ac.html
LPAR support even has extended to non-mainframes:
http://www-1.ibm.com/servers/eserver/iseries/lpar/
http://www-1.ibm.com/servers/eserver/pseries/lpar/
http://www-1.ibm.com/servers/eserver/pseries/lpar/faq_2.html
lots of past posts mentioning LPARs:
https://www.garlic.com/~lynn/98.html#45 Why can't more CPUs virtualize themselves?
https://www.garlic.com/~lynn/98.html#57 Reliability and SMPs
https://www.garlic.com/~lynn/99.html#191 Merced Processor Support at it again
https://www.garlic.com/~lynn/2000b.html#50 VM (not VMS or Virtual Machine, the IBM sort)
https://www.garlic.com/~lynn/2000b.html#51 VM (not VMS or Virtual Machine, the IBM sort)
https://www.garlic.com/~lynn/2000b.html#52 VM (not VMS or Virtual Machine, the IBM sort)
https://www.garlic.com/~lynn/2000b.html#61 VM (not VMS or Virtual Machine, the IBM sort)
https://www.garlic.com/~lynn/2000b.html#62 VM (not VMS or Virtual Machine, the IBM sort)
https://www.garlic.com/~lynn/2000c.html#8 IBM Linux
https://www.garlic.com/~lynn/2000c.html#50 Does the word "mainframe" still have a meaning?
https://www.garlic.com/~lynn/2000c.html#68 Does the word "mainframe" still have a meaning?
https://www.garlic.com/~lynn/2000c.html#76 Is a VAX a mainframe?
https://www.garlic.com/~lynn/2000f.html#78 TSS ancient history, was X86 ultimate CISC? designs)
https://www.garlic.com/~lynn/2000g.html#3 virtualizable 360, was TSS ancient history
https://www.garlic.com/~lynn/2000.html#8 Computer of the century
https://www.garlic.com/~lynn/2000.html#63 Mainframe operating systems
https://www.garlic.com/~lynn/2000.html#86 Ux's good points.
https://www.garlic.com/~lynn/2001b.html#72 Z/90, S/390, 370/ESA (slightly off topic)
https://www.garlic.com/~lynn/2001d.html#67 Pentium 4 Prefetch engine?
https://www.garlic.com/~lynn/2001e.html#5 SIMTICS
https://www.garlic.com/~lynn/2001e.html#61 Estimate JCL overhead
https://www.garlic.com/~lynn/2001f.html#17 Accounting systems ... still in use? (Do we still share?)
https://www.garlic.com/~lynn/2001f.html#23 MERT Operating System & Microkernels
https://www.garlic.com/~lynn/2001h.html#2 Alpha: an invitation to communicate
https://www.garlic.com/~lynn/2001h.html#33 D
https://www.garlic.com/~lynn/2001.html#34 Competitors to SABRE?
https://www.garlic.com/~lynn/2001l.html#24 mainframe question
https://www.garlic.com/~lynn/2001m.html#38 CMS under MVS
https://www.garlic.com/~lynn/2001n.html#26 Open Architectures ?
https://www.garlic.com/~lynn/2001n.html#31 Hercules etc. IBM not just missing a great opportunity...
https://www.garlic.com/~lynn/2001n.html#32 Hercules etc. IBM not just missing a great opportunity...
https://www.garlic.com/~lynn/2002b.html#44 PDP-10 Archive migration plan
https://www.garlic.com/~lynn/2002c.html#53 VAX, M68K complex instructions (was Re: Did Intel Bite Off More Than It Can Chew?)
https://www.garlic.com/~lynn/2002d.html#31 2 questions: diag 68 and calling convention
https://www.garlic.com/~lynn/2002e.html#25 Crazy idea: has it been done?
https://www.garlic.com/~lynn/2002e.html#75 Computers in Science Fiction
https://www.garlic.com/~lynn/2002f.html#6 Blade architectures
https://www.garlic.com/~lynn/2002f.html#57 IBM competes with Sun w/new Chips
https://www.garlic.com/~lynn/2002n.html#6 Tweaking old computers?
https://www.garlic.com/~lynn/2002n.html#27 why does wait state exist?
https://www.garlic.com/~lynn/2002n.html#28 why does wait state exist?
https://www.garlic.com/~lynn/2002o.html#0 Home mainframes
https://www.garlic.com/~lynn/2002o.html#15 Home mainframes
https://www.garlic.com/~lynn/2002o.html#16 Home mainframes
https://www.garlic.com/~lynn/2002o.html#18 Everything you wanted to know about z900 from IBM
https://www.garlic.com/~lynn/2002p.html#4 Running z/VM 4.3 in LPAR & guest v-r or v=f
https://www.garlic.com/~lynn/2002p.html#40 Linux paging
https://www.garlic.com/~lynn/2002p.html#44 Linux paging
https://www.garlic.com/~lynn/2002p.html#54 Newbie: Two quesions about mainframes
https://www.garlic.com/~lynn/2002p.html#55 Running z/VM 4.3 in LPAR & guest v-r or v=f
https://www.garlic.com/~lynn/2002q.html#26 LISTSERV Discussion List For USS Questions?
https://www.garlic.com/~lynn/2003c.html#41 How much overhead is "running another MVS LPAR" ?
https://www.garlic.com/~lynn/2003f.html#56 ECPS:VM DISPx instructions
https://www.garlic.com/~lynn/2003.html#9 Mainframe System Programmer/Administrator market demand?
https://www.garlic.com/~lynn/2003.html#14 vax6k.openecs.org rebirth
https://www.garlic.com/~lynn/2003.html#15 vax6k.openecs.org rebirth
https://www.garlic.com/~lynn/2003.html#56 Wild hardware idea
https://www.garlic.com/~lynn/2003k.html#9 What is timesharing, anyway?
https://www.garlic.com/~lynn/2003l.html#12 Why are there few viruses for UNIX/Linux systems?
https://www.garlic.com/~lynn/2003l.html#41 Secure OS Thoughts
https://www.garlic.com/~lynn/2003m.html#32 SR 15,15 was: IEFBR14 Problems
https://www.garlic.com/~lynn/2003m.html#37 S/360 undocumented instructions?
https://www.garlic.com/~lynn/2003n.html#13 CPUs with microcode ?
https://www.garlic.com/~lynn/2003n.html#29 Architect Mainframe system - books/guidenance
https://www.garlic.com/~lynn/2003o.html#52 Virtual Machine Concept
https://www.garlic.com/~lynn/2004b.html#58 Oldest running code
https://www.garlic.com/~lynn/2004c.html#4 OS Partitioning and security
https://www.garlic.com/~lynn/2004c.html#5 PSW Sampling
https://www.garlic.com/~lynn/2004d.html#6 Memory Affinity
https://www.garlic.com/~lynn/2004e.html#26 The attack of the killer mainframes
https://www.garlic.com/~lynn/2004e.html#28 The attack of the killer mainframes
https://www.garlic.com/~lynn/2004f.html#47 Infiniband - practicalities for small clusters
https://www.garlic.com/~lynn/2004g.html#15 Infiniband - practicalities for small clusters
https://www.garlic.com/~lynn/2004k.html#37 Wars against bad things
https://www.garlic.com/~lynn/2004k.html#43 Vintage computers are better than modern crap !
https://www.garlic.com/~lynn/2004m.html#41 EAL5
https://www.garlic.com/~lynn/2004n.html#10 RISCs too close to hardware?
https://www.garlic.com/~lynn/2004o.html#13 Integer types for 128-bit addressing
https://www.garlic.com/~lynn/2004o.html#32 What system Release do you use... OS390? z/os? I'm a Vendor S
https://www.garlic.com/~lynn/2004q.html#18 PR/SM Dynamic Time Slice calculation
https://www.garlic.com/~lynn/2004q.html#72 IUCV in VM/CMS
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,comp.security.unix Date: Thu, 20 Jan 2005 20:36:30 -0700daw@taverner.cs.berkeley.edu (David Wagner) writes:
in the tymshare version, i estimated possibly 30 percent of total pathlength was devoted to accounting ... aka was time-sharing service bureau and they were looking at platform to deliver 3rd party applications and provide (relatively) accurate charge backs to the originators (in addition to partitioning and isoloation)
in the keykos incarnation ... the fine-grain accounting was taken out and at one point they claimed ability to do higher transaction efficiencies than TPF (specialized transaction operating system that grew up from the airline control program ... also now used for major financial transaction systems) on the same exact hardware.
since then there has been a microprocessor variety done called eros that claims designed for EAL7 evaluation.
some current keykos references:
http://cap-lore.com/CapTheory/upenn/
http://www.agorics.com/Library/keykosindex.html
small preface from above:
This documentation describes the design and implementation of the
KeyKOS system. Initially developed at Tymshare, Inc., it was deployed
in production in 1981 as a secure server processing credit card
transactions while simultaneously supporting other
applications. Agorics has licensed this system and the associated
patents, and utilizes the fundamental ideas and technology in our
ebusiness solutions.
some current eros references:
http://www.cis.upenn.edu/~eros/
http://www.eros-os.org/
small disclaimer ... i was never directly associated with tymshare and/or gnosis ... however i was brought in by m/d to do gnosis audit prelude to the spinoff.
random past posts about (high assurance) time-sharing from the
60s, 70s, and into the 80s.
https://www.garlic.com/~lynn/submain.html#timeshare
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,comp.security.unix Date: Thu, 20 Jan 2005 20:56:11 -0700and, erights references keykos:
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Fri, 21 Jan 2005 13:25:05 -0700glen herrmannsfeldt writes:
because cp/67 (and vm/370) had virtual memory support ... each user had their own virtual address space ... where pages could be brought in and out of real storage at arbitrary real addresses.
the problem i had in the early 70s with location independent code ... was that i wanted to be able to page-map applications to files on disks ... and that multiple different virtual address spaces could share the same exact (r/o) page-mapped information.
the problem with the standard os/360 model was that when executable files out on disk were mapped into memory (virtual or real), the program loader had to run thru arbritrary locations in the executable image ... swizzling arbritrary address constants into different values (randomly spread thruout the executable image).
as a result, it wasn't just a simple matter of page mapping an executable image file (out on disk) into a virtual address space ... there was still all this address constant swizzling that had to be done before the program could actually start execution. Furthermore, the default was to touch every possible page that potentially contained an address constant (that concievably might be used ... whether it actually was used or not) and do the appropriate swizzling operation. And even further complicating the process was that the swizzling operation went on within the specific virtual address space that had just mapped the executable image.
So the swizzling operation that would go on in each virtual address space ... pre-touched and changed an arbritrary number of virtual pages (whether the actually application execution would touch those specific pages or not) ... as well as making the pages chnaged ... defeating the ability to have the program image mapped into r/o shared segments that were possibly common across a large number of different address spaces. The issue that i was trying to address wasn't what might be in the registers of each individual process context in each virtual address space .... it was trying to make the physical executable storage image of the application r/o shared concurrently across a large number of different address spaces. Any modification required on the contents of that executable image, defeated the ability to have it r/o shared concurrently across a large number of different address spaces (as well as possibly prefetching and changing pages that might never actually be used).
So that was the first problem.
A subset of the relocating shared segment implemention (that I had
done in the early 70s) was picked up by the product group and released
under the feature name as DCSS (DisContiguous Shared Segments). I had
done a page mapped file system along with the extended shared segment
support ... so that it was relatively straight-forward to page map
objects in the file system into virtual address spaces. The page
mapped file system wasn't part of the subset of stuff that was picked
up for DCSS. random posts on the page mapped file system work
https://www.garlic.com/~lynn/submain.html#mmap
They addressed the address constant swizzling problem by defining globally unique system addresses for every application that would reside in predefined virtual memory segments; loading the application at that predefined virtual memory location and saving the virtual address space image to a reserved portion of the system-wide paging system (in part because they had failed to pick up the page mapped filesystem enhancements).
So DCSS had a new kind of system command that would map a portion of a virtual address space to a presaved application image (and specify things like shared segments, etc).
So there were several limitations ... one it required system wide coordination of the presaved applications as well as system privileges to setup stuff (i.e. individual department couldn't enable their own private applications).
A large installation would have more applications defined in this infrastructure than could fit in a single 16mbyte virtual address space ... and as a result, there had to be careful management of applications that were assigned conflicting predefined, preswizzled virtual addresses. While no single user was likely to try an map all possible applications into a single address space at the same moment ... it was possible that a single user might need to map an arbritrary combination of applications (in total less than 16mbytes), some of which may have conflicting, pre-assigned and swizzled virtual address images. As systems got bigger with wider variety of users and applications, the problem of pre-swizzled virtual application images with conflicting virtual address locations increased.
So the next solution was to have multiple pre-swizzled application images defined at multiple different virtual address location. Users would decide on the combination of page image applications and libraries that needed to have concurrently loaded ... and try and find some possible combination of the multiple different images of each application that could comfortably co-exist in the same address space.
The original implementation that i had done from the ealy 70s ... had
allowed page mapping arbitrary files as virtual address apace images
at arbitrary virtual address locations .... w/o needing to swizzle
address constants embedded in those page mapped images ...
in part because I had both done a lot of work on allowing address
location independent executable images
https://www.garlic.com/~lynn/submain.html#adcon
as well as page mapped filesystem enhancements
https://www.garlic.com/~lynn/submain.html#mmap
and furthermore that an executable image could occupy a read-only shared segment ... were the same exact same pages were mapped concurrently into multiple different virtual address spaces ... at possibly different virtual addresses.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Fri, 21 Jan 2005 14:49:09 -0700so tss/360 had page mapped filesystem as standard and an objective that a portion of virtual address space could be mapped to the executable image out in the filesystem ... and that the mapping process didn't have to track thru arbritrary virtual pages of that executable image ... swizzling address constants. The system could do the mapping and start program execution (almost) immedately ... possibly w/o having to prefetch any of the executable image.
furthermore, if other address spaces were already sharing that executable image on a r/o basis ... the mapping process would just setup the segments so the different address spaces utilized the same virtual pages.
so tss/360 had system wide convention ... assembler, applications, compilers, etc ... that positioned any address constants that needed swizzling separately from the executable image. This separate table of address constants needing swizzling would be prefetched (as part of mapping the executable file to the virtual address space) and the necessary swizzle of address constants could be done in a private area for each specific virtual address space. There then were system wide conventions on how executable code accessed the table of (swizzled) address constants .... the executable code image could be exactly the same for all virtual address spaces ... and in fact, the same exact executable image could be the same exact virtual pages (using shared segments) .... but the swizzled address constants would be located in an (tss/360 system-wide convention) area separate from the executable program image.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Factoring problem, solved Newsgroups: sci.crypt,sci.math Date: Fri, 21 Jan 2005 15:48:19 -0700Christian Bau writes:
state lottery may have a payout of 80% after their (direct) take (education or whatever, gov. bureaucracy administrative overhead, etc)
so lets say a community starts with $1m and it is all played on lottery each week.
first week, state keeps $200k and pays out $800k. however a good portion of that $800 payout is claimed to be subject to fed. & state income tax ... say another $300k the gov. also gets because of tax law. so at the end of the first week the community may actually only retain $500k.
second week, the community plays the remaining $500k, the state keeps $100k, and pays out $400k. Much of that $400k is also subject to income taxes, state & feds get another $150k ... leaving $250k to the community.
third week, the community plays the remaining $250k, the state keeps $50k, and pays out $200k. Much of that $200k is also subject to income taxes, state & fed get another $75k ... leaving $125k.
the gimmick is that not only does the gov. take the 20% off the top ... but because of the way the tax laws are written the pay-offs are taxed. You do get to subtract your purchases of lottery tickets from winnings ... but it is in the govs. interest to have (few) big payoffs where the winnings are also subject to big taxes. With really big payoffs, the weekly churn can mean the gov. takes closer to 50% (each week).
w/o fresh infusion of funds every week, at closer to 50% gov. retention on gov. lotteries ... the gov(s). can quickly accumulate most of the money in play.
i've seen slot machines claim 98% or better payout. their gimmick is that they can also eventually accumulate all the money if all the players keep repeatedly playing the same money (at 1% retention on each round ... you just need to have a lot larger number of rounds ... compared to weekly lottery at closer to 50% retention, the amount they directly keep plus the amount they may siphon off on each round because of tax laws).
slots can also be purely the entertainment of playing.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Fri, 21 Jan 2005 16:29:42 -0700glen herrmannsfeldt writes:
in the tss/360 scenario ... you just had to memory map some portion of the virtual address space to the executable file image on disk (and let the paging operation fetch the pages as needed) ... and all the address constants needing swizzling were kept in a different structure.
os/360 had a single real address space orientation so that it was possible for multiple different processes to share the same executable image because they all shared the same (single, real) address space.
tss/360 had multiple virtual address spaces .... and for multiple different processes to share the same exact executable copy ... it relied on the shared segment infrastructure.
in the os/360 scenario, all program loading was to a unique real address ... since all processes shared the same, single real address space (there was no chance for program address conflict ... since each program could be assigned a unique real address as it was read into memory).
in the tss/360 scenario, different processes might load & populate their own virtual address space in difference sequences ... potentially creating address assignment conflict if there was a requirement that each application have identically assigned virtual address across all virtual address spaces.
in the os/360 scenario ... if you had two different processes, the first LINKed app1, then app2, then app3, and finally app4 and the second LINKed app2, then app4, then app3, and finally app1 ... it all fell out in the wash since there was a single global real address space.
a difference between the os/360 and tss/360 operation, is that os/360 allowed all the address constants (needing position location swizzling) to be randomly sprinkled thruout the executable image. tss/360 collected address constants (needing swizzling) into a different structure.
both could do dynamic process location specific binding at program load time. however, in the tss/360 scenario ... different processes could share the same exact executable image at different address locations ... because the executable image was a separate structure from the structure of address constants (that required location specific swizzling).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,comp.security.unix Date: Fri, 21 Jan 2005 17:58:08 -0700"Douglas A. Gwyn" writes:
future system (FS) was going to be a super-duper advanced architecture with everybody's favorite feature built in ... including all sorts of integrity and capability stuff.
i didn't make myself popular with the FS crowd since I was claiming that we had some stuff as good or better currently running on more traditional hardware ... than some of the stuff being designed for FS.
FS was eventually killed ... one of the nails in the coffin was the
calculation was that if a FS machine was built from the very fastest
370/195 technology then available ... that all the hardware layers
would have some number of application at about the same thruput as
existing 370/145 (possibly a 30:1 slowdown) ... lots of post postings
on FS
https://www.garlic.com/~lynn/submain.html#futuresys
the other problem that I gave FS was security for their documentation. There had been an incident where highly sensitive corporate paper documents had been copied and leaked to the press. This led to an investigation and all corporate copying machines retrofitted with transparent serial numbers on the glass that would show up on every copied page (similar but different to current stuff about every laser printer having a unique fingerprint). Anyway the FS documents were considered even more sensitive ... so there was going to be as little paper as possible ... mostly softcopy restricted to very secure systems. They made the mistake of saying that even if I was in the room with the computer, i couldn't gain access to the documents. It actually took less than five minutes.
part of the observation was that the technology base we were using was
being deployed in commercial time-sharing service bureaus with fairly
high level of integrity and assurance (a lot of customers in the
financial industry ... with concurrent customers that might even be
fierce competitors). including was the work-horse system for tymshare
and numerous others
https://www.garlic.com/~lynn/submain.html#timeshare
and few of these systems experienced any of the exploits and vulnerabilities commoningly seen today. I've periodically joked that I was asked in the 60s to write code to address security issues that aren't even currently being considered in today's environment (because there are so many significantly more serious security, exploit, and vulnerability problems about).
an example was a online time-sharing system we had in cambridge in the early 70s ... there was online access by MIT, Harvard, BU and other students in the boston area ... as well as online access by people from corporate hdqtrs doing data processing on corporate information at the most highest sensitivity level. There were no outside breaches ... there were a couple denial of service events that were quickly corrected.
i've periodically commented that major early RISC activity (801) in
the 70s could be considered a reaction to the failure and demise of FS
.... going to almost the opposite extreme in terms of hardware
complexity. lots of past 801, romp, rios, risc, etc. posts
https://www.garlic.com/~lynn/subtopic.html#801
and that anything that was being planned for FS could be done better in sophisticated software on simplified hardware.
the folklore is that some number of the FS crowd did migrate to Rochester where they recreated FS on a much smaller scale called system/38. The system/38 evolved into cisc as/400 ... and eventually as/400 migrated to risc (power/pc). So it has sort of come full-circle. I claim that at least some of the genesis for RISC came from the failure of FS ... 801, ROMP, RIOS, power, power/pc, etc. Some number of the FS survivors went to Rochester and created small scale FS with very customized hardware called the S/38, which evolved into CISC as/400 ... but eventually morphed into RISC as/400 on power/pc.
Somewhat the original 801 was that you could raise the lowest accessible level for application software and provide the necessary lockdown as part of sophisticated software layer ... w/o needing the expense of specialized hardware (somewhat epitomized by FS). In some sense that is the current RISC-based as/400.
The 801 programming language was PL.8 (pl1 subset) with CPr as operating system. The original 801 had no hardware protection domain. The PL.8 compiler would only generate correct application code and the loader/binder would validate that only valid generated PL.8 code was being loaded. Once such an application was running it could directly access all software and hardware facilities (correctly) w/o necessity for kernel calls to cross protection domains.
When it was decided to retarget an 801/RISC processor to unix workstation market, more traditional supervisor/application (kernel/non-kernel) protection mode had to be added to the hardware.
part of the point was that it is possible to build high integrity (as well as high-thruput) infrastructures w/o lots of hardware reliance ... if the overall structure is otherwise sound.
one such demonstration was/is the keykos system ... runs on standard 370 architecture ... with some number of the characteristics that were being claimed for FS.
Some topic drift ... much of the folklore has major motivation for FS were the plug-compatible controllers .... FS would provide much higher degree and complex infrastructure integration making plug-compatible controllers an extremely difficult proposition.
as an undergraduate in the 60s, one of the projects that i got to work
on was university plug compatible controller that was written up as
one of the genesis of the public compatible controller business (which
created a major motivation for FS). mosc past posts on early
plug compatible controller project
https://www.garlic.com/~lynn/submain.html#360pcm
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Fri, 21 Jan 2005 19:39:56 -0700Peter Flass writes:
lets say you had os/360 (or cms) environment that did program load ... it could queue up a single i/o that read application into memory in multiple 64k chucks ... all batched together.
tss/360 could have a large compiler laid out as 1mbyte memory mapped file ... do a memory mapping for 256 4k pages ... and then possibly individually page fault each 4k page one at a time. To some extent they got over enamored with concept of one-level store and paging and lost the fact that the purity of the concept could significantly increase the latency if all transfers had to be serialized 4k bytes at a time (as opposed to doing program loading batching in larger transfer units).
kernel was really large ... tss/360 supposedly was going to have target of 512k 360/67 ... but quite quickly grew to minimum 768k storage because of bloated fixed kernel. at one point there was a statement about a set of benchmarks down on a 1mbyte 360/67 uniprocessor and on a 2mbyte 360/67 two processor machine ... with the 2mbyte/2processor having 3.8 times the thruput of the single processor benchmark. the official coment was (while the uniprocessor system was really slow), the two processor benchmark having 3.8 times the thruput of the single processor benchmark demonstrated how advanced the tss/360 multiprocessor algorithms were (getting almost four times the thruput with only twice the hardware). the actual explanation was that the kernel was so bloated that it could hardly fit in 1mbyte configuration .... and that in the 2mbyte configuration there was almost enuf memory (not in use by the kernel) for running applications.
benchmark at the university on 768k 360/67 running tss/360 .. i believe prerelease 0.68 with four emulated users doing mix-mode fortran edit, compile and execute ... had multi-second response for trivial program edit line input. at the same time, on the same hardware with cp/67 running same mix-mode fortran edit, compile and execute had subsecond response for trivial edit line input .... but running 30 conccurent cms users ... compared to 4 tss users (although i had already done a lot of cp/67 performance enhancements).
there was folklore that when tss/360 was decommuted and the development group reduced from 1200 people to possibly 20 ... that a single person now had responsibility for the tss/360 scheduler and a large number of other modules. supposedly the person discovered that on a pass thru the kernel ... every involved kernel module was repeatedly calling the scheduler ... when it turn out that it was only necessary to call the scheduler once per kernel call (rather than every module calling the scheduler resulting in multiple scheduler calls per kernel call). fixing that is claimed to have eliminated a million(?) instructions per kernel call.
at some point in the tss/370 life ... it had been relatively stable for a long time ... with a lot work over the years on performance tweaking ... they claimed that they got the total pathlength to handle page fault (page fault, page replacement select, schedule page read, task switch, page read complete, task switch, etc) down to maybe five times better than MVS ... but still five times longer than my pathlength for equivalent sequence in vm/370.
it was in this era (late 70s) that they did the unix project for at&t ... where a kernel semantics interface was built on low-level tss/370 kernel function to support high-level unix environment. i believe this tss/370 environment for unix was called ssup.
one of the early tss/360 features that i gave them trouble about was the whole thing about interactive vs-a-vs batch. early 360/67 had 2301 "drum" for limited amount of high-speed paging space and the rest was 2311 (very slow) disks. the scenario went something like ... if some finished a line in edit and hit return (on 2741) ... tss kernel would recognize it as interactive and pull the pages that the task had been using the previous time from 2311 into memory and then write them all out to 2301 ... once that was done it would start the task ... which would allow it to page fault the pages back into memory from the 2301. when the trivial interactive task went into wait (for more terminal input), the kernel would pull all of the tasks pages off the 2301 back into memory and move them to 2311. This dragging of pages off 2311 int memory and out to 2301 and then dragging the pages off 2301 into memory and out to 2311 would occur regardless of whether there was any contention for either 2301 space or real memory space. It was a neat, fancy algorithm and they would do it every time ... whether it was necessary or not ... just because it was so neat(?).
... there is a lot more ... but that should be enuf for the moment.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: something like a CTC on a PC Newsgroups: alt.folklore.computers Date: Sun, 23 Jan 2005 08:57:38 -0700CBFalconer writes:
vs/pascal originally had been done at los gatos lab (bldg.29) for mainframe by P & W. A backend was done for vs/pascal that also supported aix & risc processors. W went on to be vp of software development at MIPS and later was general manager of the business unit responsible for java. P went to metaware in santa cruz.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: something like a CTC on a PC Newsgroups: alt.folklore.computers Date: Sun, 23 Jan 2005 09:13:55 -0700CBFalconer writes:
turbo pascal achieved some market use ... but it didn't extend down thru the very core of the operating system (and I don't remember a large number of operations doing any major projects with turbo pascal ... that also shipped the code as part of any product).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sun, 23 Jan 2005 10:30:40 -0700"John E. Hadstate" writes:
in the early 70s, i wrote a PLI program to analyze assembler programs ... it created an abstract representation of the machine instructions and the instruction sequence (& control flow).
one of the common failure modes in large assembler programs was register content management (at least in mainframe assembler with 16 registers ... and conventions of both short-term as well as some long-term register contents use). quite a few kernel failures from the time were essentially use-before-set problems ... some atypical control flow not establishing the register contents correctly before subsequent use.
higher level programming languages have tended to do a much better job of managing register content values ... and especially after early 80s ... also doing better job of recognizing things like use-before-set problems.
there were however some assembler routines that could almost be simpler than higher level PL. my early 70s programs attempted to take the program abstraction and output higher level program representation. Some highly optimized, compact kernel routines doing various kinds of conditional testing and branch operations ... would translate into very convoluted, nested if/then/else type structures sometimes 10-15 (or even more) levels deep. It appeared that with enuf incentive, low-level assembler "GOTO" programming can get extremely inventive.
This made an impression on me ... since I had recently been to some presentations .... that included GOTO-less programming and "super programmer" (Harlen Mills).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sun, 23 Jan 2005 14:54:38 -0700to bring it back a little to buffer overruns (in C) ... there were enuf registers (16) so that environments could define conventions for relatively long lived register contents (like address pointers) ... but not enuf registers that there wasn't frequently "overloading" of (long-lived) register contents (i.e. the same register used for multiple different purposes in the same application).
that condition as well as ambiguity about specific code paths possibly not establishing required register content correctly before use ... led to some number of failures (using a register as an address pointer when its current contents are from some arithmetic operation).
some number of register content failure modes were identical to dangling pointer use failure modes ... so it could take some additional investigation to distinrquish failures that failed to establish register contents from establishing register contents with dangling pointer.
however, there are some similarlities between mistakes with register content management (in assembler) and the typical mistakes with operations involving buffer lengths in typical C language environments. At least in the assembler case, there was some studies that showed the greater the "distance" between typical register content value establishiment and content use ... the greater the probability of human mistake, I know of no similar study showing the "distance" between establishment of buffers in C and subsequent use increases the probability of buffer length mistakes (although I could conjecture it to be possible).
The "distance" was typically cognitive thinking process ... between the time that the programmer had to think about putting a value in a register ... and thinking about the use of that register contents. Such cognitive distances were further aggravated if you had 15 year code and somebody new was doing maintenance ... if there was a large cognitive distance ... new maitenance might even miss the requirement for register content establishment.
The funny thing about these assembler environments was that there were very few buffer length problems. At least the environments I dealt with had established conventions that buffer lengths were carried with the buffer .... so programming convention was typically pick up the length at the same point any use of the buffer was made (very small cognitive distance between establishing the length and referencing any use involving the length). C language conventions tends to require that the programmer is cognizant of each buffer length ... where the original length value establishment may be widely separated from where there are references involving the use of the length.
for some other topic drift related to assembler analysis and abstract representation in higher level language ... while there is fairly direct correspondence in counter loops ... (at least) 370 assembler could have complex 3-4 value conditional operations ... while a lot of higher level language tends to be true/false conditional logic.
370 assembler provided for two-bit condition code setting allowing for four possible values. lots of instructions involving comparisons resulted in at least setting of three possible conditions. compares (arithmetic and logical) were less-than, equal, and greater-than. bit-twiddling operations tended to be all zero, all ones, and mixed. arithmetic operations were greater-than-zero, zero, less-than-zero.
Branch instructions were four bits ... one corresponding to each possible condition code value (conditional branches could specify any combination of possible condition code).
complex assembler code (especially kernel optimized code) could easily
have a test condition followed (effectively) by three different code
paths) ... regularly encountered things like:
test-condition
branch-condition equal/zero
branch-condition high/ones
• fall-thru for low/mixed
and sometimes there were even cases of full four-value logic code
paths. somewhat the difference between two-value, true/false logic
paradigm ... and three or four value logic paradigm.
and if you aren't tired of topic drift ... some past posts on
three-value logic ...
https://www.garlic.com/~lynn/2003g.html#40 How to cope with missing values - NULLS?
https://www.garlic.com/~lynn/2004f.html#2 Quote of the Week
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: CAS and LL/SC Newsgroups: comp.arch Date: Sun, 23 Jan 2005 15:05:41 -0700Bernd Paysan writes:
it is how almost 40 years later and i've now got a 4gbyte (although linux claims that there is only 3.5bytes) "personal computer". except for the possible linux glitch, have effectively doubled the number of address bits ... 2**16 to 2**32 in just under 40 years ... although 4gbytes may do me until it has been 40 years.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: CAS and LL/SC Newsgroups: comp.arch Date: Mon, 24 Jan 2005 10:57:50 -0700Andi Kleen writes:
4gbyte memory agp (defaulted) 128mb, only options 64mb, 128mb, & 256mb primary graphics uses agp
i don't use 3d graphics, i changed bios agp from 128mb to 64mb and it didn't make any difference, still shows 3.5gb (fedora fc3)
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Mon, 24 Jan 2005 15:06:33 -0700daw@taverner.cs.berkeley.edu (David Wagner) writes:
... from above
According to NIST in the past 4 years, 871 buffer overflow
vulnerabilities were exploited, commprising about 20 percent
of all exploits
... snip ...
which is about the same percentage that I calculated from the CVE database.
Article mentions that the exploit first gained widespread notoriety in 1988 with the Morris worm.
for some topic drift about bitnet email worm that predates the
internet worm by about a year:
https://www.garlic.com/~lynn/2004p.html#13
https://www.garlic.com/~lynn/2004p.html#16
https://www.garlic.com/~lynn/2004p.html#17
https://www.garlic.com/~lynn/2004p.html#21
note that the original mainframe TCP/IP stack had been implemented in
vs/pascal. It had some issues .... getting about 44kbytes/sec thruput
using 100 percent of a 3090 processor. I enhanced the stack with
RFC1044 support ... and in testing at cray research between cray and
4341-clone ... it was getting 1mbyte/sec using only a modest amount of
the 4341-clone processor. recent posting on the subject
https://www.garlic.com/~lynn/2005.html#51
collected posts mentioning rfc 1044 support
https://www.garlic.com/~lynn/subnetwork.html#1044
as an aside, I'm not aware of any buffer overflow exploits in this implementation.
buffer overflow posts
https://www.garlic.com/~lynn/subintegrity.html#buffer
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Mon, 24 Jan 2005 15:10:16 -0700glen herrmannsfeldt writes:
the issue wasn't so much assembler specifically ... it was in the overall environment (that the assembler was used in) there was a pervasive convention of carrying buffer length as part of the buffer.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The Mac is like a modern day Betamax Newsgroups: alt.folklore.computers Date: Mon, 24 Jan 2005 23:26:19 -0700pc writes:
another major unix-like was the distributed Locus system out of UCLA. Locus was the basis for aix/370 and aix/ps2.
DCE work had some amount of input/influence from both andrew filesystem and locus (as well as apollo, dec, ibm's DFS, etc).
some random past mach posts
https://www.garlic.com/~lynn/2000e.html#27 OCF, PC/SC and GOP
https://www.garlic.com/~lynn/2001b.html#14 IBM's announcement on RVAs
https://www.garlic.com/~lynn/2001f.html#23 MERT Operating System & Microkernels
https://www.garlic.com/~lynn/2001n.html#35 cc SMP
https://www.garlic.com/~lynn/2002i.html#73 Unisys A11 worth keeping?
https://www.garlic.com/~lynn/2003c.html#45 Early attempts at console humor?
https://www.garlic.com/~lynn/2003e.html#25 A Speculative question
https://www.garlic.com/~lynn/2003e.html#33 A Speculative question
https://www.garlic.com/~lynn/2003.html#46 Horror stories: high system call overhead
https://www.garlic.com/~lynn/2003.html#50 Origin of Kerberos
https://www.garlic.com/~lynn/2003i.html#66 TGV in the USA?
https://www.garlic.com/~lynn/2003j.html#72 Microkernels are not "all or nothing". Re: Multics Concepts For
https://www.garlic.com/~lynn/2004c.html#53 defination of terms: "Application Server" vs. "Transaction Server"
https://www.garlic.com/~lynn/2004k.html#50 Xah Lee's Unixism
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: 360 DIAGNOSE Newsgroups: alt.folklore.computers Date: Tue, 25 Jan 2005 13:00:01 -0700pc writes:
I had done a modification for CMS disk i/o while an undergraduate that used a special CCW that encapsulated the whole seek/search/read-write process in a single operation (minimizing a bunch of pathlength in CCWTRANS) and was defined to be CC=1, CSW-STORED semantics (i.e. lots of asynchronous pathlength and processing was bypassed in both CMS and CP). part of the reason in worked was that (both CP and) CMS formated CKD disks into standardize format and effectively simulated fixed-block architecture on CKD disks (so all disk CCW operations were very uniform and regular). It cut about 90 percent of the pathlength and overhead out of CMS disk i/o operations.
People at cambridge (primarily bob adair) were very emphatic about not violating POP ... so the cms performance "enhancement" was remapped to a (simulated) diagnose instruction ... under the architecture umbrella that DIAGNOSE is defined as being model dependent ... and an artifical "model" abstraction could be defined for a virtual machine machine model. The semantics stayed pretty much the same ... unform channel program that bypassed loads of generalized CCWTRANS process and that it appeared as a synchronous operation (eliminating the asynchronous processing overhead).
over the years, lots of liberties were taken to enhance and optimize the cms virtual machine environment using the virtual machine machine model diagnose interface.
this is not to say that there weren't things like service diagnostics that were machine model specific that would invoke unique real hardware operations that were embedded in the microcode of a specific machine model (and not defined/specified in the principle of operations).
misc. past postings about CKD disk/dasd
https://www.garlic.com/~lynn/submain.html#dasd
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: stranger than fiction Newsgroups: alt.folklore.computers Date: Tue, 25 Jan 2005 13:31:02 -0700from the annuals of truth stranger than fiction ... i was interviewed before xmas for a possible magazine article about garlic.com/~lynn/ website and its mainframe historical observations (in large part archived postings made to this news group over the years). I just took a call from them now wanting to do a photoshoot for the article. trouble is that other than screen and keyboard, there is very little to take pictures of.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: 360POO Newsgroups: alt.folklore.computers Date: Tue, 25 Jan 2005 15:06:10 -0700Rich Alderson writes:
one of the original reasons was that the superset of the principle of operations is the architecture "redbook" ... which has a lot more stuff than what appears in the POP (possibly as much again as the pop subset. they used script conditionals to control whether the redbook would be generated or the principles of operation subset would be generated.
i think you can tell the transition from the traditionally process printed document to the cms script version by the diagram boxes. the cms script version was printed on 1403 printer and didn't provide solid horizontal lines. Later they got solid horizontal lines with the 3800 ... but in the 1403 printer period, the horizontal diagram lines were not solid.
the original cms script was done at the science center with run-off "dot" formating commands. After gml was invented at the science center in 1969 ... cms script was enhanced to also provide processing support for gml tags.
recent posts discussion 360 storage key operation referencing the
early 360 POPs (on bitsavers) and more recent pops (from an earlier
part of the buffer overrun thread):
https://www.garlic.com/~lynn/2005.html#5 {Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#6 {Lit.] Buffer overruns
part of this was instigated by the AMD reference about provide
no-execute support as part of buffer overflow exploit countermeasure
(i.e. it doesn't eliminate the buffer overflow ... but it prevents an
attacker from utilizing the buffer overflow in performing certain
kinds of system exploits)
https://www.garlic.com/~lynn/2005.html#1 {Lit.] Buffer overruns
misc. science center posts
https://www.garlic.com/~lynn/subtopic.html#545tech
misc. gml (sgml, html, xml, etc) posts
https://www.garlic.com/~lynn/submain.html#sgml
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: CAS and LL/SC Newsgroups: comp.arch Date: Tue, 25 Jan 2005 15:38:15 -0700Bernd Paysan writes:
i/o supervisor would store the address of the start of a channel program in the CAW (channel address word) and issue a start I/O (SIO) to the specific channel number.
the faster 360s (360/65) had separate boxes that executed channel programs (as opposed to channel processing being integrated on the same engine with the instruction processor)
cp67 virtual machine support running on 360/67 (basically 360/65 with virtual memory hardware) has had the problems. channel programs are defined as specifying real addresses. Virtual machine support required intercepting the SIO, analysing the virtual machines I/O sequence, making a copy of it ... and (at least) translating all of the virtual machine specified "address" to the "real" machine address. If the I/O operation involved a transfer that cross a page boundary and the pages weren't contiguous ... then the copied channel program had to also specify multiple non-contiguous addresses. Furthermore the virtual pages had to be pined/fixed in real memory (at their translated address) for the duration of the i/o operation.
this scenario has continued ... for all the virtual memory operating systems. in the initial prototype of the batch, real-memory os/360 operating system to 370 virtual storage ... a copy of CP67's ccw translation was grafted onto the side of the operating system ... since it had to do similar virtual address to real address translation, pin/fixing of virtual pages, etc.
part of the paradigm is that almost all i/o operations tended to always be direct .... the normal paradigm as been direct asynchronous i/o operation (no buffer moves needed), even at the application level (as opposed to operating system creating construct of transfers going on behind the scenes).
the 370/158 was integrated channels. the next generation was 303x. they took a 370/158 and eliminated the 370 microcode ... just leaving the integrated channel migrated and renamed it the 303x channel director. 370/158s and 370/168s were then repackaged as 3031 and 3032 using the 303x channel director (in some sense 3031 was a two processor, smp 158 ... except instead of two processors with both integrated channel microcode and 370 microcode ... one processor just had the channel microcode and the other just had the 370 microcode). The 3033 started out being 370/168 circuit diagram remapped to faster chip technology ... supposedly resulting in 20% faster processor than 168. During the cycle tho, there were additional stuff done ot the 3033 so that it eventually was about 50% faster than 168.
One of the issues in 370 with faster processors was the synchronous hand-shake required by the SIO instruction between the processor engine and outboard channel engine. The other problem was the significant impact on cache hit ratios from asynchronous interrupts. "XA", besides introducing 31bit virtual addressing ... also introduced a new I/O processing paradigm ... where new processing engine could handle much of the asynchronous crud involved with i/o ... and present a much more pleasant queued and low-overhead paradigm to the main processor. The other thing it addresses was real-time I/O redrive. In the 360/370 paradigm ... when there was a queue of requests for a drive, the processor got interrupted, processed the interrupt and eventually got around to redriving the device from the queued requests. The more pleasant queued interface allowed a external real-time engine the capability of redriving queued requests. All targeted at lowering the tight serialization between i/o operations and the instruction engine.
There is now a subset of virtual machine support built into all the mainframe processors called logical partitions. It has most of the characteristics of the original cp67 ... but built into the hardware microcode and supporting a limited number of concurrent virtual machines (partitions). It has simplified the ccw translation process because each partition's memory is contiguous and fixed in storage i.e. simple base & bound rather than fragmented non-contiguous pages. The i/o subsystem can directly use the base&bound values avoiding needing to make an on-the-fly copy of every channel program and modify the storage addresses.
this is sort of high level overview ... a lot of the actual stuff are the nits in the low level details.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Tue, 25 Jan 2005 18:07:52 -0700Edward Wolfgram writes:
each active, executing context of that executable program image (in 360) could have location specific bindings (like addresses in registers) ... but the storage image of the executable program would not.
os/360 conventions peppered the program image with things called relocatable address constants ... which would be swizzled to an address/location specific value when the program was brought into real storage (or mapped into virtual address space) before actual execution began.
tss/360 accomplished the objective by collecting the relocatable address constants (needing any swizzling) into a different structure that could be private to a specific executable instance ... but wasn't part of the instruction program image.
For the stuff i did, i made due with various programming hacks to resolve things relative to content of some register .... and in 360, it is possible to establish the specific register executable instance contents with mechanisms like BALR reg,0.
this is somewhat analogous to different threads executing the same exact code tending to have their private instance execution environment .... even though the exact same common code is being executed ,,,, and extending the private instance execution environment to include instance specific location of the (same) executable code.
in both cp67 and vm370 (360, 370 and later), the virtual memory relocation mechanism allowed placement of virtual storage pages at randomly (and potentially varying) real storage locations ... transparent to the application.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Tue, 25 Jan 2005 19:39:18 -0700glen herrmannsfeldt writes:
it was possible to get custom microprogramming support on many of these machines. I think it was Lincoln Labs may have originated the search-list (SLT) instruction that was installed on some number of the 360/67s.
the boston programming center in support of the conversational programming system (CPS) ... interactive PLI and BASIC that ran under relative vanilla os/360 ... had done a custom RPQ microcode package that could be had for 360/50 ... that was performance acceleration for doing interpretive execution. I don't know the details of how CPS handled swap-in/swap-out ... it is possible that they controlled a lot more of program execution ... they could control the instruction image not having embedded location specific information and knew what registers in the private execution context needing swizzling when swap-out/swap-in sequence didn't bring back to the same swap address.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: M.I.T. SNA study team Newsgroups: alt.folklore.computers Date: Wed, 26 Jan 2005 09:30:35 -0700i got a new toy that i'm just learning to use (especially trying to cleanup the OCR bit) ... an epson 2480 flatbed scanner
note that the internal network was not SNA (or not SNA well into the
80s)
https://www.garlic.com/~lynn/subnetwork.html#internalnet
misc. past comments related to SNA, SAA, 3tier, etc
https://www.garlic.com/~lynn/subnetwork.html#3tier
There has been some folklore that the PU4/PU5 (sscp/ncp, 3705/vtam)
interface complexity was an outgrowth of the failure of fs
https://www.garlic.com/~lynn/submain.html#futuresys
which supposedly had a major objective of addressing the plug
compatible controller competition. there was some write-up that blames
a project that I worked on as an undergraduate for spawning the plug
compatible controller business (i.e. reverse engineered the 360
channel interface and built a channel interface card for an
Interdata/3 and the Interdata/3 programmed to emulate a mainframe
telecommunication controller):
https://www.garlic.com/~lynn/submain.html#360pcm
the paper is copy made on an internal corporate copier ... it has one
of the copier IDs on the corner of each page. recent post that
mentions the incident that lead to retrofitting corporate copiers
with IDs that showed up on all copied pages:
https://www.garlic.com/~lynn/2005b.html#12
Date: February, 1979 From; M.I.T. SNA study team c/o J. H. Saltzer IBM Corporation Cambridge Scientific Center Tel: (617) 253-6016 VNET: JHS at CAMBRIDGE To: A. J. Krowe, 620/HAR/3H-29 B. O. Evans, 6C8/VAL/TD-19 This report is an evaluation of the IBM System Network Architecture, SNA. The evaluation was performed by a team of three members of the Computer Systems Research Division of the M.I.T. Laboratory for Computer Science, acting individually as consultants to IBM. The study focused on the architecture more than the implementation, and it considered SNA through release four. Perspective (underlined) The three team members are the following: Jerome H. Saltzer Professor of Computer Science and Engineering M.I.T. Laboratory for Computer Scinece David D. Clark Research Associate M.I.T. Laboratory for Computer Science David P. Reed Assistant Professor of Computer Science M.I.T. Laboratory for Computer Science The team members are of the academic computer science community, all with pragmatic interests and experience. Members have individually designed or in concert with others helped design time-sharing terminal concentraion networks, the communications and network software for the Multics system, low and high-level protocols of the ARPA computer network, and both the hardware and the protocols of a local computer communication network. Higher level network protocols, "distributed systems," and the interactions among software systems, data communication systems, and computer architecture are research specialties of the team members. The comments in this report are mostly from a practical rather than a theoretical perspective, but with a strong interest--
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: alt.folklore.computers Date: Wed, 26 Jan 2005 12:02:13 -0700pc writes:
standard os/360 & dos was everything (including specifying all i/o devices) needed to be defined in sysgen ... although they tried to alleviate that later in 370 timeframe by introducing "E4" extended sense channel command code ... which would ask the device what it was (only new hardware got the "E4", so there still have to be sysgen for the pre-existing 360 timeframe devices that might still be in use).
cp67 for at least the terminal support had tried to automatically detect whether it was talking to a 1052 or a 2741 one a line (and what kind of 2741). the standard telecommunications control unit, 2702 had "SAD" comments that could dynamically associate a line-scanner with a specific line ... i.e. the standard cp67 support set the line-scanner to a specific type and tried some commands (that were known to fail on the wrong device) and then reset the line-scanner and tried some more commands.
so I thot I would be devilish clever and do similar scenario when adding the support for tty/ascii. I got it all tested and it appeared to work fine ... until the ibm field engineer informed me that I was just being lucky during my testing. part of the objective was to be able to have a common dail-up pool with single phone number for all terminals. my testing had so far been limited to fixed connected lines ... but i hadn't yet tried all three kinds of terminal dialing into the same phone number. The problem was that they took a short-cut in the 2702, while they provided the ability to associate any available line-scanner with any available line ... they had took a short-cut and hard-wired the oscillators to specific lines ... aka you would have problems trying to connect a 2741 (134.x baud) on a line with a oscillator hard-wired for tty (110 baud). The code would correctly recognize any terminal on any (fixed) line w/o sysgen specification ... but the hardware limitation wouldn't allow dynamic line speed operation.
So that was one of the things tha prompted the university to build our own plug-compatible telecommunication controller ... the line-scanner was implemented in software on the interdata/3 and would strobe the raise/lower of the incoming signal to dynamically determine the line-speed. Originally a single interdata/3 handled both the mainframe channel interface as well as all the line-scanner/port interfaces. This was later expanded to a cluster of machines with a Interdata/4 dedicated to handling the mainframe channel interfaces and multiple interdata/3s handling line-scanner duty.
misc. past 360 plug compatible controller posts:
https://www.garlic.com/~lynn/submain.html#360pcm
and to not stray too far from the buffer overrun problem ... this is a
rare example i know of in cp67 that exhibited the problem. because of
tty/ascii spec, i had used one-byte arithmetic in calculating lengths.
The way I remember the event, I think it was called the MIT Urban Lab
... in tech sq ... but a building across the courtyard from 545 (565?
... harvard trust was on street side of the first floor) ... CP67 was
modified to handle some sort of graphics/plotter(?) ascii device at
harvard(?) that had line limit more on the order of 1200 characters.
The max. length fields were correctly modified ... but the use of
one-byte arithmetic wasn't changed ... and so there was 27 cp67 system
failures one day. tale of the tragedy appears here:
https://www.multicians.org/thvv/360-67.html
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Wed, 26 Jan 2005 14:18:52 -0700CuriousCat writes:
this was in mostly by-gone era with environments of extremely small memories with extremely few registers ... and lots of extensive manual optimizations on relatively small amounts of code (typically measured in k-LOCs or possibly 10k-LOCs; hardly applies these days to anything ... or at least anything that might have any portion of a tcp/ip stack associated with it).
the 60 era stuff frequently tended to have maximum length and current length (for dynamic structures that might have various inputs assigned, which then becomes a 4byte administrative overhead) ... any operation that obtained new input would always specify a maximum acceptable length (for all operations) either explicitly (or implicitly because it was always part of the buffer structure) and the input operations would always return either the actual length input ... or the residual length (maximum minus actual) ... and the buffer header would be updated with the actual.
I believe the majority of PLs actually use the later ... however, it frequentlys tends to be both a system infrastructure issue coupled with a language infrastructure issue (i.e. not solely a matter of just the PL). A PL that in most systems and infrastructures tended to use the later method ... might be forced to use the former method on a platform that otherwise heavily relied on the former method extensively.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Noobie SSL certificate problem Newsgroups: sci.crypt Date: Wed, 26 Jan 2005 14:56:27 -0700bill.billtaylor writes:
the normal purpose of a PKI certificate is
1) that a trusted third party can attest that the supplied public key really belongs to you ... this is applicable to situations where the relying/recieving parties have no possible direct knowledge of you ... but do have some trust or other relationship with the third party (generating and distributing the PKI certificates).
2) the trusted 3rd party has no idea who you will be dealing with ... other than it presumably is somebody that already trusts the 3rd party ... so the 3rd party returns the information directly to you so that you can append it to any future correspondence you might have with unknown relying parties.
this is the letter-of-credit model from the sailing ship days ... as opposed to existing real-time environments where the relying party contacts the trusted 3rd party (say a bank or credit bureau) in real time). The certificate model was created before the days of ubiquitous electronic communication.
the typical process is for you to generate some form that includes your public key as part of the contents and then you digitally sign that form with your private key ... and then send off the form and the digital signature ... as well as a bunch of other validation information to the 3rd party PKI certificate issuing entity. The 3rd party PKI certificate issuing entity uses the public key (included in the form) to validate the transmitted digital signature. Then they do something that validates the information that you are who you claim to be ... and that the public key is really yours. From that they then can generate a PKI certificate. The PKI certificate will contain your public key and some sort of identifying information about you.
the original request should have been created with your public key (which should also be in the body of the returned PKI certificate) and a digital signature generated by the private key ... so hopefully you still have a copy of the original private key laying around somewhere.
misc. stuff and past posts about SSL certificates:
https://www.garlic.com/~lynn/subpubkey.html#sslcert
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Thu, 27 Jan 2005 09:22:23 -0700CuriousCat writes:
the len+pointer paradigm was used not only for existing string length but also for max buffer size. a large number of buffer overflows occur when copying a string into a target area where there is no information about the length of the target area ... where it become the responsibility of the programmer to manage the maximum length of the target buffer. the more things that a programmer has to directly manager ... the more opportunities for mistakes.
many of the PLs that used pointer+len constructs ... didn't simply use them for length of areas that contained data ... but also used them for areas (buffers) that didn't currently contain data and/or might contain some data ... but the buffer was actually larger than the data it contained.
the contention is that the larger number of buffer overflows in the c programming environment is the semantics of copying stuff into buffers having ambiguous length ... and it was up to the programmer to provide the administrative function of keeping track of such lengths ... and was also the source of the mistakes leading to the buffer overflows.
the infrastructures using pointer+len used them not only for current lengths but also about potential or maximum lengths. the operation and semantics of copy operations in such environments would honor the max/potential length values of the target locations ... eliminating one possible kind of programmer mistake (misspecifying and/or not specifying at all the length of the target location).
the issue with the semantics of the nul-terminated paradigm ... wasn't so much that it couldn't be used for deliminating the lengths of data that existed ... but it wasn't used very well for deliminating the lengths of things that didn't contain data (maximum length of target buffers).
a hypothetical (alternative) paradigm (to pointer+len) might involve defining buffer areas not containing data as being nul-filled ... and such areas were then terminated by a non-nul ... but that gets into other potential structural issues.
however, i would contend that the use of pointer+len paradigm handles both data area lengths and non-data area (i.e. max. length of target buffers not currently occupied with data) lengths in a much more consistent and uniform paradigm.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers,comp.security.unix Date: Thu, 27 Jan 2005 09:31:55 -0700"D. J. Bernstein" writes:
also ... the AMD chip hardware feature previously mentioned (along with windows XP support) wasn't introduced to prevent buffer overflows it was introduced to prevent successful exploits using buffer overflow vulnerabilities.
one might conclude that if specialized hardware was being introduced to prevent attackers exploiting buffer overflow vulnerabilities ... that there is some perception that exploits of buffer overflow vulnerabilities are fairly significant occurance (and therefor that buffer overflow vulnerabilities themselves are relatively prevalent).
the hardware isn't even targeted at buffer overflow vulnerability elimination ... it is buffer overflow vulnerability exploit elimination.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: alt.folklore.computers Date: Thu, 27 Jan 2005 09:48:18 -0700jmfbahciv writes:
there were other silly things that tended perpetuate the sysgen process that also took awhile to change. the os/360 device control block was addressed with 16bit value ... so initially they all had to be in the first 64k of real memory ... that may have gotten change so that they had to be in some contiguous 64k of real memory (doing base+offset rather than direct address) ... and then systems started having more devices than could fit in 64k of contiguous memory.
i got to play in the disk engineering lab. when i started, they were running all the testing stand-alone .... big mainframe configuration switch that allowed all the engineering disks to be disconnected from any connectivity except the one being tested. the problem (at the time) was that running a single engineering disk connected to MVS operating system, MVS had a MTBF of 15 minutes.
i got to rewrite the i/o subsystem so that multiple concurrent
engineering disks could be tested concurrently in an operating system
environment. random past posts about eliminating all possible
failure modes in a highly hostile i/o environment:
https://www.garlic.com/~lynn/subtopic.html#disk
part of it was that an engineering disk might generate more error conditions in 15 minute period than a whole disk farm might generate in years of operation. eliminating failure modes was then not a hypothetical exercise but having to deal with being constantly being bombarded in an extremely hostile operational environment.
i got to somewhat play with generalized device recognition and the E4 sense ... but started out needing dummy, predefined device control block to assign the device to.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Thu, 27 Jan 2005 09:53:15 -0700Joe Morris writes:
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Thu, 27 Jan 2005 11:26:03 -0700Anne & Lynn Wheeler writes:
frequently vulnerabilities, exploits and failures are not where things are covered .... but where things aren't covered. the nul-termination convention of providing length information for areas containing (at least non-nul) data ... but has served less well in providing length information for areas not contining data ... and/or areas that may be larger than the data contained.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Relocating application architecture and compiler support Newsgroups: comp.arch,comp.arch.embedded,alt.folklore.computers Date: Thu, 27 Jan 2005 12:07:32 -0700Julian Thomas writes:
there is a small off-chance that i have a page or two write-up in some pile of paper someplace. if i get this scanning stuff down ... i'll try and find it.
on the other hand ... microcode RPQs weren't that uncommon.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Thu, 27 Jan 2005 13:15:20 -0700Walter Bushell writes:
some of this conceptually may have come from risc and harvard architects .... some machines have separate, non-coherent, store-into i&d caches (at least d-cache is store-into, as opposed to store-thru, i-cache doesn't take stores) ... and when loaders were doing their thing ... and laying out instructions for execution ... the "data" was showing up in the d-cache ... but wouldn't necessarily have hit memory yet (which met that the i-cache fetches wouldn't see stuff that the loader had recently completed).
the loader when it had finished whatever it was supposed to be doing would then issue a flush d-cache (to memory) ... so the correct stuff would appear in memory when the i-cache went to fetch it.
so the amd hardware and windows support was for sort of the inverse of execute-only areas ... it was for never-execute areas (it isn't a real inverse because execute-only and never-execute don't necessarily preclude areas that could be both/either execute and data).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Thu, 27 Jan 2005 15:13:22 -0700daw@taverner.cs.berkeley.edu (David Wagner) writes:
we once did a one week jad with taligent on what would be involved in taking their existing infrastructure and frameworks and turning into something that could be used for business critial applications (including objective of possibly significantly reducing the service quality programming that needed to be generated for each individual application).
after crawling thru all the pieces, it was estimated to be a 30 percent code hit to their existing frameworks/code ... plus three new frameworks; aka it wasn't what was necessary in programming business critical applications .... it is what should be done to the infrastructure as a sound basis for implemeintng business critical applications.
minor reference to the original payment gateway for something
that is now commoningly called e-commerce:
https://www.garlic.com/~lynn/aadsm5.htm#asrn2
https://www.garlic.com/~lynn/aadsm5.htm#asrn3
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: alt.folklore.computers Date: Fri, 28 Jan 2005 10:15:33 -0700jmfbahciv writes:
on 360/30 ... os/360 release 6 or so, stage1 might take 30-60 minutes ... and then stage2 could take 8hrs or so. This was all done "stand-alone" using a special system called a "starter" system (which had a little bit of magic code that didn't need i/o sysgen, aka the same starter system was shipped to all customers, and was booted on all machines ... for building the customers real system).
i got interested in the process and took some stage2 punch card output and had them interpreted (had the punch codes actually printed on the top line) and had a good look at it.
by os/360 release 11, the university had a 360/67 which was mostly run in 360/65 mode for batch work and it was my responsibility to build and support the system (when they brought in cp/67 in jan. '68, i also got responsibility for that ... i never had any responsibility for tss/360 ... other than watching some of the ibm'ers play with it on weekends).
One of the os/360 issues was that running batch work tended to be very disk intensive ... especially student jobs which tended to be almost all job control and program loading of the fortran compiler and almost immediate failure of one sort another if by some chance it compiled clean and actually went to completion.
fortran student jobs on the 709 were done with tape-to-tape fortran monitor that took a second or two per student job. initially on 360/65 the job scheduling process and various program loading overhead was driving student jobs was well over half a minute per.
after some more analysis ... i decided that i could significantly improve the thruput of the workload by optimizing the disk arm thrashing ... and to optimize the disk arm thrashing, i had to carefully order the files on disk, and to carefully order the files on disk ... i had to control the order that they were placed on disk. That drove me back to stage2 sysgen process. First I figured out how to run the sysgen process on a currently running production system (so that i didn't really need stand-alone, dedicated time). I then tore apart a stage2 sysgen deck and carefully reodered all the statements so that there was a careful ordering of the statements that moved files onto the new system disks.
the result was such a freshly built system ran the student job workload three times faster ... a little over 12secs per student job rather than well over 30secs (still slower than the 709)
In the spring and summer of '68 I also rewrote a bunch of cp/67 kernel pathlength code ... and got to do a presentation on the cp/67 kernel pathlength changes and the mft14 reorganization and optimization at the fall 68 share meeting in Atlantic City.
after the presentation, some senior vp of dataprocessing at amex asked me to lunch across the street at the playboy club.
random past posts on the subject.
https://www.garlic.com/~lynn/94.html#18 CP/67 & OS MFT14
https://www.garlic.com/~lynn/94.html#20 CP/67 & OS MFT14
https://www.garlic.com/~lynn/97.html#22 Pre S/360 IBM Operating Systems?
https://www.garlic.com/~lynn/97.html#28 IA64 Self Virtualizable?
https://www.garlic.com/~lynn/98.html#21 Reviving the OS/360 thread (Questions about OS/360)
https://www.garlic.com/~lynn/99.html#93 MVS vs HASP vs JES (was 2821)
https://www.garlic.com/~lynn/99.html#174 S/360 history
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Fri, 28 Jan 2005 11:49:48 -0700Mok-Kong Shen <mok-kong.shen@t-online.de> writes:
and just this moment quick query on amazon.com for buffer overflow attacks" ... lists three books (the one i just saw at the book store listed as being published 12/1/2004).
... note there is some distinction between software failures because of buffer overflow mistakes ... and being able to exploit/compromise a system via use of various buffer overflow vulnerabilities
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Fri, 28 Jan 2005 14:53:23 -0700"Trevor L. Jackson, III" writes:
now they have those fancy nail guns.
the buffer problem is currently way past the failure mode associated with buffer overflows and well into pervasive exploits and attacks taking advantage of the multitude of buffer overflows (aka not about buffer programming mistakes but about being able to mount successful attacks and exploits because of the prevasiveness of buffere overflows) ...
feb. 2005 linux magazine bufferr overflow attacks ref:
https://www.garlic.com/~lynn/2005b.html#20 [Lit.} buffer overruns
recent books on buffer overflow attacks ref:
https://www.garlic.com/~lynn/2005b.html#42 [Lit.} buffer overruns
enhanced hardware and operating system support for buffer overflow
attacks countermeasures (not preventing buffer overflows, attempting
to prevent successful attacks that try and take advantage of buffer
overflows):
https://www.garlic.com/~lynn/2005.html#1 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#32 8086 memory space [was: The Soul of Barb's New Machine]
https://www.garlic.com/~lynn/2005b.html#5 Relocating application architecture and compiler support
https://www.garlic.com/~lynn/2005b.html#25 360POO
https://www.garlic.com/~lynn/2005b.html#34 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005b.html#39 [Lit.] Buffer overruns
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Fri, 28 Jan 2005 15:04:41 -0700Morten Reistad writes:
lots of people then could talk about share meetings from the 50s.
I got invited to san fran share 99 meeting for the 30th anv of the
announcement of vm/370 ... you can find a picture if you go to
https://www.garlic.com/~lynn/
main share meetings have been held twice a year (there have also been two interims held a year ... usually referred to as xx.5) ... so share 99 is just short of fifty years.
i got to give a talk on history of vm performance at the oct. '86 european share meeting on the isle of gernsey(?). They only allocated me an hour. The talk was resumed at scids about 6pm and continued until after midnight (with some libation going on during the talk).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sat, 29 Jan 2005 09:56:53 -0700infobahn writes:
most of vm/cms (and its predecessor cp67/cms) was written in
assembler, however it was heavily influenced by hostile, adversarial
operational environment. the cp67 timesharing sysetm deployed
at the cambridge science center, 545tech sq
https://www.garlic.com/~lynn/subtopic.html#545tech
provided time-sharing services to people in corporate hdqtrs handling the most sensitive of corporate data as well as online access to various studnets from BU, Harvard, MIT, etc. around the boston area (i had previously mention that there were no known security type breaches ... there were a couple of denial of service attacks that were quickly dealt with).
cp67/cms (and later vm/cms) was also used at basis for many early time-sharing services ... NCSS, IDC, Tymshare, etc. ... where you could assume that there were spectrum of different corporate clients that could easily be in competition. There was somewhat a distinction between cp67 that went on the 4th flr and multics that went on the 5th flr ... the range of open, commercial timesharing services that were deployed using the 4th flr system ... as well as some number of the other types of deployments.
Note, there were three command processors done on CMS, the original CMS exec from the mid-60s, Cris's EXEC2 from the early '70s, and Mike's REX from the late '70s (although released as REXX in the early '80s).
part of the issue was being able to respond to adversarial and hostile
attacks ... like you current see in the frequent buffer overflow
attacks ... recent ref:
https://www.garlic.com/~lynn/2005b.html#43 [Lit.] Buffer overruns
and creating defense-in-depth as countermeasures. slightly related
was recent post in this thread that only ran in a.f.c
https://www.garlic.com/~lynn/2005b.html#35
about the hostile i/o environment of the disk engineering lab
https://www.garlic.com/~lynn/subtopic.html#disk
and redoing the i/o subsystem so that it never failed. The problem was that normal mvs mainframe system had something like 15 minute MTBF when dealing with single disk testcell (although it normally ran fine with whole disk farms for extended periods). The problem was that the disk testcell environment was extremely hostile, a single disk testcell generating more (and never before seen) errors in 15 minutes than whole disk farms might generate in years.
One assertion is that C and many of the C-based platforms and applications had quite a bit of evolution in environments that were rarely hostile. In some cases, the platforms and applications had a design point of an isolated and relatively congenial operational environment ... not being exposed to things like the buffer overflow attacks that are currently being documented in papers, magazine articles, and books (and motivation for specialized hardware and operating system support to contain the effects of the exploits and attacks).
One possible indication is if situation goes beyond simple buffer overflow failures and there appears to be a whole sub-culter involved in exploits and attacks specifically related to buffer overflow vulnerabilities (with the evidence of papers, articles, books on the subject of buffer overflow attacks, as well as specialized hardware and operating system support) ... then the situation has gone beyond simply training better programmers.
Going back to the analogies in earlier posts ... when people start complaining about the alarming number of traffic fatalities because of people crossing the center line ... on old 101, on 17 going over santa cruz mountains ... or even more recently crossing the meridian on 85 ... you are facing more than simply better driver's training and traffic enforcement ... you are talking about needing some serious concrete traffic barriers.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sat, 29 Jan 2005 10:02:08 -0700"Douglas A. Gwyn" writes:
1) an area of storage that happens to contain a pattern of data ... and being able to determine the length of that area of storage ... using a paradigm based on data pattern.
2) and an area of storage that doesn't contain any data pattern (possibly an empty buffer) and determining the length of that storage using a paradigm based on data patters ... where there is no data pattern defined for the area of storage.
while it may be possible to define a data-pattern based length metaphor for areas of storage with defined data patterns ... it is much harder to use a data-pattern based length metaphor for area of storage w/o defined data patterns.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sat, 29 Jan 2005 10:14:49 -0700dutch writes:
so with a little hind-sight ... one might conjecture with regard to
comment about ibm walking away from 360/370 was in reference to the
future system project:
https://www.garlic.com/~lynn/submain.html#futuresys
which was going to completely replace 360/370 with something that was more radical and different than 360/370 than the introduction of 360. possibly, in fact, Amdahl motivation for forming a 360 clone company possibly was some disagreement over the future system strategy (i.e. future system strategy may be considered one of the main motivations for the formation of the mainframe clone business).
now there have been some references that the motivation for the future
system strategy was the clone controller business (plug compatible
controller, pcm) ... a couple specific refs:
https://www.garlic.com/~lynn/2000f.html#16 [OT] FS - IBM Future System
https://www.garlic.com/~lynn/2003l.html#30 Secure OS Thoughts
https://www.garlic.com/~lynn/2003p.html#25 Mainframe Training
... which in the past, i've gotten blame for helping spawn:
https://www.garlic.com/~lynn/submain.html#360pcm
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sat, 29 Jan 2005 11:01:37 -0700Anne & Lynn Wheeler writes:
if one can contend that it is perfectly satisfactory to have the programmer be responsible for managing the length of arbitrary storage locations with undefined data patterns (like buffers) then why shouldn't it also be their responsibility for manually managing the length of arbitrary storage locations with defined patterns (strings).
Conversely, I would assert that it is at least as useful for the programming environment to provide a paradigm for managing length of storage areas with undefined or ill-defined data patterns as it is for providing a paradigm for managing lengths of storage with defined data patterns (strings).
the only other observation is that the data-pattern based length paradigm (nul-termination) can be applied to areas of storage with defined data patterns ... it is less well suited to applying a data-pattern based length paradigm to both areas of storage with defined data patterns and undefined or ill-defined data patterns.
on the other hand, the same pointer+length based length paradigm can be applied to both areas of storage with defined data patterns (strings) as well as areas of storage with undefined or ill-defined data patterns (buffers), ... aka it might be useful to choose a length methophor ... which can be equally applied to all types of storage area regardless of the type of data patterns those storage areas might contain.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sat, 29 Jan 2005 11:21:10 -0700Joe Morris writes:
the detailed mvs history page URL that I had recently went 403.
http://os390-mvs.hypermart.net/mvshist.htm
but this appears to be the same/similar
http://www.os390-mvs.freesurf.fr/mvshist.htm
http://www.os390-mvs.freesurf.fr/mvshist2.htm
some number of notes about the above
... it refers to os/vs1 having single virtual memory and os/vs2 having multiple virtual memories.
os/vs1 was essentially os/360 mft with single virtual memory crafted on the side and os/vs2 was initially "SVS" ... os/360 mvt with single virtual memory crafted on the side.
OS/VS2 initial release was called SVS for single virtual storage and was later enhanced to MVS for multiple virtual storage.
OS/VS2 release 3 ... i believe was the first MVS ...
starting with unbundling, june 23rd, 1969 ... application software started being charged for ... but the operating system continued to be "bundled" (free) with the hardware.
with the appearance of clone mainframes there was push to start charging for operating system.
I got to be the original guinea pig for this with the resource
manager
https://www.garlic.com/~lynn/subtopic.html#fairshare
https://www.garlic.com/~lynn/subtopic.html#wsclock
and spend six months with the business and planning people working out the guidelines for charging for operating system stuff. The revised rules was that if the software was needed for direct hardware support (aka device drivers, etc), then it was still bundled ... but all other operating stuff (like performance management) or the resource manager could be priced.
This led to a problem when they went to put-out SMP support the next release. I had all sorts of guodies in the resource manager software ... including a bunch of stuff that SMP was dependent on. The business rules had SMP support being "free" ... since it was directly needed for hardware support ... however it wouldn't be quite following the rules if there was free software that had a pre-requisite of priced software. The solution was to take about 80percent of the code in the original resource manager and move it into the "base" free operating system.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sat, 29 Jan 2005 11:43:47 -0700Anne & Lynn Wheeler writes:
One day we got a MIT student doing looping disk channel program which hung the system and required a system reboot. he then did it again as soon as the system was back up (couple minutes) ... we then terminated his account. He complained to his advisery that we had no right to terminate his account and furthermore, it was his right to crash systems as frequently and often as he wanted to.
the CMS disk diagnose i/o interface was primarily a (significant)
performance enhancement ... recent post about CMS disk diagnose
https://www.garlic.com/~lynn/2005b.html#23
but it didn't preclude a user from generating a looping channel program and using standard I/O interface with disks.
Not too long afterwards, I had done pagemapped filesystem enhancements
for cp67/cms
https://www.garlic.com/~lynn/submain.html#mmap
and allowed specifying that the virtual machine was not allowed to use standard SIO and/or channel programs with the filesystem.
I believe what the time-sharing service bureaus
https://www.garlic.com/~lynn/submain.html#timeshare
was add some more code to the disk diagnose interface that rejected any kind of non-normal disk I/O sequence ... and also precluded using anything but disk diagnose interface for accessing disks.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: History of performance counters Newsgroups: comp.arch,alt.folklore.computers Date: Sat, 29 Jan 2005 13:19:15 -0700Lee Witten writes:
note it was also possible to display the current instruction address in lights ... and i believe it was boeing wichita that trained a video recorder on the instruction address lights as a "cheap" performance monitor.
a problem with TCMs and advancing technology ... it was no longer possible to place probes at will thruout the computer. This sort of eliminated the old-style performance monitors but also created a problem for field engineering. For years, field service/sengineering had a requirement that they could boot-strap diagnose hardware problems starting with scope probes. As a result, the service processors were born. Service processors were simpler computing technology that could be scoped ... and in turn the service processor(s) had builtin probes at manufacturing for everything else needing to diagnose hardwrae problems.
Initially, 3081 had a uc.5 service processor. The follow-on 3090 initially was going to a 4331 as a service processor running a highly customized version of vm/370 release 6. This was upgraded to having dual 4361s as the 3090 service processors, both running highly customized version of vm/370 release 6.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sat, 29 Jan 2005 13:28:04 -0700one might even extend the line of reasoning with biological psuedo-science feature analogy ... that C evolved a data-pattern based length metaphor for storage areas with defined data-patterns and no defined length feature for storage areas with no defined (or ill-defined) data patterns ... because the original C environment was rich in storage areas with data patterns and deficient in storage areas with undefined or ill-defined data patterns.
further extending the biological psuedo-science analogy ... one would observe that populations with vested interests in the evolved data-pattern based length metaphor (adequate for storage areas with defined data patterns) would be resistant to other length metaphors (that might possibly also be used for storage areas with undefined or ill-defined data patterns).
a slight correllary is that most length metaphors that are adeqaute for storage areas with undefined or ill-defined data patterns are also adeqaute for storage areas with well defined data patterns ... while the reverse is not necessarily true (i.e. the nul-terminated length metaphore for defined data pattern storage areas can be quite inadequate for storage areas with undefined data patterns).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sat, 29 Jan 2005 14:12:44 -0700Joe Morris writes:
when they did SVS ... they laid MVT kernel out in 8mbyte of the (24bit/16mbyte) virtual address space, leaving 8mbytes of virtual address space for loading and running applications. Part of this was that the standard os/360 paradigm was heavily pointer passing based ... so there was lots of code all over the place was dependent on addressing the specific areas that the passed pointers ... pointed to. As a result, using the 8mbyte bit for one of the bits used to index TLB entries ... met than half the TLB entries went to virtual addresses 0-7mbyte and half the TLB entries went to virtual addresses 8-15mbyte.
later when they went to MVS ... they replicated the virtual address space structure from SVS ... but creating a unique virtual address space for each application (an application under MVS would have thot it was running under SVS as the only application). The kernel continued to occupy 8mbytes of each virtual address space.
There was a problem tho ... MVT and SVS had a bunch of semi-privileged subsystem applications ... that were now resident in their own address space. Regular applications still used pointer-passing paradigm to request services of these subsystems functions ... however, they were now resident in different address spaces with no common addressability. The hack was to create something called the common segment (which came out of the 8mbytes of virtual address space reserved for application). Basically passed values were moved into the common segment so that the pointer passing paradigm continued to work.
The problem in the SVS paradigm ... was that all concurrently running applications had to share 8mbyte from 16mbyte virtual address space. The problem in the MVS paradigm ... was that the common segment area was cut out of the application 8mbyte area ... and had to be large enuf to accommodate all the different kinds of subsystems an installation might have running. In the late MVS/370/168 time-frame, it was common for large installations to have 4-5mbyte common segment areas (leaving only 3-4mbytes of virtual address space for each application).
So along comes 3033 ... and they come up with a new hack ... called dual-address space support. This allowed a normal application to pass a pointer to a semi-priviledge application running in a totally different address space ... and for that application to have access to both its own address space ... and the calling programs address space (allowing the pointer-passing paradigm to continue to work).
Dual-address space was generalized in XA to access registers and program call. Prior to XA there was still quite a bit of library code that would reside in the application address space ... and it was possible to directly call such code by picking up the address of the routine and doing a direct branch-and-link. Either making calls to sub-system applications (in another address space) and/or moving lots of the library stuff to another address space ... would require a kernel call ... and kernel interrupt routine decoding the kernel call, switching the virtual address space and a bunch of other gorp. program call and access registes was a mechanism that defined a hardware table with structure that enforced some number of rules about making direct calls (and returns) to code in different virtual address spaces (handling all the required changes to virtual address space pointers) ... eliminating kernel call overhead processing.
random past dual-address space and access register postings:
https://www.garlic.com/~lynn/98.html#36 What is MVS/ESA?
https://www.garlic.com/~lynn/2000c.html#84 Is a VAX a mainframe?
https://www.garlic.com/~lynn/2000d.html#28 RS/6000 vs. System/390 architecture?
https://www.garlic.com/~lynn/2000e.html#58 Why not an IBM zSeries workstation?
https://www.garlic.com/~lynn/2001d.html#28 Very CISC Instuctions (Was: why the machine word size ...)
https://www.garlic.com/~lynn/2001d.html#30 Very CISC Instuctions (Was: why the machine word size ...)
https://www.garlic.com/~lynn/2001h.html#73 Most complex instructions
https://www.garlic.com/~lynn/2001i.html#13 GETMAIN R/RU (was: An IEABRC Adventure)
https://www.garlic.com/~lynn/2001k.html#16 Minimalist design (was Re: Parity - why even or odd)
https://www.garlic.com/~lynn/2002d.html#51 Hardest Mistake in Comp Arch to Fix
https://www.garlic.com/~lynn/2002g.html#5 Black magic in POWER5
https://www.garlic.com/~lynn/2002g.html#17 Black magic in POWER5
https://www.garlic.com/~lynn/2002g.html#18 Black magic in POWER5
https://www.garlic.com/~lynn/2002h.html#21 PowerPC Mainframe
https://www.garlic.com/~lynn/2002l.html#51 Handling variable page sizes?
https://www.garlic.com/~lynn/2002l.html#57 Handling variable page sizes?
https://www.garlic.com/~lynn/2002n.html#58 IBM S/370-168, 195, and 3033
https://www.garlic.com/~lynn/2002n.html#74 Everything you wanted to know about z900 from IBM
https://www.garlic.com/~lynn/2002p.html#43 cost of crossing kernel/user boundary
https://www.garlic.com/~lynn/2002q.html#1 Linux paging
https://www.garlic.com/~lynn/2003c.html#13 Unused address bits
https://www.garlic.com/~lynn/2003d.html#53 Reviving Multics
https://www.garlic.com/~lynn/2003d.html#69 unix
https://www.garlic.com/~lynn/2003e.html#0 Resolved: There Are No Programs With >32 Bits of Text
https://www.garlic.com/~lynn/2003e.html#12 Resolved: There Are No Programs With >32 Bits of Text
https://www.garlic.com/~lynn/2003g.html#13 Page Table - per OS/Process
https://www.garlic.com/~lynn/2003m.html#29 SR 15,15
https://www.garlic.com/~lynn/2004c.html#6 If the x86 ISA could be redone
https://www.garlic.com/~lynn/2004e.html#41 Infiniband - practicalities for small clusters
https://www.garlic.com/~lynn/2004f.html#27 [Meta] Marketplace argument
https://www.garlic.com/~lynn/2004f.html#53 Infiniband - practicalities for small clusters
https://www.garlic.com/~lynn/2004n.html#26 PCIe as a chip-to-chip interconnect
https://www.garlic.com/~lynn/2004n.html#54 CKD Disks?
https://www.garlic.com/~lynn/2004o.html#18 Integer types for 128-bit addressing
https://www.garlic.com/~lynn/2004o.html#57 Integer types for 128-bit addressing
https://www.garlic.com/~lynn/2005.html#3 [Lit.] Buffer overruns
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sat, 29 Jan 2005 14:50:19 -0700dutch writes:
my personal computer was 64kbyte 360/30 ... normally the university shutdown the computing center from 8am sat. until 8am monday. I got a key to the machine room and could have it all to myself for 48hrs on the weekend ... but it was a little hard after staying awake for 48hrs to go to monday classes.
anyway ... nearly 40 years later ... i'm typing this on (almost) 4gbyte machine ... in little less than 40 years i've doubled the number of memory address bits on my personal computer from 16 to 32.
the issue back then was price/performance ... the cost of the hardware versis the cost of programmers improving performance ... did it result in a net benefit. the cost of hardware has declined significantly while the cost of programmers has gone up (making it a lot harder to show any net benefit of improved system performance against the cost of people doing the improved performance.
there is also the equation of lost opportunity ... given scarce programming resources (regardless of the cost) is the benefit greater applying them to new feature/function versis improving current performance. back then ... once you got the application running ... it needed to run well.
also, back in the dark ages ... with the relative high hardware costs ... the number of different business processes that could be justified automating was much fewer (and it was easier to justify making the ones that could be justified, run better).
with increasing people costs and declining hardware costs ... it is possible to cost justify automating huge numbers of additional business processes ... making more sense to apply scarce programming resources to automating additional business processes (as opposed to optimizing existing automated business processes).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt Date: Sat, 29 Jan 2005 15:14:06 -0700daw@taverner.cs.berkeley.edu (David Wagner) writes:
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt Date: Sat, 29 Jan 2005 15:43:25 -0700one such scenario is my dual-use attack on digital signatures.
the scenario was an infrastructure tha correctly and appropriately applied digital signatures for approving/authorizing something and they could prove that there was no bugs in their code or cryptography.
the problem is that digital signatures is nominally an authentication (and message integrity) paradigm ... while human signatures carry the connotation of having read, understood, approved, agree, and/or authorize that which is being signed. basic digital signature paradigm lacks any such operations ... to some extent it would have been much more appropriate semantic use to label it digital DNA ... rather than digital signature.
so they could prove that the message integrity hadn't been affected and that it actually originated from the correct place ... but they fail to demonstrate anything about whether a person has actually read, understood, agreed, approved, and/or authorized the contents being digitally signed.
the other problem is that given open public key environment ... one might conjecture that a person might actually use their public/private keys in straight authentication events .... having nothing at all to do with any described authorization environment under consideration.
some number of such authentication environments will be somewhat challenge/response ... with random data being presented for signing, the entity performing digital signature on the random data and returning it. the issue in the dual-use attack is that if an individual is ever capable of using their private key to digitally sign a random piece of data w/o having read, understood, agreed, authorized, and/or approved such random data ... then they have potentially compromised the use of that same private key for any approval/authorization operation.
so in addition to not providing any digital signature infrastructure that proves that the human has read, understood, agreed, approved, and/or authorized the content (as is customarilly understood to be implied with a human signature) ... they have not provided any safeguards to absolutely eliminate the chance that the same private key might ever be used in a authentication operation where the same private key signs possibly random data w/o the human having first read, understood, agreed, approved, and/or authorized the contents.
So a trivial solution might be to make it mandatory that every time a private key is used to create a digital signature ... that the data being signed has an appended disclaimer (as part of the data being signed) that states the existance of the digital signature in no way implies that the contents has been read, understood, agreed, approved, and/or authorized. To not have such a mandatory included disclaimer takes significant effort on the part of the person responsible for the digital signature ... i.e. some series of significant events that proves they have read, understood, agreed, approved and/or authorized the contents being digital signed (i.e. it is otherwise impossible to create a digital signature on purely random data ... it is mandatory that all data being digitally signed includes disclaimers and it is otherwise impossible to create a digital signature for data that doesn't contain such mandatory disclaimers).
misc. past dual-use posts
https://www.garlic.com/~lynn/aadsm17.htm#57 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm17.htm#59 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#0 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#1 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#2 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#3 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#4 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#6 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#12 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#13 dual-use digital signature vulnerability
https://www.garlic.com/~lynn/aadsm18.htm#17 should you trust CAs? (Re: dual-use digital signature vulnerability)
https://www.garlic.com/~lynn/aadsm18.htm#32 EMV cards as identity cards
https://www.garlic.com/~lynn/2004h.html#51 New Method for Authenticated Public Key Exchange without Digital Certificates
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: Keeping score Newsgroups: alt.folklore.computers Date: Sat, 29 Jan 2005 17:42:13 -0700Brian Inglis writes:
fairly large number of times doing monday classes after 48hrs straight in the machine room.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: History of performance counters Newsgroups: comp.arch,alt.folklore.computers Date: Sat, 29 Jan 2005 23:15:26 -0700artie writes:
.... however, some people said that I couldn't put out a resource manager that didn't have tuning knobs ... because the most modern state of the art performance management stuff had lots & lots of tuning knobs. unfortunately ... i had done a whole lot of stuff with self monitoring, dynamic adaptive, etc. ... so I put in some turning knobs to make it look a lot more modern ... give people lots and lots of manual activity ... instead of just doing the right thing dynamically adaptive continuously as configuration and workload changed. So there were official product documents describing all the formulas ... and all the source was readily available (i.e. source distribution and source maintenance back them).
so there was this little joke ... right in plain site in the code ... ... in OR relms it is sometimes referred to as degrees of freedom ... guess whether the manual knobs or the automatic dynamic adaptive feedback values had the greater degrees of freedom?
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sun, 30 Jan 2005 09:06:03 -0700Peter Flass writes:
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sun, 30 Jan 2005 09:27:18 -0700"Douglas A. Gwyn" writes:
numerous storage areas (like buffers) may have undefined or ill-defined data pattern contents which it makes it difficult to apply a data pattern based length paradigm to such storage areas
a simple example is a storage area that is currently an empty buffer ... and into which, there is some desire to copy the contents of another storage area ... which does have a defined data pattern and for which there is a "from" length that can be determined (because of a data pattern based length paradigm) ... but the length of target storage location has no determinable value (unless supplied).
one could hypothesize that many buffer overruns (and the source of many buffer overflow attacks) are because of operations that copy data from source storage area (for which there is a determinable length, using an in-band, data pattern based length paradigm) to a storage area (for which there is not a readily determinable length and/or an inccorrectly determined length, in part because the default paradigm of in-band, data pattern base length determination is not easily applicable to target storage areas that don't yet contain any defined data).
there would seem to be at least a design inconsistency and/or deficiency in the implementation of such copy operations where the source storage length is determinable but the target storage length is not determinable (modulo some manual assistance by the programmer).
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sun, 30 Jan 2005 13:19:06 -0700Brian Inglis writes:
there are similar types of problems with register content management failures in assembler code ... that are pretty much eliminated by most (higher-level) programming languages.
most PL would allow some form of exceeding array bounds ... if the programmer iniitailized the index/counter/lengths incorrectly.
there tend to be much fewer problems with length initialization and out-of-bounds operations in environments where there are explicit values supported by the infrastructure from which to initialize length based operations (it is still not impossible to have length relates failures ... it is just that the frequency and probablity of them occurring are significanlty smaller ... and the programmer has to work much harder to make them happen).
one of the characteristics of the common C language environments is that there is a data-pattern based length metaphor supported for some areas of storage ... which are accessible to various kinds of length and array oriented operations.
a possible problem is that the data-pattern based length metaphor has a difficult time supporting length abstractions for areas of storage where the data pattern is undefined or ill-defined. a failure mode can frequently show up in copying the contents of one storage area to a different storage area. The length of the source storage area night be readily available to the infrastructure (assuming the source conforms to the in-band, data-pattern based length metaphor) ... but the length of the target storage area can frequently be indeterminate (w/o additional assistance from the programmer which appears to be prone to mistakes) since it may not yet contain any data that conforms to any pattern.
There seems to be a much lower probability of making mistakes related to storage area length operations when the infrastructure provides a standard and uniform length metaphor for descibing areas of storage. The issue in the common C language environment is that there is a common and widely used length metaphor for osme storage areas that is based on an in-band, data-pattern based length paradigm. However, an in-band data-pattern based length paradigm is difficult to apply to areas of storage that have undefined and/or ill-defined data patterns.
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: The mid-seventies SHARE survey Newsgroups: alt.folklore.computers Date: Sun, 30 Jan 2005 13:48:28 -0700dutch writes:
DAT/virtual memory was really expensive in 360 technology and tended to consume larger amounts of real memory .... but could more efficiently manage large amounts of real memory (in general the virtual memory versions of the kernels had larger fixed memory sizes and tended to have larger application space requirements for the minimum configuration). The 360-generation disk drives had much lower transfer speeds than the 3330, making 3330 really only practical on the higher-end 370s). There was also a recognized heavy channel busy burden doing 360 CKD seek/search/IO operations and as a result, 3330 also introduced new technology allowing channel disconnect during disk rotation operation ... which in turn required new kind of block multiplexor channel technology.
even retrofitting DAT hardware to 370/155 and 370/165 was a difficult and expensive process. The full 370 architecture called for some amount more stuff than was eventually made available to customers. There were some combined engineering, architecture and software meetings in POK where the 370/165 engineers said that it would delay announce and delivery by an additional six months if they had to engineer the full 370 virtual memory architecture specification. So as a result ... only a subset of the 370 virtual memory architecture was announced and shipped (based on what the 370/165 engineering schedule could actually handle).
some of these arguments could probably also be made about car manufactures ... why don't you see more car manufactures retrofitting 3-4 year old models with 2005 bodies and interiors.
If you are talking about field upgrade of existing 360s to accommodate all the various bits & pieces of technology introduced in 370 ... you could be talking about nearly a complete swap (except for possibly the covers).
most of the attention and effort was going to future system stuff
(with 370 activity actually only by a somewhat minor side issue)
https://www.garlic.com/~lynn/submain.html#futuresys
problem was that future system failed and was eventually canceled w/o
ever being announced (and then there was enormous effort to play
technology catchup with 370 because of all the lost years spent on
fs):
https://www.garlic.com/~lynn/2000f.html#16
https://www.garlic.com/~lynn/2003l.html#30
https://www.garlic.com/~lynn/2003p.html#25
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Sun, 30 Jan 2005 22:22:37 -0700"Hank Oredson" writes:
i had done the product rfc 1044 implementation for the stack. the nominal implementation got about 44kbytes/sec thruput pretty much consuming a 3090 processor. in tuning 1044 implementation at cray research, between a cray and a 4341-clone was able to drive it at essentially 4341 channel hardware speeds of 1mbyte/sec using only a modest amount of 4341-clone.
mist. past 1044 posts
https://www.garlic.com/~lynn/subnetwork.html#1044
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Mon, 31 Jan 2005 08:36:39 -0700Brian Inglis writes:
there are other PL environments where there are both infrastructure source lengths and infrastrcture target lengths ... and the infrastructure utilizes both the source length and the target length in copy operations. these environments tend to have much lower incidence of buffer overflow ... because the standard copy operations have both source length and target length ... even when the programmer has forgotten to do explicit length checks.
in assembler language environments i've studied ... there has been some significant number of failures because the programmer has failed to do sufficient register content management. this is a failure mode that almost doesn't exist in any of the standard programming languages.
two long ago and far away bits of information
1) the choice of infrastructure nul-terminated strings for length paradigm was explicitly chosen because it saved on bytes in the representation and possibly registers and instructions in generated code (as compared to a infrastructure length paradigm using pointer plus explicit length)
2) environments that have a single and consistent paradigm across multiplicity of different constructs tend to have people making fewer mistakes
my observations have been that
1) it is possible to apply the nul-terminated string paradigm to areas of storage containing defined data patterns ... while it isn't very practical to apply nul-terminated string paradigm to areas of storage that lack any defined data pattern (like an empty buffer).
2) in many other programming languages that have chosen pointer+length based length paradigm for use in infrastructure storage length definitions, they have applied the same, consistent paradigm to both areas of storage with defined data patterns (like strings) as well as areas of storage that don't have defined data patterns (like empty buffers). these environments tend to have much lower incident of buffer overflow and much lower incident of (successful) buffer overflow attacks. A specific example is that in these environments, a copy operation of some string to an empty buffer, the infrastructure has determinable lengths (and tends to make use of them) for both the source data area and the target data area (whether or not they've been explicitly provided by the programmer).
so a hypothetical question ... did the explicit choice of a data-pattern based length paradigm (in the C language environment which only supports strings) inhibit the development of a infrastrcture length paradigm that applied to areas of storage w/o defined data patterns (like buffers). this is compared to other programming environments which have a infrastructure length paradigm that is consistant and uniform applicable to all kinds of storage areas (strings and buffers).
Or conversely, if the explicit C decision had been to choose a pointer+length representation for strings ... would that paradigm implementation also have naturally extended to all storage areas (including buffers). If C had a single, consistant infrastrucutre length paradigm that was applicable to all areas of storage ... and was in use by basic infrastructure operations ... would C have frequency of buffer overflow vulnerabilies comparable to other enviornments?
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Mon, 31 Jan 2005 08:41:04 -0700"Tom Linden" writes:
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/
From: Anne & Lynn Wheeler <lynn@garlic.com> Subject: Re: [Lit.] Buffer overruns Newsgroups: sci.crypt,alt.folklore.computers Date: Mon, 31 Jan 2005 09:06:20 -0700Anne & Lynn Wheeler writes:
misc. recent postings mentioning no-execute
https://www.garlic.com/~lynn/2004q.html#82 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005b.html#25 360POO
https://www.garlic.com/~lynn/2005b.html#39 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#0 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#1 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#3 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#5 [Lit.] Buffer overruns
https://www.garlic.com/~lynn/2005.html#32 8086 memory space [was: The Soul of Barb's New Machine]
--
Anne & Lynn Wheeler | https://www.garlic.com/~lynn/