티스토리 뷰
운영체제
메모리 관리 #1 - Address Binding, Dynamic Loading, Swapping, Continuous Memory Allocation(Uni-Programming)
˙ᵕ˙ 2021. 1. 14. 19:47메모리(기억장치)의 종류
메모리(기억장치) 계층구조
Block
- 보조기억장치와 주기억장치 사이의 데이터 전송 단위
- Size: 1 ~ 4KB
Word
- 주기억장치와 레지스터 사이의 데이터 전송 단위
- Size: 16 ~ 64 bits
Address Binding
- 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑(mapping)하는 작업
- Binding 시점에 따른 구분
- Compile time binding
- Load time binding
- Run time binding
Compile time binding
- 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우
- 위치기 변하지 않음
- 프로그램 전체가 메모리에 올라가야 함
Load time binding
- 메모리 적재 위치를 컴파일 시점에서 모르면, 대체 가능한 상대 주소를 생성
- 적재 시점(load time)에 시작 주소를 반영하여 사용자 코드 상의 주소를 재설정
- 프로그램 전체가 메모리에 올라가야 함
- 주소가 0번으로 시작한다고 가정하고 그로부터 상대적인 위치를 사용
- 실제 메모리의 주소가 400부터 시작한다면 상대적 주소에 + 400 을 하여 절대 주소를 구한다.
- 상대주소를 절대주소로 변환하여 사용
Run-time binding
- 프로세스가 running 상태가 될 때 주소 지정
- Address binding 을 수행시간까지 연기
- 프로세스가 수행 도중 다른 메모리 위치로 이동할 수 있음
- HW의 도움이 필요
- MMU: Memory Management Unit
- 대부분의 OS가 사용
Dynamic Loading
- 모든 루틴을 교체 가능한 형태로 디스크에 저장
- 실제 호출 전까지는 루틴을 적재하지 않음
- 메인 프로그램만 메모리에 적재하여 수행
- 루틴의 호출 시점에 address binding 수행
- 장점
- 메모리 공간의 효율적 사용
Swapping
- 프로세서 할당이 끝나고 수행 완료 된 프로세스는 swap-device로 보내고 (Swap-out)
- 새롭게 시작하는 프로세스는 메모리에 적재 (Swap-in)
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)
- 가변 분할
Uni-Programming
- 하나의 프로세스만 메모리 상에 존재
- 가장 간단한 메모리 관리 기법
- 문제점
- 프로그램의 크기 > 메모리 크기
- 프로그램을 분할해서 메모리에 올려야 한다.
- 해결법
- Overlay structure
- 공통된 부분은 메모리에 적재
- 메모리에 현재 필요한 영역은 번갈아가며 적재
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함
- Overlay structure
- 문제점
- 커널(Kernel) 보호
- 커널영역은 제외한 메모리만 사용해야 한다.
- 해결방법
- 경계 레지스터 (boundary register) 사용
- 문제점
- Low system resource utilization
- Low system performance
- 메모리 공간 낭비 -> 비효율적, 낮은 성능
- 해결법
- Multi-programming
강의
www.youtube.com/watch?v=es3WGii_7mc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=24
www.youtube.com/watch?v=te-GU7NKa5Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=25
'운영체제' 카테고리의 다른 글
가상메모리 #1 - Address Mapping, Block Mapping (0) | 2021.01.16 |
---|---|
메모리 관리 #2 - Continuous Memory Allocation(Multi-programming) (0) | 2021.01.15 |
교착상태 #3 - Deadlock detection and deadlock recovery methods (0) | 2021.01.12 |
교착상태 #2 - Deadlock prevention, Deadlock avoidance (0) | 2021.01.11 |
교착상태 #1 - deadlock, resource types, deadlock model (0) | 2021.01.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빅데이터 플랫폼
- oracle
- linux
- SQL
- Replacement Strategies
- vmware
- 하둡
- jdbc
- Disk Scheduling
- JSON
- Disk System
- HDFS
- 빅데이터
- aop
- gradle
- mapreduce
- springboot
- Java
- Spring
- RAID Architecture
- Flume
- Variable allocation
- File Protection
- I/O Mechanisms
- maven
- Allocation methods
- hadoop
- SPARK
- Free space management
- I/O Services of OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함