논리적 주소와 물리적 주소


<aside> 💡 NOTE

주소 바인딩

시점이 그럼 언제 주소 바인딩이 되는 것인가??

주소 바인딩의 종류 3가지

스크린샷 2024-03-17 오후 8.07.52.png

</aside>

MMU(메모리 관리 유닛)

<aside> ✍️ NOTE

</aside>

<aside> ✍️ NOTE

Untitled

limit register - 실행중인 프로세스의 최대 크기를 저장하고 있다. 실행중인 프로세스가 이상한 프로그램이라 3000번지까지밖에 없는데 4000번을 달라하면 , 주소변환하면 다른 프로그램거를 가져오게 되는거라 막아야 한다.

Untitled

Dynamic Loading(동적 로딩)

프로세스 전체를 메모리에 모두 올리는 것이 아니라 실행에 필요한 부분이 실제 불릴때마다 메모리에 적재하는 것 → 여러 프로그램이 메모리에 동시에 올라가서 수행되는 다중 프로그래밍 환경에서 메모리 효율성을 높이기 위해 사용

프로그램 코드 중 상당 부분은 오류 처리 루틴과 같이 특별한 경우에만 사용되는 방어용 코드인데 이러한 코드 전체를 메모리에 올리는 경우 많은 메모리를 차지해 → 메모리 낭비 초래

동적 로딩 기법은 사용되지도 않는 코드가 메모리에 올라가는 것을 방지

운영체제의 특별한 지원 없이 프로그램 자체에서 구현이 가능해 운영체제가 라이브러리를 통해 지원할 수도 있다.

*OS의 페이징 기법과는 다른 것이다.

*현대적인 운영체제에서도 동적 로딩으로 부를수 있다.

프로세스의 주소 공간을 분할 해 실제 필요한 부분만 메모리에 적재하는 방법

Overlays는 하나의 프로세스조차도 메모리에 한꺼번에 올릴수 없던 초창기 시스템에서 사용

당장 필요한 메모리를 올려 실행하고 나머지를 실행이 끝난 뒤에 다시 올려 실행(디스크를 2개 연결해 사용하던 시절)

프로그램 크기가 물리적 메모리 보다 작다면 전체를 올리수도 있다.

메모리에 올라온 프로세스 주소 공간 전체를 backing store로 보내는 것, 프로세스가 종료되어 그 주소공간을 디스크로 보내는 것이 아니라 수행 중인 프로세스의 주소 공간을 일시적으로 메모리에서 디스크로 내려놓는 것을 의미

swap out : 메모리 → 디스크, 일반적으로 중기 스케줄러에 의해 프로세스 선정

세그멘테이션 기법

<aside> 💡

</aside>

Segmentation with Paging

<aside> 💡

</aside>