본문 바로가기
운영체제

메인 메모리 (Main Memory) 핵심 요약 정리(1)

by 컨텐츠플러스 2023. 6. 10.

메인 메모리
메인 메모리

메인 메모리(Main Memory)

메인 메모리 CPU 계획 결과 CPU 사용률과 사용자에게 제공되는 컴퓨터의 응답 속도 모두 개선될 수 있다.

그러나 이러한 성능 향상을 실현하려면 많은 프로세스를 메모리에 유지해야 한다. 즉, 메인 메모리를 공유해야 합니다.

 

이 장에서는 다양한 메모리 관리 방법을 설명한다. 기억 관리 알고리즘은 벌거벗은 기계의 기본 방법부터 페이지를 사용하는 전략에 이르기까지 다양하다.

 

모든 접근 방식에는 찬반이 있습니다. 특정 시스템에 대한 메모리 관리 방법의 선택은 많은 요인, 특히 시스템의 하드웨어 설계에 달려 있다.

 

우리가 미래에 보게 될 것처럼, 대부분의 알고리즘은 하드웨어 지원이 필요하므로, 많은 시스템은 하드웨어와 운영 체제의 메모리 관리를 긴밀하게 통합해야 한다.

기본 하드웨어

메인 메모리와 각 프로세싱 코어에 내장된 레지스터는 CPU가 직접 접근할 수 있는 유일한 범용 저장 장치이다. 기계 명령어는 디스크 주소가 아닌 메모리 주소만 만든다.

 

따라서 실행된 모든 명령과 데이터는 메인 메모리에 저장되어야 하며 CPU가 직접 접근할 수 있어야 한다.

데이터가 메모리에 존재하지 않는 경우, CPU는 데이터를 처리하기 전에 메모리에 상주해야 한다.

각 CPU 코어에 내장된 레지스터들은 일반적으로 CPU 클럭 사이클에서 접근할 수 있다. 일부 커널은 로그 명령과 간단한 작업을 하나 이상의 시계별 보고서로 처리한다.

 

그러나 메인 메모리 버스를 통해 전송되는 메모리는 위에서 언급한 상황과 다르다. 메인 메모리에 대한 접근을 완료하기 위해서는 CPU의 많은 클럭 사이클이 필요하다.

 

이 경우 CPU에 필요한 데이터가 부족하고 명령이 지연될 수 있기 때문에 명령이 실행되지 않을 수 있다. 이러한 상황은 메모리에 대한 접근이 빈번하게 발생하는 경우에 용납될 수 없다. 해결책은 CPU와 메인 메모리 사이에 빠른 메모리를 추가하는 것이다.

 

CPU에 배치된 캐시를 관리하면 운영 체제의 도움 없이 메모리에 접근하는 속도를 향상시킨다.

물리적 메모리의 상대적인 접근 속도 차이를 고려하는 것 외에도, 적절한 작동을 보장해야 한다. 시스템이 제대로 작동하려면 사용자 프로그램 운영 체제의 영역뿐만 아니라 사용자 프로그램도 보호해야 한다.

주소의 할당

프로그램은 원래 디스크에 이진 실행 가능한 형태로 저장된다. 실행하려면 프로그램을 메모리에 수입하여 프로세스 콘텍스트 내에 배치해야 한다.

 

이 시점에서는 사용 가능한 CPU로 작동할 수 있을 것이다. 프로세스가 실행되면 명령과 데이터가 메모리에 액세스 됩니다.

결국 프로세스가 종료되고 메모리가 복구되어 다른 프로세스에 의해 사용됩니다.

대부분의 시스템은 기억의 어느 부분에 도달하기 위해 사용자 프로세스를 지원한다. 사용자 프로세스 주소가 00000에서 시작된다고 해서 프로그램이 00000 기억에서 벗어나야 하는 것은 아니다.

 

여러분은 운영체제가 물리적 메모리에 프로세스를 로드하는 것을 볼 수 있습니다. 원시 프로그램에서 주소는 숫자 대신 기호(변수 계정과 같은) 형태로 표현된다.

 

코어 모드에서 실행되는 운영체제는 운영체제 메모리 영역과 사용자 메모리 영역에 대한 접근에 제한을 받지 않는다.

 

이 원칙 때문에 운영체제는 사용자 메모리 영역에 사용자 프로그램을 로드하고, 오류 발생 시 다운로드하고, 시스템 호출 매개변수를 변경하고, 사용자 메모리 및 기타 많은 서비스를 제공할 수 있다.

 

예를 들어, 멀티프로세서 운영체제는 한 프로세스의 상태를 로그에서 메인 메모리에 저장하고 다음 프로세스의 맥락을 메인 메모리에서 로그로 저장하는 콘텍스트 교환을 수행해야 한다.

 

2023.06.09 - [운영체제] - 스레드 라이브러리 (Threads Library) 핵심 정리(3)

 

스레드 라이브러리 (Threads Library) 핵심 정리(3)

스레드 라이브러리 스레드 라이브러리 : 주제를 만들고 관리하기 위한 API를 프로그래머에게 제공합니다. 실제 라이브러리를 구현하는 데는 크게 두 가지 방법이 있습니다. 첫 번째 방법은 지원

contentplus.tistory.com