IBM's First OS still supported: DOS/VS release 34
on
Oldest Supported Software?
·
· Score: 3, Informative
IBM's First OS for the 16k IBM 360 model 30 in 1964 was DOS. DOS evolved to DOS/VS release 34 by 1968.
DOS/VS release 34 is still supported and runs on
several hundred systems. The LAST bug in DOS/VS r34
was fixed in 1980.
It is inexcusable that any C or C++ compiler allocates local variables in the same page as the procedure call stack return address.
A Stack frame should be a fixed 4 word struct with a Link Pointer to the previous frame, a Heap Limit Address, Local Variable Base Address and Return Address. The call stack should be allocated at a lower address than the heap and/or all local variables and there should be a 4k-64k Guard Buffer of non- addressable storage before and after the stack.
Negative array indexes and absolute pointers should both be prohibited by the compiler and runtime ABI. All Pointers should be Handles that contain an offset from the base of the heap. All pointer arithmetic should be done with unsigned addition before adding the base address. A Pointer Overflow Error Exception would be raised if the overflow, carry or sign flag was set. A Stack Overflow Error Exception would be raised if the local variable base is less than the heap limit.
Such restrictions would have no impact on well designed code but they would make it impossible to execute arbitrary code due to a buffer overrun.
The Heap Base and Local Variable Base would be kept in registers. Only a 1 load penalty would be incurred to access a local variable from a caller's local variable frame. No value testing or branches would be added to the procedure call mechanism.
1) Eliminate all offshore tax shelters 2) Eliminate R&D deductions equal to the saleries
of US workers replaced by offshore workers 3) Eliminate H1b and L1 Visas for any quarter
where the unemployment rate in the target
industry exceeds 3% 4) Offer a Tax deduction of 20% of the witholding tax
paid by US employees with saleries between
1.5 and 10 times the minimum wage
This would make US employees cost competitive with low paid forign workers.
This algorithm was originally developed on or about 1969-1972 by Patrick O'Neil Email: poneil@cs.umb.edu for Computer Coproration of America as part of the Model204 DBMS kernel.
The SMP implementation was done in 1975 for the 370 model 168.
Any "IP" for the algorithm belongs to Computer Corporation of America. . . ./*
* Copyright (c) 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)subr_rmap.c 1.2 (2.11BSD GTE) 12/24/92
*/
#include "param.h" #include "systm.h" #include "map.h" #include "vm.h"/*
* Resource map handling routines.
*
* A resource map is an array of structures each of which describes a
* segment of the address space of an available resource. The segments
* are described by their base address and length, and sorted in address
* order. Each resource map has a fixed maximum number of segments
* allowed. Resources are allocated by taking part or all of one of the
* segments of the map.
*
* Returning of resources will require another segment if the returned
* resources are not adjacent in the address space to an existing segment.
* If the return of a segment would require a slot which is not available,
* then one of the resource map segments is discarded after a warning is
* printed.
*
* Returning of resources may also cause the map to collapse by coalescing
* two existing segments and the returned space into a single segment. In
* this case the resource map is made smaller by copying together to fill
* the resultant gap.
*
* N.B.: the current implementation uses a dense array and does not admit
* the value ``0'' as a legal address or size, since that is used as a
* delimiter.
*//*
* Allocate 'size' units from the given map. Return the base of the
* allocated space. In a map, the addresses are increasing and the
* list is terminated by a 0 size.
*
* Algorithm is first-fit.
*/
This can be done by replacing the local stepdown transformers that convert from 17KVA Power Lines to the 220/110V 3 Phase local Power Lines with saturation mode transformers that will not allow more than their maximum rated power to pass.
Power Stations can be protected by Superconducting Air Gap Transformers that inherently limit the transfer of power to the rated capacity of the station. Power Stations would then be able to stay online through a major overload without damage.
Any major overload or failure of the Transmission Grid would cause a brownout but would not cause a blackout.
Any localized overload would cause a local browout without causing any voltage or current instabilities on the high voltage Power Lines.
IBM's First OS for the 16k IBM 360 model 30 in 1964 was DOS. DOS evolved to DOS/VS release 34 by 1968. DOS/VS release 34 is still supported and runs on several hundred systems. The LAST bug in DOS/VS r34 was fixed in 1980.
It is inexcusable that any C or C++ compiler
allocates local variables in the same page
as the procedure call stack return address.
A Stack frame should be a fixed 4 word struct
with a Link Pointer to the previous frame,
a Heap Limit Address, Local Variable Base
Address and Return Address. The call stack
should be allocated at a lower address than
the heap and/or all local variables and there
should be a 4k-64k Guard Buffer of non-
addressable storage before and after the stack.
Negative array indexes and absolute pointers
should both be prohibited by the compiler
and runtime ABI. All Pointers should be
Handles that contain an offset from the
base of the heap. All pointer arithmetic
should be done with unsigned addition
before adding the base address. A Pointer
Overflow Error Exception would be raised
if the overflow, carry or sign flag was set.
A Stack Overflow Error Exception would
be raised if the local variable base is
less than the heap limit.
Such restrictions would have no impact on
well designed code but they would make it
impossible to execute arbitrary code due to
a buffer overrun.
The Heap Base and Local Variable Base would be
kept in registers. Only a 1 load penalty would
be incurred to access a local variable from a
caller's local variable frame. No value testing
or branches would be added to the procedure
call mechanism.
Use TAX Policy to keep jobs in the US
1) Eliminate all offshore tax shelters
2) Eliminate R&D deductions equal to the saleries
of US workers replaced by offshore workers
3) Eliminate H1b and L1 Visas for any quarter
where the unemployment rate in the target
industry exceeds 3%
4) Offer a Tax deduction of 20% of the witholding tax
paid by US employees with saleries between
1.5 and 10 times the minimum wage
This would make US employees cost competitive
with low paid forign workers.
This algorithm was originally developed
/*
/* /*
on or about 1969-1972 by Patrick O'Neil
Email: poneil@cs.umb.edu
for Computer Coproration of America as
part of the Model204 DBMS kernel.
The SMP implementation was done in 1975
for the 370 model 168.
Any "IP" for the algorithm belongs to
Computer Corporation of America.
.
.
.
* Copyright (c) 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)subr_rmap.c 1.2 (2.11BSD GTE) 12/24/92
*/
#include "param.h"
#include "systm.h"
#include "map.h"
#include "vm.h"
* Resource map handling routines.
*
* A resource map is an array of structures each of which describes a
* segment of the address space of an available resource. The segments
* are described by their base address and length, and sorted in address
* order. Each resource map has a fixed maximum number of segments
* allowed. Resources are allocated by taking part or all of one of the
* segments of the map.
*
* Returning of resources will require another segment if the returned
* resources are not adjacent in the address space to an existing segment.
* If the return of a segment would require a slot which is not available,
* then one of the resource map segments is discarded after a warning is
* printed.
*
* Returning of resources may also cause the map to collapse by coalescing
* two existing segments and the returned space into a single segment. In
* this case the resource map is made smaller by copying together to fill
* the resultant gap.
*
* N.B.: the current implementation uses a dense array and does not admit
* the value ``0'' as a legal address or size, since that is used as a
* delimiter.
*/
* Allocate 'size' units from the given map. Return the base of the
* allocated space. In a map, the addresses are increasing and the
* list is terminated by a 0 size.
*
* Algorithm is first-fit.
*/
The fix is to force MaxLoad less than Supply.
This can be done by replacing the local
stepdown transformers that convert from
17KVA Power Lines to the 220/110V 3 Phase
local Power Lines with saturation mode
transformers that will not allow more
than their maximum rated power to pass.
Power Stations can be protected by
Superconducting Air Gap Transformers
that inherently limit the transfer of
power to the rated capacity of the
station. Power Stations would then be
able to stay online through a major
overload without damage.
Any major overload or failure of the
Transmission Grid would cause a brownout
but would not cause a blackout.
Any localized overload would cause a
local browout without causing any
voltage or current instabilities on the
high voltage Power Lines.