3강. 주기억장치관리 -...

24
3강. 주기억장치 관리 방송대 컴퓨터과학과 이병래 교수

Upload: others

Post on 22-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

3강. 주기억장치 관리

방송대 컴퓨터과학과

이병래 교수

Page 2: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

제3강 주기억장치 관리

기억장치의 구성1

단일 사용자 연속 기억장치 할당2

강의 내용강의 내용

고정분할 다중 프로그래밍3

동적 분할 다중 프로그래밍4

기억장치 관리 기법5

Page 3: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

주기억장치 관리

사용자의 작업이 컴퓨터에서 실행되게 하려면 프로그램과 데이터가

주기억장치의 적절한 위치에 배치되도록 관리하는 것이 필요함

주기억장치 관리 방법의 유형

사용자의 수에 따라

단일 사용자 및 다중 사용자 주기억장치 할당

기억장치 분할 방법에 따라

고정 분할, 동적 분할, 재배치 동적 분할 방식

작업이 배치되는 위치에 따라

정해진 영역에서 실행하는 방식과 임의의 적합한 위치에

배치되는 방식

작업 영역의 분포에 따라

연속 영역에 배치하는 방식과 불연속적으로 분산된 영역에

작업을 배치하는 방식

Page 4: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

기억장치 계층구조

적절한 비용으로 높은 성능을 낼 수 있도록 소량의 고속/고가

기억장치와 대량의 저속/저가 기억장치를 계층적으로 구성함

CPU

캐시기억장치

주기억장치

보조기억장치

접근속도가접근속도가빠름빠름

비트당비트당기억장치기억장치비용이비용이높음높음

대용량대용량

Page 5: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

제3강 주기억장치 관리

기억장치의 구성1

단일 사용자 연속 기억장치 할당2

강의 내용강의 내용

고정분할 다중 프로그래밍3

동적 분할 다중 프로그래밍4

기억장치 관리 기법5

Page 6: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

단일 사용자 연속 기억장치 할당

하나의 작업이 주기억장치를 전용으로 사용

운영체제

사용자 프로그램

사용되지 않음

0

a

b

c

Page 7: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

단일 사용자 연속 기억장치 할당

매우 단순한 시스템이 아니라면 여러 가지 문제점이 있음

프로그램이 메모리 용량보다 큰 경우 프로그램 수행 불가

전체 프로그램이 메모리에 위치

계속적으로 사용되지 않는 영역도 메모리에 상존함으로써

메모리 낭비

하나의 작업만 동작하므로 CPU 및 주변장치의 낭비

CPU 작업 중에는 입출력 장치 대기

입출력 수행 중에는 CPU 대기

Page 8: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

사용자 프로그램

사용 가능 영역

오버레이

주기억장치 용량보다 큰 프로그램을 실행하기 위한 방법

긴 프로그램을 몇 개의 조각으로 분할

프로그램 조각을 필요한 시기에 주기억장치에 적재하여 실행

한계점 : 프로그래머가 직접 프로그램을 통해 오버레이 적재 관리를 해야 함

운영체제

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

☞ 계산 위주의 사용자 프로그램

☞ 입출력 위주의 사용자 프로그램

시스템 자원의 낭비

단일 사용자 시스템의 문제점

단일 사용자 시스템에서의 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

제3강 주기억장치 관리

기억장치의 구성1

단일 사용자 연속 기억장치 할당2

강의 내용강의 내용

고정분할 다중 프로그래밍3

동적 분할 다중 프로그래밍4

기억장치 관리 기법5

Page 11: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

고정 분할 다중 프로그래밍

다중 프로그래밍 시스템

여러 개의 작업이 주기억장치에 적재됨

현재 실행 중인 작업이 입출력 대기를 해야 하면 실행을

기다리고 있는 다른 작업에 CPU를 할당

CPU 연산과 입출력을 동시에 함으로써 CPU 이용도와

시스템 처리량(throughput) 증가

고정 분할 다중 프로그래밍

주기억장치를 여러 개의 고정된 크기의 영역으로 분할

사용자의 작업은 하나의 분할 영역에 배정되어 실행됨

절대 번역 및 적재

재배치 가능 번역과 적재

Page 12: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

절대 번역 및 적재

컴파일러는 프로그램 내의 주소가 절대 주소를 나타내도록 번역함

프로그램 및 데이터가 정해진 주기억장치 분할 영역에 적재되어야

하며, 다른 분할 영역에서는 적재될 수 없음

· · ·

· · ·

운영체제

분할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

재배치 가능 번역 및 적재

어느 주기억장치 분할 영역이든 작업을 실행 가능

주기억장치 분할 영역에 적재될 작업의 주소 지정 등의 문제는

재배치 컴파일러, 어셈블러, 로더 등으로 해결

· · ·

운영체제

분할1

분할2

분할3

작업 큐

주기억장치

Page 14: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

주기억장치 보호

프로세스가 사용할 수 있는 주소 범위를 하한-상한 레지스터 쌍 또는

하한-크기 레지스터 쌍의 값으로 제한함

☞ 운영체제 호출 : 슈퍼바이저(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

단편화 (fragmentation)

작업의 크기가 주기억장치 분할 영역과 맞지 않아 주기억장치 공간이

사용되지 못하고 낭비되는 것

운영체제

분할1

분할2

분할3

주기억장치

실제 사용 영역

단편화 (내부 단편화)

Page 16: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

제3강 주기억장치 관리

기억장치의 구성1

단일 사용자 연속 기억장치 할당2

강의 내용강의 내용

고정분할 다중 프로그래밍3

동적 분할 다중 프로그래밍4

기억장치 관리 기법5

Page 17: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

작업 목록

동적 분할 다중 프로그래밍

주기억장치 분할 경계가 고정되지 않음

각각의 작업은 필요한 만큼의 주기억장치를 할당 받음

주기억장치 분할 영역의 크기는 작업 크기와 같음

운영체제

비어있음

주기억장치

프로그램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

동적 분할 다중 프로그래밍의 주기억장치 단편화

작업 시작에 따른 주기억장치 할당, 작업 종료에 따른 주기억장치

반환이 반복됨에 따라 작은 크기의 공백이 주기억장치 공간에 흩어질

수 있음

운영체제

주기억장치

공백

프로그램 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

단편화에 대한 대책 – 통합 (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

단편화에 대한 대책 – 집약 (compaction)

흩어져 있는 할당된 분할 영역들을 인접한 위치로 이동

여러 개의 작은 공백 영역들을 하나의 커다란 영역으로 만듦

운영체제

주기억장치

사용 중

공백

사용 중

사용 중

공백

공백

운영체제

주기억장치

사용 중

사용 중

사용 중

공백

Page 21: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

제3강 주기억장치 관리

기억장치의 구성1

단일 사용자 연속 기억장치 할당2

강의 내용강의 내용

고정분할 다중 프로그래밍3

동적 분할 다중 프로그래밍4

기억장치 관리 기법5

Page 22: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

호출 기법

프로그램이나 데이터를 언제 주기억장치로 가져올 것인가를 결정하는

기법

호출 기법의 종류

요구 호출(demand fetch) : 프로그램이나 데이터가 지금

실행되는 프로그램에 의해 참조될 때 주기억장치로 옮김

예상 호출(anticipatory fetch) : 곧 사용하게 될

프로그램이나 데이터를 예상하여 주기억장치에 미리 가져오는

기법

Page 23: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

기억장치 배치 기법

새로 반입된 프로그램이나 데이터를 주기억장치의 어느 위치에

배치할 것인가를 결정하는 것

배치 기법의 종류

최초 적합 : 필요한 공간을 제공할 수 있는 가장 먼저 발견되는

빈 공간을 선택하여 할당하는 방법

최적 적합 : 필요한 공간을 제공할 수 있는 빈 공간 중 가장

작은 것을 선택하는 방법

Page 24: 3강. 주기억장치관리 - cfs9.tistory.comcfs9.tistory.com/upload_control/download.blog?fhandle=YmxvZzg4... · 기다리고있는다른작업에CPU를할당 CPU 연산과입출력을동시에함으로써CPU

제3강 주기억장치 관리

컴퓨터 시스템의 기억장치는 적은 비용으로 높은 성능을 제공하기

위해 계층적으로 구성된다.

정리하기정리하기

1

2 단일 사용자 연속 기억장치 할당 기법은 관리 기법이 단순하지만,

컴퓨터 자원을 효율적으로 사용하는데 문제가 있다.

3 다중 프로그래밍을 통해 CPU와 주변장치의 이용률을 높일 수 있다.

4 정해진 크기의 분할 영역으로 주기억장치를 활용하는 고정분할 다중

프로그래밍 방식은 각 분할 영역에서 내부 단편화가 발생한다.

5 동적 분할 다중 프로그래밍 방식은 각각의 작업에 필요한 만큼의

주기억장치를 할당함으로써 내부 단편화를 제거한다.

6 동적 분할 다중 프로그래밍 방식의 외부 단편화는 통합과 집약

기법으로 해결한다.