JavaScript and Browsers

What is JavaScript?

What is a Browser?
What is a modem?

Microsoft vs Sun
Browser Wars
Microsoft DOS and Virtual Memory
386 and Virtual Memory

The  Microsoft DOS 5 had device drivers (Chapter 15) which controlled the upper memory area. The upper memory area sits above conventional memory (expanded memory), and extended memory sits above this. It defined the virtual memory as being called the Microsoft Virtual Machine (MVM) before Netscape released their JavaScript web browser) -later the Java Virtual Machine (JVM) and it did more than just control hardware memory. It actually created a virtual computer inside the intel chip (80386 and later) which vastly increased the memory and processing power of the computer (see RAMDRIVE.SYS) by creating virtual RAM (random access memory) and (unlimited) simulated hard disk drives within this virtual RAM. (To do this add one RAMDRIVE.SYS line to your config.sys file for each additional RAM disk.) To use extended memory you must first install HIMEM.SYS;  the device command that installs XMS extended memory manager must preceed the command that installs the RAM disk.

Disk sizes are between 16 and 4096 (kilobytes), with up to 512 sectors per disk, and up to 1024 files and directories per disk with the /e switch to create it in extended memory, and the /a switch to put in expanded memory (physical RAM).

device=[drive:][path] ramdrive.sys [DiskSize SectorSize][/e]


 Microsoft DOS and Virtual memory.

In 1990/91 Microsoft released DOS 5 for the 286 and 80386 and 486 intel chips.

The manual (which I wrote and archived) referred to extended and expanded memory.

There are also chapters on creating and running macros, and batch programs. P175

Intel Corporation (NASDAQINTC) is an American multinational technology corporation headquartered in Santa Clara, California, United States and the world's largest semiconductor chip maker, based on revenue.[4] It is the inventor of the x86 series of microprocessors, the processors found in most personal computers. Intel was founded on July 18, 1968, as Integrated Electronics Corporation (though a common misconception is that "Intel" is from the word intelligence). Intel also makes motherboard chipsets, network interface controllers and integrated circuits, flash memory, graphic chips, embedded processors and other devices related to communications and computing. Founded by semiconductor pioneers Robert Noyce and Gordon Moore and widely associated with the executive leadership and vision of Andrew Grove, Intel combines advanced chip design capability with a leading-edge manufacturing capability. Though Intel was originally known primarily to engineers and technologists, its "Intel Inside" advertising campaign of the 1990s made it and its Pentium processor household names.
Virtual Memory
The first minicomputer to introduce virtual memory was the Norwegian NORD-1; during the 1970s, other minicomputers implemented virtual memory, notably VAX models running VMS.

Virtual memory was introduced to the x86 architecture with the protected mode of the Intel 80286 processor, but its segment swapping technique scaled poorly to larger segment sizes. The Intel 80386 introduced paging support underneath the existing segmentation layer, enabling the page fault exception to chain with other exceptions without double fault. However, loading segment descriptors was an expensive operation, causing operating system designers to rely strictly on paging rather than a combination of paging and segmentation.

Page tables

Page tables are used to translate the virtual addresses seen by the application into physical addresses used by the hardware to process instructions; such hardware that handles this specific translation is often known as the memory management unit. Each entry in the page table holds a flag indicating whether the corresponding page is in real memory or not. If it is in real memory, the page table entry will contain the real memory address at which the page is stored. When a reference is made to a page by the hardware, if the page table entry for the page indicates that it is not currently in real memory, the hardware raises a page fault exception, invoking the paging supervisor component of the operating system.

Systems can have one page table for the whole system, separate page tables for each application and segment, a tree of page tables for large segments or some combination of these. If there is only one page table, different applications running at the same time use different parts of a single range of virtual addresses. If there are multiple page or segment tables, there are multiple virtual address spaces and concurrent applications with separate page tables redirect to different real addresses.

see IA-32.
Intel 386
KL Intel i386DX.jpg
Intel 80386 DX rated at 16 MHz
Produced From 1985 to September 2007
Common manufacturer(s)
  • Intel
  • AMD
  • IBM
Max. CPU clock rate 12 MHz to 40 MHz
Virtual memory combines active RAM and inactive memory in disk form into a large range of contiguous addresses.

Intel 8080, 8086, 8088, 80286

Despite the ultimate importance of the microprocessor, the 4004 and its successors the 8008 and the 8080 were never major revenue contributors at Intel. As the next processor, the 8086 (and its variant the 8088) was completed in 1978, Intel embarked on a major marketing and sales campaign for that chip nicknamed "Operation Crush", and intended to win as many customers for the processor as possible. One design win was the newly created IBM PC division, though the importance of this was not fully realized at the time.

IBM introduced its personal computer in 1981, and it was rapidly successful. In 1982, Intel created the 80286 microprocessor, which, two years later, was used in the IBM PC/AT. Compaq, the first IBM PC "clone" manufacturer, produced a desktop system based on the faster 80286 processor in 1985 and in 1986 quickly followed with the first 80386-based system, beating IBM and establishing a competitive market for PC-compatible systems and setting up Intel as a key component supplier.

In 1975 the company had started a project to develop a highly advanced 32-bit microprocessor, finally released in 1981 as the Intel iAPX 432. The project was too ambitious and the processor was never able to meet its performance objectives, and it failed in the marketplace. Intel extended the x86 architecture to 32 bits instead.[40][41]

386 microprocessor

During this period Andrew Grove dramatically redirected the company, closing much of its DRAM business and directing resources to the microprocessor business. Of perhaps greater importance was his decision to "single-source" the 386 microprocessor. Prior to this, microprocessor manufacturing was in its infancy, and manufacturing problems frequently reduced or stopped production, interrupting supplies to customers. To mitigate this risk, these customers typically insisted that multiple manufacturers produce chips they could use to ensure a consistent supply. The 8080 and 8086-series microprocessors were produced by several companies, notably AMD. Grove made the decision not to license the 386 design to other manufacturers, instead producing it in three geographically distinct factories in Santa Clara, California; Hillsboro, Oregon; and the Phoenix, Arizona suburb of Chandler; and convincing customers that this would ensure consistent delivery. As the success of Compaq's Deskpro 386 established the 386 as the dominant CPU choice, Intel achieved a position of near-exclusive dominance as its supplier. Profits from this funded rapid development of both higher-performance chip designs and higher-performance manufacturing capabilities, propelling Intel to a position of unquestioned leadership by the early 1990s.

The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit (CPU) of many workstations and high-end personal computers of the time. As the original implementation of the 32-bit extension of the 8086 architecture, the 80386 instruction set, programming model, and binary encodings are still the common denominator for all 32-bit x86 processors, this is termed x86, IA-32, or i386-architecture, depending on context.

The 80386 could correctly execute most code intended for earlier 16-bit x86 processors such as the 8088 and 80286 that were ubiquitous in early PCs. Following the same tradition, modern 64-bit x86 processors are able to run most programs written for older chips, all the way back to the original 16-bit 8086 of 1978. Over the years, successively newer implementations of the same architecture have become several hundreds of times faster than the original 80386 (and thousands of times faster than the 8086).[1] A 33 MHz 80386 was reportedly measured to operate at about 11.4 MIPS.[2]

Intel originally intended for the 80386 to debut at 16 MHz. However, due to poor yields, it was instead introduced at 12 MHz.

Early in production, Intel discovered a bug that could cause a system to unexpectedly halt when running 32-bit software. Not all of the processors already manufactured were affected, so Intel tested its inventory. Processors that were found to be bug-free were marked with a double-sigma (ΣΣ), and affected processors were marked "16 BIT S/W ONLY". These latter processors were sold as good parts, since at the time 32 bit capability was not relevant for most users. Such chips are now extremely rare.

The i387 math coprocessor was not ready in time for the introduction of the 80386, and so many of the early 80386 motherboards instead provided a socket and hardware logic to make use of an 80287. In this configuration the FPU would operate asynchronously to the CPU, usually with a clock rate of 10 MHz. The original Compaq Deskpro 386 is an example of such design. However, this was an annoyance to those who depended on floating point performance, as the performance of the 287 was nowhere near that of the 387.
John Crawford in 2011.

John H. Crawford is an American computer engineer and the chief architect of the Intel 80386 and Intel 80486 microprocessors. He also co-managed the design of the Intel P5 Pentium microprocessor family.[1] Crawford was the recipient of the 1995 Eckert–Mauchly Award. He was awarded the IEEE Ernst Weber Engineering Leadership Recognition in 1997.[2]

In computing, virtual memory is a memory management technique developed for multitasking kernels. This technique virtualizes a computer architecture's various forms of computer data storage (such as random-access memory and disk storage), allowing a program to be designed as though there is only one kind of memory, "virtual" memory, which behaves like directly addressable read/write memory (RAM).

Most modern operating systems that support virtual memory also run each process in its own dedicated address space, allowing a program to be designed as though it has sole access to the virtual memory. However, some older operating systems (such as OS/VS1 and OS/VS2 SVS) and even modern ones (such as IBM i) are single address space operating systems that run all processes in a single address space composed of virtualized memory.

Systems that employ virtual memory:

  • use hardware memory more efficiently than do systems without virtual memory.[citation needed]
  • make the programming of applications easier:

Memory virtualization is a generalization of the concept of virtual memory.

Virtual memory is an integral part of a computer architecture; all implementations (excluding[dubious ] emulators and virtual machines) require hardware support, typically in the form of a memory management unit built into the CPU. Consequently, older operating systems, such as those for the mainframes of the 1960s, and those for personal computers of the early to mid 1980s (e.g. DOS),[1] generally have no virtual memory functionality,[dubious ] though notable exceptions for mainframes of the 1960s include:

and the Apple Lisa is an example of a personal computer of the 1980s which features virtual memory.

In the Intel 80386 and later IA-32 processors, the segments reside in a 32-bit linear, paged address space. Segments can be moved in and out of that space; pages there can "page" in and out of main memory, providing two levels of virtual memory; few if any operating systems do so, instead using only paging. Early non-hardware-assisted x86 virtualization solutions combined paging and segmentation because x86 paging offers only two protection domains whereas a VMM / guest OS / guest applications stack needs three.[12]:22 The difference between paging and segmentation systems is not only about memory division; segmentation is visible to user processes, as part of memory model semantics. Hence, instead of memory that looks like a single large vector, it is structured into multiple spaces.

This difference has important consequences; a segment is not a page with variable length or a simple way to lengthen the address space. Segmentation that can provide a single-level memory model in which there is no differentiation between process memory and file system consists of only a list of segments (files) mapped into the process's potential address space.[13]

This is not the same as the mechanisms provided by calls such as mmap and Win32's MapViewOfFile, because inter-file pointers do not work when mapping files into semi-arbitrary places. In Multics, a file (or a segment from a multi-segment file) is mapped into a segment in the address space, so files are always mapped at a segment boundary. A file's linkage section can contain pointers for which an attempt to load the pointer into a register or make an indirect reference through it causes a trap. The unresolved pointer contains an indication of the name of the segment to which the pointer refers and an offset within the segment; the handler for the trap maps the segment into the address space, puts the segment number into the pointer, changes the tag field in the pointer so that it no longer causes a trap, and returns to the code where the trap occurred, re-executing the instruction that caused the trap.[14] This eliminates the need for a linker completely[2] and works when different processes map the same file into different places in their private address spaces.[15]


Make a free website with Yola