728x90
반응형
출처 : https://www.youtube.com/watch?v=te-GU7NKa5Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=25
Memory Allocation : 메모리를 프로세서에게 어떻게 할당해주는가?
- Continuous Memory Allocation (연속 메모리 할당)
- Uni-programming
- Multi-programming
- Fixed partition (FPM)
- Variable partition (VPM)
- Non-continuous Memory Allocation (비연속 메모리 할당)
- 다음 시간
Continuous Memory Allocation
- 프로세스 (context)를 하나의 연속된 메모리 공간에 할당하는 정책
- 프로그램, 데이터, 스택 등
- 메모리 구성 정책
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- Multiprogramming degree
- 각 프로세스에게 할당되는 메모리 공간 크기
- 메모리 분할 방법
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- Uni(하나)-programming
- Multiprogramming degree = 1, 프로세스가 한 번에 한 개만 올라간다.
- Multi-programming
- Fixed(static) partition multi-programming (FPM)
- 고정 분할
- Variable(dynamic) partition multi-programming (VPM)
- 가변 분할
- Fixed(static) partition multi-programming (FPM)
Uni-Programming
- 하나의 프로세스만 메모리 상에 존재
- 가장 간단한 메모리 관리 기법
- Uni-Programming의 문제점
- 프로그램의 크기 > 메모리 크기. 이럴경우 사용자(프로그래머)가 프로그램을 잘라서 메모리에 올려야한다.
- 해결법
- Overlay structure
- 메모리에 현재 필요한 영역만 적재
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함
- Overlay structure
- 문제점 2
- 커널 보호
- 프로그램을 올릴 때 커널의 영역을 침범해서는 안된다.
- 해결 방법
- 경계 레지스터 (boundary register) 사용
- 단점
- Low system resource utilization : 메모리 공간에 여유가 있는데 하나의 프로그램만 올려야 하므로 남는 메모리 공간은 그냥 사용하지 못하고 낭비된다.
- Low system performance
- 해결법
- Multi-programming : 여러 개의 프로그램을 메모리에 올려서 낭비를 줄인다.
Multi-programming에서 메모리를 나누는 방법은 2가지로 구분된다.
- Fixed partition
- Variable partition
Fixed Partition Multiprogramming
- 메모리 공간을 고정된 크기로 분할
- 미리 분할되어 있음
- 각 프로세스는 하나의 partition(분할)에 적재. 하나의 프로세스를 적절한 파티션에 넣어준다.
- Process : Partition = 1 : 1, 하나의 파티션에는 하나의 프로세스가 들어갈 수 있다.
- Partition의 수 = K
- Multiprogramming degree = K
- Partition의 수 = Multiprogramming degree
자료구조 example
Partition table(혹은 State table이라고도 부름)에 파티션의 이름, 해당 파티션의 시작 주소와 크기, 현재 해당 파티션을 사용하는 프로세스 등을 안다면 Fixed partition multiprogramming을 사용할 수 있다.
- 커널 및 사용자 영역 보호
Uni-programming 때와 마찬가지로 커널 영역이 침범되는 경우를 방지해야 한다. 또한 파티션이 미리 나누어져있기 때문에 파티션 영역을 침범하는 경우도 방지해야한다.
커널과 각 파티션의 영역에 Boundary register를 사용함으로써 이를 방지할 수 있다.
Fragmentation (단편화)
- Internal fragmentation
- 내부 단편화
- 40MB인 프로세스가 들어왔을 때 50MB인 파티션에 넣어주면 10MB가 남고, 21MB인 프로세스가 들어오면 30MB인 파티션에 넣어주고 9MB가 남는다. 이렇게 10MB, 9MB가 남지만 이 메모리 공간은 사용하지 못하고 낭비되게된다.
- Partition 크기 > Process 크기
- 메모리가 낭비 됨
- External fragmentation
- 외부 단편화
- 프로세스들을 넣고 남은 공간들이 10 + 9 + 5 + 10 + 10 = 44MB일 때, 30MB인 프로세스가 들어왔다고 해보자. 메모리 용량은 충분하지만, 연속된 메모리 공간이 아니여서 해당 프로세스를 메모리에 넣을 수가 없다.
- (남은 메모리 크기 > Process 크기) 지만, 연속된 공간이 아님
- 메모리가 낭비
- Fixed Partition Multiprogramming 요약
- 고정된 크기로 메모리를 파티션으로 미리 분할하고, 하나의 파티션에 하나의 프로세스만 들어갈 수 있음
- 장점
- 메모리 관리가 간편함. 프로세스가 들어갈 수 있는 파티션에 넣어주기만 하면 됨
- Low overhead
- 메모리 관리가 간편함. 프로세스가 들어갈 수 있는 파티션에 넣어주기만 하면 됨
- 단점
- Internal / external fragmentation이 발생함으로써, 시스템 자원이 낭비될 수 있음
728x90
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 9. 가상 메모리 (1) - Non-continuous allocation (2) | 2023.11.27 |
---|---|
운영체제 8. 메모리(주 기억장치) 관리 (3) - Variable Partition Multi-programming (2) | 2023.11.27 |
운영체제 8. 메모리(주 기억장치) 관리 (1) - Backgrounds (0) | 2023.11.25 |
운영체제 7. 교착 상태 Deadlock (5) - Deadlock detection and Recovery (0) | 2023.11.23 |
운영체제 7. 교착 상태 Deadlock (4) - Deadlock avoidance (0) | 2023.11.23 |