초기 8비트 마이크로프로세서는 주로 16비트 주소공간을 가진다는데 그럼 이 프로세서에서 액세스할수있는 메모리의 최대크기는 2^16비트란거?컴퓨터구조에서 프로세서랑 메모리파트 공부했는데도 잘 납득이 안가서 ㅠㅠ
? 프로세스가 왜나옴
예전에는 세그먼트라는 개념이 있었어.(물론 지금도 세그먼트 레지스터가 있지만, 용도가 좀 바뀌었다.)
그래서 '세그먼트 레지스터':'주소(ax 같은 놈듬)' 형태로 주소를 나타냈지. 각 레지스터는 알다시피 8비트야.
그러니까 8비트:8비트 형태로 나타내니까 나타낼 수 있는 주소는 16비트가 되는 셈이지.
말한대로 2^16 은 640kb 야. 이게 바로 옛날 pc들의 메모리가 640kb 였던 이유지. memmaker 같은걸 돌려서 메모리를 만들고, 게임 돌렸던 이유가 .. 바로 요렇게 메모리가 작았기 때문이지.
아 미안 640 이 아니라 64.
그래서 옛날에는 프로그램 코드의 크기도 64KB 이하가 되어야만 했어.
이게 바로 리얼모드 방식이고 요즘은 가상모드이기 때문에, 세그먼트라는 개념이 이런 용도로 쓰이진 않지.
메모리파트니 뭐니 공부 했다고 하니까, 이정도 말했으면 이해할거라고 믿어.
하.......간만에 와서 겁나 친절하게 답해줬네.....
오 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ역시 프갤답변 퀄리티는 국내제일 엌ㅋ
뭔 말도 안되는 역사이야기 ㅋㅋㅋ
8비트 프로세서 이야기하는데 16비트 프로세서 이야기가 나오고 세그먼트:옵셋, 컨벤셔널 메모리랑 짬뽕이되는 이 시츄에이션은 무언가.
이걸 설명이라고 하는 놈이나 답변 퀄리티를 따지는 놈이나 에레이.
8비트 프로세서 시절 16비트 어드레스를 사용해 억세스할 수 있는 메모리의 최대 크기는 0000 ~ FFFF 까지 총 64KB 인건 맞다.
세그먼트 : 옵셋 어드레싱 구조는 16비트 80x86 아키텍쳐에서 사용하는것이고 각 레지스터는 16비트야. 멍청멍청아.
640KB 컨벤셔널 메모리가 존재하던건, 20비트 물리 어드레스를 세그먼트 : 옵셋으로 표현하던 리얼모드의 이야기고,
640KB 의 메모리가 끝나는 위치 부터가 비디오 메모리지.
그리고 그 당시에도 COM (overlap 쓰는 경우 제외) 형만 64KB 제한, EXE 는 n 개의 64KB 코드블럭을 가질 수 있었다. compact, large, huge 메모리 모델에 해당하지.
overlap 이 아니라 overlay
히익;; 어렵다..ㅠ
나 태어났을 때는 이미 32비트 세계