메모리,memory

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

Terms
영역이나 위치는, 보통 주소에 따라 low/high로 나눔


표현들
memory_footprint
//via KU최린
{
volatile vs non-volatile:
volatile_memory
volatile memory
휘발성 메모리
메인 메모리, SRAM, DRAM, ...

non-volatile_memory
non-volatile memory
비휘발성 메모리
ROM, PROM, EPROM, EEPROM, flash, ....
ROM은 combinational_circuit. 주어진 입력에 대해 같은(constant?)출력을 하는. 주소가 들어가면 출력을 하는
PROM, EPROM, EEPROM, FLASH는 모두 ROM의 variations.
PROM : programmable.
EPROM : erasable. 지웠다가 다시 쓸 수 있는.
EEPROM : electrically erasable. 전기적으로 지울 수 있는.
flash : EEPROM의 일종.
disk, tape, ...
A memory that can retiain its state without power.


random access vs serial access
random access memory
access time is independent on the location of data
RAM, ROM, flash
serial access memory
access time is dependent on the location of data
disk, tape

}


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

세그먼트,segment 실렉터,selector 등을 생각할 필요가 없음.



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
}


공유메모리,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’




메모리관리,memory_management =메모리관리,memory_management =,memory_management . WtEn:memory_management Srch:memory_management
{

저급 언어일수록 이걸 manual로 하며
고급 언어일수록 이걸 automatic하게 하는 경향이 있다. (너무 당연하지만)

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

memory hardware

HOW TRANSISTORS REMEMBER DATA - YouTube
https://www.youtube.com/watch?v=rM9BjciBLmg
에선 순서대로
and-or latch
gated latch // 래치,latch
register // 레지스터,register
decoder // 디코더,decoder 를 설명하고
binary decoder // 이진디코더,binary_decoder 두 개가 각각 row decoder/column decoder로 동작해 2D로 배열된 latch(각각 read enable, write enable, Din/out을 갖춘)에 어떻게 읽고 쓰는지
4bit 주소로 16개 bit를 어떻게 기억하는지 (SRAM, static_RAM)

Capacitors are terrible at remembering data. But for this reason we continue doing it. - YouTube
https://www.youtube.com/watch?v=7WnbIeMgWYA
여기선 DRAM dynamic_RAM 을 설명.
모스펫,MOSFET축전기,capacitor로 이루어짐.

bmks en