1. 메모리의 역사
1) 메모리 역사
- Core memory
- 진공관 메모리
- 트랜지스터 메모리
- 집적회로 메모리 : SRAM, DRAM
2) 메모리 용량
- 1970년대 : 8-bit PC 64KB
- 1980년대 : 16-bit IBM-PC 640KB > 1MB > 4MB
- 1990년대 : 수MB > 수십MB
- 2000년대 : 수백MB > 수GB
2. 언제나 부족한 메모리
메모리 용량이 기하급수적으로 늘어났기에 현대에는 메모리관리가 필요하지 않다고 생각할 수 있다.
그러나 메모리는 언제나 부족하다. 메모리 용량의 증가하면서 프로그램의 크기도 증가했기 때문이다.
1) 프로그램 변천
- 기계어/어셈블리어 작성
- C언어 작성
- 자바, 객체지향형 언어 작성
- 숫자처리 > 문자처리 > 멀티미디어 처리 > Big data
2) 어떻게 메모리를 효과적으로 사용할 수 있을까?
- 메모리 낭비 없애기
- 가상메모리(virtual memory) 사용
3. 프로그램을 메모리에 올리기
메모리는 주소(Address) + 데이터(Data)로 이루어져 있다.
1) 프로그램 개발
- 원천파일(Source file) : 고수준언어 또는 어셈블리 언어
- 목적 파일(Object file) : 컴파일 또는 어셈블 결과
- 실행 파일(Executable file) : 링크 결과
C언어 또는 자바로 작성된 소스 파일을 오브젝트 파일로 바꾸는 과정을 컴파일(Compile)이라 한다.
오브젝트 파일을 메모리에 내장된 라이브러리를 이용해 실행파일로 바꾸는 과정을 링크(Rink)라 한다.
2) 실행 파일을 메모리에 올리기
- 메모리 몇번지에?
- 다중프로그래밍 환경에서는?
MMU 사용 - 재배치 레지스터(Relocation register)
주소 구분
- 논리주소(Logical address) vs 물리주소(physical address)
'Programming > 운영체제' 카테고리의 다른 글
메모리 낭비 방지 - 동적적재, 동적연결, 스와핑 (0) | 2021.09.15 |
---|---|
주기억장치관리 - MMU (0) | 2021.09.15 |
프로세스 동기화 도구 - 모니터(Monitor) (0) | 2021.09.04 |
교착상태 처리 (0) | 2021.08.27 |
전통적 동기화 예제 (3) 식사하는 철학자 문제 (0) | 2021.08.27 |