본문 바로가기

CS(Computer Science)/운영 체제

메모리 (Memory)

 

레지스터 ,캐시 -> HW관리(CPU)

메인 메모리, 보조기억장치 -> SW관리 (OS)

 

Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위 (1~4KB)

Word : 레지스터와 주기억장치 사이의 데이터 전송 단위 (16~64bits) <64bit, 32bit 컴퓨터는 word와도 같음)

 

 

 

<Address Binding>

 

Address Binding : 프로그램의 논리 주소를 물리 주소로 매핑

 

Compile time binding  : compile time에 binding 하는 것 (실행 파일 만들 때 결정)(초기 컴퓨터) 

Load time binding  : Load time에 binding 하는것 (상대주소로 저장해놓고 메모리에 올릴 때 결정 ,+시작 주소)

Run time binding : Run time 에 binding 하는 것 (ready -> running 마다 주소 재설정) (명령어 실행 순간 결정)

                        (대부분의 OS가 사용)


 

Fragmentation (단편화)    -> 낭비되는 메모리

    - 내부 단편화 : pratition 크기 > process크기 

    - 외부 단편화 : 남은 메모리 크기 > process크기


<Memory Allocation>

 

Continous Memory Allocation (연속 할당)  -> 하나의 process를 떨어뜨리지 않고 연속해서 올림

  - Fixed partition (FPM) : 메모리를 미리 고정된 크기로 분할  -> Internal/external fragmentation 이 발생 , 메모리 낭비

  - Variable partition (VPM) : 메모리를 요청하면 유동적으로 분할

               - external fragmentation 발생 -> Coalescing holes (공간 통합) -> 오버헤드 작음

                                                       -> Storage Compaction (메모리 압축) -> 오버헤드 큼 

 

   (지금은 임베디드같은거 제외한 대부분 전부 Virtual Memory 사용)

 

Non-continuous allocation (비연속 할당)   -> 가상메모리(Virtual Memory) 사용 

 

   - Paging system : 프로그램을 같은 크기의 블록을 분할, 메모리도 page frame으로 분할 (window, linux 사용 중)

                             (page sharing 가능, segmentation system보다는 복잡) 

                Page Map Table(PMT) -> 프로세스마다 존재, 커널에 저장 됨, 메모리 접근 횟수 2배

                TLB -> PMT를  적재하여 효율 증가, (하드웨어적)병렬 탐색, 캐시 처럼 이용하여 효율 증가

                          (비싸서 TLB(MMU)를 캐시로만 이용) (TLB가 있어야 가상메모리 가능)

 

    - Segmentation system : 논리적 분할   (논리적 분할이라 공유 및 보호 과정 편함), 

                                     VPM처럼 메모리를 미리 분할 하지 않음.

                                      paging system에 비해 overhead가 큼

                 Segment Map Table (SMT) , TLB 마찬가지

                            

    - Hybrid paging/segmentation system : 

                                      논리 단위의 segment로 분할하고 각 segment를 고정된 크기의 page들로 분할

                                     각 프로세스 마다 하나의 SMT , 각 segment마다 하나의 PMT

                                두가지 장점 혼합 :  page sharing/protection 용이, 메모리 할당/관리 overhead 작음

                                단점 : 메모리 소모 큼, address mapping 복잡

                   일반적으로 컴퓨터는 paging은 100%사용한다. 그리고 때에 따라 segmentation은 부가적으로 같이 사용

 

 

 

 

<부가 설명>

              Direct mapping : PMT를 main memory에 적재

              Associative mapping : PMT 를 TLB에 적재

              Hybrid Direct / Associative Mapping : PMT중 일부 entry들을 TLB에 적재

 

 

static linking -> exe파일 생성할 때 lib같은거 미리 다 linking 해서 생성 

dynamic linking -> 실행될 때 linking 해주면 exe끼리 중복 제거 (ex - printf ,scanf)

 

메모리에서 디스크로 출력, 디스크에서 메모리로 로드 -> I/O 해당


<paging 부가설명>

Demand fetch(demand paging) : 프로세스가 참조하는 페이지들만 적재

 

update bit = duty bit

 

Thrashing(스레싱) 현상 : 과도한 page fault가 발생하는 현상

 

***page 교체 기법

<Fixed allocation>

-MIN algorithm : 가장 나중에 참조될 page를 교체

                     - 최적의 알고리즘이지만 현실 불가능

-LRU(Least Recently Used) Algorithm : 가장 오랫동안 참조되지 않은 page를 교체(Locality 활용)

                                            -   paging 교체기법 중 가장 많이 활용됨

                                            -  MIN algorithm에 근접한 성능을 보여줌

                         단점 : loop실행에 필요한 크기보다 작은 수의 page frame이 할당 된 경우, page fault 급격히 증가

 

-LFU(Least Frequently Used)

-NUR(Not Used Recently)

 

<Variable allocation>

PFF(Page Fault Frequency) : page fault 빈도 높으면 메모리 증가 , page fault 빈도 낮으면 감소

 

 

 

page size 는 적당한 것보다 조금 큰게 좋을 수있음 -> 발전 경향으로 보면 최적의 page size가 커지고 있음

                                                                     (전체 메모리가 커지고 있고,

                                                                  cpu 속도도 빨리 증가중->disk와의 gap이 커짐)

 

 

반응형

'CS(Computer Science) > 운영 체제' 카테고리의 다른 글

프로세스 (Process)  (0) 2020.09.17
(시작 전에) 운영 체제 기본  (0) 2020.09.16