Computer_science 12

[메모리] 단일 프로그래밍 연속 메모리 할당

단일 프로그래밍 환경에서의 연속 메모리 할당은 단일 사용자 환경의 연속 메모리 할당이라고도 할 수 있다.메모리 할당(=적재)에서 말 그대로 연속적으로 메모리를 적재하는 것이 연속 메모리 할당이다. 연속 메모리 할당은 다시 한번에 하나의 프로그램만 실행시키는 단일 프로그래밍 환경과 여러 프로그램을 동시에 메모리에 적재하고 실행시키는 다중 프로그래밍(=멀티 프로그래밍) 환경으로 나눌 수 있으며 여기서는 단일 프로그래밍 환경을 다룬다.  초기 컴퓨터 시스템에서 단일 사용자(하나의 프로그램)만이 실행될 수 있었고 자원도 해당 프로그램 혼자만 사용하였다. 그리고 프로그램은 메모리보다 클 수 없었으며 프로그래머가 직접 배치 과정을 수행하여 항상 같은 메모리 위치에 적재하였다.그러나 시스템 설계자들은 기본 기능을 구..

[메모리] 메모리 할당(적재) 개요

초기 컴퓨터 시스템에서는 프로그램을 실행하려면 운영체제가 프로그램 전체를 수용할 수 있는 연속적인 메인 메모리 공간을 확보해야 했다. 프로그램이 여유 메모리보다 큰 경우 이를 실행할 수 없었다.  이와 같이 연속적인 메인 메모리 공간에 프로그램을 할당하는 방식을 연속 메모리 할당(Contiguous Memory Allocation)이라고 한다.연속 메모리 할당에서 발생하는 문제점을 해결하기 위해 불연속 메모리 할당(Noncontiguous Memory Allocation)을 통해 메모리를 더 효율적으로 사용할 수 있다. 제한된 압축으로 메모리 할당을 변화시켜 외부 단편화 문제를 해결하면 연속적인 공간을 만들 수는 있지만, 실행 시간이 낭비된다. 불연속 메모리 할당은 프로그램을 블록 또는 세그먼트(Segm..

[메모리] 메모리 관리

메모리 할당 방식에 대하여 구체적으로 살펴보기 앞서 메모리 관리 용어를 살펴본다. 동적 적재(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)라는 하드웨어 장치를 내장하여 사용한다. 이를 통해 메모리 계층의 장점을 살려 메모리..