2008년 7월 9일 수요일

메모리 관리

커널은 태스크를 통해 임베디드 시스템 안에서 프로그램 코드를 관리한다. 커널은 시스템 내에서 태스크들을 로드하고 실행하는 어떤시스템을 가지고 있어어 한다. CPU는 캐시 또는 RAM안에 있는 태스크 코드를 실행만 하기 때문이다. 동일한 메모리 공간을 고유하는 다중 태스크 코드를 보호하기 위해서는 보안 시스템 메커니즘을 필요로 한다. 또한 OS는 그것들을 관리하고 있는 태스크들과 동일한 메모리 공간 안에 있어야 하기 때문에, 보호 메커니즘은 메모리 안에 있는 그 자신의 코드를 관리하고 자신이 관리하는 태스크 코드로부터 보호 매커니즘을 루틴을 보호해야 한다. 일반적으로 커널의 메모리 관리기능은 다은과 같은 사항들을 포함한다.

● 논리(물리) 메모리와 태스크 메모리 레퍼런스 사이에서 매핑을 관리한다.
● 이용 가능한 메모리 공간으로 어떤 프로세스가 로드될지를 결정한다.
● 시스템을 구성하는 메모리 프로세스를 위한 메모리를 할당 및 해제한다.
● C 언어의 'alloc'과 'dealloc' 함수처럼,(프로세스 내에서) 코드 요청의 메모리 할당 및 해제 또는 특정 버퍼 할당 및 해제 루틴을 지원한다.
● 시스템 컴포넌트들의 메모리 사용을 추적한다.
● 프로세스 메모리 보호를 보장한다.

대부분의 OS 프로세스들은 보통 실행되는 루틴에 따라 kernel mode와 user mode의 두 모두 중 하나에서 동작한다. 커널 루틴들은 미들웨어 또는 어플리케이션과 같은 소프트웨어의 상위 계층들과는 다른 메모리 공간 및 계층 안의 커널모드(관리자모드)에서 동작한다. 전형적으로 소프트웨어의 이러한 상위 계층들은 사용자 모드에서 동작하며, 시스템호출(system call), 커널의 서브루틴으로서의 상위 레벨 인터페이스를 통해서만 커널 모드에서 동작하는 것에 접근이 가능하다.

처리를 위해 RAM으로 로드 될때 다중 프로세스는 동일한 물리 메모리를 공유하고 있기 때문에, 프로세스들이 하나의 물리 메모리 공간의 안팎으로 교체될 때 서로서로에게 의도 하지 않은 영향을 미치지 못하도록 보호 메커니즘이 있어야 한다. 보통 운영체제에 의해 메모리 스와핑이라는 방법으로 해결하는데 이것은 메모리의 일부분이 런타임시 메모리 안팎으로 교체되는것을 말한다.






댓글 없음: