주기억장치 관리

hwakyungChoi·2020년 10월 25일
0

주기억장치 관리 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언어 작성 : 60~70년대
– 자바, 객체지향형 언어 작성
– 숫자 처리 > 문자 처리 > 멀티미디어 처리 > Big Data

  • 프로그램의 크기가 커지기 시작
    ● 메모리 용량 증가 vs 프로그램 크기 증가
    – 언제나 부족한 메모리
    ● 어떻게 메모리를 효과적으로 사용할 수 있을까?
    – 메모리 낭비 없애기
    – 가상 메모리 (virtual memory)

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

● 메모리 구조
– 주소(Address) + 데이터(Data)
● 프로그램 개발
– 원천파일 (Source file): 고수준언어 또는 어셈블리언어
– 목적파일 (Object file): 컴파일 또는 어셈블 결과 / object 파일들을 모아둔 것을 라이브러리
– 실행파일 (Executable file): 링크 결과
● 컴파일러, 어셈블러, 링커, 로더
– Compiler, assembler, linker, loader(메인 메모리에 올리는 것)
● 프로그램 실행: code + data + stack

● 실행파일을 메모리에 올리기
– 메모리 몇 번지에?
– 다중 프로그래밍 환경에서는?
● MMU 사용

  • 어디나 배치 가능하게
    재배치 레지스터 (Relocation register)
    ● 주소 구분
    – 논리주소 (logical address) vs 물리주소 (physical address)

0개의 댓글