RAM, EMS, XMS, LIM, conventional, expanded/extended, paged/ linear. And you thought the library world had a lot of obscure acronyms and jargon. What is all this?
As you may have guessed, these terms all refer to your computer's memory. What I want to do in this article is define these terms and explain why it's important to have some basic understanding of them.
RAM stands for random access memory. It's the area of the computer that temporarily stores information needed to perform a task. For the purpose of this discussion, we'll confine ourselves to two kinds of information: program code and data.
Code and Data
Program code consists of the instructions that the computer follows to perform the task at hand. An instruction can be quite literally anything, such as reading a chunk of data from a disk (which involves another type of memory called ROM BIOS, but we're not even going to go into that here), or it can be an instruction to interpret a keystroke and do something with it.
A complex application such as Paradox or Quattro Pro or WordPerfect will have hundreds of thousands, even millions of instructions. They are coded by programmers and compiled into machine language that the computer's microprocessor can understand and execute. Program code is static; once compiled it never changes.
Data, on the other hand, is dynamic, and of course it is the data that we are most concerned with when we use a computer. Data is always changing - if it didn't, we wouldn't need a computer to process it.
But data comes in many forms. The words now being typed are data; numbers entered into a spreadsheet are data. That's pretty obvious, but when I make a selection from a spreadsheet menu, I'm providing data to the computer. When I press a function key in WordPerfect or use an arrow key to move the cursor, I'm also sending data. These data tell the computer what instructions to execute next.
So the computer uses RAM to hold the program code and data. How big is RAM? How much RAM do you need?
There are no definite answers to these questions. RAM is as big as it happens to be in any particular computer. The amount you need depends on what you want to do with the computer, but it's a safe bet that you need more now than you used to need.
When personal computers were first introduced they didn't have much memory - perhaps 64 kilobytes. (See the sidebar "Bytes, Kilobytes, and Beyond.") You couldn't do much with that little memory.
The standard fBM PC that thousands of people and businesses bought in the early 1980s had 256 kilobytes of RAM. That was better, but it wasn't long before application programs got more complex and required even more memory. Soon, 640 kilobytes became the standard for a DOS-based machine.
Conventional Memory Actually, those 640-kilobyte machines really had 1,024 kilobytes of memory a full megabyte. As Figure I shows, the extra 384 kilobytes was used by the adapter segment. This is the area of memory used by various hardware and system devices, such as video memory.
Because of a limitation of DOS, 640 kilobytes was the maximum that any program could use directly, and the 8086 and 8088 processors contained in the PC could not address more than I megabyte of -memory in any case. This is what we now refer to as conventional memory - the first megabyte. In practical terms, it's really only the first 640 kilobytes.
So the 1,024 kilobytes (1 megabyte) that you see in Figure 1 was pretty much it. If you think of it as a block reaching from 0 kilobytes to 1,024 kilobytes, DOS loads in the bottom several kilobytes, leaving the rest up to 640 kilobytes for program code and data.
As programs grew larger and more complex, this became known as the 640-kilobyte barrier." It was a real hinderance to programmers, because in order to make programs more sophisticated and add more bells and whistles, they had to devise ways to get around the 640hinderance barrier.
Overlays and Other Tricks One of the earliest methods they used was the concept of overlays. They wrote programs such that the core was an executable (.EXE) file, but the remainder of the program code was in overlay files. When the program needed access to instructions in one overlay, it loaded that into memory. Later it might unload that one and load a different one. It worked, but all that swapping in and out made the programs run slower.
Variations on the overlay method are still around. Borland International has created a slick version they call VROOMM (Virtual Runtime ObjectOriented Memory Manager) that enables you to run a very sophisticated, highly complex program such as Quattro Pro in as little as 512 kilobytes of RAM. But moving code to and from disk still slows things down a lot.
Expanded Memory A dramatic improvement in available memory occurred when Lotus, Intel, and Microsoft LIM) got together and created an expanded memory specification (EMS). LIM EMS provided a way for computers with 8086 or 8088 processors to access memory beyond the 640kilobyte limit. Expanded memory is also known as paged memory, and you can see how it works in Figure 2.
The column on the right of Figure 2 represents all of the expanded memory in a given computer, whether it be 1, 2, 4, or more megabytes. Me memory is divided into logical "pages" of 16 kilobytes each. Four of these pages can fit into the EMS window and thus be accessible to a program.
As different pages are needed, the EMS driver swaps them in and out of the window, effectively breaking the 640kilobyte barrier.
To create expanded memory, you first must add more memory to your system on an expanded memory card. Then you load a LIM EMS device driver in the CONFIG.SYS file on your boot disk. When the computer boots, the EMS driver creates a 64-kilobyte window in the adapter segment of RAM. Finally, in order to make use of this added memory, you have to run programs that are EMS-aware. Many, but not all, of today's programs conform to LIM EMS 3.2 or 4.0 specifications.
Versions of LIM EMS
The first widely accepted version of LIM EMS was 3.2. Application programs that can use LIM EMS 3.2 will usually state this on the box. But there was a problem. Under 3.2, only data could be switched to expanded memory, not program code. This meant that you could create a huge spreadsheet, for example, but you still were limited to a spreadsheet program that ran within the 640-kilobyte limit.
And there's not just a restriction on program code. It turns out that under 3.2 only certain kinds of data can reside in expanded memory. Some kinds of data, such as formatting instructions, still need to be in conventional memory. So while you might still have plenty of expanded memory available, your spreadsheet couldn't get any bigger because conventional memory was full.
LIM EMS 4.0 improved that. With this version, it became possible to move program code as well as data into expanded memory, so the application itself was no longer confined to 640 kilobytes. Of course, the application must be compatible with LIM EMS 4.0. Many are these days; some even require it.
If your computer has an 8086 or 8088 microprocessor that's as far as you can go. But for those with 80286 or higher processors (80386SX, 80386, 80486), there is an even better form of additional memory: extended memory (XMS).
Where expanded memory is paged, extended memory is linear, because it is located directly above conventional memory (in a line, so to speak; see Figure 3). You must have at least a 286 to use extended memory, because the 808x cannot address more than 1 megabyte of memory.
Extended memory is much better than expanded memory due to its linear nature. It is faster than expanded memory because there is no page switching involved, and programs that use it can store both code and data there.
Look for more software to be XMS-aware in the months and years to come. For those programs that use expanded memory but not extended, it is possible to make extended memory emulate expanded.
Getting Around DOS Limitations We are still working with DOS here, don't forget, and DOS by itself can only work with 640 kilobytes. It doesn't know about extended memory and neither do most of the application programs written to run under DOS. So we need something else to make use of extended memory. Typically, an extended memory device driver such as HIMEM.SYS will do the trick. Here again, your application program itself must be able to recognize and use XMS.
Some programs have what is known as a "DOS extender" built into them that permits them to use extended memory. Release 3.x of Lotus 1-2-3 is such a program. It requires you, in fact to have at least I megabyte of RAM, and a minimum of 384 kilobytes must be extended. Borland's Paradox database management system is another program that utilizes extended memory.
Finally, we come to Microsoft Windows 3.0. Because Windows is an operating environment that runs on top of DOS, and because one of the things Windows does is manage extended memory efficiently, the 640-kilobyte barrier is no longer a problem. Any Windows application can address all the extended memory in your system, and multiple Windows applications can have access to megabytes of memory at the same time.
Memory and You
So why should you concern yourself with all this LIM EMS and XMS gobbledygook? Simply because it's where computers are now and where they are going.
The trend for software developers is to take full advantage of technology, and the technology is here now for us to have literally gigabytes of RAM. You just won't be seeing productivity software that runs in 256 kilobytes any mote. I'm sure you've run into this already. So what are you going to do?
Well, you're going to buy more memory if you haven't done so already, and you're going to abandon the 808x processor, too.
If you have an 808x with only 256 or 512 kilobytes of RAM and you don't want to upgrade, you have two choices. You can stick with the old applications like Lotus 1-2-3 Release 1A, or you can add expanded memory and limit yourself to programs that work with LIM EMS.
It might be much better in the long run, however, to take advantage of recent developments in computer technology and software design. Move up to an 80x86 machine - in fact, don't even waste your money on an 80286. Get a 386SX, at least. Then put as much extended memory into the thing as you can. The old saying that you can never have too much RAM is true, and the dividing line between enough and not enough keeps rising.
And when you are buying hardware remember this: a 20-Mhz 386 with 8 megabytes of RAM is probably better than a 33-Mhz 386 with 2 megabytes of RAM. The price is roughly the same, but unless you are really into high-powered number crunching, the extra memory will be more beneficial than the faster clock.
Look at that sidebar again. Does it really say 4 gigabytes? Yes, and I wonder how long it will be before somebody markets a killer software program that requires I gigabyte of RAM. It could be sooner than you think.
Editor-in-Chief Wanted for Library Software Review
Meckler invites interested librarians to submit applications for the position of editor-in-chief of Library Software Review (LSR) due to the resignation of the incumbent. Responsibilities include: article solicitation; preparation of six issues per year; coordination of software and book review columns; contact with library software vendors; attendance at major library technology conferences; and other duties as appropriate. The editor is required to provide all copy in machine-readable format according to in-house guidelines. The successful applicant must develop a network of contributing writers and work closely with Meckler staff to maintain LSR's high-quality content. Remuneration includes an annual stipend, reimbursement for associated costs, a fixed honorarium budget for contributors, a travel stipend, and complimentary registration at annual Computers in Libraries conferences.
Applications should include a statement of interest and a proposal indicating editorial plans. Applications should be sent to:
Meckler, 11 Ferry Lane West, Westport, CT 06880 (203-226-6967; fax 203-454-5840) internet: Meckler@tigger.jvnc.net; ALANET: ALA0960
For further information contact A. Abbott or N. Nelson at Meckler.
Bytes, Kilobytes, and Beyond The basic unit of measure for our purpose is the byte. (Yes, it's true that a byte is composed of 8 bits, which is the real basic unit, but we don't need to go into that here.) A byte is roughly equal to a single typed character. A five-letter word occupies five bytes of storage space, either in RAM or on disk.
Due to the nature of the binary (base 2) number system upon which all electronic computing is based, larger units are based on powers of two. Because humans like to talk in round numbers, we have adopted a convention borrowed from our familiar decimal system when naming these larger units. Thus we use the term kilobyte" when referring to one thousand bytes, even though it isn't really one thousand.
When you take the base 2 (and remember, in binary there isn't a 2 just 0 and 1 ) and raise it to the fourth power, you get 16; raised to the eighth, you get 256. Two to the tenth power is 1,024, and that's pretty close to a thousand, and so 1 kilobyte is 1,024 bytes. All right, let's keep going.
What about a thousand kilobytes? That would be a million bytes, right? Except that we are dealing with powers of 2, remember. So it isn't a thousand kilobytes, it's 1,024 kilobytes.
The actual number is 1,048,576 bytes, and that's a megabyte.
Now, one step farther. What's a billion bytes? Following the same reasoning, it would be 1,024 megabytes, which works out to 1,073,741,824 bytes. We call that a gigabyte.
Why am I telling you all this in article about RAM? Because even though the 808x processor can address only 1 megabyte of RAM, its big brothers are capable of much more. The 80286 can handle 16 megabytes of memory, which seems like a lot and is, in today's terms), but that pales in comparison to the 386 and 486 processors. They can each address a whopping 4 gigabytes of RAM! That's 4,294,967,296 bytes. And that's a whole bunch of zeros and ones.
|Printer friendly Cite/link Email Feedback|
|Title Annotation:||computer memory|
|Publication:||Computers in Libraries|
|Date:||May 1, 1991|
|Previous Article:||Hi tech tools and the Library Echo.|
|Next Article:||Will the real hypertext please stand up?|