Computer science 7

[메모리] 메모리 관리

메모리 할당 방식에 대하여 구체적으로 살펴보기 앞서 메모리 관리 용어를 살펴본다. 동적 적재(Dynamic Loading) 초기 컴퓨터 시스템에서는 메모리의 크기가 프로세스의 크기를 제한하였다. 따라서 바인딩을 최대한 늦게 수행하여 실행 직전에 주소를 확정하면 메모리를 효율적으로 운영할 수 있는 동적 적재 방법이 제안되었다.동적 적재는 모든 루틴을 메모리에 적재하지 않고 재배치 가능한 형태로 디스크에 저장메인 프로그램만 먼저 메모리에 적재하여 수행메인 프로그램이 다른 루틴을 호출할 때 메모리에 적재되어 있는지 조사적재되어 있지 않다면 해당 루틴을 메모리에 적재하고 프로그램의 주소 테이블 갱신동적 적재는 사용하지 않는 프로그램(=루틴)을 메모리에 적재하지 않으므로 메모리를 효율적으로 사용할 수 있으며 전체..

[메모리] 바인딩과 바인딩 분류

프로세서가 프로세스를 실행시키기 위해서는 해당 프로세스의 논리적 주소에 대응하는 물리적 주소를 알아야 한다. 논리적 주소를 물리적 주소로 연결(대응)하는 것을 매핑(Mapping)이라하며 두 주소의 연결 그 자체를 의미한다.두 주소를 매핑하는 작업을 바인딩(Binding)이라고 부른다. 바인딩은 논리적 주소를 물리적 주소로 변환하는 시점에 따라 컴파일 시간(Compile-time Binding), 적재 시간(Load-time Binding), 실행 시간(Run-time Binding)으로 구분할 수 있다.   컴파일 시간(Compile-time Binding) 프로세스가 메모리에 적재될 위치를 컴파일 과정에서 알 수 있다면 컴파일러는 물리적 주소를 생성할 수 있다.프로그램이 컴파일될 때 논리적 주소가 고..

[메모리] 논리적 주소와 물리적 주소의 매핑

메모리는 명령어를 실행하는 과정은 주소의 연속으로 이루어진다. 주소는 보는 관점에 따라 논리적 주소와 물리적 주소로 나눌 수 있다.프로그래머가 프로그래밍에 사용하는 관점에서 볼 때 이 공간은 논리적 주소(=가상 주소)라 할 수 있다. 즉, 논리적 주소는 프로세스가 생각하는 공간이다. 또한, 논리적 주소에 대응하여 적재하는 실제 주소를 물리적 주소라 부르며 메모리 칩이나 디스크 공간에 직접 할당된다. 따라서 물리적 주소는 실제로 데이터가 저장되는 위치이다. 논리적 주소(Logical Address)프로그램이 사용하는 주소 물리적 주소(Physical Address)논리적 주소에 대응하여 프로그램이 실제로 저장되는 메모리 주소 프로그램이 실행되고 동작하는 과정에서 논리적 주소를 물리적 주소로 변환하는 과정이..

[메모리] 메모리 관리 전략

모든 프로그램은 메모리에 적재하는 과정이 선행된다. 따라서 메모리는 프로그램을 실행하는 중요한 작업 공간이다.운영체제가 메모리에 여러 개의 프로세스을 동시에 적재하여, CPU와 시스템 자원을 효율적으로 사용하는 환경(다중 프로그래밍 환경)에서 한정된 메모리를 여러 프로세스가 함께 사용하므로 효율적으로 관리하는 방법이 필요하다. 메모리 관리란 프로세스들을 메모리에 할당하고 제거하며 보호하는 활동이다.프로세스 요청에 따라 메모리의 일부를 할당하고, 작업이 끝나면 다시 재사용할 수 있도록 헤제하는 과정디스크에 있는 프로그램을 실행하기 위하여 메모리에 적재한 후 메모리 관리자가 예약된 메모리를 할당하는 과정다중 프로그래밍 시스템에서 여러 프로세스가 메모리에 상주할 수 있도록 운영체제가 동적으로 메모리를 세분화하..

[메모리] 메모리의 계층적 구조

프로그램 혹은 데이터는 시스템이 실행하거나 참조하기 전에 반드시 메인 메모리에 적재되는 과정이 선행되어야 하며 시스템에서 당장 필요하지 않은 프로그램과 데이터는 필요한 시점까지 2차 저장소(HDD 등)에 보관한다. 이후, 필요한 시점에 메인 메모리에 로드해 실행하고 참조한다. 메모리 계층은 메모리를 속도와 비용에 따라 여러 수준으로 나눌 수 있다. 시스템은 프로그램과 데이터를 나눈 수준 사이로 옮기며 이와 같은 이동을 수행하기 위해서는 다른 생산적인 일에 사용할 수 있는 프로세서 시간 같은 시스템 자원을 소비해야 한다. 따라서 위 작업에 특화된 메모리 이동 기능을 담당하는 메모리 컨트롤러(Memory Controller)라는 하드웨어 장치를 내장하여 사용한다. 이를 통해 메모리 계층의 장점을 살려 메모리..

[메모리] 메모리 구조

프로그램을 메모리에 로드할 때 메모리의 구조는 아래와 같다. ROM코드 영역(텍스트 영역)프로그램의 명령어 코드가 저장되는 영역CPU는 이 영역의 명령어를 읽어 프로그램을 실행실행 중에 크기가 변하거나 수정되지 않으며 컴파일된 기계어 코드가 저장변조 될 경우 Segment Fault가 발생(커널을 참조 및 변조할 경우와 동일한 오류)데이터 영역프로그램이 사용하는 전역 변수(Global Variables)와 정적 변수(Static Variables)가 저장초기화된 데이터 (Initialized Data)초기값이 있는 전역/정적 변수 저장int a = 10;초기화되지 않은 데이터 (Uninitialized Data, BSS)초기값이 없는 전역/정적 변수 저장static int b;RAM 스택 영역은 프로그램..

[메모리] 메모리 소개

컴퓨터 시스템에서 메인 메모리(Real Memory, Main Memory, Physical Memory)의 구성과 관리는 운영체제 설계에 있어서 매우 중요하다. (외국 서적에서는 Real Memory라는 표현을 쓰기도 한다.) 컴퓨터가 동작할 때 핵심적인 역활을 하며 프로세서가 메인 메모리에 필요한 프로그램과 데이터를 로드하고 처리 결과도 저장한다.프로그램 혹은 데이터는 시스템이 실행하거나 참조하기 전에 반드시 메인 메모리에 적재되는 과정이 선행되어야 하며 시스템에서 당장 필요하지 않은 프로그램과 데이터는 필요한 시점까지 2차 저장소(HDD 등)에 보관한다. 이후, 필요한 시점에 메인 메모리에 로드해 실행하고 참조한다. 프로그램을 실행 할 때 다음과 같이 간단하게 동작을 표현할 수 있다.HDD는 2차 ..