3강. 주기억장치관리 -...
TRANSCRIPT
![Page 1: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/1.jpg)
3강. 주기억장치 관리
방송대 컴퓨터과학과
이병래 교수
![Page 2: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/2.jpg)
제3강 주기억장치 관리
기억장치의 구성1
단일 사용자 연속 기억장치 할당2
강의 내용강의 내용
고정분할 다중 프로그래밍3
동적 분할 다중 프로그래밍4
기억장치 관리 기법5
![Page 3: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/3.jpg)
주기억장치 관리
사용자의 작업이 컴퓨터에서 실행되게 하려면 프로그램과 데이터가
주기억장치의 적절한 위치에 배치되도록 관리하는 것이 필요함
주기억장치 관리 방법의 유형
사용자의 수에 따라
단일 사용자 및 다중 사용자 주기억장치 할당
기억장치 분할 방법에 따라
고정 분할, 동적 분할, 재배치 동적 분할 방식
작업이 배치되는 위치에 따라
정해진 영역에서 실행하는 방식과 임의의 적합한 위치에
배치되는 방식
작업 영역의 분포에 따라
연속 영역에 배치하는 방식과 불연속적으로 분산된 영역에
작업을 배치하는 방식
![Page 4: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/4.jpg)
기억장치 계층구조
적절한 비용으로 높은 성능을 낼 수 있도록 소량의 고속/고가
기억장치와 대량의 저속/저가 기억장치를 계층적으로 구성함
CPU
캐시기억장치
주기억장치
보조기억장치
접근속도가접근속도가빠름빠름
비트당비트당기억장치기억장치비용이비용이높음높음
대용량대용량
![Page 5: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/5.jpg)
제3강 주기억장치 관리
기억장치의 구성1
단일 사용자 연속 기억장치 할당2
강의 내용강의 내용
고정분할 다중 프로그래밍3
동적 분할 다중 프로그래밍4
기억장치 관리 기법5
![Page 6: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/6.jpg)
단일 사용자 연속 기억장치 할당
하나의 작업이 주기억장치를 전용으로 사용
운영체제
사용자 프로그램
사용되지 않음
0
a
b
c
![Page 7: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/7.jpg)
단일 사용자 연속 기억장치 할당
매우 단순한 시스템이 아니라면 여러 가지 문제점이 있음
프로그램이 메모리 용량보다 큰 경우 프로그램 수행 불가
전체 프로그램이 메모리에 위치
계속적으로 사용되지 않는 영역도 메모리에 상존함으로써
메모리 낭비
하나의 작업만 동작하므로 CPU 및 주변장치의 낭비
CPU 작업 중에는 입출력 장치 대기
입출력 수행 중에는 CPU 대기
![Page 8: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/8.jpg)
사용자 프로그램
사용 가능 영역
오버레이
주기억장치 용량보다 큰 프로그램을 실행하기 위한 방법
긴 프로그램을 몇 개의 조각으로 분할
프로그램 조각을 필요한 시기에 주기억장치에 적재하여 실행
한계점 : 프로그래머가 직접 프로그램을 통해 오버레이 적재 관리를 해야 함
운영체제
0
a
b
c
상주 프로그램 및데이터 영역 실행할
프로그램
오버레이 적재 및상시 필요한 프로그램
코드와 데이터
초기화 단계
처리 단계
출력 단계
초기화 단계처리 단계출력 단계오버레이
영역
a
b
b
b
![Page 9: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/9.jpg)
☞ 계산 위주의 사용자 프로그램
☞ 입출력 위주의 사용자 프로그램
시스템 자원의 낭비
단일 사용자 시스템의 문제점
단일 사용자 시스템에서의 CPU 이용도
I/O CPU I/O
작업처리시간
I/O CPU I/O CPU I/O CPU
![Page 10: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/10.jpg)
제3강 주기억장치 관리
기억장치의 구성1
단일 사용자 연속 기억장치 할당2
강의 내용강의 내용
고정분할 다중 프로그래밍3
동적 분할 다중 프로그래밍4
기억장치 관리 기법5
![Page 11: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/11.jpg)
고정 분할 다중 프로그래밍
다중 프로그래밍 시스템
여러 개의 작업이 주기억장치에 적재됨
현재 실행 중인 작업이 입출력 대기를 해야 하면 실행을
기다리고 있는 다른 작업에 CPU를 할당
CPU 연산과 입출력을 동시에 함으로써 CPU 이용도와
시스템 처리량(throughput) 증가
고정 분할 다중 프로그래밍
주기억장치를 여러 개의 고정된 크기의 영역으로 분할
사용자의 작업은 하나의 분할 영역에 배정되어 실행됨
절대 번역 및 적재
재배치 가능 번역과 적재
![Page 12: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/12.jpg)
절대 번역 및 적재
컴파일러는 프로그램 내의 주소가 절대 주소를 나타내도록 번역함
프로그램 및 데이터가 정해진 주기억장치 분할 영역에 적재되어야
하며, 다른 분할 영역에서는 적재될 수 없음
· · ·
· · ·
운영체제
분할1
분할2
분할3
분할1에 대한 작업 큐(Q1)
· · ·
분할2에 대한 작업 큐(Q2)
분할3에 대한 작업 큐(Q3)
주기억장치
![Page 13: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/13.jpg)
재배치 가능 번역 및 적재
어느 주기억장치 분할 영역이든 작업을 실행 가능
주기억장치 분할 영역에 적재될 작업의 주소 지정 등의 문제는
재배치 컴파일러, 어셈블러, 로더 등으로 해결
· · ·
운영체제
분할1
분할2
분할3
작업 큐
주기억장치
![Page 14: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/14.jpg)
주기억장치 보호
프로세스가 사용할 수 있는 주소 범위를 하한-상한 레지스터 쌍 또는
하한-크기 레지스터 쌍의 값으로 제한함
☞ 운영체제 호출 : 슈퍼바이저(supervisor call) 호출을 사용
운영체제
분할1
분할2
분할3
주기억장치
0
a
b
c
d
CPU
b
c
하한 레지스터
상한 레지스터
분할2에 적재된 작업 실행
![Page 15: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/15.jpg)
단편화 (fragmentation)
작업의 크기가 주기억장치 분할 영역과 맞지 않아 주기억장치 공간이
사용되지 못하고 낭비되는 것
운영체제
분할1
분할2
분할3
주기억장치
실제 사용 영역
단편화 (내부 단편화)
![Page 16: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/16.jpg)
제3강 주기억장치 관리
기억장치의 구성1
단일 사용자 연속 기억장치 할당2
강의 내용강의 내용
고정분할 다중 프로그래밍3
동적 분할 다중 프로그래밍4
기억장치 관리 기법5
![Page 17: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/17.jpg)
작업 목록
동적 분할 다중 프로그래밍
주기억장치 분할 경계가 고정되지 않음
각각의 작업은 필요한 만큼의 주기억장치를 할당 받음
주기억장치 분할 영역의 크기는 작업 크기와 같음
운영체제
비어있음
주기억장치
프로그램A : 15K 필요
프로그램B : 20K 필요
프로그램C : 10K 필요
프로그램D : 15K 필요비어있음
A (15K)
비어있음
A (15K)
B (20K)
비어있음
A (15K)
B (20K)
C (10K)
비어있음
A (15K)
B (20K)
C (10K)
D (15K)
![Page 18: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/18.jpg)
동적 분할 다중 프로그래밍의 주기억장치 단편화
작업 시작에 따른 주기억장치 할당, 작업 종료에 따른 주기억장치
반환이 반복됨에 따라 작은 크기의 공백이 주기억장치 공간에 흩어질
수 있음
운영체제
주기억장치
공백
프로그램 A
프로그램 B
프로그램 C
프로그램 D
프로그램 E
B 종료
운영체제
주기억장치
공백
프로그램 A
공백
프로그램 C
프로그램 D
프로그램 E
D 종료
운영체제
주기억장치
공백
프로그램 A
공백
프로그램 C
공백
프로그램 E
단편화
![Page 19: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/19.jpg)
단편화에 대한 대책 – 통합 (coalescing)
반납되는 주기억장치 분할 영역을 인접한 공백 영역과 합쳐서 하나의
공백 영역으로 만듦
운영체제
주기억장치
프로그램 A
공백 (2K)
프로그램 B(5K 사용)
프로그램 C
B 종료
운영체제
주기억장치
프로그램 A
공백 (2K)
공백 (5K)
프로그램 C
통합
운영체제
주기억장치
프로그램 A
공백 (7K)
프로그램 C
![Page 20: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/20.jpg)
단편화에 대한 대책 – 집약 (compaction)
흩어져 있는 할당된 분할 영역들을 인접한 위치로 이동
여러 개의 작은 공백 영역들을 하나의 커다란 영역으로 만듦
운영체제
주기억장치
사용 중
공백
사용 중
사용 중
공백
공백
운영체제
주기억장치
사용 중
사용 중
사용 중
공백
![Page 21: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/21.jpg)
제3강 주기억장치 관리
기억장치의 구성1
단일 사용자 연속 기억장치 할당2
강의 내용강의 내용
고정분할 다중 프로그래밍3
동적 분할 다중 프로그래밍4
기억장치 관리 기법5
![Page 22: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/22.jpg)
호출 기법
프로그램이나 데이터를 언제 주기억장치로 가져올 것인가를 결정하는
기법
호출 기법의 종류
요구 호출(demand fetch) : 프로그램이나 데이터가 지금
실행되는 프로그램에 의해 참조될 때 주기억장치로 옮김
예상 호출(anticipatory fetch) : 곧 사용하게 될
프로그램이나 데이터를 예상하여 주기억장치에 미리 가져오는
기법
![Page 23: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/23.jpg)
기억장치 배치 기법
새로 반입된 프로그램이나 데이터를 주기억장치의 어느 위치에
배치할 것인가를 결정하는 것
배치 기법의 종류
최초 적합 : 필요한 공간을 제공할 수 있는 가장 먼저 발견되는
빈 공간을 선택하여 할당하는 방법
최적 적합 : 필요한 공간을 제공할 수 있는 빈 공간 중 가장
작은 것을 선택하는 방법
![Page 24: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU](https://reader031.vdocuments.pub/reader031/viewer/2022011811/5e1857d183b8284b9f45a20d/html5/thumbnails/24.jpg)
제3강 주기억장치 관리
컴퓨터 시스템의 기억장치는 적은 비용으로 높은 성능을 제공하기
위해 계층적으로 구성된다.
정리하기정리하기
1
2 단일 사용자 연속 기억장치 할당 기법은 관리 기법이 단순하지만,
컴퓨터 자원을 효율적으로 사용하는데 문제가 있다.
3 다중 프로그래밍을 통해 CPU와 주변장치의 이용률을 높일 수 있다.
4 정해진 크기의 분할 영역으로 주기억장치를 활용하는 고정분할 다중
프로그래밍 방식은 각 분할 영역에서 내부 단편화가 발생한다.
5 동적 분할 다중 프로그래밍 방식은 각각의 작업에 필요한 만큼의
주기억장치를 할당함으로써 내부 단편화를 제거한다.
6 동적 분할 다중 프로그래밍 방식의 외부 단편화는 통합과 집약
기법으로 해결한다.