<Symbolic, Hard Link>




<하드링크>



하드링크는 생성시 원본 파일과 inode값이 같다.(생성시간도 같음) 이유는 같은 inode로부터 값을 가져오기 때문이다.

원본 파일이 변경된다면 어떻게 될까? 하드링크된 파일도 같이 변경된다.

하지만 원본파일이 삭제된다고 해서 하드링크도 문제가 되진 않는다. 위 그림에서 /home/lee/originalFile.txtinode1 화살표가 없어지는 것일뿐이다.

 

1. ls -liinode값을 확인할 수 있는 명령어이다.


2. 하드링크를 만들어보자.

nsswitch.confinode값은 10이다.

 

하드링크된 nc파일의 inode10이다.

 

3. 심볼릭 링크를 만들고 비교해보자.

nsswitch.confinode값을 10이다.



<심볼릭 링크>



심볼릭 링크는 생성되는 파일의 inode와 원본파일의 inode가 다르다. 다른 inode(위에선 inode3)에 원본 파일을 만날 수 있는 link값이 저장되어 있다.(화살표)

 

심볼릭링크된 sym파일의 inode11이다.





LIST

<사용자 계정>


1. useradd 명령어

useradd [-u uid] [-g, -G group] [-d dir] [-s shell] [-k skel_dir] [-f inactive] [-e expire]

예를 들어보자.

useradd -u 1000 -g sys -G adm -d /export/home/kyg -s /bin/ksh -m kyg

이것을 해석해보면... kyg라는 이름의 계정은 UID1000이고, 기본그룹은 sys, 추가그룹은 adm, 홈 디렉토리는 /export/home/kyg, shell은 콘쉘이다. 마지막 m-m 옵션을 써줘야 디렉토리가 만들어진다.



 

2. usermod 명령어

옵션은 useradd와 똑같고, 단지 사용자 정보를 변경해주는 명령어이다.

usermod -d /export/home/test kyg

이런 명령을 사용하게 되면 kyg계정의 홈디렉토리가 /export/home/kyg에서 /export/home/test로 바뀐다.



 

3. passwd 명령어

이 명령어는 비밀번호를 변경하는 명령어다.

passwd [사용자 ID]를 입력하면 비밀번호를 변경하게 된다.



 

 

 

LIST

<세그먼테이션(Segmentation)>

프로그램을 들여다보면 주(Main)프로그램, 프로시저, 함수, 전역 또는 지역변수와 호출 시 사용되는 스택 등으로 논리적으로 하나하나의 단위를 세그먼트라 한다.


세그먼트 단위대로 사상하고 적재하는 기법이 세그먼테이션이다. 세그먼트 개수만큼의 엔트리를 가지는 세그먼트 테이블이 있다. 가상주소는 세그먼트 번호(s)와 세그먼트 내에서의 위치값(d)로 표현한다. 존재 비트의 값에 따라 유효한 디스크 주소와 메모리 주소를 갖는 필드들이 있다. 페이징과 다른 점은 메모리 주소 필드에 적혀 있는 값이 실주소이다. 세그먼트의 길이(Length)가 적혀 있는 필드가 있는데 이것은 세그먼트의 크기가 서로 다름으로 인해 필요한 조치를 위해 사용한다.

읽기, 쓰기, 실행, 추가와 같은 작업을 각 비트를 1또는 0으로 지정하고 해당 세그먼트에 대해 제어할 수 있는데 이런 비트들을 접근 제어 키라 부른다.

 



 

<세그먼트의 보호(Protection)와 공유(Sharing)>


1. 보호

실주소를 위해 더해지는 위치 값(d)이 세그먼트의 길이 값을 초과하면, 트랩을 통해 프로세스의 실행을 중지시켜 사용자 간의 메모리 보호가 가능하다.

접근 제어 키를 사용하여 세그먼트 별로 허용되는 작업을 제어하여, 사용자의 잘못된 접근으로부터 보호될 수 있다.

2. 공유

엔트리에서 같은 주소 값을 가지도록 한다.

공유해야 할 프로시저가 커서 몇 개의 페이지로 나누어진다면, 이 페이지들의 엔트리는 공유하는 프로세스들의 페이지 테이블에서 모두 같은 위치에 있어야 하고 이것은 테이블의 구성을 힘들게 만들 것이다. 또한, 페이지 크기와 정확하게 맞지 않을 경우, 공유할 필요 없는 (또는, 공유해서는 안 되는) 부분이 공유 페이지에 포함될 수도 있다.


[세그먼트의 장점]

논리적 단위란 것은 단위별로 수정하고 다시 컴파일해서 쓸수 있음

프로그램의 일부의 변경 때문에 전부를 다시 링크하고 로딩하지 않아도 됨




Copyright2014 By 휴먼사이언스 

LIST

<Working set이론>


프로세스가 특정 시점에서 집중적으로 참조하는 페이지들의 집합을 말한다. 이것을 메모리에 적재되도록 함으로써 페이지 부재를 최소화 한다.

Working set은 시간에 따라 변하게 되는데 이를 공식적으로 정의하면 다음과 같다.

시점 t에서 프로세스의 Working set, W(t, Δt)는 해당 프로세스가 [t – Δt ,t] 시간 동안 참조한 페이지들의 집합

Δt는 일정 크기의 시간으로 윈도 크기(Window Size)라 부르며, 시스템에 의해 적절한 값으로 정해진다.




Working set이란 현 시점에서의 지역성을 표현하고, 이 페이지 집합은 앞으로도 당분간 집중적으로 참조될 것이라 보는 것이다.

Working set을 메모리에 적재되도록 하여 스레싱 때문에 겪게 될 성능 감소를 미연에 방지할 수 있다.

윈도 크기를 너무 크게 잡으면 지역성에 포함되는 페이지들 외에 다른 페이지들도 Working set에 포함될수 있게 되어 메모리의 낭비와 함께 적정한 다중 프로그래밍 정도를 유지하기 힘들다.

너무 작게 잡으면 지역성에 포함되는 페이지들조차 Working set에서 빠져 스레싱을 겪게 될 것이므로 시스템의 다양한 상황을 반영하여 세심하게 결정해야 한다.

다음 그림을 보도록 하자.

 

1. 프로그램의 실행이 시작된 후 t0부터 처음 참조되는 페이지들은 부재를 겪으며 점차 Working set을 키워가다가 t1에서 최대 크기인 5가 됨

2. 이후부터 지역성을 보이면서 t2에서와 같이 (세 개의 페이지로 Loop 1을 구성하는 동안에는) 일정한 크기(=3)로 유지 됨

3. 실행이 진행되면 다음 지역성을 보이는 Loop 2 부분으로 넘어가면서 t3에서 5개로 증가했던 Working set은 점점 줄어들어 t4에서와 같이 페이지 두 개로 구성되는 강한 지역성을 드러냄

[Working set 이론 정리]

지역성을 표현하는 Working set을 메모리에 유지함으로써 스레싱을 방지하겠다는 것이다. 크기에 변동이 있으므로 Working set이 작아지면 프레임을 회수하고 커지게 되면 그만큼 프레임을 더 할당해 주는 가변 할당이 필요하다는 것이다.




Copyright2014 By 휴먼사이언스

 

LIST

가상 메모리란 프로그램의 일부분이 메모리에 올라오도록 함으로써 보다 많은 개수의 프로세스를 메모리에 수용함과 동시에 아무리 큰 프로그램도 실행 가능하게 해준다.

이 방법이 유용하게 작용하려면 사상 과정을 최대한 빨리해야하고, 참조하고자 하는 페이지가 메모리에 있어 줄수록 높아진다.

이번에는 가상 메모리의 관리기법에 대해서 알아보자.

우선 크게 두가지 방법이 있다.

첫째, 하드웨어를 사용하는 기법. 이것은 TLB라는 추가의 하드웨어를 사용한 방법이다.(내 블로그에 보면 TLB에 관한 내용이 있다. 읽어보도록...)

둘째, 정책들을 정해놓고, 소프트웨어적으로 관리를 하는 기법들이다.



<적재 정책>

실행에 필요한 페이지를 언제 메모리에 적재할 것인가를 결정하는 정책이다.

1. 요구 적재

페이지가 참조될 때 적재하는 기법이다. 당연하게 보이는 이 기법은 참조하는 페이지들로만 메모리를 사용하게 되므로 메모리에 관한 한 오버헤드가 없으나, 참조시 페이지 부재일 경우 입출력 부담이 있게 된다.

2. 예측 적재

예측을 통해 확률적으로 참조될 가능성이 높다고 판단되는 페이지를 미리 적재 시키는 기법이다. 예측이 잘 될 경우 페이지 부재 빈도를 낮출 수 있으나, 반대의 경우에는 예측을 위한 오버헤드와 함께 참조되지 않을 페이지를 적재한 메모리 낭비 발생한다.



<배치 정책>

디스크로부터 가져온 페이지를 메모리의 어디에 적재할 것인가를 결정하는 정책이다. 페이징을 사용하는 시스템에서는 빈 프레임만 발견되면 어떤 프레임에 적재하든 문제가 없다. 세그먼테이션을 사용할 경우는 세그먼트의 크기가 얼마든지 다를 수 있으므로, 다양한 크기의 세그먼트를 수용할 수 있는 배치 정책(최초 적합 등)이 요구된다. (최초, 최적, 최악기법이 있음)



<할당 정책>

프로세스들에게 메모리를 얼마큼씩 줄 것인지를 결정하는 정책이다. 페이징의 경우 각 프로세스에게 메모리 프레임을 몇 개 사용할 수 있도록 해 줄 것인가를 결정하는 정책이다. 개수의 변동이 없도록 운영한다면 고정 할당이라 부른다. 반면에 실행 도중 프로세스에 부여된 프레임의 수에 변동이 있도록 한다면 가변 할당이라 부른다.



<교체 정책>

메모리에 빈 프레임이 없을 때 적재될 페이지를 위해 적재된 페이지 중 누군가는 자신이 차지한 프레임을 비워주어야 하는 교체 대상이 되어야 할 텐데, 이때 어떤 페이지를 선택할 것인가를 결정하는 정책이다.

1. 최적기법

현 시점에서 앞으로 가장 오랫동안 참조되지 않을 페이지 즉, 미래에 참조될 때까지의 시간이 가장 긴 페이지를 선택하여 교체하는 기법이다.

페이지 부재를 최소로 해주지만, 프로세스들이 앞으로 어떤 페이지들을 참조할지를 미리 알 수는 없으므로 현실적으로 구현 불가능하다.(미래 예측 불가능)

 



 

2. FIFO(First In First Out) 기법

적재된 지 가장 오래된 페이지를 교체하는 기법이다. 시간 기록 기법(각 페이지가 적재될 때의 시간을 기록한 후, 교체 시 이 시간이 가장 오래전인 페이지를 선택하는 방식)을 사용한다.

큐를 사용하여 큐에서의 상대적인 위치가 적재된 순서를 나타내는 것으로 교체의 대상은 항상 큐의 맨 앞이 되도록 유지, 관리하는 기법이다.

FIFO 모순(Belady’s Anomaly) - FIFO에서 부재율을 낮추기 위해 프레임을 더 주었을 경우 오히려 부재율이 올라가는 현상을 발생할 수 있음


 


3. LRU(Least Recently Used) 기법

참조된 지가 가장 오래된 페이지가 교체 대상으로 하는 기법이다.

시간 기록 기법을 사용하여 페이지들이 적재될 때 의 시간을 기록한 후 이 페이지가 메모리에 있는 동안 참조될 때마다 가장 최근의 참조 시간으로 갱신(FIFO랑 다른 점)해 놓으면, 가장 오래전 시간이 기록되어 있는 페이지가 교체의 대상이 된다.

스택(Stack)을 사용하는 방법으로, 스택의 가장 밑(Bottom)에 있는 페이지가 교체 대상이 되도록 스택에서의 위치가 상대적인 참조 순서를 나타내도록 관리하는 방법이다.

 

 

4. Second-chance 기법

적재된 후 한번이라도 더 참조된 페이지를 바로 교체시키지 않고 한 번 더(Second) 메모리에 머무를 수 있는 기회(Chance)를 주는 기법이다. 적재된 페이지에 참조 비트를 두어 교체 대상인 페이지의 참조 비트가 0이면 바로 교체되고, 1로 되어 있을 경우 즉, 적재 도중 한번 이상 참조된 경우 이 비트를 0으로 만들면서 큐의 맨 뒤로 보냄으로써 메모리에 머무를 기회를 한 번 더 주는 것이다.

 

 

5. 개선된 Second-chance (또는 NUR) 기법

Clock 기법에 갱신 비트를 추가하면 보다 나은 교체 정책을 만들 수 있다는 생각으로 출발한 기법이다.

(갱신 비트가 1이란 말은 이 페이지가 적재 중 변경되었다는 것을 의미)

교체가 될 경우 변경된 내용으로 디스크에 기록을 해 주어야 하는 부담이 있으므로 가급적 교체를 미루어 디스크에 대한 쓰기 작업을 줄이고자하는 의도이다.

참조 비트와 갱신 비트 값의 조합은 네 종류로서 참조도 변경도 되지 않은 경우부터 참조되고 변경까지 된 경우 -> 11, 10, 01, 00



- 첫 번째 단계로, 현재 포인터 위치에서 포인터를 이동하며 참조와 갱신 비트가 모두 0인 페이지를 찾아 교체하고 다음 페이지로 포인터를 위치시킨다.

- 첫 번째 단계에서 그런 페이지를 찾지 못하면 두 번째로 참조는 0, 갱신은 1로 되어 있는 페이지를 찾아 교체

- 포인터를 이동하면서 모든 프레임의 참조 비트를 0으로 바꿈

- 두 번째 단계에서도 해당 페이지를 찾지 못했다면 포인터는 제자리로 돌아와 있을 것이며, 모든 프레임의 참조 비트는 0이 되어 있을 것이므로 다시 첫 번째 단계를 시도하고 안 되면 두 번째 단계까지 시도 해 보면 교체 대상 페이지가 발견될 것임

NUR 역시 참조와 갱신 비트를 사용하되, 참조 비트는 시스템에서 주기적으로 0으로 만들어줌


6. LFU (Least Frequently Used) 기법

적재되어 있는 동안 참조된 횟수를 누적하여 기록한 후 그 값으로 교체 대상을 선택하는 기법

LFU는 많이 참조된 페이지는 앞으로도 참조될 확률이 높을 것이란 판단에 근거하여 값이 가장 작은 페이지를 선택


7. MFU (Most Frequently Used) 기법

MFU는 많이 참조된 페이지는 충분히 참조가 이루어졌으므로 더 이상 참조되지 않을 것이란 판단에 근거하여 값이 가장 큰 페이지를 선택

LFUMFU 두 기법 모두 편향된 시각에 근거함으로써 실제로 구현되는 경우는 매우 드뭄




Copyright2014 By 휴먼사이언스

LIST

<2단계 페이징 사상>

32 비트를 사용해 주소를 표현하는 시스템에서 하위 12 비트를 offset으로 사용한다면, 페이지의 크기는 4 Kbyte(2^12)가 되고 사상 테이블은 최대 100만개(220)의 엔트리를 가질 수 있다.

엔트리의 크기를 4 Byte로 잡더라도 페이지 테이블의 크기는 4 Mbyte가 되므로 매우 큰 크기가 되어 메모리에 모두 저장하기에는 벅차게 되므로, 페이지 테이블을 작게 나누어 필요한 부분만을 메모리에 적재하기 위해 계층구조를 갖도록 구성할 수 있다.


ex) 계층구조인 2단계 페이징을 예로 들어 보자.

위에서 말한 페이지 번호를 나타내는 20 비트를 10 비트씩 나누어 상위 10 비트를 바깥(또는 루트)페이지 테이블의 엔트리 위치로, 하위 10 비트는 나누어진 테이블 내의 엔트리 위치를 나타내도록 하면 어떨까? 메모리에 상주시키는 4 Kbyte 크기의 루트 테이블과 같은 크기의 1024(2^10)개 페이지 테이블들의 선택적인 메모리 적재를 통해 전부 적재해야 하는 부담을 줄일 수 있다.

 




 

위의 그림에서 1024개의 페이지 테이블을 생략하였다.



<역 페이지 테이블 사상 - 역발상>

메모리에 고정 크기의 페이지 테이블 하나만 둠으로써 해결하는 방법이다.

메모리의 프레임 수만큼 엔트리를 가진다.

테이블 내에서 엔트리의 순서는 프레임의 순서와 같다. k 번째 엔트리는 메모리의 k 번째 프레임에 대한 사상 정보를 가지고 있는데, 빈 프레임인지 아닌지를 나타내는존재 비트와 함께 적재된 경우 어떤 프로세스의 몇 번째 페이지인지를 나타내게 된다.

가상주소는 페이지 번호(p), 위치값(d)과 함께 이 페이지를 소유하는 프로세스 번호(Pid)도 가져야 한다. 사상을 할 때 프로세스 번호와 페이지 번호를 함께 사용하여 페이지 테이블을 검색해야 하기 때문이다. 다른 프로세스라 할지라도 페이지 테이블은 같은 페이지 번호로 매겨진다. -> 공유가 힘들다.


ex) 번호가 2인 프로세스가 페이지 번호 3과 위치 값 10으로 사상을 요구할 때, 가상주소는 <2, 3, 10>

1. 먼저 23을 가지는 엔트리를 검색(최악의 경우 엔트리의 끝까지 검색)

2. 발견된 엔트리의 역 페이지 테이블에서의 위치가 일곱 번째라면 메모리의 일곱 번째 프레임에 2번 프로세스의 3번 페이지가 적재되어 있다는 것이며, 여기서 위치 값 10을 더해 실주소를 알게 되는 것이다.



 

페이징은 고정 크기의 페이지로 메모리를 관리함으로써 구현이 쉽다는 장점을 가지기 때문에 대부분의 시스템에서 채택되고 있다.

프로그램의 마지막 페이지는 (평균적으로 페이지 크기의 반 정도의) 내부 단편화가 발생되는 단점이 있다.

예를 들어 3K 크기의 메모리에 페이지의 크기를 1K로 했을경우 1.5K 크기의 프로그램 두 개가 내부 단편화 때문에 전부 적재되지 못한다.

하나로 붙어 다녀야 효과적인 크기(서브루틴, for문 또는 매트릭스(Matrix) ) 가 페이지 단위로 나누어져 일부가 적재되면 사상 시간이 길어지고 공유 또한 불편하게 될 수 있다.



Copyright2014 By 휴먼사이언스

 

LIST

'OS > Theory' 카테고리의 다른 글

Working set이론  (0) 2016.04.21
상 메모리의 관리(적재, 배치, 할당 기법)  (0) 2016.04.20
페이지의 보호와 공유  (0) 2016.04.19
TLB(Translation Lookaside Buffer)  (2) 2016.04.18
페이징(Paging)  (0) 2016.04.17

<페이지의 보호(Protection)와 공유(Sharing)>


1. 페이지 보호


접근하고자 하는 페이지에 대해 읽기나 쓰기 작업을 어떻게 제한할 것인가와 다른 프로세스의 주소 공간으로 침범하지 못하도록 하는 것이다.

보호 비트(Protection Bits)를 두어 허용되는 접근설정을 하고, 보호에 위반되면 트랩을 일으킨다.


2. 공유

프로그램의 한 부분만을 메모리에 두고 실행함으로써 메모리 공간 절약 가능하다.

공유되는 프로그램은 코드의 내용이 실행 도중 변하지 않아야 하므로 재진입 코드(Reentrant 또는 Pure Code)로 컴파일 되어 있다.

페이징에서의 고융는 프로세스 각자의 페이지 테이블에서 엔트리에 같은 프레임 번호를 가지도록 한다. 프로그램은 명령어 페이지와 데이터 페이지로 나누어 지는데 명령어 페이지를 공유하여 사용한다.

 


 

Copyright2014 By 휴먼사이언스

LIST

<TLB(Translation Lookaside Buffer)>

TLB는 고속 캐시의 일종 (Associative Memory)이며, (KEY)값으로 찾고자 하는 워드를 동시에 접근하는 연관 메모리로서 검색이 빠른 반면 비싼 하드웨어이다.

최근에 빈번하게 검색된 엔트리들을 TLB에 넣되, 페이지 번호(p)를 키 값으로 동시 검색하므로 TLB에 저장되는 각 엔트리는 페이지 번호도 함께 표시되어 있어야 한다.

 



 

가상 주소의 p를 키 값으로 먼저 TLB부터 검색하며, 이때 페이지 번호를 p로 가지고 있는 엔트리가 있을 경우 그 엔트리에 적혀 있는 프레임 번호를 가지고 실주소에 이른다. TLB의 검색에서 모든 엔트리에 표시된 화살표는 동시에 검색한다. (메모리상의 페이지 테이블과의 차이 -> 빠름)

TLB에서 p를 가지는 엔트리의 검색에 실패하면 메모리에 있는 페이지 테이블로부터 사상이 진행되어 실주소를 얻게되고, 이 엔트리는 TLB에 추가시킨다.

 


TLB에서의 검색 성공 확률을 적중률(hit ratio)이라 한다.

소량의 크기라도 90% 이상은 나올 수 있다는 실험 결과가 있다.

ex) TLB 검색과 메모리 접근에 각각 20100 나노 초(Nanosecond)가 걸리고, 적중률을 90%라 했을 때, 실주소로 메모리를 접근하는데 걸리는 시간 (실접근 시간(Effective Access Time))

0.9 × 120(TLB 접근 + 실주소 접근) + 0.1 × 220(TLB 접근 + 사상 테이블 접근 + 실주소 접근) =130 나노 초가 되므로 TLB를 사용하지 않을 경우의 200 나노 초보다 빠르다는 것을 알 수 있다.

 



Copyright2014 By 휴먼사이언스

 

LIST

'OS > Theory' 카테고리의 다른 글

2단계 페이징 사상, 역 페이지 테이블 사상  (0) 2016.04.19
페이지의 보호와 공유  (0) 2016.04.19
페이징(Paging)  (0) 2016.04.17
가상 메모리(Virtual Memory)  (0) 2016.04.17
메모리 관리  (0) 2016.04.16

<페이징(Paging)>

모든 프로세스들이 같은 크기의 조각들로 나뉘어야 하는데, 이때 한 조각을 페이지라 부른다. 메모리 역시 프레임이라 불리는 페이지와 같은 크기로 나누어져 있으며 일련의 번호가 매겨져 있다.

한 프로세스의 전체 페이지들은 디스크에 저장되고, 이 중 몇 개가 메모리에 비연속적으로 다른 프로세스들의 페이지들과 섞여 적재되는데, 프로세스의 실행이 진행되는 과정에 따라 메모리를 오가며 교체되는 단위가 페이지이며, 이것은 곧 사상의 단위가 된다.

운영체제는 가상주소를 실주소로 변환하기 위해 프로세스당 하나의 페이지 테이블을 만들어야 하는데 이것을 페이지 사상 테이블이라 부르며, 테이블 크기는 해당 프로세스의 페이지 개수에 비례한다.

n개의 페이지를 가지는 프로세스의 페이지 테으블은 n개의 엔트리로 구성되고, 엔트리 하나의 크기는 보통 4byte이다.


엔트리에 들어있는 정보중에 중요한 것은 페이지가 메모리에 적재되어 있는가를 나타내는 존재 비트(메모리에 적재:1, 아닐경우:0)를 갖는다.

 



 

실행시 참조되는 가상주소는 페이지 번호(p)와 페이지 내에서의 위치(d)로 표시된다.

실행 중인 프로세스의 페이지 테이블 시작주소는 페이지 테이블 기준 레지스터에 들어있다. 먼저, 기준 레시즈터의 값에 p를 더해 페이지 테이블에서 페이지 p의 사상 정보를 갖고 있는 엔트리를 찾은 후, 존재비트를 확인하게 될 것이다.

존재비트가 1일 경우, p가 적재되어 있는 프레임 번호 f를 알 수 있으므로, 이 번호 값에 페이지 크기를 곱하면 메모리에서 이 프레임의 시작주소를 얻게 되고 여기에 d를 더하면 프레임 내에서 접근해야 할 워드의 주소(실주소)로 접근하게 된다.

존재비트가 0일 경우, 페이지가 메모리에 없음을 의미하고 먼저 디스크 주소로부터 이 페이지를 메모리에 적재할 것이다.




Copyright2014 By 휴먼사이언스

 

LIST

'OS > Theory' 카테고리의 다른 글

페이지의 보호와 공유  (0) 2016.04.19
TLB(Translation Lookaside Buffer)  (2) 2016.04.18
가상 메모리(Virtual Memory)  (0) 2016.04.17
메모리 관리  (0) 2016.04.16
교착상태 해결방법  (0) 2016.04.15

<가상 메모리(Virtual Memory)>

운영체제는 주어진 메모리의 크기 아래서 프로그램을 작은 조각으로 나누어 그 중에 일부분만을 메모리에 적재하되, 그것도 적재가 가능한 곳으로 비연속적으로 넣어줌으로써, 사용자는 메모리에 대한 고민으로부터 벗어 날 수 있다. 사실은 제한적인 크기지만 엄청나게 큰 메모리가 있는 것처럼 여겨지기 때문에 가상 메모리라고 부른다.


모든 프로그램은 작은 조각들로 나눠지게 되는데, 조각들의 크기를 모두 같도록 하면 한 조각을 페이지라고 부르고, 서로 다르게 하면 조각들 각각을 세그먼트라고 부른다.

페이지 or 세그먼트는 메모리와 디스크 사이에서 한 번에 전송되는 단위가 되는데 이 단위를 블록이라 부른다.


실행중인 프로그램에서 참조하는 주소가 실제 메모리에 있는 주소와 달라서, 메모리상의 주소로 변환이 필요할 때 하는 것이 사상이다.

프로그램에서 CPU가 참조하는 주소를 가상주소라고 하며, Address Translation을 통해 실제로 참조되는 메모리상의 주소를 실주소 or 물리적 주소라 한다.


왜 주소를 이렇게 다르게 하는 이유는 뭘까?

1. 주소 지정이 컴파일 시 발생

프로그램이 실행될 때 참조하는 주소가 컴파일 될 때 지정된다는 것이다. 참조하는 주소가 실 주소이므로, 프로그램은 항상 메모리의 지정된 곳으로만 적재


2. 재배치 시

메모리에서의 위치를 적재될 때마다 바꿀 수 있어서 융통성과 함께 메모리의 효율적이 이용이 가능하지만, 프로그램이 전부가 통째로 연속적인 메모리에 적재 되어야 함을 전제를 가진다.

실행 시에 참조되는 주소는 프로그램 내에서 어느 정도의 위치에 있는지를 나타내는 상대주소일 것이며, 실 주소는 메모리에 적재될 때의 시작 주소 값(재배치 레지스터에 있음)에 상대주소 값을 더해주면 된다.


<주소 바인딩(Address binding)>

논리적 주소(logical address)를 실행되기 위해서는 물리적 주소로 사상하는 것

주소 바인딩 종류는 컴파일 시간(compile time) 바인딩, 적재 시간(load time) 바인딩(by Relocation), 실행 시간(execution time) 바인딩이 있다.


[논리적 주소와 물리적 주소]

중앙처리장치가 생성하는 주소를 논리적 주소라 하며, 기억장치가 취급하는 주소를 물리적 주소라 한다.

기억 장치 관리기(MMU : Memory Management Unit) : 재배치(relocation) 레지스터는 세그먼트의 시작주소를 가지고 있으며, 논리적 주소가 들어올 때마다 모든 주소에 재배치 레지스터가 가지고 있는 값을 더해서 물리적 주소를 만든다.

 



 

Copyright2014 By 휴먼사이언스

LIST

+ Recent posts