나의 브을로오그으

#17. 주기억장치관리 개요(Main Memory) 본문

Computer Science/운영체제

#17. 주기억장치관리 개요(Main Memory)

__jhp_+ 2022. 8. 31. 08:07

주기억장치 관리(Main Memory Management)

 - 메모리 역사

  * Core memory

  * 진공판 메모리

  * 트랜지스터 메모리

  * 집적회로 메모리: SRAM, DRAM

- 메모리 용량

  * 1970년대: 8-bit PC 64KB

  * 1980년대: 16-bit IBM-PC 640KB > 1MB > 4MB

  * 1990년대: 수MB > 수십 MB

  * 2000년대~: 수백 MB > 수 GB

 

언제나 부족한 메모리

- 프로그램 변천

  * 기계어/어셈블리어 작성

  * C언어 작성

  * 자바, 객체지향형 언어 작성

  * 숫자 처리 > 문자 처리 > 멀티미디어 처리 > Big Data

- 메모리 용량 증가 vs 프로그램 크기 증가

  * 언제나 부족한 메모리

- 어떻게  메모리를 효과적으로 사용할 수 있을까?

  * 메모리 낭비 없애기

  * 가상 메모리 (virtual memory)

 

프로그램을 메모리에 올리기

- 메모리 구조

  * 주소(Address) + 데이터(Data)

- 프로그램 개발

  * 원천파일 (Source file): 고수준언어 또는 어셈블리언어

  * 목적파일 (Object file): 컴파일 또는 어셈블 결과

  * 실행파일 (Executable file): 링크 결과

- 컴파일러, 어셈블러, 링커, 로더

  * Compiler, assembler, linker, loader

- 프로그램 실행: code + data + stack

 

프로그램을 메모리에 올리기

- 실행파일을 메모리에 올리기

  * 메모리 몇 번지에?

  * 다중 프로그래밍 환경에서는?

- MMU 사용

  * 재배치 레지스터 (Relocation register)

(CPU에서는 무조건 프로세스를 0번지부터 읽게됨 그러나 중간에 MMU를 사용하여 재배치 레지스터에 해당 프로그램의 시작 주소가 들어있음. 이 값을 이용해서 주소를 조작하여 처리함. 그래서 로더에 의해 프로그램이 메모리에 올라와도 정상적으로 연산되는 원리

- 주소 구분

  * 논리주소 (logical address) vs 물리주소 (physical address)