운영체제 메모리관리
1. 메모리관리
프로세스들을 위해 메모리를 할당, 제거, 보호하는 활동
디스크의 프로그램을 메모리에 먼저 적재 후 예약된 메모리를 할당
적재정책 : 디스크에서 메모리로 프로세스 반입 시기를 결정 (언제)
배치 정책 : 디스크에서 반입한 프로세스를 메모리으 ㅣ어디로 저장할 것인지
대치 정책 : 메모리가 충분하지 않다면 메모리에 적재된 어떤 프로세스를 교체할 것인지
2. 메모리 매핑
논리적 주소와 물리적 주소의 연결
바인딩 : 매핑을 시키는 작업
논리적 주소는 프로그램 내에서 사용하는 주소이다.
이 논리적 주소를 실제 물리적 주소와 연결하는 것을 매핑이라고 한다.
3. 동적 적재
바인딩을 최대한 늦춰 실행직전에 주소를 확정하는 효율적인 메모리 운영
모든 루틴을 메모리에 저장하지 않고 교체 가능한 형태로 디스크에 저장.
메인프로그램만 먼저 메모리에 적재하여 수행한다.
필요시 다른 루틴이 메모리에 있는지 확인하고 없으면 갱신
바로 사용하지 않을 루틴을 메모리에 저재하지 않음으로서 효율적으로 운영
4. 충첩(오버레이)
실행하려는 프로그램이 메모리보다 클 때는 당장 필요하지 않은 프로그램의 일부를 중첩해 설정
꼭 필요한 부분만 메모리에 적재하고 나머지는 필요시 불러다 쓰는 방법
5, 스와핑(프로세스 교체
프로세스 할당이 끝나고 수행완료된 프로세스는 보조기억장치로 이동, 새로운 프로그램을 메모리에 적재
6. 메모리 보호
프로세스가 메모리에 적재된 후 사용하지 않는 공간을 만듬으로서 중첩을 막음
7. 고정 분할 방법
연속 메모리 할당에서는 메모리를 여러개의 고정된 크기로 분할하고 분할된 각 메모리는 프로세스 하나에서 실행 가능
분할된 사이즈가 프로세스 크기보다 작으면 문제가 생긴다
내부 단편화가 생긴다(메모리에서 프로세스가 사용하고 남는 공간)
스케줄링과 분할 크기에 따라 내부단편화가 변한다
8. 기준레지스터는 메모리 시작 주소, 경게레지스터는 메모리에서 가장 끝쪽 주소
기준레지스터보다 크고 경계레지스터보다 작다
9. 각영역별로 독립된 큐가 있는 고정분할시스템
크기에따라 담당할 수 있는 큐가 제한되어 메모리 비효율적
10. 통합 대기큐가 있는 경우
대기큐는 1개로 통합된 경우
남는 메모리들이 감당할 수 없는 프로세스가 있을 경우 느려지는 단점 존재
11. 고정분할방법 이슈
분할영역과 개수를 어떻게 해야 하는가
프로그램을 어느 메모리에 배치할 것인가
이 조합에 따라 성능이 크게 변함
12. 가변 분할 방법
고정된 경계를 없애고 프로세스가 필요한 만큼 할당
먼저 사용한 프로그램이 나가고 남은 자리인 외부 단편화가 존재함
남은 메모리 공간보다 큰 프로그램은 실행 불가
이에 어떻게 프로그램을 배치할 것인지가 문제
13. 고정 분할 방법-
최초 적합 방법
프로세스를 사용가능한 메모리 공간 중 첫번 째 메모리에 넣는 방법
사용가능한 메모리 공간을 빠르게 찾을 수 있는 장점
단지 첫번 째로 메모리에 넣는 방법이므로 공간활용성 단점
14. 최적 적합 방법
프로세스를 남은 들어갈 수 있는 메모리 공간 중 가장 작은 곳에 넣음
남은 메모리 공간을 스캔해야함 이 부분이 비효율적
공간 이용율을 장점이나 할당과정에서 시간이 걸림
15. 최악 적합 방법
프로세스를 남은 메모리 공간들 중 가장 큰 곳에 넣음
가장 큰 곳에 넣으면 남은 메모리 공간에 다른 프로세스를 넣을 수 있는 장점
전체 스캔이 필요해서 비효율적
최적 적합법 보다는 메모리 활용에서 더 유용함
16. 가변 분할방법-
메모리 통합방법
하나의 작업이 끝났을 때 다른 빈 공간과 인접한지 점검, 하나로 통합
메모리 전반에 흩어진 빈공간을 모두 통합하긴는 곤한한 단점
17. 메모리 압축법
사용중인 멤모리 내용을 적절히 움직여 사용가능한 하나의 큰 블록을 만드는 방법
메모리 통합법은 인접 것들과 가능하지만, 압축법은 남는 공간을 모두 압축 가능
항상 가능하지는 않다
가능한 메모리 이동이 적은 방법을 찾아야함
단점 : 암축하는 동안 모든 일 일시중단
대화형 실시간 시스템에서 문제 야기
이로 인해 시스템 자원 소모가 크다는 문제
18. 버디시스템
큰 버퍼들을 반복적으로 이등분하야 작은 블록으로 만들며, 가능할 때마다 인접한 빈 버퍼들을 합치는 방법
버퍼를 나눌 때 서로를 버디라고 함.
19. 페이징
작업 크기가 동일한 페이지로 나누어 처리하는 방법
즉 프로세스를 여러개로 쪼개서 메모리에 적재하는 것임
프로세스에 필요한 페이지 번호를 부여하고 메모리의 빈곳을 찾아 적재위치 파악 후 적재준비
메모리를 효율적으로 사용하는 장점
외부단편화도 없음
페이지 관리 부담
페이지 크기와 필요공간이 안맞으면 내부 단편화
20. 다중 단계 페이징 시스템
논리적 주소가 클수록 물리적 주소로 변환하는 과정에서 필요한 페이지 테이블 크기도 증가하므로
메모리에 더 큰 적재공간이 필요함. -> 메모리 부담 증가
계층적으로 만들어 필요시에만 메ㅗ리에 적재하여 메모리 부담을 줄이고자 함.
21. 페이지 테이블 관리 방법
전용 레지스터를 이용
전용 레지스터는 효율적을 페이징 주소 변환을 고려해 초고속 논리회로로 설계됨
하지만 레지스터에 저장하기엔 페이지테이블 크기가 크므로 기준레지스터 정보만 저장
속도 저하를 방지하기 위해 연관레지스터, 변환우선참조를 이용
22. 연관레지스터를 이용한 논리적 주소를 문리적 주소로 변환
직접 매핑
메모리나 캐시에 온전한 페이지 테이블 유지
사용자 메모리 위치에 엑세스 하는데 시간이 걸린다
메모리에 두번 엑세스함. 페이지 테이블 한번, 실제 주소접근 한번 두 번 읽음
연관 매핑
전체 페이지 테이블은 swap영역에 주고, 테이블의 일부를 캐시에 가져오는 방식
(캐시에 무작위로 일부페이지 가져옴)
빠르지만 하드웨어 가격이 비쌈
연관-직접매칭 경합 주소 변환 방법
최근 사용한 페이지는 연관레지스터를 , 연관 레지스터에 페이지가 없을 때만 직접매핑함.
지역성을 활용하는 방법
23. 공유페이지
페이징 시스쳄에서는 여러 프로세스가 메모리를 공유할 수 있음
재진입이 가능
오직 읽을 수 만 있음 수정불가
24. 분산메모리 할당
sefmentation : 프로세스 관점을 지원하여 메모리를 크기가 변할 수 있는 segment로 바꿈
segment는 서브루틴, 프로시저, 함수 등으로 구성
프로세스에 따라 세그먼트 크기가 달라 메모리를 동적분할 방법으로 할당
즉 페이징은 분산적재 시 고정된 크기로 하지만 세그먼테이션은 남은 메모리 크기에 따라 다른 크기로 분산 적재가 가능함
장점 : 융통성, 내부 단편화 없음, 공유간단, 오버헤드 적음
단점 : 외부 단편화, 알고리즘이 비쌈, 크기가 다르면 스와핑에 부적절
25. 세그먼트 공유
페이징과 다르게 세그먼트는 공유한다고 선언만 하면 해결
공유 기능을 사용하는 시스템은 적절한 보호 체게ㅖ를 제공하여 승인된 사용자만 세그먼크에 엑세스 할 수 있도록
26. 페이징과 segmemtation 비교
페이징은 나누는 크기가 고정이나 segmemtation은 나는 크기가 변함
segmentation은 동적메모리 할당 이용
segmentation은 원할떄 압축가능
페이징은 물리적 공간 없이 큰 가상주소공간 이용 가능
segmentation는 외부단편화가 일어날 수 있음. 세그먼트 크기가 작으면 단편화 작음
27. 페이지화된 segmentation
페이징과 segmentation의 장단점을 취합
페이징은 내부 단편화가 발생할 수 있으나 메모리를 효율적으로 사용함.
segmentation은 외부 단편화가 발생할 수 있으나, 가변적인 데이터구조, 공유보호등 장점
외부 단편화를 제거하면서 할당을 쉽게 해결
세그먼트 내부구조를 페이지화한 것