LinuxQuestions.org
Visit Jeremy's Blog.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Software > Linux - Kernel
User Name
Password
Linux - Kernel This forum is for all discussion relating to the Linux kernel.

Notices


Reply
  Search this Thread
Old 04-16-2010, 10:56 AM   #1
vikesh.u
LQ Newbie
 
Registered: Mar 2009
Posts: 13

Rep: Reputation: 0
Conventional Memory?


What is Conventional Memory?
When I googled a bit I came to Know that it is
First 640Kb of RAM.
What is the significance of it?
 
Old 04-16-2010, 11:02 AM   #2
pixellany
LQ Veteran
 
Registered: Nov 2005
Location: Annapolis, MD
Distribution: Mint
Posts: 17,809

Rep: Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743
Depends on how old you are.......some would say it means magnetic cores....

Seriously, I would say that "conventional" means physical RAM--as opposed to--eg--swap space.

What is the context of the question?
 
Old 04-16-2010, 11:34 AM   #3
brucehinrichs
Member
 
Registered: Mar 2008
Location: US
Distribution: Debian Sid; Sabayon, UbuntuStudio, Slackware-multilib 13.1, Peppermint Ice, CentOS
Posts: 575

Rep: Reputation: 69
I haven't heard it called 'Conventional Memory' before, but I believe it refers to:
Quote:
ROM
A small part of RAM does not reset when the computer switches off. It is called ROM, Read Only Memory. It is factory fixed and usually never changes through the life of a PC, hence the name. It overlaps the area of RAM close to the end of the first megabyte of memory, so that area of RAM is not physically usable. ROM contains instructions to start up the PC and access certain peripherals.
From: http://rute.2038bug.com/index.html.gz , section 3.1

EDIT: I noticed that it is also discussed in section 3.3 CMOS

Last edited by brucehinrichs; 04-16-2010 at 11:37 AM.
 
Old 04-16-2010, 12:16 PM   #4
johnsfine
LQ Guru
 
Registered: Dec 2007
Distribution: Centos
Posts: 5,286

Rep: Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197Reputation: 1197
Quote:
Originally Posted by vikesh.u View Post
What is Conventional Memory?
When I googled a bit I came to Know that it is
First 640Kb of RAM.
What is the significance of it?
The concept is only meaningful in MS-DOS and very early versions of Windows.

Before the 286, the x86 designs had an absolute limit of 1MB of address space and that address space was set up to allow only 640KB of ram.

When the 286 was introduced the hardware supported much more ram, but MS-DOS wasn't upgraded cleanly for support of the additional ram. It still acted like it was supporting only 640KB of ram even on systems with much more.

So there was a division of ram into "conventional" memory that the OS directly supported and various memory extension systems for indirectly partially supporting extra memory.

That is all very obsolete concepts and terminology now.

Last edited by johnsfine; 04-16-2010 at 12:17 PM.
 
Old 05-08-2010, 03:37 AM   #5
ArthurSittler
Member
 
Registered: Jul 2008
Distribution: Slackware
Posts: 124

Rep: Reputation: 31
Memory mapped video buffer at 0xA0000

The reason that "conventional memory" was 640K involves the architecture of the 8086 and the original standard IBM PC. The original PC had only 640KB of contiguous RAM space.

The 8086 was actually sort of an extended 16-bit processor. Memory addresses were limited to 20 bits (1MB address space) because the addresses were generated by 16-bit "segment" registers and 16-bit offsets. The contents of the segment registers were left shifted four bits and added to the offset addresses to create the memory address. This limited the addressing range of the CPU to 1MB. The original PC and clones often only had 256K or 512K RAM installed.

The first KB of RAM has a special purpose, as it contains the interrupt vector table. Hardware and software interrupts map to 256 8-bit interrupt numbers. The 80286 used four bytes for each interrupt by simply left-shifting the interrupt number 2 bits to create the interrupt vector address. Then it would fetch a 16-bit segment address and a 16-bit offset from the resulting interrupt vector address near the start of memory. The segment address was left shifted four bits and the offset address was added to the shifted segment address to produce a 20-bit address. That 20-bit address would be the address of the first instruction of the interrupt service routine which responded to the hardware or software interrupt. That is why we can never dereference a NULL pointer. It could never be a correct memory access because that is the address of interrupt vector 0. So it is in an address range that is only accessible by privileged processes. Later 32-bit processor still use the first KB for the interrupt vector table, but there may be an option to make the CPU interpret the interrupt vector as a 32-bit address, not a segment and offset 20-bit address, when the CPU enters protected mode.

Conventional memory is the contiguous 640KB of RAM starting at address 0x00000 and bounded at the upper end by the video display buffer address. The video display on the PC was memory mapped starting at 0xA0000 high in the 20-bit address space. The actual display memory was on a video controller card plugged into an IO card slot, but the video buffer address covered the access to those memory addresses. That is, writing to or reading from the video buffer addresses accessed the memory on the video controller card instead of accessing system memory. This left only 640KB contiguous RAM below the addresses mapped to the video buffer. Video buffers typically extended up to 0xBFFFF. BIOS ROM occupied 64KB addresses from 0xF0000 though the top of the address space, 0XFFFFF.

IO cards such as disk controllers mapped their own extended BIOS ROMs and memory buffers into the address space from 0XC0000 through 0xEFFFF, typically in 16KB chunks or 64KB large frames. Installing IO cards involved some effort to find IO port address ranges and memory address ranges that did not conflict with other IO cards, and setting IO and memory address switches on the cards.

When RAM became inexpensive enough that users could afford to add more memory beyond the first 1MB, this caused problems because the CPU could not directly address it. One solution involved mapping pages of the additional memory into some of the high memory address space above the video image buffer. The extended memory management system would map pages of the additional RAM into the upper memory addresses. The memory management system had to keep track of what extended memory addresses were actually mapped to the high memory addresses and make sure that the running application software had the right memory mapped whenever it accessed that memory. This unconventional method of accessing memory is what gave rise to the term "conventional memory".

The 80386 was actually a 32-bit machine and internally had 32-bit addresses, but as I recall it actually may have only had 24 physical address pins, and could only directly address 16MB physical RAM. Few machines of that era actually had that much RAM, however. Most topped out at 4MB.

However, there may still be that 16/20 bit legacy left over from the 8086 in Intel architecture machines today, because the processor still has to read its reset code from addresses in the 0xF0000-0XFFFFF address range. That is why Linux always must claim the first MB of physical RAM addresses for the kernel and only map higher addresses to user-mode memory. Linux kernels are usually much larger than 1MB, so this is not much of a problem. Also, the mother boards can electronically disable the BIOS ROM after it replaces the BIOS routines with its own software. This gives Linux a contiguous addressing space after it enters "protected mode" which uses full 32-bit addressing with the memory management unit (MMU) translating from logical addresses to physical addresses.

I am not sure whether recent 32-bit and 64-bit CPUs still have this legacy of discontinuous memory spaces, but I would not be surprised to find out that my 64-bit multi core CPU still emulates an 8086 at power-on reset.
 
Old 05-08-2010, 08:16 AM   #6
sundialsvcs
LQ Guru
 
Registered: Feb 2004
Location: SE Tennessee, USA
Distribution: Gentoo, LFS
Posts: 10,609
Blog Entries: 4

Rep: Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905Reputation: 3905
Now you know ...
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
kernel: how do pci-memory a conventional memory? vv40in Linux - Newbie 0 06-05-2008 02:55 AM
Difference between resident memory,shared memory and virtual memory in system monitor mathimca05 Linux - Newbie 1 11-11-2007 04:05 AM
LXer: Quantum computing billions of times faster than conventional computing LXer Syndicated Linux News 0 11-24-2006 02:21 AM
Dualboot non conventional means. At0mic_PC Slackware 4 02-08-2004 04:20 PM
Help!?! RH 8 Memory Mapping -High Memory-Virtural Memory issues.. Merlin53 Linux - Hardware 2 06-18-2003 04:48 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Software > Linux - Kernel

All times are GMT -5. The time now is 05:30 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration