본문 바로가기
컴퓨터 지식

(운영체제,OS) 메모리 관리-2

by LiveData 2018. 12. 7.
반응형

Contiguous Allocation 연속메모리 할당.

  • 주 메모리는 운영체제뿐만 아니라 여러 사용자 프로세스도 수용해야한다.
  • 제한적인 자원을 효율적으로 관리되어야 한다. 연속 할당->방법중 하나
  • 메모리에 상주하는 운영체제를 위한 것이며 다른 하나는 사용자 프로세스를 위한 것이다.


  • 재배치 레지스터는 가장 작은 물리 주소의 값을 저장하고, 상한 레지스터는 논리 주소의 범위 값을 저장한다.

  •  MMU는 동적으로 논리 주소에 재배치 레지스터 값을 더함으로써 주소를 변환하는 역할을 한다.

  • 재배치 레지스터를 사용함으로써 운영체제의 크기는 실행 중이라도 얼마든지 변경될 수 있음을 알수 있다. 운영체제 코드(transient OS code) : 필요에 따라 올라오기도 하고 지워지기도 하는 부분.

 



Memory Allocation

  • 간단 방법-> 메모리를 똑같은 고정된 크기로 분할한다.
  • 가변 분할 기법 메모리의 어떤 부분이 사용되고 사용되지 않는지 테이블로 유지한다.
  • 초기 Hole ->이용가능한 블록 , 운영체제는 프로세스에게 Hole중 공간을 할당
  • 할당 할 수 없으면 될 때까지 기다린다.
  • 운영체제는 항상 가용공간의 크기들과 입력 큐를 유지해야 한다. 특정 알고리즘을 사용하여 입력 큐의 프로세스들을 일정한 순서로 배치할 수도 있다. 메모리 요구가 만족할 수 없으면 공간이 생길때까지 기다리던가, 좀 더 적은 메모리를 요구하는 다른 프로세스를 알아보기 위해 입력 큐로 돌아간다.
  • 일반적으로 메모리에는 여러 크기의 공간이 여기저기 산재, free hole 에 새로운 프로세스 공간을 효율적으로 할당.


 




Fragmentation

  • external fragmentation – 어떤 자유 공간은 너무 작은 조각이 되어 버린다이 작은 조각이 여러 곳에 분산되어 있을 때 발생한다메모리는 너무 많은 수의 매우 작은 조각들로 단편화 되어 있는 것이다.
  • Internal Fragmentation – 할당된 메모리는 요청된 메모리보다 약간 클 수 있다이 메모리는 파티션 내부 메모리지만 사용되고 있지 않다.




외부 단편화를 줄이는 방법 : 압축

  • 모리의 모든 내용들을 한군데 몰고 모든 자유공간들을 다른 한 군데로 몰아서 큰 블록을 만드는 것이다. 재배치가 어셈블 또는 적재 시에 정적으로 행해진다면 압축할 수 없다.
  • 비용이 많이든다.
  • 한 프로세스의 논리 주소 공간을 여러 개의 비연속적인 공간으로 나누어 필요한 크기의 공간을 가용해지는 경우 물리 메모리를 프로세스에게 할당하는 방법. 




Segmentation

- Segment table

  • base  세그먼트에 상주하는 시작 물리주소를 포함
  • limit  세그먼트의 길이 지정


- Segment-table base register (STBR) : 메모리에서 세그먼트 테이블의 위치하는 점

  • Segment-table length register (STLR) : 프로그램에 의해 사용되는 세그먼트 수를 나타낸다.
  • segment number s is legal if s < STLR

 

보호 : 세그먼트 테이블과의 결함 valid bit 0 -> illegal segment rwe privileges

 

세그먼트의 길이가 변화하기 때문에, 메모리 할당은 동적 스토리지 할당 문제가 있다.

 

 

 

 

Paging 페이징

  •  논리 주소 공간이 한 연속적인 공간에 다 모여 있어야 한다는 제약을 없앤다.
  • 외부 단편화 방지하고 압축 작업이 필요 없게 된다.
  • Page number(p) - 물리 메모리의 각 페이지의 기본 주소를 포함하는 페이지 테이블에 대한 인덱스로서 사용 , 베이스 주소를 가지고 있음
  • Page offset(d) - 상기 메모리 장치로 전송되는 물리적 메모리 어드레스를 정의하는 기본 주소와 결합 , base로부터 얼마나 떨어져 있는지.


 


 

페이지 번호 페이지 변위 d

m-n n

  • 평균적으로 프로세스 당 반 페이지 정도 내부 단편화-> 작은 페이지 ->페이지 테이블 크기가 커지고 공간 낭비가 된다.
  • 디스크 입장에서 페이지 크기가 클수록 효율적이다.





페이징의 가장 중요한 특징  

  • 사용자 인식과 실제 물리 메모리를 명확하게 분리한다.
  • 사용자 프로그램은 하나의 연속적인 공간
  • 실제로는 프로그램은 물리 메모리에 여러 곳에 프레임 단위로 산재, 많은 다른 프로그램이 올라와져 있다. 



운영체제는 메모리를 관리하기 때문에 물리 메모리의 자세한 할당에 대해 파악하고 있어야 한다. 어느 프레임이 할당되어 있고, 어느 프레임이 사용 가능한지, 총 프레임은 몇 개나 되는지 알아야 한다. 프레임 테이블이라는 자료구조.

 



운영체제는 모든 프로세스들이 사용자 공간에서 동작한다는 것을 알고 있어야 하고 모든 주소로 사상할 수 있어야 한다. 시스템 호출하면 매개변수로 어떤 주소 전달하면, 제대로 사상하여 물리주소를 찾아가야 한다.

 



운영체제는 각 사용자에 대해서 페이지 테이블의 복사본을 유지해야한다. -> 컨택스트 스위칭의 시간을 증가시킨다. CPU가 보게 되는 메모리공간을 가상주소메모리 라고 하고 실제 메모리 주소메모리 라고 하는데 이를 접근하려면 맵핑을 해야 한다.

 



각 페이지마다 하나의 페이지 테이블을 할당한다. 페이지 테이블을 보고 맵핑, 메인 메모리에 존재한다. PTBR(page table base register) PTLR page table length Register

메모리를 2번 접근하는 문제가 있다.


TLB(Translation Look-aside Buffers) 소형 하드웨어 캐시를 사용. 키 와 값의 두 부분으로 구성된다. TLB에 페이지를 찾아달라고 요청이 들어오면 페이지를 동시에 여러개의 내부 키와 비교한다. 같은 것이 발견되면 그에 대응되는 프레임 번호를 알려준다.


PTLR을 통해서 프로세스가 제시한 주소가 유효범위 내에 있는지 확인한다.

만약 벗어났다면 트랩을 발생시킨다. 페이지 테이블은 프로세스마다 존재한다.




반응형