1 / 37

기억 장치 관리

기억 장치 관리. 주기억 장치 관리 가상 기억 장치 보조 기억 장치 디스크 스케줄링 기법. 주기억 장치 관리 메모리 공간을 프로세스들에게 할당하고 회수하는 기법. Uni-Programming. 연속할당. 고정 분할 ( 같은 크기 ). Multi-Programming. 가변 분할 ( 다른 크기 ). 페이징. 비연속할당. 세그먼테이션. Multi-Programming. 페이징 / 세그먼테이션 혼용. 연속 할당 프로세스를 위해 메모리 내 연속된 공간을 할당해 주는 방법

harvey
Download Presentation

기억 장치 관리

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 기억 장치 관리

  2. 주기억 장치 관리 • 가상 기억 장치 • 보조 기억 장치 • 디스크 스케줄링 기법

  3. 주기억 장치 관리 • 메모리 공간을 프로세스들에게 할당하고 회수하는 기법 Uni-Programming 연속할당 고정 분할(같은 크기) Multi-Programming 가변 분할(다른 크기) 페이징 비연속할당 세그먼테이션 Multi-Programming 페이징/세그먼테이션 혼용

  4. 연속 할당 • 프로세스를 위해 메모리 내 연속된 공간을 할당해 주는 방법 • Uni-Programming -> Multi-Programming으로 발전 • 프로세스마다 할당해주는 공간의 크기 결정 • 고정 분할(fixed partition) -> 가변 분할(variable partition) • 고정 분할 : 일류적으로 동일한 공간 할당 • 가변 분할 : 프로세스마다 요구에 맞게 할당 • 단일 프로그래밍/연속 할당 • 주기억 장치에 항상 한 프로그램만이 적재(load)되어 실행되는 가장 단순한 기법 • 메모리의 나머지 부분은 활용이 안된 채 낭비

  5. 멀티 프로그래밍/고정 할당(fixed partition) • 메모리에 여러 프로그램을 동시에 load 시켜 놓은 채 실행 • 정적 분할(static partition) • 일률적으로 똑같은 크기의 공간을 프로세스에게 할당 • 재배치(relocation) 작업 필요 • 프로그램이 메모리내의 어떤 공간에서도 실행할 수 있도록 프로그램 주소 부분의 값을 재조정

  6. 멀티 프로그래밍/가변 분할(variable partition) • 각 프로세스가 요청하는 크기에 맞추어 메모리 공간을 할당 • 일정 시간 운영 후, 메모리는 다양한 크기의 조각으로 분할 • 배치 전략(placement) • 새로 load할 프로그램을 이들 유휴 공간 중에 어느 곳에 load 할 것인가를 결정 • 최적 적합(Best-fit) • load 될 프로그램과 가장 근접한 크기(남는 공간이 가장 적은)의 공간 선택 • 최초 적합(First-fit) • 빈 공간을 찾다가 첫 번째로 가능한 공간 선택 • 최악 적합(Worst-fit) • 남은 공간 중 가장 큰 공간에 할당 • 남은 공간은 다시 빈 공간 list에 귀속

  7. 멀티 프로그래밍/가변 분할(variable partition) • 각 프로세스가 요청하는 크기에 맞추어 메모리 공간을 할당 • 일정 시간 운영 후, 메모리는 다양한 크기의 조각으로 분할 • 배치 전략(placement) • 새로 load할 프로그램을 이들 유휴 공간 중에 어느 곳에 load 할 것인가를 결정 • 최적 적합(Best-fit) • load 될 프로그램과 가장 근접한 크기(남는 공간이 가장 적은)의 공간 선택 • 최초 적합(First-fit) • 빈 공간을 찾다가 첫 번째로가능한 공간 선택 • 최악 적합(Worst-fit) • 남은 공간 중 가장 큰 공간에 할당 • 남은 공간은 다시 빈 공간 list에 귀속

  8. 연속 할당 기법의 문제점과 해결 • 단편화(fragmentation) • 프로그램들이 사용하지 못하게 되어버리는 메모리 공간 부분 • 내부 단편화(internal fragmentation) • 프로그램이 요구한 것 보다 더 큰 공간을 할당할 경우 낭비되는 부분 • 고정 분할 시 발생 – 프로그램이 요구한 것보다 더 큰 부분 할당 • 외부 단편화(external fragmentation) • 빈 공간 list에 속한 유휴 공간 중 크기가 너무 작아서 어느 누구도 쓸 수 없는 공간 • 가변 분할 시 발생 – 외부 단편화 발생 가능, 내부 단편화 발생 하지 않음

  9. 운영체제 운영체제 P1 P1 P1 7K 7K 7K P2 3K P2 P2 3K 3K P3 P3 P3 10 K 6K 6K 6K 10 K P4 P4 P4 6K 6K 6K 4K 작업 큐 작업 큐 3 K 4 K 8 K 1 K 4 K 1 K 4 K 4 K 1 K • 내부 단편화(internal fragmentation)– 고정 분할 시 [예] 32K 메모리 시스템 : 운영체제(10K), 사용자 공간(22K) • 작업 큐 : 7K, 3K, 6K, 6K를 요구하는 작업 -10K영역과 3개의 4K영역으로 나눔 7K 작업 10K영역에[3K 내부 단편화] 3K 작업 4K 영역 하나에 [1K 내부 단편화] 할당 6K 작업  할당될 수 없음 • 10K, 8K, 4K 영역으로 나눔 7K 작업 8K 영역에3K 작업 4K영역에6K 작업 10K 영역에 할당 수행 6K의 내부 단편화 발생

  10. 외부 단편화(internal fragmentation)– 가변 분할 시 • 많은 수의 작은 사용가능 공간으로 단편화 됨 • 공백 크기가 작아짐 - 다른 사용자를 위해서 메모리 할당 못함 • 작업 큐: 작업 1->60k, 작업 2->100k, 작업 3->30k, 작업 4->70k, 작업 5->50k [그림 (a)] : 26K의 외부 단편화 존재 ⇒ 작업 4 와 작업 5를  적재 못함 [그림 (c)] : 56K(=30K + 26K)의 외부 단편화 ⇒ 이 공간은 2개의 조각으로 나누어짐 작업 5의 메모리 요구를 만족시킬 수 없음 : 기다려야 함

  11. 외부단편화 해결 방안 • 통합(Coalescing) • 빈 공간 list에서 빈 공간들의 주소가 인접한 경우 공간을 통합 • 매주 작은 공간들이 여러 갭 발생되는 것을 막는 방법 운영체제 운영체제 운영체제 프로그램 A 프로그램 A 프로그램 A 프로그램 B 종료 합병 Hole Hole 합병된 공간 프로그램 B Hole Hole Hole 프로그램 C 프로그램 C 프로그램 C Hole Hole Hole

  12. 외부단편화 해결 방안 • 압축(Compaction) • 모든 빈 공간들을 한 곳으로 합치는 작업 - 하나의 빈 영역 생성 • 일종의 쓰레기 수집(garbage collection) 작업 운영체제 운영체제 프로그램 A 프로그램 A 압축 Hole 프로그램 B 프로그램 C 한 끝으로 모두 합친 빈 공간 프로그램 B Hole 프로그램 C

  13. 운영 체제 사용자 영역 보조(예비) 기억장치 메인 메모리 • 연속 할당 기법의 문제점과 해결 • 사용자 프로그램의 크기가 큰 경우 • 연속 할당에서 사용자 프로그램의 크기가 큰 경우 문제 발생 • 오버레이(overlay) 기법 • 비연속 기억 장치 할당 기법 • 스와핑(swapping) 기법 • 일부 프로세스를 보조 기억 장치로 보냈다가 추후 다시 주기억 장치로 불러 들임 • 이렇게 선점해서 생긴 공간을 다른 프로그램에 할당 • 스와퍼(swapper) 또는 중기 스케줄러

  14. 비연속 할당 • 프로그램을 여러 부분으로 나누고 각 부분을 비연속적으로 산재된 공간에 load 하는 방법 • 하드웨어가 실행 시간 도중에 논리적 주소 -> 물리적 주소 변환 • 논리적 주소는 연속적 • 물리적 주소는 비연속 • 가상 기억 장치(virtual memory) • 논리적 주소가 실제 주소와 다름 • 가상 주소 : 논리적 주소를 뜻함 • 페이징(paging) – 동일한 크기 • 세그먼테이션(segmentation) – 다른 크기

  15. 페이징(paging) 기법 • 사용자 프로그램 : 페이지 크기로 나눔 • 메모리 : 페이지 프레임(page frame)으로 나눔 • 프로그램 페이지는 메모리 상의 빈 페이지 프레임으로 load

  16. 세그먼테이션(segmentation) 기법 • 사용자 프로그램을 세그먼트 크기로 나누고 세그먼트 단위로 load • 세그먼테이션 예

  17. 페이징기법 • 장점 • 연속 할당의 단점인 외부 단편화 현상 방지 • 단점 • 관리에 오버헤드가 요구 – 페이지 테이블을 보관할 장소 요구, 주소변환을 위한 추가적인 비용 소모 • 프로그램에게 할당된 마지막 페이지에서 내부 단편화가 생길 수 있음 • 세그먼테이션 기법 • 장점 • 가변적인 데이터 구조와 모듈 처리 가능 • 단점 • 외부 단편화 발생 가능

  18. 사용자의 주소 공간을 여러 부분으로 나누고, 실행 시에는 필요한 부분만 주 기억 장치에 load하여 수행하게 해줌 • 사용자에게 주기억 장치 용량보다 훨씬 더 큰 공간을 가상적으로 제공 • 현재 수행에 필요한 부분만 메모리에 load • 프로그램의 나머지 부분은 보조 기억 장치에 유지 • 가상 메모리의 발생 • 1960년 영국 맨체스터 대학에서 제작된 아틀라스 컴퓨터 시스템에 처음 등장

  19. 가상 메모리 관리 정책 • 프로그램의 모든 블록들을 디스크에 저장하고 있다가, 실행 도중 수시로 이들을 블록별로 메모리로 load • 블록들을 언제, 어느 공간으로 load 할 것인가? • 빈 공간이 메모리에 없을 경우 기존에 올라와 있던 블록 중 어느 것을 희생시킬 것인가?

  20. 가상 메모리 관리 정책 (cont’d) • 페이지 반입(fetch) 정책 • when : 언제 블록을 메모리로 가져 올 것인가를 결정 • 요구 페이징, 예상 페이징 기법 등 • 페이지 배치(placement) 정책 • where : 블록을 메모리 어느 장소로 가져올 것인가를 결정 • 페이징 시스템 : 문제 없음 • 세그먼트 시스템 : best-fit, first-fit 등의 기법 • 페이지 교체(replacement) 정책 • which : 메모리에서 사용하고 있던 블록들 중 어느 것을 희생 시킬 것인가를 결정 • FIFO, LRU, LFU, MFU 기법 등

  21. 요구 페이징(demand paging) • prefetch • 프로세스가 페이지를 요구할 때 해당 페이지를 메모리로 적재 • 페이지 부재(page fault) • 요구 페이징 시스템에서 프로그램이 페이지를 요청할 때 그 페이지가 메모리에 적재되어 있지 않은 상황 • 요구 페이징의 성능 • 프로그램은 페이지 부재가 발생할 때마다 디스크에서 그 페이지가 올라오기 까지 기다려야 함 • 페이지 부재율을 낮추지 않으면 프로그램의 수행은 매우 느려짐

  22. 페이지 교체 알고리즘 • OPT(Optimal Page Replacement) 알고리즘 • Belady의 최적 알고리즘 • 페이지 부재를 최소화하기 위해서 향후 가장 오랫동안 사용되지 않을 페이지를 교체 • 성능이 가장 우수하지만, 실제 구현 불가능 Reference String

  23. 페이지 교체 알고리즘(cont’d) • FIFO(First-In First-Out) 기법 • FIFO 페이지 대치 기법은 주기억 장치에 가장 먼저 들어온 페이지를 교체 • FIFO의 모순(anomaly) • 프로세스에게 더 많은 페이지 프레임을 할당할 수록 더 적게 페이지 부재 발생 -> 실제 FIFO에서는 페이지 부재가 더 많이 발생 Reference String

  24. R.S = 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3개의 page frame -> 9번의 page fault 4개의 page frame -> 10번의 page fault Belady’s anomaly 즉, frame 증가가 fault 증가 프레임 3 9번 발생 1 2 3 4 1 2 5 1 2 3 4 5 1 1 1 4 4 4 5 5 5 2 2 2 1 1 1 3 3 3 3 3 2 2 2 4 1 1 1 1 5 5 5 5 4 4 2 2 2 2 1 1 1 1 5 3 3 3 3 2 2 2 2 4 4 4 4 3 3 3 프레임 4 10번 발생

  25. 페이지 교체 알고리즘(cont’d) • LRU(Least Recently Used) 기법 • 페이지 대치가 필요할 때마다 가장 오랫동안 사용되지 않은 페이지를 희생 • FIFO 모순 발생되지 않아 스택 알고리즘 이라고 하기도 함 Reference String

  26. 페이지 교체 알고리즘(cont’d) • LFU(Least Frequently Used) 기법 • 참조된 횟수가 가장 적은 페이지를 교체시키는 방법 • MFU(Most Frequently Used) 기법 Reference String

  27. 페이지 할당 알고리즘 • 균등 할당법(equal allocation) • 모든 프로세스에게 똑같은 수의 프레임을 배정하는 방법 • 비례 할당법(proportional allocation) • 각 프로세스마다 다르게 할당하는 방법 • 각 프로세스는 필요로 하는 양에 비례하여 할당 받음

  28. 기타 고려사항 • 스레싱(thrashing) • 빈번하게 페이지 부재가 일어나는 현상 • 프로세스가 수행에 보내는 시간보다 페이지 이동에 보내는 시간이 더 길어짐 • CPU는 대부분의 시간을 페이지 이동을 기다리며 대기 • 시스템의 성능을 심각하게 저하 • 스레싱의 원인 • 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 utilization 향상 • 다중 프로그래밍의 정도가 과도하게 높아지면 프로세스당 할당되는 페이지 프레임 수가 너무 적게 되어 페이지 부재율이 급격히 증가 -> utilization 급격히 감소 • 스레싱 현상 방지 • 다중 프로그램의 정도를 낮추어프로세스마다 돌아가는 공간을 늘려야 함 • 워킹 셋(working set) • 최소한의 페이지 프레임 수 유지

  29. 구역성(locality) • 프로세스가 메모리에 참조하는 특성을 기술 • 실행 중인 프로세스는 일정 시간에 메모리의 일정 부분만을 집중적으로 참조 • 가상 메모리의 주요 개념 • 일정시간에 프로그램의 일부분만 메모리에 올려 놓아도 빠르게 수행됨 • 시간 지역성(temporal locality) • 프로세스가 2시에 사용된 페이지는 2시 1분에도 사용할 가능성이 높다 • 공간 지역성(spatial locality) • 프로세스가 100번지를 사용 중이라면 99, 101번지도 곧 사용할 가능성이 높다

  30. 페이지 부재 빈도에 따른 프레임 할당 • 페이지 부재 발생률이 상한선 보다 높으면 • 더 많은 페이지 프레임 할당 • 페이지 부재 발생률이 하한선 보다 낮으면 • 이미 할당되었던 페이지 프레임도 일부 회수 프레임 수 늘릴 것 Page Fault Rate 프레임 수 줄일 것 페이지 프레임 할당량

  31. 주기억 장치 • 속도는 빠르지만 용량이 작고 휘발성 • 보조 기억 장치 • 속도는 느리지만 용량이 크고 비휘발성 • 자기 디스크 • 물리적 구조 • 트랙, 섹터, 실린더 • 디스크 접근 시간 • 탐색 시간, 회전 지연 시간, 전송 시간

  32. 특징 • 작업 요청이 들어온 순서대로 처리해 주기 보다는 디스크 헤드가 움직이고 있는 경로 상에 있는 섹터라면 상대적으로 늦게 들어온 요청이라도 헤드가 같은 방향으로 움직이는 도중에 처리해줌 • 전체 디스크의 throughput 향상 • 디스크 스케줄링 기법 • FCFS(First Come First Served) • 가장 간단한 스케줄링 • 디스크 I/O 요청이 들어온 순서대로 서비스 • 특징 • 공평하며 간편하지만 seek 시간을 최적화 할 수 없음 • 디스크에 부하가 적으면 사용해도 무방

  33. SSTF(Shortest Seek Time First) • 다음 탐색 거리(seek distance)가 가장 짧은 요청을 먼저 서비스 • 특징 • 디스크 요청이 바깥쪽 트랙보다 가운데 트랙으로 몰림 • 변두리 트랙들은 소외되는 경향을 보임 • FCFS보다 throughput이 증가 • I/O 처리 시간이 짧아짐 • throughput이 중요한 일괄 처리 시스템에는 적합 • 대화형 시스템 부적합 • 응답 시간의 편차가 커지기 때문에

  34. SCAN • 헤드가 맨 바깥쪽 트랙에서 안쪽으로 이동하면서 진행 방향에 있는 요구를 차례대로 서비스 • 가장 안쪽 트랙에 도달하면 다시 반대방향으로 디스크 헤드가 이동 • 진행 방향상 가장 짧은 거리에 있는 요청 순서대로 서비스 • 특징 • SSTF에서 발생하는 차별을 줄이고 응답 시간 편차를 감소 • 실제 많은 시스템에서 채택

  35. C-SCAN(Circular-SCAN) • SCAN 스케줄링에서 변두리 트랙들은 가운데 트랙보다 반 정도 밖에는 서비스를 못 받음 • 헤드가 항상 바깥 트랙에서 안쪽 트랙 방향으로만 이동하면서 경로상의 요청을 서비스 • 특징 • 가장 안쪽과 가장 바깥쪽의 트랙에 대한 차별 대우가 없어짐 • 응답 시간의 편차가 매우 작아짐 • 부하가 아주 많은 상황에서 효율적 • 부하가 적은 경우는 SCAN 기법

  36. N-step SCAN • 헤드가 한 쪽 끝에서 이동을 시작하면 그 이동을 시작한 시점 이후 이동 중에 도착한 요청들을 한데 모았다가 반대 방향으로 되돌아 올 때 최적으로 서비스 하도록 배열하는 스케줄링 • LOOK • SCAN에서 헤드가 각 방향을 가다가 그 앞에 더 이상 기다리는 요청이 없을 경우 헤드의 이동 방향을 즉시 반대로 바꾸는 스케줄링 • 방향 전환 전에 요청 검사

More Related