Memory 관리 2
JeongSeulho
2023년 02월 22일
준비중...
클립보드로 복사
📌continuous memory allocation
- 프로세스(context)를 하나의 연속된 메모리 공간에 할당
- 프로그램, 데이터, 스택
- 고려해야할 점
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- 각 프로세스에게 할당 되는 메모리 공간크기
- 메모리 분할 방법
📌uni-programming
- 하나의 프로세스만 메모리 상에 존재
- programing degree = 1
❌유니 프로그래밍 문제점
- 프로그램 크기 > 메모리 크기일때, 해결법
- overlay structure : 메모리에 현재 필요한 영역만 적재하는 것
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알아야 함
- 커널 보호, 해결법
- 경계 레지스터 사용
- low system resource utilization
- low system performance
- 위의 자원 활용도, 성능 문제 해결 위해 multi-programming
📌multi-programing
📖fixed partition multi-programming
- 메모리 공간을 고정된 크기로 분할
- 이미 분할 해놓음
- 편한 메모리 관리
- 각 프로세스는 하나의 partition에 적재
- partition의 수 = multiprogramming degree
- 커널 및 사용자 영역 보호
- boundary register, boundary address사용으로 각 partition을 침범하지 않게 구분, 커널을 보호
❌fragmentation 단편화 발생
-
internal fragmentation
- partition 크기 > 내부 process 크기로 메모리 남는 부분 발생
-
external fragmentation
- 남은 메모리 크기 > 들어오려는 process크기 인데도 진입 못하는 현상 발생(각 partiton에 조금씩 남아 있어서 합치면 많이 남아있는데도 사용 못함)
📖variable partition multi-programming
- 초기에 전체가 하나의 영역
- 프로세스 처리하는 과정에서 메모리 공간을 동적 분할
- no internal fragmentation
❓남은 공간이 여러군데인데 어디에 배치할까
🔧배치 전략
- first fit : 최초 적합
- 탐색하면서 처음으로 만난 충분한 공간의 partition 선택
- best fit : 최적 적합
- 가능 공간의 partition중 가장 작은 곳 선택
- 탐색이 오래 걸림
- 크기가 큰 partition유지 가능
- 작은 크기의 partition이 너무 많이 발생(활용 못할 정도의)
- worst fit : 최악 적합
- 가능 공간의 partition중 가장 큰 곳 선택
- 탐색 오래 걸림
- 크기가 큰 partition 확보 어려움
- 작은 크기의 partition발생 줄임
- next fit : 순차 최초 적합
- state table에서 마지막으로 탐색한 위치부터 탐색
- 이전에 어디에 선택했는지 기억하고 다음 탐색은 거기서 부터 시작, 이후 first fit
- 메모리 영역의 사용 빈도 균등화
❓배치할 자리가 없을때 전략
🔧coalescing holes 공간 통합
- 인접한 빈 영역을 하나의 partition으로 통합
- Process가 memory를 release하고 나가면 수행
🔧storage compaction 메모리 압축
- 모든 빈공간을 하나로 통합
- 프로세스 처리에 필요한 적재 공간 확보가 필요할 떄 수행
- 모든 프로세스 재배치할때, 모두 중지해야한다(overhead)