Jam's story
메모리 관리 본문
메모리 관리 전략 3가지 -> 반입전략 , 배치전략, 대치전략
반입(fetch)전략 : 데이터를 주기억장치로 언제 적재할 것인지, 디스크에서 메인메모리에 프로세스 반입 시기를 결정하는 것
• 요구 반입 : 운영체제나 시스템 프로그램, 사용자 프로그램 등 참조 요청에 따라 메인메모리 에 반입하는 방법으로 오랫동안 사용된 기법
• 예상 반입 : 시스템의 요청을 미리 예측하여 메모리에 적재하는 방법
배치(placement) 전략 : 디스크에서 반입한 프로세스를 메인메모리 어느 위치에 저장할 것인 지 결정하는 방법 (최초 적격, 최적 적격, 최악 적격 등)
-최초배치 (첫번째 분할영역)
-최적적합(빈메모리를 제일 적게 만드는곳 )
-최악 적합 (빈 메모리를 가장 많이 남기는곳)
교체(replacement) 전략 : 메모리가 충분하지 않을 때 현재 메모리에 적재된 프로세스 중 제거(교체)할 프로세스를 결정하는 교체 방법(시기, 사용빈도)에 따라 결정하는 여러 방법
메모리 장치의 주소 변환
논리적 주소와 물리적 주소의 변환은 메모리관리장치(MMU)가 처리
매핑mapping : 논리적 주소와 물리적 주소의 연 결
바인딩binding : 매핑시켜 주는 작업
메모리 할당 기법
연속 할당 기법 비연속(분산) 할당 기법
연속메모리할당-단일프로그램
주기억장치를 운영체제랑 사용자로 나누어(경계 레지스터로 구분) 오직 한명의 사용자만이 주기억장치의 사용자 영역을 사용
중첩(오버레이:overlay)
실행하려는 프로그램이 주기억장치보다 클 때는 당장 필요하지 않은 프로그램의 일부는 중첩으로 설정 가능
보조기억장치에 저장된 하나의 프로그램을 여러개의 조각으로 나누어서 주기억장치로 보냄
운영체제 영역과 메모리의 일부 영역에는 프로 그램 실행에 꼭 필요한 명령어와 데이터만 저장
중첩 영역에는 필요할 때 호출하여 적재하는 방법
스와핑(프로세스 교체)
프로그램 전체를 주기억장치에 할당하여 사용하다 필요없는 프로그램은 다른 프로그램이랑 교체된다 .
프로세서 할당이 끝나고 수행 완료된 프로세스는 보조기억장치로 보내고(스왑 아웃),
새롭게 시작하는 프로세스는 주기억장치(메모리)에 적재(스왑 인)
스왑아웃,스왑인 ->주기억장치기준
프로세스는 메모리에 있어야 수행되므로 일시적으로 디스크로 이동했다가 메모리로 되돌아와 다시 수행 가능
연속메모리할당- 다중프로그래밍
고정 분할 할당-
주기억장치의 사용자영역을 크기가 동일한 페이지로 나눠 처리하는 방법
프로세스를 크기가 동일한 (페이지)로 나누고 메인 메모리도 (프레임)이라는 고정 크기 블록을 나눔 프레임에 페이지를 적재 비연속 메모리
내부단편화, 외부단편화가 생길 수 있음
동적분할할당-
고장분할할당의 단편화를 줄이기 위한것으로, 주기억장치의 사용영역을 필요한 만큼의 크기로 분할
단편화의 상당부분해결하나, 영역과 영역사이에 단편화가 발생
불연속메모리할당
고정분할- 페이징:
가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈후
동일하게 나눠진 주기억장치의 영역에 적재시켜 실행
페이징의 개념 작업을 크기가 동일한 페이지로 나눠 처리하는 방법 • 프로세스를 크기가 동일한 (페이지)로 나누고 메인 메모리도 (프레임)이라는 고정 크기 블록을 나눔 프레임에 페이지를 적재 비연속 메모리
세그먼테이션
프로세스 관점을 지원하여 메모리를 크기가 변할 수 있는 세그먼트로 나누는 것 프로그램을 구성하는 서브루틴, 프로시저, 함수나 모듈 등으로 세그먼트 구성 각 세그먼트는 연관된 기능을 수행하는 하나의 모듈 프로그램으로 생각, 메모리의 연속된 위 치에서 구성하되 서로 인접할 필요 없음 • 메모리의 사용자 관점을 지원하는 비연속 메모리 할당 방법, 논리적 영역을 세그먼트의 집합으로 인식 보통 컴파일러가 원시 프로그램을 실행 프로그램으로 자동 변환하면서 서브루틴과 프로시저, 함수, 모듈 등 각기 크기가 다른 세그먼트로 구성 하드웨어 보호 등 관리에 필요한 사항은 페이징과 비슷하거나 동일 프로세스에 따라 세그먼트 크기가 달라 메모리를 크기가 일정한 페이지 프레임으로 나누지 않 고 동적 분할(가변 분할) 방법으로 할당