메모리,memory

Difference between r1.10 and the current

@@ -1,24 +1,625 @@
[[컴퓨터,computer]]에서는 기억 장치를 뜻.
#noindex
여기서 말할 '''메모리'''는 [[컴퓨터,computer]]의 주 기억 장치(primary memory), 주 저장 공간(primary storage)를 뜻함.
so compare: [[secondary_storage]] { 하드디스크 HDD, SSD 등등 }
rel [[스토리지,storage]]
 
선형으로 일렬로 되어 있기도 하고 // [[flat_memory_model]] =,flat_memory_model =,flat_memory_model . flat_memory_model
{
'''flat memory model'''
 
Google:flat+memory+model
 
Up: [[memory_model]]
}
[[페이지,page]] [[세그먼트,segment]] 등의 분리된 구획으로 나뉘어 있기도 하고... // [[페이징,paging]] / [[segmented_memory_model]] or [[memory_segmentation]] { Google:segmented+memory+model WpKo:메모리_세그먼트 WpEn:Memory_segmentation
 
Up: [[memory_model]]
}
Ex.
IA-64 defines a single, uniform, linear address space of 264 bytes.[* https://www.cs.nmsu.edu/~rvinyard/itanium/ia64wbts/arch_mod/main/main_arc.htm]
 
위 것들은
[[memory_model]] =,memory_model =,memory_model . memory_model ... pagename ? 메모리모형 ? 메모리모델 ? TBD
{
'''memory model'''
메모리모델 or 메모리모형 ....
기억장치모델 or 기억장치모형 ... <- too long
 
Up: [[메모리,memory]] [[모형,model]] [[모델,model]]
 
...
"memory model"
Ndict:"memory model"
Ggl:"memory model"
} // memory model
 
----
[[레지스터,register]]와의 [[자료,data]] 복사/이동/읽기/쓰기 정리예정.
'''메모리''' 있는 것을 레지스터로 복사 : load
[[로드,load]]? 불러오기 ?
'''메모리'''의 자료를 레지스터에 있던 것으로 덮어쓰기 : store
[[스토어,store]]? [[저장,store]]? 저장하기?
에 해당하는 instruction이 모든 cpu에 있다.
----
memory [[access]] = [[memory_access]]
메모리 접근 메모리접근 ... pagename TBD
[[memory_access]] =,memory_access =,memory_access . memory_access
{
접근, 액세스, access, ....
 
'''memory access'''
 
WtEn:memory_access ?
 
"memory access"
Ggl:"memory access"
 
Sub:
[[DMA,direct_memory_access]] 직접메모리접근 ?
[[uniform_memory_access]] (UMA)
[[UMA,uniform_memory_access]] ?
{
WtEn:uniform_memory_access ? mmmmmmmmmmmmmmmmm
 
[[공유메모리,shared_memory]]
[[병렬성,parallelism]] > parallel_computer
multiprocessor / multiprocessing
 
[[WpEn:Uniform_memory_access]]
= https://en.wikipedia.org/wiki/Uniform_memory_access
"is a shared_memory architecture used in parallel computers."
... Google:uniform+memory+access
}
////// 위아래둘비교 /////
[[non-uniform_memory_access]] (NUMA)
{
'''non-uniform memory access (NUMA)'''
 
[[병렬성,parallelism]]
multiprocessor / multiprocessing
 
Sub:
캐시 일관성 NUMA (ccNUMA)
Cache coherent NUMA (ccNUMA)
[[캐시,cache]] [[캐시메모리,cache_memory]]
... Google:ccNUMA
 
[[WpKo:불균일_기억_장치_접근]]
= https://ko.wikipedia.org/wiki/불균일_기억_장치_접근
 
[[WpEn:Non-uniform_memory_access]]
= https://en.wikipedia.org/wiki/Non-uniform_memory_access
 
...
Google:NUMA
Ggl:"non-uniform memory access"
Ndict:NUMA
Ndict:"non-uniform memory access"
} // NUMA
 
[[WpKo:액세스_(마이크로프로세)]]
= https://ko.wikipedia.org/wiki/액세스_%28마이크로프로세서%29
 
kkkkkkkkkkkkkkkk
}
 
[[memory_hierarchy]] =,memory_hierarchy =,memory_hierarchy . memory_hierarchy
{
메모리위계 or 메모리계층
 
MKLINK
[[caching]]
[[cache_memory]]
main_memory
secondary_storage
http://mlwiki.org/index.php/Secondary_Storage
 
https://namu.wiki/w/메모리%20계층%20구조
 
http://mlwiki.org/index.php/Memory_Hierarchy
 
... Google:memory_hierarchy
 
Up: [[메모리,memory]] [[위계,hierarchy]]
}
 
[[cache_memory]] =,cache_memory . cache_memory
{
W cache_memory
 
Bryant Computer Systems 책
6.4 Cache Memories 596
6.4.1 Generic Cache Memory Organization 597
6.4.2 Direct-Mapped Caches 599
6.4.3 Set Associative Caches 606
6.4.4 Fully Associative Caches 608
6.4.5 Issues with Writes 611
6.4.6 Anatomy of a Real Cache Hierarchy 612
6.4.7 Performance Impact of Cache Parameters 614
}
 
[[memory_map]] =,memory_map . memory_map
{
'''memory map'''
메모리 맵
 
[[입출력,IO]]에서도 중요.
 
https://ko.wikipedia.org/wiki/메모리_맵
https://en.wikipedia.org/wiki/Memory_map
 
MKL
[[mmap]] [[mmio]]
 
Up: [[메모리,memory]] [[맵,map]]
}//memory map ... NN:"memory map" Bing:"메모리 맵" Ggl:"메모리 맵" Bing:"memory map" Ggl:"memory map"
 
[[공유메모리,shared_memory]] =공유메모리,shared_memory =,shared_memory 공유메모리 shared_memory
{
'''shared memory'''
 
공유메모리 ?
외의 대안이 없듯. [[Date(2023-11-11T11:54:05)]]
 
https://foldoc.org/shared+memory
 
WtEn:shared_memory
 
Srch:shared_memory
}//shared memory ...... Ndict:공유메모리 Ndict:"shared memory" Ggl:공유메모리 Google:"shared memory"
 
 
[[가상메모리,virtual_memory]] =가상메모리,virtual_memory =,virtual_memory 가상메모리 virtual_memory |=,VM VM
{
가상 메모리, 가상 기억 장치 
 
이게 아마 역사적으로 물리적인 RAM 크기가 너무 작아서 [[hard_disk]]의 일부 느린 메모리로 ([[스왑_영역,swap_space]]?) 사용해야만 했을 때 생긴?
 
MKLINK
compare [[hibernation]]
 
https://foldoc.org/virtual+memory
[[WpKo:가상_메모리]]
= https://ko.wikipedia.org/wiki/가상_메모리
[[WpSimple:Virtual_memory]]
= https://simple.wikipedia.org/wiki/Virtual_memory
[[WpEn:Virtual_memory]]
= https://en.wikipedia.org/wiki/Virtual_memory
 
[[메모리관리,memory_management]] =메모리관리,memory_management =,memory_management . WtEn:memory_management Srch:memory_management
}
 
페이징
[[paging]] ... [[memory_paging]] =,paging .
{
Compare: (둘 다 일정한 크기의 메모리 블록)
[[페이지,page]] - [[가상메모리]]를 일정한 크기로 나눈 블록 { [[WpKo:페이지_(컴퓨터_메모리)]] [[WpEn:Page_(computer_memory)]] }
[[프레임,frame]] - [[물리메모리]]를 일정한 크기로 나눈 블록 - aka page frame ?[* [[WpKo:페이지_(컴퓨터_메모리)]]]
 
MKLINK
page in : swap space에서 RAM으로 불러오기. https://foldoc.org/page+in
[[page_table]]
[[page_fault]] =,page_fault . { https://foldoc.org/page+fault }
[[PTE]]
[[메모리주소,memory_address]]
[[가상메모리주소,virtual_memory_address]]
[[물리메모리주소,physical_memory_address]]
 
Compare
[[bank_switching]] =,bank_switching . { WpKo:뱅크_전환 = https://ko.wikipedia.org/wiki/뱅크_전환 WpEn:Bank_switching = https://en.wikipedia.org/wiki/Bank_switching }
[[swapping]]
{
https://foldoc.org/swap
https://foldoc.org/swap+file
}
 
https://foldoc.org/paging
WpKo:페이징
= https://ko.wikipedia.org/wiki/페이징
[[WpEn:Memory_paging]]
= https://en.wikipedia.org/wiki/Memory_paging
 
Up: [[메모리관리,memory_management]] 기법 중 하나
}
 
[[프레임,frame]]
 
[[세그먼트,segment]]
or
[[segmentation]]
 
[[메모리가상화,memory_virtualization]]
{
w
[virtual_address] etc
Up: [[메모리,memory]] [[가상화,virtualization]]
}
 
[[메모리주소,memory_address]] - is a [[주소,address]]
=메모리주소,memory_address =,memory_address 메모리주소 memory_address
{
 
memory_location 은 거의 같은인듯?
https://foldoc.org/memory+location
 
C에서 변수의 메모리 주소 알아내기 - & 연산자
 
Python에서 객체의 메모리 주소 알아내기
{{{
>>> id(2)
4484212032
>>> hex(id(2))
‘0x10b47a540’
}}}
 
Sub:
[[메모리주소레지스터,memory_address_register,MAR]]
 
MKLINK
[[주소공간,address_space]]
[[가상메모리,virtual_memory]]
 
[[WpKo:메모리_주소]]
= https://ko.wikipedia.org/wiki/메모리_주소
[[WpEn:Memory_address]]
= https://en.wikipedia.org/wiki/Memory_address
[[WpJa:メモリアドレス]]
= https://ja.wikipedia.org/wiki/メモリアドレス
}

관련:
[[주소,address]]
[[메모리관리,memory_management]]
[[메모리할당,memory_allocation]]
{
The Cost of Software-Based Memory Management Without Virtual Memory
 
Sub:
manual_memory_management
{
WpEn:Manual_memory_management
= https://en.wikipedia.org/wiki/Manual_memory_management
}
automatic_memory_management
{
 
mark-and-sweep
[[세대,generation]]
...
 
GC:
 
[[garbage_collection]] {
쓰레기 수집, 가비지 컬렉션, garbage collection, GC
[[WpKo:쓰레기_수집_(컴퓨터_과학)]]
[[WpEn:Garbage_collection_(computer_science)]]
https://www.pls-lab.org/en/Garbage_Collection
}
 
[[garbage_collector]] =,garbage_collector . garbage_collector
{
'''garbage collector'''
너저분 수집기? 모으개?
NdEn:collector
 
WtEn:garbage_collector
WpEn:Garbage_collector ? -> 실제 쓰레기 수집 얘기. 맨 위에 [[WpEn:Garbage_collection_(computer_science)]]으로 안내함.
} // garbage collector .... Ggl:"garbage collector" NN:"garbage collector"
 
WpEn:
}
 
메모리 할당 memory allocation
[[메모리할당,memory_allocation]] Srch:memory_allocation
{
메모리 할당 memory allocation
 
Sub:
 
정적 메모리 할당 static memory allocation
[[정적메모리할당,static_memory_allocation]]
{
[[WpKo:정적_메모리_할당]]
= https://ko.wikipedia.org/wiki/정적_메모리_할당
}
 
동적 메모리 할당 dynamic memory allocation
[[동적메모리할당,dynamic_memory_allocation]] Srch:dynamic_memory_allocation
{
dynamic memory allocation
 
free list / freelist
free_list or freelist
[[free_list]] =,free_list . free_list
[[freelist]] =,freelist . freelist
{
free list
 
[[WtEn:free_list]]
[[WpEn:Free_list]]
= https://en.wikipedia.org/wiki/Free_list
dynamic_memory_allocation 을 위한 [[자료구조,data_structure]]의 일종 / [[메모리풀,memory_pool]] 사용
} // free list
 
MKLINK
[[memory_allocator]]
 
[[C언어]]의 경우 malloc/free, C++의 경우 new/delete....
 
''아래 둘 memory_management 로 옮길까?''
 
C Dynamic memory management
https://en.cppreference.com/w/c/memory
 
C++ Dynamic memory management
https://en.cppreference.com/w/cpp/memory
 
[[WpEn:C_dynamic_memory_allocation]]
= https://en.wikipedia.org/wiki/C_dynamic_memory_allocation
 
[[WpKo:동적_메모리_할당]]
= https://ko.wikipedia.org/wiki/동적_메모리_할당
 
... Google:dynamic.memory.allocation
"dynamic memory allocation"
} // dynamic memory allocation
 
[[buddy_memory_allocation]] =,buddy_memory_allocation . buddy_memory_allocation
{
buddy memory allocation
 
[[WtEn:buddy_memory_allocation]]
[[WpKo:버디_메모리_할당]]
= https://ko.wikipedia.org/wiki/버디_메모리_할당
[[WpEn:Buddy_memory_allocation]]
= https://en.wikipedia.org/wiki/Buddy_memory_allocation
... Google:buddy+memory+allocation
"buddy memory allocation"
} // buddy memory allocation
 
[[stack-based_memory_allocation]] (SBMA) |=,SBMA SBMA
{
stack-based memory allocation (SBMA)
[[WpEn:Stack-based_memory_allocation]]
Cmp: [[heap-based_memory_allocation]] (HBMA)
Up: [[스택,stack]] [[메모리할당,memory_allocation]]
"stack-based memory allocation"
Ggl:"stack-based memory allocation"
}
 
[[heap-based_memory_allocation]] =,HBMA HBMA
{
heap-based memory allocation (HBMA)
 
Up:
[[힙,heap]] esp [[힙메모리,heap_memory]]
[[메모리할당,memory_allocation]]
"heap-based memory allocation"
Ggl:"heap-based memory allocation"
}
 
[[slab_allocation]] =,slab_allocation . slab_allocation
{
 
REL. [[slab_allocator
 
WtEn:slab_allocation x [[Date(2023-08-21T13:03:21)]]
[[WpEn:Slab_allocation]]
= https://en.wikipedia.org/wiki/Slab_allocation
...
--Ndict:"slab allocation"-- x [[Date(2023-08-21T13:03:21)]]
Bing:"slab allocation"
Google:Slab+allocation
} // slab allocation .... 혹시 slab memory allocation 도 완전동의어인지
 
 
coalescing / fragmentation / ....
[[coalescing]] [[fragmentation]] ...
=,coalescing =,fragmentation ....
{
// wt coalescing -> wt coalesce = https://en.wiktionary.org/wiki/coalesce : 뭉치다, join, merge, combine, ... (coalition n. 연합체, 연합 생각)
// fragmentation - opp. defragmentation
 
rel. [[garbage_collection]]
 
[[WpEn:Coalescing_(computer_science)]]
= https://en.wikipedia.org/wiki/Coalescing_%28computer_science%29
 
[[WpKo:통합과_집약]]
= https://ko.wikipedia.org/wiki/통합과_집약
"통합(coalescing)이란 기억공간 내에 인접한 둘 이상의 공백을 그들 사이의 경계를 없애고 하나의 공백으로 합치는 것이다."
"집약(compaction)이란 기억공간 내에 섞여있는 사용중인 영역과 빈 영역을 각각 한쪽으로 몰아 빈 영역들을 하나로 모으는 것이다. 디스크 조각 모음"
 
[[WpKo:단편화]]
= https://ko.wikipedia.org/wiki/단편화
 
[[WpSimple:Fragmentation_(computer)]]
= https://simple.wikipedia.org/wiki/Fragmentation_%28computer%29
 
[[WpEn:Fragmentation_(computing)]]
= https://en.wikipedia.org/wiki/Fragmentation_%28computing%29
 
(이건 memory뿐 아니라 다른 기억장치 storage에도 해당되는 얘기)
}
 
The Cost of Software-Based Memory Management Without Virtual Memory // [[가상메모리,virtual_memory]] 없이
https://arxiv.org/abs/2009.06789
https://news.ycombinator.com/item?id=24503773
 
 
 
Up: [[메모리,memory]] 자원관리 [[resource_management]] 자원할당/자원배정 [[resource_allocation]] (curr at [[자원,resource]])
}
[[RAM]]
[[DRAM]]
[[기억장치,storage_device]]

[[메모리관리장치,memory_management_unit,MMU]]
{
https://foldoc.org/Memory+Management+Unit
}
 
https://foldoc.org/memory+management
[[WpEn:Memory_management]]
= https://en.wikipedia.org/wiki/Memory_management
[[WpEn:Memory_management_(operating_systems)]]
= https://en.wikipedia.org/wiki/Memory_management_%28operating_systems%29
}
 
[[memory_protection]] =,memory_protection =,memory_protection . memory_protection
{
메모리보호
 
MKLINK
[[memory_safety]] =,memory_safety =,memory_safety . memory_safety { 메모리보안 ? 메모리안전성 ? WtEn:memory_safety memory safety ~~Ndict:"memory safety"~~ x Naver:"memory safety" Bing:"memory safety" Ggl:"memory safety" "memory safety" }
 
https://foldoc.org/memory+protection
 
WpKo:메모리_보호
= https://ko.wikipedia.org/wiki/메모리_보호
 
WpEn:Memory_protection
= https://en.wikipedia.org/wiki/Memory_protection
 
... Google:메모리보호
... Google:memory+protection
}
 
 
[[memory_leak]] =,memory_leak =,memory_leak . memory_leak
{
memory leak
 
Sub" [[memory_leak_detection]] =,memory_leak_detection =,memory_leak_detection . memory_leak_detection { memory leak detection WpEn:Memory_leak_detection redir to https://en.wikipedia.org/wiki/Memory_debugger Naver:"memory leak detection" Ggl:"memory leak detection" "memory leak detection" }
 
WtEn:memory_leak
https://everything2.com/title/memory+leak
 
https://wiki.haskell.org/Memory_leak
https://foldoc.org/memory+leak
 
Ndict:"memory leak"
Google:memory.leak
}
 
[[memory_dump]] ~= core_dump
{
[[프로세스,process]]의 에러가 걸린 마지막 상황이 그대로 [[파일,file]]로 저장된? 그 파일? data?
즉 [[디버거,debugger]] [[디버깅,debugging]]을 위한 snapshot ?
 
Rel. [[crash]] ~= [[system_crash]] ~= [[kernel_panic]]
rel. kdump =,kdump . kdump { '''kdump'''
rel. [[Linux_kernel]] [[kexec]] =,kexec . kexec { '''kexec''' https://ko.wikipedia.org/wiki/Kexec https://en.wikipedia.org/wiki/Kexec Naver:"kexec" Ggl:"kexec" }
https://ko.wikipedia.org/wiki/Kdump
[[WpEn:Kdump_(Linux)]]
= https://en.wikipedia.org/wiki/Kdump_(Linux)
= https://en.wikipedia.org/wiki/Kdump_%28Linux%29
Naver:"kdump"
Ggl:"kdump"
}
 
https://foldoc.org/memory+dump
 
... Google:memory+dump
... Google:core+dump
}
 
[[메모리풀,memory_pool]] - alsoin [[풀,pool]] merge.
{
 
[[WpKo:메모리_풀]]
= https://ko.wikipedia.org/wiki/메모리_풀
[[WpEn:Memory_pool]]
= https://en.wikipedia.org/wiki/Memory_pool
"Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management that allows dynamic memory allocation."
... Google:memory.pool
 
[[풀,pool]]
}
 
alignment
memory_alignment
memory_address_alignment / offset alignment
{
[[메모리주소,memory_address]]의 alignment.
 
[[구조체,struct]] / [[배열,array]] / ...등 각종 collection [[타입,type]]이나 (rel. padding) (- 이때는 공간)
cpu의 memory_access time( - 이때는 시간)
에서 중요한 주제임.
 
... Google:memory.alignment
}
 
[[RAM]] =,random_access_memory =,RAM . random_access_memory RAM
{
'''random access memory'''
 
https://en.wiktionary.org/wiki/random_access_memory
AKA
https://en.wiktionary.org/wiki/random-access_memory
 
http://www.linfo.org/ram.html
 
Up: [[random_access]] [[메모리,memory]]
} // random access memory ... Ggl:"random access memory"
 
[[DRAM]] =,DRAM . DRAM
{
'''DRAM'''
https://en.wiktionary.org/wiki/dynamic_random_access_memory#English
 
Up: [[메모리,memory]]
} // DRAM ... Ndict:DRAM Ggl:DRAM
 
SDRAM =,SDRAM . SDRAM
{
DRAM : operates asynchronously with the system clock
SDRAM : operates synchronously with the system clock
} // SDRAM ... Ndict:SDRAM Ggl:SDRAM
 
[[SRAM]] =,SRAM . SRAM
{
'''SRAM'''
 
Up: [[메모리,memory]]
} // SRAM ... Ndict:SRAM Ggl:SRAM
 
[[bubble_memory]] =,bubble_memory . bubble_memory
{
'''bubble memory'''
버블메모리 ?
 
[[WtEn:bubble_memory]] = https://en.wiktionary.org/wiki/bubble_memory#English
WpSp:bubble_memory ?
[[WpEn:Bubble_memory]] = https://en.wikipedia.org/wiki/Bubble_memory
} // bubble memory ... Ndict:"bubble memory" Ggl:"bubble memory"
 
플래시메모리 ?
[[flash_memory]] =,flash_memory =,flash_memory . flash_memory
{
'''flash memory'''
https://en.wiktionary.org/wiki/flash_memory
http://www.linfo.org/flash_memory.html
} // flash memory ... Ndict:"flash memory" Ggl:"flash memory"
 
[[distributed_memory]] =,distributed_memory . distributed_memory
{
'''distributed memory'''
분산메모리 ?
 
of
분산시스템,distributed_system / 분산컴퓨팅,distributed_computing
 
[[WpKo:분산_메모리]]
= https://ko.wikipedia.org/wiki/분산_메모리
 
[[WpEn:Distributed_memory]]
= https://en.wikipedia.org/wiki/Distributed_memory
 
WtEn:distributed_memory x [[Date(2024-03-05T23:56:13)]]
} // distributed memory ... Ndict:"distributed memory" Ggl:"distributed memory"

[[페이지,page]]는 [[운영체제,OS]]가 사용하는 '''메모리'''의 단위이다.

허용되지 않는 '''메모리''' [[주소,address]]에 접근하는 것은 잘못된 행동으로서, [[커널,kernel]]은 이런 [[프로세스,process]]를 강제로 종료시키고 [[코어_덤프,core_dump]]를 만드는 등의 행동을 한다.
허용되지 않는 '''메모리''' [[주소,address]]([[메모리주소,memory_address]])[[접근,access]]하는 것은 잘못된 행동으로서, [[커널,kernel]]은 이런 [[프로세스,process]]를 강제로 종료시키고 [[코어_덤프,core_dump]]를 만드는 등의 행동을 한다.

메모리 특정 주소에 읽고 써서 [[입출력,IO]]를 하기도 한다. TBW: memory mapped I/O
메모리 특정 주소([[메모리주소,memory_address]])에 읽고 써서 [[입출력,IO]]를 하기도 한다. TBW: memory mapped I/O 
{
https://foldoc.org/memory+mapped+I/O
}

----
[[C언어]] 메모리 관련 함수
@@ -28,9 +629,11 @@


[[도스,DOS]]
기본 메모리(Conventional memory)
기본 메모리(Conventional memory) // conventional_memory =,conventional_memory . conventional_memory
{
0 KB - 640 KB
 
https://en.wiktionary.org/wiki/conventional_memory
}
UMA,upper_memory_area
{
@@ -44,6 +647,9 @@
EMS,expanded_memory
{
EMM386
http://wiki.freedos.org/wiki/index.php/Emm386
JEMM386
http://wiki.freedos.org/wiki/index.php/JEMM386
}
XMS,extended_memory
{
@@ -51,3 +657,138 @@
}
중첩 확장 메모리 규격 - EMS
연속 확장 메모리 규격 - XMS
 
 
DMA,direct_memory_access
{
이건 cpu에 부담을 주지 않기 위한? 성능을 위해?
 
비교:
[[PIO]]
 
[[WpKo:직접_메모리_접근]]
= https://ko.wikipedia.org/wiki/직접_메모리_접근
[[WpEn:Direct_memory_access]]
= https://en.wikipedia.org/wiki/Direct_memory_access
}
 
CAM // =,CAM . CAM
content-addressable_memory
content_addressable_memory
연관 메모리(associative_memory), 연관기억장치 // =,associative_memory =,associative_memory . associative_memory
{
연관메모리
연관기억장치
 
내용주소화 메모리
내용주소화 기억장치 (내 직역) (보니 wpko도 그렇게 했음)
 
btw
연상 기억장치(associative memory) 라는 번역도 보이고 ... https://terms.naver.com/entry.naver?docId=2073343&cid=44414&categoryId=44414
내용 주소 기억장치(CAM) ... (저기서의 번역)
(Quote: "연상 기억장치(associative memory): 연상 기억장치는 순차적 컴퓨터에서 내용 주소 기억장치(CAM: Content Address Memory)라고도 하는데, 기억장치에 기억된 정보에 접근하기 위하여 주소를 사용하는 것이 아니라, 기억된 정보의 일부분을 이용하여 원하는 정보가 기억된 위치를 알아낸 후 그 위치에서 나머지 정보에 접근할 수 있는 기억장치이다.")
 
근데 연관이 더 낫지 않을지?
 
----
MKLINK
[[tuple_space]] - // curr at [[VG:튜플,tuple]]
 
[[WpKo:내용_주소화_기억장치]]
= https://ko.wikipedia.org/wiki/내용_주소화_기억장치
 
[[WpEn:Content-addressable_memory]]
= https://en.wikipedia.org/wiki/Content-addressable_memory
 
"associative memory" Ndict:"associative memory" Ggl:"associative memory"
"content-addressable memory" Ndict:"content-addressable memory" Ggl:"content-addressable memory"
} // CAM = content-addressable memory = associative memory
 
 
[[base_memory]] =,base_memory . base_memory
{
'''base memory'''
 
[[WtEn:base_memory]]
= https://en.wiktionary.org/wiki/base_memory
 
...
"base memory"
Naver:"base memory" Ggl:"base memory"
} // base memory
 
[[unreachable_memory]] =,unreachable_memory =,unreachable_memory . unreachable_memory
{
 
Rel [[reachability]]
 
Rel: [[unreachable_object]]? 정확한 관계가?
참고로 [[unreachable_object]]는 [[garbage_collection]] / [[garbage_collector]]의 관심을 끎...
 
WtEn:unreachable_memory
WpEn:Unreachable_memory = https://en.wikipedia.org/wiki/Unreachable_memory
}
 
ADDHERE
ADDHERE
ADDHERE
ADDHEREmemorySUBTOPICS
ADDHEREmemorySUBTOPICS
ADDHEREmemorySUBTOPICS
 
== misc? ==
(misc?)
메모리 크기/한계/...
memory_size
memory_limit
memory_size_limit
tmp bmks ko:
{
컴퓨터인터넷IT용어대사전 메모리 한계 https://terms.naver.com/entry.naver?docId=829079&cid=42344&categoryId=42344
}
 
= 기타, 밀접한 관련 =
MKLINK
 
rel
[[기억장치,storage_device]]
[[참조,reference]]
[[순환참조,circular_reference]]
 
 
저장장치 저장공간 스토리지 [[storage]]
{
http://www.linfo.org/storage.html
}
 
aka [[store]] ?
{
https://www.pls-lab.org/en/Store
}
 
= out of memory error/exception =
out_of_memory
[[에러,error]]
[[예외,exception]]
 
.NET : System.OutOfMemoryException class
OutOfMemoryException 클래스 (System) | Microsoft Learn
https://learn.microsoft.com/ko-kr/dotnet/api/system.outofmemoryexception?view=net-8.0
 
 
= bmks en =
메모리 배열의 여러 형태
https://wiki.osdev.org/Program_Memory_Allocation_Types
 
= Misc =
같은 영단어 - [[기억,memory]]
 
 
----
[[WpEn:Computer_memory]]
= https://en.wikipedia.org/wiki/Computer_memory
 
http://www.linfo.org/memory.html
 
(tmp twins)
https://en.wiktionary.org/wiki/memory



여기서 말할 메모리컴퓨터,computer의 주 기억 장치(primary memory), 주 저장 공간(primary storage)를 뜻함.
so compare: secondary_storage { 하드디스크 HDD, SSD 등등 }
rel 스토리지,storage

선형으로 일렬로 되어 있기도 하고 // flat_memory_model =,flat_memory_model =,flat_memory_model . flat_memory_model
{
flat memory model



Up: memory_model
}
Ex.
IA-64 defines a single, uniform, linear address space of 264 bytes.[1]

위 것들은
memory_model =,memory_model =,memory_model . memory_model ... pagename ? 메모리모형 ? 메모리모델 ? TBD
{
memory model
메모리모델 or 메모리모형 ....
기억장치모델 or 기억장치모형 ... <- too long


...
"memory model"
Ndict:memory model
Ggl:memory model
} // memory model


레지스터,register와의 자료,data 복사/이동/읽기/쓰기 정리예정.
메모리에 있는 것을 레지스터로 복사 : load
로드,load? 불러오기 ?
메모리의 자료를 레지스터에 있던 것으로 덮어쓰기 : store
스토어,store? 저장,store? 저장하기?
에 해당하는 instruction이 모든 cpu에 있다.

memory access = memory_access
메모리 접근 메모리접근 ... pagename TBD
memory_access =,memory_access =,memory_access . memory_access
{
접근, 액세스, access, ....

memory access


"memory access"
Ggl:memory access

Sub:
DMA,direct_memory_access 직접메모리접근 ?
uniform_memory_access (UMA)
UMA,uniform_memory_access ?
{
WtEn:uniform_memory_access ? mmmmmmmmmmmmmmmmm

공유메모리,shared_memory
병렬성,parallelism > parallel_computer
multiprocessor / multiprocessing

WpEn:Uniform_memory_access
= https://en.wikipedia.org/wiki/Uniform_memory_access
"is a shared_memory architecture used in parallel computers."
... Google:uniform memory access
}
////// 위아래둘비교 /////
non-uniform_memory_access (NUMA)
{
non-uniform memory access (NUMA)

병렬성,parallelism
multiprocessor / multiprocessing

Sub:
캐시 일관성 NUMA (ccNUMA)
Cache coherent NUMA (ccNUMA)
캐시,cache 캐시메모리,cache_memory
... Google:ccNUMA





kkkkkkkkkkkkkkkk
}

memory_hierarchy =,memory_hierarchy =,memory_hierarchy . memory_hierarchy
{
메모리위계 or 메모리계층





cache_memory =,cache_memory . cache_memory
{
W cache_memory

Bryant Computer Systems 책
6.4 Cache Memories 596
6.4.1 Generic Cache Memory Organization 597
6.4.2 Direct-Mapped Caches 599
6.4.3 Set Associative Caches 606
6.4.4 Fully Associative Caches 608
6.4.5 Issues with Writes 611
6.4.6 Anatomy of a Real Cache Hierarchy 612
6.4.7 Performance Impact of Cache Parameters 614
}

memory_map =,memory_map . memory_map
{
memory map
메모리 맵

입출력,IO에서도 중요.


MKL
mmap mmio


공유메모리,shared_memory =공유메모리,shared_memory =,shared_memory 공유메모리 shared_memory
{
shared memory

공유메모리 ?
외의 대안이 없는 듯. 2023-11-11

https://foldoc.org/shared memory




가상메모리,virtual_memory =가상메모리,virtual_memory =,virtual_memory 가상메모리 virtual_memory |=,VM VM
{
가상 메모리, 가상 기억 장치

이게 아마 역사적으로 물리적인 RAM 크기가 너무 작아서 hard_disk의 일부를 느린 메모리로 (스왑_영역,swap_space?) 사용해야만 했을 때 생긴?

MKLINK
compare hibernation


페이징
paging ... memory_paging =,paging .
{
Compare: (둘 다 일정한 크기의 메모리 블록)
페이지,page - 가상메모리를 일정한 크기로 나눈 블록 { WpKo:페이지_(컴퓨터_메모리) WpEn:Page_(computer_memory) }
프레임,frame - 물리메모리를 일정한 크기로 나눈 블록 - aka page frame ?[2]







메모리주소,memory_address - is a 주소,address
=메모리주소,memory_address =,memory_address 메모리주소 memory_address
{

memory_location 은 거의 같은 뜻인듯?
https://foldoc.org/memory location

C에서 변수의 메모리 주소 알아내기 - & 연산자

Python에서 객체의 메모리 주소 알아내기
>>> id(2)
4484212032
>>> hex(id(2))
‘0x10b47a540’





Sub:
manual_memory_management
{
WpEn:Manual_memory_management
}
automatic_memory_management
{

mark-and-sweep
세대,generation
...

GC:


garbage_collector =,garbage_collector . garbage_collector
{
garbage collector
너저분 수집기? 모으개?
WtEn:garbage_collector
WpEn:Garbage_collector ? -> 실제 쓰레기 수집 얘기. 맨 위에 WpEn:Garbage_collection_(computer_science)으로 안내함.
} // garbage collector .... Ggl:garbage collector NN:garbage collector

WpEn:
}

메모리 할당 memory allocation
메모리할당,memory_allocation Srch:memory_allocation
{
메모리 할당 memory allocation

Sub:


동적 메모리 할당 dynamic memory allocation
동적메모리할당,dynamic_memory_allocation Srch:dynamic_memory_allocation
{
dynamic memory allocation

free list / freelist
free_list or freelist
free_list =,free_list . free_list
freelist =,freelist . freelist
{
free list

WtEn:free_list
WpEn:Free_list
= https://en.wikipedia.org/wiki/Free_list
dynamic_memory_allocation 을 위한 자료구조,data_structure의 일종 / 메모리풀,memory_pool 사용
} // free list


C언어의 경우 malloc/free, C++의 경우 new/delete....

아래 둘 memory_management 로 옮길까?

C Dynamic memory management
https://en.cppreference.com/w/c/memory

C++ Dynamic memory management
https://en.cppreference.com/w/cpp/memory



... Google:dynamic.memory.allocation
"dynamic memory allocation"
} // dynamic memory allocation

buddy_memory_allocation =,buddy_memory_allocation . buddy_memory_allocation
{
buddy memory allocation


stack-based_memory_allocation (SBMA) |=,SBMA SBMA
{
stack-based memory allocation (SBMA)
WpEn:Stack-based_memory_allocation
Cmp: heap-based_memory_allocation (HBMA)
Up: 스택,stack 메모리할당,memory_allocation
"stack-based memory allocation"
Ggl:stack-based memory allocation
}

heap-based_memory_allocation =,HBMA HBMA
{
heap-based memory allocation (HBMA)


slab_allocation =,slab_allocation . slab_allocation
{

REL. [[slab_allocator

WtEn:slab_allocation x 2023-08-21
WpEn:Slab_allocation
= https://en.wikipedia.org/wiki/Slab_allocation
...
Ndict:slab allocation x 2023-08-21
Bing:slab allocation
Google:Slab allocation
} // slab allocation .... 혹시 slab memory allocation 도 완전동의어인지


coalescing / fragmentation / ....
coalescing fragmentation ...
=,coalescing =,fragmentation ....
{
// wt coalescing -> wt coalesce = https://en.wiktionary.org/wiki/coalesce : 뭉치다, join, merge, combine, ... (coalition n. 연합체, 연합 생각)
// fragmentation - opp. defragmentation



WpKo:통합과_집약
= https://ko.wikipedia.org/wiki/통합과_집약
"통합(coalescing)이란 기억공간 내에 인접한 둘 이상의 공백을 그들 사이의 경계를 없애고 하나의 공백으로 합치는 것이다."
"집약(compaction)이란 기억공간 내에 섞여있는 사용중인 영역과 빈 영역을 각각 한쪽으로 몰아 빈 영역들을 하나로 모으는 것이다. 디스크 조각 모음"

WpKo:단편화
= https://ko.wikipedia.org/wiki/단편화



(이건 memory뿐 아니라 다른 기억장치 storage에도 해당되는 얘기)
}

The Cost of Software-Based Memory Management Without Virtual Memory // 가상메모리,virtual_memory 없이
https://arxiv.org/abs/2009.06789
https://news.ycombinator.com/item?id=24503773



Up: 메모리,memory 자원관리 resource_management 자원할당/자원배정 resource_allocation (curr at 자원,resource)
}



memory_protection =,memory_protection =,memory_protection . memory_protection
{
메모리보호

MKLINK
memory_safety =,memory_safety =,memory_safety . memory_safety { 메모리보안 ? 메모리안전성 ? WtEn:memory_safety memory safety Ndict:memory safety x Naver:memory safety Bing:memory safety Ggl:memory safety "memory safety" }




memory_leak =,memory_leak =,memory_leak . memory_leak
{
memory leak

Sub" memory_leak_detection =,memory_leak_detection =,memory_leak_detection . memory_leak_detection { memory leak detection WpEn:Memory_leak_detection redir to https://en.wikipedia.org/wiki/Memory_debugger Naver:memory leak detection Ggl:memory leak detection "memory leak detection" }




memory_dump ~= core_dump
{
프로세스,process의 에러가 걸린 마지막 상황이 그대로 파일,file로 저장된? 그 파일? data?
디버거,debugger 디버깅,debugging을 위한 snapshot ?





WpKo:메모리_풀
WpEn:Memory_pool
= https://en.wikipedia.org/wiki/Memory_pool
"Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management that allows dynamic memory allocation."
... Google:memory.pool


alignment
memory_alignment
memory_address_alignment / offset alignment
{
메모리주소,memory_address의 alignment.

구조체,struct / 배열,array / ...등 각종 collection 타입,type이나 (rel. padding) (- 이때는 공간)
cpu의 memory_access time( - 이때는 시간)
에서 중요한 주제임.


RAM =,random_access_memory =,RAM . random_access_memory RAM
{
random access memory

https://en.wiktionary.org/wiki/random_access_memory
AKA
https://en.wiktionary.org/wiki/random-access_memory

http://www.linfo.org/ram.html

Up: random_access 메모리,memory
} // random access memory ... Ggl:random access memory

DRAM =,DRAM . DRAM
{
DRAM
https://en.wiktionary.org/wiki/dynamic_random_access_memory#English

Up: 메모리,memory
} // DRAM ... Ndict:DRAM Ggl:DRAM

SDRAM =,SDRAM . SDRAM
{
DRAM : operates asynchronously with the system clock
SDRAM : operates synchronously with the system clock
} // SDRAM ... Ndict:SDRAM Ggl:SDRAM

SRAM =,SRAM . SRAM
{
SRAM

Up: 메모리,memory
} // SRAM ... Ndict:SRAM Ggl:SRAM

bubble_memory =,bubble_memory . bubble_memory
{
bubble memory
버블메모리 ?


플래시메모리 ?
flash_memory =,flash_memory =,flash_memory . flash_memory
{
flash memory
https://en.wiktionary.org/wiki/flash_memory
http://www.linfo.org/flash_memory.html
} // flash memory ... Ndict:flash memory Ggl:flash memory

distributed_memory =,distributed_memory . distributed_memory
{
distributed memory
분산메모리 ?

of
분산시스템,distributed_system / 분산컴퓨팅,distributed_computing



WtEn:distributed_memory x 2024-03-06
} // distributed memory ... Ndict:distributed memory Ggl:distributed memory

페이지,page운영체제,OS가 사용하는 메모리의 단위이다.

허용되지 않는 메모리 주소,address(메모리주소,memory_address)에 접근,access하는 것은 잘못된 행동으로서, 커널,kernel은 이런 프로세스,process를 강제로 종료시키고 코어_덤프,core_dump를 만드는 등의 행동을 한다.

메모리 특정 주소(메모리주소,memory_address)에 읽고 써서 입출력,IO를 하기도 한다. TBW: memory mapped I/O
{
https://foldoc.org/memory mapped I/O
}


C언어 메모리 관련 함수
{

}


도스,DOS
기본 메모리(Conventional memory) // conventional_memory =,conventional_memory . conventional_memory
{
0 KB - 640 KB

https://en.wiktionary.org/wiki/conventional_memory
}
UMA,upper_memory_area
{
상위 메모리 영역
640 KB - 1024 KB (0xA0000–0xFFFFF)
upper memory blocks UMBs


EMS,expanded_memory
{
EMM386
http://wiki.freedos.org/wiki/index.php/Emm386
JEMM386
http://wiki.freedos.org/wiki/index.php/JEMM386
}
XMS,extended_memory
{

}
중첩 확장 메모리 규격 - EMS
연속 확장 메모리 규격 - XMS


DMA,direct_memory_access
{
이건 cpu에 부담을 주지 않기 위한? 성능을 위해?

비교:
PIO


CAM // =,CAM . CAM
content-addressable_memory
content_addressable_memory
연관 메모리(associative_memory), 연관기억장치 // =,associative_memory =,associative_memory . associative_memory
{
연관메모리
연관기억장치

내용주소화 메모리
내용주소화 기억장치 (내 직역) (보니 wpko도 그렇게 했음)

btw
연상 기억장치(associative memory) 라는 번역도 보이고 ... https://terms.naver.com/entry.naver?docId=2073343&cid=44414&categoryId=44414
내용 주소 기억장치(CAM) ... (저기서의 번역)
(Quote: "연상 기억장치(associative memory): 연상 기억장치는 순차적 컴퓨터에서 내용 주소 기억장치(CAM: Content Address Memory)라고도 하는데, 기억장치에 기억된 정보에 접근하기 위하여 주소를 사용하는 것이 아니라, 기억된 정보의 일부분을 이용하여 원하는 정보가 기억된 위치를 알아낸 후 그 위치에서 나머지 정보에 접근할 수 있는 기억장치이다.")

근데 연관이 더 낫지 않을지?


MKLINK
tuple_space - // curr at VG:튜플,tuple



"associative memory" Ndict:associative memory Ggl:associative memory
"content-addressable memory" Ndict:content-addressable memory Ggl:content-addressable memory
} // CAM = content-addressable memory = associative memory


base_memory =,base_memory . base_memory
{
base memory


...
"base memory"
Naver:base memory Ggl:base memory
} // base memory

unreachable_memory =,unreachable_memory =,unreachable_memory . unreachable_memory
{


Rel: unreachable_object? 정확한 관계가?
참고로 unreachable_objectgarbage_collection / garbage_collector의 관심을 끎...


ADDHERE
ADDHERE
ADDHERE
ADDHEREmemorySUBTOPICS
ADDHEREmemorySUBTOPICS
ADDHEREmemorySUBTOPICS

misc?

(misc?)
메모리 크기/한계/...
memory_size
memory_limit
memory_size_limit
tmp bmks ko:
{
컴퓨터인터넷IT용어대사전 메모리 한계 https://terms.naver.com/entry.naver?docId=829079&cid=42344&categoryId=42344
}

out of memory error/exception


.NET : System.OutOfMemoryException class
OutOfMemoryException 클래스 (System) | Microsoft Learn
https://learn.microsoft.com/ko-kr/dotnet/api/system.outofmemoryexception?view=net-8.0


bmks en