728x90

1.물리 주소(Physical Address)

임베디드 시스템과 범용 시스템의 가장 큰 차이점은 하드디스크의 존재유무 이다.

범용 시스템은 windows 운영체제에서부터 각종 소프트웨어를 하드디스크에 저장해 놓고, 전원이 인가되면 저장된 소프트웨어를 기반으로 동작하게 한다.

 

임베디드 시스템은 하드디스크가 없다. 하드디스크가 없어서 운영체제를 비롯한 각종 소프트웨어를 플래쉬 메모리에 저장하고 전원이 들어오면 플래쉬 메모리 데이터를 RAM에 올린다.

 

프로그램이 메인메모리에 올라갈때 메인메모리의 크기에 따라 접근 가능한 영역이 정해진다. 

ex) 램 크기가 16M라면 CPU가 접근가능한 메인 메모리 영역은 0번지~(16 * 1024 *1024)-1 번지이다.

 

위와같은 주소는 실제 물리적인 메인 메모리의 주소 범위에 해당하며, 이렇게 주소를 할당하는 것을 가리켜 물리적 주소 지정(Physical Addressing)이라 한다.

 

물리적 주소 지정은 메인메모리 크기에 따라 지정가능한 주소의 범위가 결정된다.

물리적 주소 지정은 CPU 입장에서 접근 가능한 주소의 범위가 제한된다는 뜻이다. 또한 프로그래머가 할당할 수 있는 주소 범위가 제한적이라는 뜻도된다.

 

메인 메모리에는 항상 운영체제가 돌아가고 있다. 메인 메모리의 시작부터 일정영역을 커널영역이라 하고 컴퓨터가 켜지면 해당 영역에 운영체제(커널 포함)가 적재된다.

그렇기 때문에 메인 메모리 크기가 16M바이트 라면 이 범위 안에서 운영체제와 프로그램을 로딩(Loading)하고 프로그램 실행과정에서 메모리를 할당해야만 한다.

 

가상주소(Virtual Address)시스템 1

32비트 시스템에서 프로세스 생성시 4G바이트의 메모리를 할당받을 수 있다. 할당 받을 수 있는 메모리에 비해 메인 메모리는 매우 작다.

따라서 프로세스 생성시 할당받는 4G바이트는 실제로 존재하지 않는 가사으이 주소이다.

이렇게 주소를 지정하는 것을 가상 주소 지정(Virtual Addressing)이라 하며, 가상 주소 지정을 통해서 할당받는 4G바이트를 가리켜 가상 메모리 공간(Virtual Address Space)이라 한다.

 

MMU(Memory Management Unit) : MMU는 CPU와 하나로 패키징 되어있는 장치이다. MMU는 16K바이트 밖에 존재하지 않는 메모리를 64K바이트가 존재하는 것처럼 CPU가 느끼도록 컨트롤 하는 역할을 한다.(가상 주소 시스템)

 

페이지&페이지 프레임

프로그램의 스페이셜 로컬리티 특성을 반영하여 블록 단위로 메모리에 매핑된다. 블록을 메인 메모리 입장에서는 페이지 프레임(Page Frame)이라 하고, 소프트웨어 입장에서는 페이지(Page)라 한다.

페이지 프레임은 실제 메인 메모리를 의미하고, 페이지는 가상 메모리 블록을 의미한다. 페이지 프레임과 페이지의 크기는 일치한다.

 

 위 그림을 보면 현재 가상메모리 0K-4K가 물리메모리에 매핑되어있다.(MMU 에 의해 매핑)CPU가 0K - 4K 사이에 존재하는 데이터를 요구할 경우 MMU는 매핑된 물리 메모리를 참조해서 데이터를 전송해준다.

 

가상 주소(Virtual Address) 시스템 2

메모리 부족 문제 해결

하드디스크도 램(RAM)과 비교해서 속도를 제외하면 그 기능에 있어서 부족함이 없는 메모리이다.

하드디스크를 이용하여 램의 메모리 부족 문제를 해결할 수 있다. 스왑파일(Swap File)이라는 개념은 램(RAM)에 해당하는 메인 메모리를 하드 디스크로 까지 확장한 개념이다.

스왑파일을 통해 메인메모리 부족 문제를 해결해 줄 수 있다.

 

메인메모리의 부족한 부분은 스오바파일을 통해 하드디스크로 해결할 수 있다.

 

 

 여러가지 프로세스를 실행시킬때 각 프로세스의 전환을 프로세스에 해당하는 스왑파일 전환으로 실행시킨다.

프로세스 A실행중 프로세스 B 를 실행시킬 때 램에 존재하는 프로세스 A의 실행을 위한 데이터 모두를 프로세스 A의 스스왑파일에 저장하고, 프로세스 B 실행을 위한 데이터를 프로세스 B의 스왑파일로 부터 램에 가져다 놓는다.

페이징 기법은 하나의 프로세스 내에서 개별 페이지들을 관리하는 기법이다.

스왑핑은 메인 메모리에 실행중인 프로세들을 관리하는 기법이다.

 

페이징기법을 통해 작은 메인메모리가 프로세스의 모든 주소에 접근할 수 있게 하였다.

추가적으로 메모리 스왑핑(Swapping)을 통해서 여러 프로세스가 작은 메인메모리에서 실행될수 있게 하였다.

위 두 기법을 통해 효율적으로 메모리를 참조할 수 있다.

 

*메모리 스왑핑 : 프로세스 실행에 필요한 데이터를 하드디스크에 저장(Store)하고 실행시킬 프로세스를 스왑파일에서 로드(LOAD)함

  

728x90

'Programming > Windows System Programming' 카테고리의 다른 글

파일 I/O 와 디렉터리 컨트롤(1)  (0) 2020.08.16
SEH(Structured Exception Handling)  (0) 2020.08.10
캐쉬(cache)와 캐쉬 알고리즘  (0) 2020.08.07
메모리 계층  (0) 2020.08.07
쓰레드 풀링(Pooling)  (0) 2020.08.05

+ Recent posts