Меморијска адреса
У рачунарству, меморијска адреса је концепт података коришћен на различитим нивоима софтвера и хардвера да би се приступило главном складишту меморије. Меморијске адресе су секвенце бројева ограничене дужине конвенцијално изложене и избачене да би се манипулисало њима. Такав нумерички семантик се базира на особинама CPU-a (као нпр. показивач инструкција и инкрементални адресни регистри), а такође се користи као низ подржан од стране разних програмских језика.

Типови меморијских адреса 
Постоје многи типови меморијских адреса. Другим речима, рачунар, чак и један програм може имати неколико различитих меморијских просторних адреса.

Меморија дигиталних рачунара, специфичније главна меморије, се састоји од много меморијских локација, од којих свака има физичку адресу, код, који CPU (или неки други уређај) може да искористи да би јој приступио. Углавном системски софтвер, нпр. BIOS, оперативни систем, и неки специјализовани корисни програми (нпр, тестери меморије), адресирају физичку меморију користећи машински код операнде или процесорске регистре, упућујући CPU директно до уређаја, који се зове меморијски контролер, да би се користила меморијска магистрала или системска магистрала, или одвојена контрола, адреса и магистрала података, да би се извршиле команде програма. Меморијска контрола магистрале се састоји од броја паралелних линија, коју сваки представља бинарни број (бит). Ширина магистрале, такође и број адресабилних јединица складишта, и број битова по јединици варира међу компонентама.

Рачунарски програм користи меморијске адресе да изврши машински код, складишти и поврати податке. Многи апликацијски програми немају знање о физичкој адреси. Него се обраћају логичким адресама, или виртуалним адресама, користећи рачунарску јединицу меморије управљања и оперативни систем меморијског мапирања; види испод.

Јединица адресне резолуције 
Многи модерни рачунари субајт-адресабилни, свака адреса идентификује једно осмобитно бајт скадиште; подаци који су превелики да би се складиштили у једном бајту се налазе у неколико бајтова који се састоје од секвенце консеквентних адреса. Постоје речима адресабилни рачунари, где је минимална складишна јединица процесорска реч. На пример, Data General Nova minicomputer, и Texas Instruments TMS9900 и National Semiconductor IMP-16 microcomputer су користили 16 битне речи, и постојали су многи 36 битни mainframe рачунари (нпр, PDP-10) који је користио 18 битне речи адресирања, не бајт адресирање, давајући адресни простор од 218 36 битне речи, просечно 1MB складишта. Ефикасност адресирање меморије зависи од величине бита магистрале корипћеног за адресе - што више битова се користи више адреса је доступно рачунару. На пример, 8-бит-бајт-адресабилна машина са 20-битном адресном магистралом (нпр. Intel 8086) може да адресира 220 (1,048,576) меморијских локација, или један MiB меморије, док 32-битна магистрала(нпр. Intel 80386) адресира 232 (4,294,967,296) локација, или 4 GiB-а адресног простора. У супротном, a 36-битна речима адресабилна машина са 18-битну адресну магистралу адресира само 218 (262,144) 36-битних локација (9,437,184 bits), еквивалентно 1.179.648 8-бит-бајта, или 1152 KB, или 1.125 MiB—мало више од 8086.

Неки старији рачунари (децимални рачунари), су били децимално бројно-адресабилни. На пример, у IBM 1620' магнетном језгу меморије идентификује се једна 6-битна децимала бинарног кода бројева, састоје се од парних битова, flag битова и 4 нумеричких битова. 1620 је користио 5-бројну децималну адресу, тако да у теорији највећа могућа адреса је била 99,999. У пракси, CPU је подржавао 20.000 меморијских локација, и до 2 опционалне ектерне меморијске јединице се могу додати, свака подржава 20.000 адреса, за укупно 60.000 (00000–59999).

Величина речи против величине адресе 

Величина речи је карактеристична у архитектури рачунара. Означава број цифара који CPU може да процесује одједном. Модерни процесори, укључујући и уграђене системе, обично имају реч величине 8, 16, 24, 32 или 64 бита; многи садашњи рачунари за свакодневну употребу користе 32 или 64 бита. Многе различите величине су се користиле током историје, укључујући 8, 9, 10, 12, 18, 24, 36, 39, 40, 48 и 60 бита.

Веома често, када се помене величина речи модерног рачунара, неки повезују то са величином адресног простора на том рачунару. На пример, за рачунар за који се каже да је "32-битан" такође обично има 32-битне меморијске адресе; бајт адресабилни 32-битни рачунар може адресирати 232 = 4,294,967,296 бајта меморије, или 4 гигабајта (GiB). Ово изгледа логично и корисно, зато што довољава једној меморијској адреси да се складишти у једној речи.

Али није увек овако. Рачунари често имају меморијске адресе мање или веће него њихове величине речи. На пример, скоро сви 8-битни процесори, као што је 6502, подржавају 16-битне адресе— јер да не подржавају, били би ограничени на 256 бајта меморије. 16-битни Intel 8088 је имао само 8-битну екстерну меморију магистрале на раним IBM рачунарима, и 16-битну Intel 8086 подршку 20-битног адресирања , дозвољавајући му да приступа на 1 MB више него 64 KiB меморије. Популарни Intel Pentium процесори од представљања Продужене физичке адресе (PAE) подржавају 36-битну физичку адресу, док углавном имајју 32-битну реч.

Модерни бит адресабилни 64-битни рачуран са одговарајућим оперативним системом може да адресира 264 бајта (или 16 exbibytes) што се сматра практично неограниченим.

Садржај сваке меморијске локације 

Свака меморијска локација у складишном програмском рачунару садржи бинарни број или децимални број неке врсте. У суштини, као подаци неких типова података или као инструкције, и употреба се детерминише инсрукцијом која је повраћа и манипулише.

Неки програмери су комбиновали податке и инструкције у речима да би сачували на меморији, када је била скупа: Manchester Mark 1 је имао простор од 40-бита речи да се складишти мало битова података – процесор је игрнорисао мали део у средини речи – и то се сматрало као вишак скадишних података. Самозамењујући програми као нпр. вируис третирају себе некад као инструкције а некад као податак. Самомодификујући код је данас искључен, зато што чини тестирање и одржавање диспропорцијално тешким да се сачувају неколико битова, и такође може да да нетачне резултате због компилатора или процесорских слутњи о машинском стању, али се још увек понекад користи намерно, али са великом пажњом.

Адресни простор у апликационом програмирању 
У модерној мултитаскинг околини, апликацијски процес обично има у себи адресни простор (или просторе) делиће меморије следећих типова:
 Машински код, укључујући:
 програмски спопствени код (историјски познат као сегмент кода или сегмент текста);
 дељене библиотеке.
 Податке, укључујући:
 иницијализоване податке (сегмент података);
 неиницијализоване (али алоциране) променљиве;
 run-time стек;
 heap;
 дељена меморија и меморијске мапиране фајлове.

Неки делови адресног простора можда нису ни мапирани.

Шеме адресирања 

Рачунарски програм може да приступи адреси експлицитно – у програмирању ниског нивоа то се зове апсолутна адреса, или понекад специфична адреса, и позната је као показивач података тип у језицима вишег нивоа. Али програм може такође користити релативне адресе које одређују локацију у релацији са негде другде (адреса базе). Постоји још много индиректних начина адресирања.

Мапирање логичких адреса са физичком и виртуалном меморијом такође додаје неколико нивоа индирекције; види испод.

Модели меморије 
Многи програмери сматрају да меморијска адреса нема разлику између простор кода и простора података (cf. above), ткаође и за физичку и виртуалну меморију (види испод) — другим речима, нумерички идентични показивачи се сматрају истим битом на RAM-у.

Међутим, многи ранији рачунари нису подржавали такав пљоснат модел меморије посебно, Harvard архитектуре машина тера програмска складишта да буду тотално одвојена од складишта података.

Многи модерни DSP-оив (као што је Motorola 56000) имају 3 различите области складишта — програмско складиште, коефицијентно складиште, и складиште података. Неке уобичајене инструкције се додају између све три области истовремено — мање складишних области би чиниле да се те инструкције изврше спорије.

Меморијски модели у x86 архитектури 

Рани x86 рачунари су користили сегменте меморијских модела адреса базиране на комбинацији 2 броја: меморијски сегмент, offset унутар тог сегмента.

Неки сегменти су намерно третирани као сегменти кодова, посвећени за инструкције, стек сегменте, или за нормалне сегменте података. Иако су употребе биле различите, сегменти нису имали различите меморијске заштите рефлектујући на ово.

У пљоснатим меморијским моделима сви сегменти (регистри сегмента) су генерално подешени на 0, и само су offsets-и варијабилни.

Види још 
 Меморијски модел (програмирање)
 Меморијска алокација
 Меморијска адреса регистра
 Основне адресе
 Memory management unit (MMU)
 Страна табеле
 Меморијска заштита
 Меморијска сегментација

Референце 

Рачунарска меморија
У рачунарству , меморијска адреса је концепт података коришћен на различитим нивоима софтвера и хардвера да би се приступило главном складишту меморије . Меморијске адресе су секвенце бројева ограничене дужине конвенцијално изложене и избачене да би се манипулисало њима . Такав нумерички семантик се базира на особинама CPU-a ( као нпр. показивач инструкција и инкрементални адресни регистри ) , а такође се користи као низ подржан од стране разних програмских језика . Типови меморијских адреса Постоје многи типови меморијских адреса . Другим речима , рачунар , чак и један програм може имати неколико различитих меморијских просторних адреса . Меморија дигиталних рачунара , специфичније главна меморије , се састоји од много меморијских локација , од којих свака има физичку адресу , код , који CPU ( или неки други уређај ) може да искористи да би јој приступио . Углавном системски софтвер , нпр . BIOS , оперативни систем , и неки специјализовани корисни програми ( нпр , тестери меморије ) , адресирају физичку меморију користећи машински код операнде или процесорске регистре , упућујући CPU директно до уређаја , који се зове меморијски контролер , да би се користила меморијска магистрала или системска магистрала , или одвојена контрола , адреса и магистрала података , да би се извршиле команде програма . Меморијска контрола магистрале се састоји од броја паралелних линија , коју сваки представља бинарни број ( бит ) . Ширина магистрале , такође и број адресабилних јединица складишта , и број битова по јединици варира међу компонентама . Рачунарски програм користи меморијске адресе да изврши машински код , складишти и поврати податке . Многи апликацијски програми немају знање о физичкој адреси . Него се обраћају логичким адресама , или виртуалним адресама , користећи рачунарску јединицу меморије управљања и оперативни систем меморијског мапирања ; види испод . Јединица адресне резолуције Многи модерни рачунари субајт-адресабилни , свака адреса идентификује једно осмобитно бајт скадиште ; подаци који су превелики да би се складиштили у једном бајту се налазе у неколико бајтова који се састоје од секвенце консеквентних адреса . Постоје речима адресабилни рачунари , где је минимална складишна јединица процесорска реч . На пример , Data General Nova minicomputer , и Texas Instruments TMS9900 и National Semiconductor IMP-16 microcomputer су користилибитне речи , и постојали су многибитни mainframe рачунари ( нпр , PDP-10 ) који је користиобитне речи адресирања , не бајт адресирање , давајући адресни простор од36 битне речи , просечноB складишта . Ефикасност адресирање меморије зависи од величине бита магистрале корипћеног за адресе - што више битова се користи више адреса је доступно рачунару . На пример,бит-бајт-адресабилна машина сабитном адресном магистралом ( нпр . Intelможе да адресира( 1,048,576 ) меморијских локација , или један MiB меморије , докбитна магистрала( нпр . Intelадресира( 4,294,967, 296 ) локација , илиGiB-а адресног простора . У супротном , aбитна речима адресабилна машина сабитну адресну магистралу адресира само( 262,144 ) битних локација437, 184 bits ) , еквивалентно179.648бит-бајта , илиKB , или125 MiB—мало више од Неки старији рачунари ( децимални рачунари ) , су били децимално бројно-адресабилни . На пример , у IBM магнетном језгу меморије идентификује се једнабитна децимала бинарног кода бројева , састоје се од парних битова , flag битова инумеричких битова .је користиобројну децималну адресу , тако да у теорији највећа могућа адреса је била999. У пракси , CPU је подржавао000 меморијских локација , и доопционалне ектерне меморијске јединице се могу додати , свака подржава000 адреса , за укупно00059999 ) . Величина речи против величине адресе Величина речи је карактеристична у архитектури рачунара . Означава број цифара који CPU може да процесује одједном . Модерни процесори , укључујући и уграђене системе , обично имају реч величинеилибита ; многи садашњи рачунари за свакодневну употребу користеилибита . Многе различите величине су се користиле током историје , укључујућиибита . Веома често , када се помене величина речи модерног рачунара , неки повезују то са величином адресног простора на том рачунару . На пример , за рачунар за који се каже да је " 32-битан " такође обично имабитне меморијске адресе ; бајт адресабилнибитни рачунар може адресирати=294,967, 296 бајта меморије , илигигабајта ( GiB ) . Ово изгледа логично и корисно , зато што довољава једној меморијској адреси да се складишти у једној речи . Али није увек овако . Рачунари често имају меморијске адресе мање или веће него њихове величине речи . На пример , скоро свибитни процесори , као што је подржавајубитне адресе— јер да не подржавају , били би ограничени набајта меморије.битни Intelје имао самобитну екстерну меморију магистрале на раним IBM рачунарима , ибитну Intelподршкубитног адресирања , дозвољавајући му да приступа наMB више негоKiB меморије . Популарни Intel Pentium процесори од представљања Продужене физичке адресе ( PAE ) подржавајубитну физичку адресу , док углавном имајјубитну реч . Модерни бит адресабилнибитни рачуран са одговарајућим оперативним системом може да адресирабајта ( илиexbibytes ) што се сматра практично неограниченим . Садржај сваке меморијске локације Свака меморијска локација у складишном програмском рачунару садржи бинарни број или децимални број неке врсте . У суштини , као подаци неких типова података или као инструкције , и употреба се детерминише инсрукцијом која је повраћа и манипулише . Неки програмери су комбиновали податке и инструкције у речима да би сачували на меморији , када је била скупа : Manchester Markје имао простор одбита речи да се складишти мало битова података – процесор је игрнорисао мали део у средини речи – и то се сматрало као вишак скадишних података . Самозамењујући програми као нпр. вируис третирају себе некад као инструкције а некад као податак . Самомодификујући код је данас искључен , зато што чини тестирање и одржавање диспропорцијално тешким да се сачувају неколико битова , и такође може да да нетачне резултате због компилатора или процесорских слутњи о машинском стању , али се још увек понекад користи намерно , али са великом пажњом . Адресни простор у апликационом програмирању У модерној мултитаскинг околини , апликацијски процес обично има у себи адресни простор ( или просторе ) делиће меморије следећих типова : Машински код , укључујући : програмски спопствени код ( историјски познат као сегмент кода или сегмент текста ) ; дељене библиотеке . Податке , укључујући : иницијализоване податке ( сегмент података ) ; неиницијализоване ( али алоциране ) променљиве ; run-time стек ; heap ; дељена меморија и меморијске мапиране фајлове . Неки делови адресног простора можда нису ни мапирани . Шеме адресирања Рачунарски програм може да приступи адреси експлицитно – у програмирању ниског нивоа то се зове апсолутна адреса , или понекад специфична адреса , и позната је као показивач података тип у језицима вишег нивоа . Али програм може такође користити релативне адресе које одређују локацију у релацији са негде другде ( адреса базе ) . Постоји још много индиректних начина адресирања . Мапирање логичких адреса са физичком и виртуалном меморијом такође додаје неколико нивоа индирекције ; види испод . Модели меморије Многи програмери сматрају да меморијска адреса нема разлику између простор кода и простора података ( cf. above ) , ткаође и за физичку и виртуалну меморију ( види испод ) — другим речима , нумерички идентични показивачи се сматрају истим битом на RAM-у . Међутим , многи ранији рачунари нису подржавали такав пљоснат модел меморије посебно , Harvard архитектуре машина тера програмска складишта да буду тотално одвојена од складишта података . Многи модерни DSP-оив ( као што је Motorolaимајуразличите области складишта — програмско складиште , коефицијентно складиште , и складиште података . Неке уобичајене инструкције се додају између све три области истовремено — мање складишних области би чиниле да се те инструкције изврше спорије . Меморијски модели у x86 архитектури Рани x86 рачунари су користили сегменте меморијских модела адреса базиране на комбинацијиброја : меморијски сегмент , offset унутар тог сегмента . Неки сегменти су намерно третирани као сегменти кодова , посвећени за инструкције , стек сегменте , или за нормалне сегменте података . Иако су употребе биле различите , сегменти нису имали различите меморијске заштите рефлектујући на ово . У пљоснатим меморијским моделима сви сегменти ( регистри сегмента ) су генерално подешени на и само су offsets-и варијабилни . Види још Меморијски модел ( програмирање ) Меморијска алокација Меморијска адреса регистра Основне адресе Memory management unit ( MMU ) Страна табеле Меморијска заштита Меморијска сегментација Референце Рачунарска меморија