더 많은 데이터를 저장할 수있는 공간이 있어도 RAM이 부분적으로 가득 찬 이유 (80 %라고 말하면)로 장치가 많이 지연되는 이유는 무엇입니까? 내가 기대하는 것은 99 %까지 계속 잘 작동한다는 것입니다.
RAM이 더 작기 때문에 PC보다 모바일에서 더 큽니다. 예를 들어, 모바일에는 2GB RAM이 있습니다. 1GB 미만의 RAM을 사용하지 않으면 시간이 많이 걸립니다! 그래도 여전히 ~ 1GB가 사용되지만 왜 이런 일이 발생합니까?
더 많은 데이터를 저장할 수있는 공간이 있어도 RAM이 부분적으로 가득 찬 이유 (80 %라고 말하면)로 장치가 많이 지연되는 이유는 무엇입니까? 내가 기대하는 것은 99 %까지 계속 잘 작동한다는 것입니다.
RAM이 더 작기 때문에 PC보다 모바일에서 더 큽니다. 예를 들어, 모바일에는 2GB RAM이 있습니다. 1GB 미만의 RAM을 사용하지 않으면 시간이 많이 걸립니다! 그래도 여전히 ~ 1GB가 사용되지만 왜 이런 일이 발생합니까?
답변:
여기에는 많은 관련이 있지만, 가능한 한 간단하고 모든 OS에 적용 가능한 방식으로 설명하려고 노력할 것입니다.
여기에는 두 가지 기본 원칙이 있습니다.
RAM에 필요한 모든 것과 RAM에있는 것의 이점은 거의 항상 RAM 크기보다 큽니다. RAM에있는 것의 이점은 프로세스 작업 세트 및 대기 목록을 포함합니다. 후자는 한 번은 활발하게 사용되었지만 그 후에는 활동하지 않은 데이터와 코드를 포함합니다. 이 중 많은 부분이 다시 사용되며 일부는 곧 사용되므로 RAM에 보관하는 것이 좋습니다. 이 메모리는 일종의 캐시 역할을하지만 실제로 필수적인 것은 아니므로 사용 가능한 메모리 범주에 있습니다. 사용 가능한 메모리와 같이 필요한 모든 프로그램에 신속하게 제공 할 수 있습니다. 성능을 위해 대기 메모리는 커야합니다.
메모리 블록의 사용 빈도는 임의적이지는 않지만 상당한 정확도로 예측할 수 있습니다. 메모리는 종종 4K 바이트의 블록으로 나뉩니다. 시스템이 충분히 오래 가동 된 경우 일부 블록은 초당 여러 번 액세스되는 반면 다른 블록은 몇 분, 몇 시간, 며칠 또는 몇 주 동안 액세스되지 않았습니다. 이 두 극단 사이에는 광범위한 사용이 있습니다. 메모리 관리자는 최근에 액세스 한 블록과 아직 액세스하지 않은 블록을 알고 있습니다. 최근에 액세스 한 메모리 블록이 곧 다시 필요하다고 합리적으로 가정합니다. 최근에 액세스하지 않은 메모리는 조만간 필요하지 않을 것입니다. 오랜 경험을 통해 이것이 유효한 원칙임을 입증했습니다.
메모리 관리자는 두 번째 원리를 이용하여 첫 번째의 바람직하지 않은 결과를 크게 완화합니다. 이렇게하려면 최근에 액세스 한 데이터를 RAM에 유지하면서 거의 사용하지 않는 데이터를 원본 파일이나 페이지 파일에 유지하는 균형 조정 작업을 수행합니다.
RAM이 많으면이 밸런싱 동작이 쉽습니다. 최근에 사용되지 않은 대부분의 데이터는 RAM에 보관할 수 있습니다. 이것은 좋은 상황입니다.
작업량이 증가하면 상황이 더 복잡해집니다. 사용중인 데이터와 코드의 총계는 더 크지 만 RAM 크기는 동일하게 유지됩니다. 이것은 이것의 작은 서브셋이 RAM에 유지 될 수 있음을 의미합니다. 최근에 덜 사용 된 데이터 중 일부는 더 이상 RAM에있을 수 없지만 디스크에 남아 있어야합니다. 메모리 관리자는 사용중인 메모리와 사용 가능한 메모리간에 균형을 유지하기 위해 매우 노력합니다. 그러나 워크로드가 증가함에 따라 메모리 관리자는 실행중인 프로세스에 더 많은 메모리를 제공해야합니다. 이것은 좋은 상황은 아니지만 메모리 관리자는 선택의 여지가 없습니다.
문제는 프로그램이 실행될 때 RAM으로 데이터를 이동하거나 RAM에서 데이터를 이동하는 데 시간이 걸린다는 것입니다. RAM이 많으면 자주 발생하지 않으며 심지어 눈치 채지 못할 것입니다. 그러나 RAM 사용량이 높은 수준에 도달하면 훨씬 더 자주 발생합니다. 상황이 너무 나빠져 실제로 데이터를 사용하는 데 소요되는 시간보다 RAM으로 데이터를 이동하는 데 더 많은 시간이 소요됩니다. 이것은 메모리 관리자가 피하기 위해 매우 열심히 시도하는 일이지만, 작업량이 많으면 피할 수없는 일입니다.
메모리 관리자는 항상 옆에 있으며 항상 불리한 조건에서도 최적의 성능을 유지하는 것이 가장 좋습니다. 그러나 작업량이 많고 사용 가능한 메모리가 부족한 경우 계속 작동하려면 나쁜 일을해야합니다. 그것은 실제로 가장 중요한 것입니다. 우선은 일을 계속 유지 한 다음 가능한 빨리 실행하는 것입니다.
memory manger
내 OS
권리 의 일부 입니까? 그래서 포인터 와이 매우 낮은 수준의 것들을 다루고 있다면 여전히 페이징을 할 수 있습니까?
모든 최신 운영 체제는 그렇지 않은 스토리지 메모리 대신 빠른 RAM에서 액세스 할 수 있도록 데이터 캐싱에 사용되지 않은 메모리를 사용합니다. 응용 프로그램은 캐시를 지우고 필요할 경우 사용할 수 있지만 실제로 사용 중이므로 일반적으로이 메모리를 사용 가능한 메모리로보고합니다. 데이터가 적을수록 캐시 할 수있는 데이터가 적어지고 컴퓨터 속도가 느려집니다.
이 답변은 대부분 구조를 재구성하고 메시지를 명확하게하기 위해 다시 작성되었습니다. 또한 커뮤니티 위키 답변으로 열었습니다. 자유롭게 편집하십시오.
페이징은 고정 크기 메모리 블록에 프로세스가 할당되는 메모리 관리 체계입니다. 메모리 사용량이 높은 수준 (예 : 80 % 용량)으로 증가하면 페이징이 RAM에서 vRAM (가상 RAM)으로 확장되기 시작합니다.
vRAM은 시스템 스토리지, 일반적으로 하드 드라이브 또는 기타 상당한 크기의 스토리지 위치에 있습니다.
프로세스는 메모리로 실행되도록 하드 드라이브의 일부에 할당되며 해당 섹션을 RAM으로 취급합니다. 이는 완전히 정상적인 과정이지만 vRAM과 데이터를주고받는 데 시간이 많이 걸리면 시스템 성능이 저하됩니다.
전용 RAM은 빠른 연결을 제공하는 CPU에서 마더 보드를 통해 직접 액세스되지만 가상 RAM은 보드와 vRAM 위치 사이의 케이블 연결을 가로 질러야합니다.
그러나 이는 약간의 성능 영향 만 발생합니다. vRAM으로의 페이징 속도가 급격히 증가하면 (전용 RAM이 용량에 근접 할 때) 스 래싱이 발생합니다.
스 래싱은 메모리 페이지를 가상 메모리로 신속하고 빠르게 전송하는 방법입니다. 데이터를 가져오고 주소 지정하는 데 더 많은 시간을 소비해야하므로 성능이 크게 저하됩니다.
30 자릿수의 숫자를 쓰고 싶다고합시다. 메모장으로 화면 옆에 앉아서 메모하거나 (전용 메모리 사용) 5 개의 덩어리를 기억하고 다음 방으로 뛰어 들어 메모장의 가상 메모리를 사용하여 메모 할 수 있습니다. 둘 다 일을 끝내지 만 어느 것이 더 빠를까요?
Daniel B , xenoid 및 Jon Bentley를 포함한이 답변의 기여자들에게 큰 감사를드립니다 .
OS가 소프트웨어를 계속 실행하기 위해서는 많은 페이징 (활성 프로그램의 일부로드)과 스왑 (RAM의 데이터를 HD로 또는 그 반대로 이동)을 수행해야하기 때문입니다. 사용 가능한 20 %보다 많은 공간이 필요할 수있는 새 페이지를로드해야하는 경우 OS는 RAM에서 기존 페이지를 교체해야하므로 곧 사용할 가능성이 적습니다. 특히 다른 프로그램을 시작할 때. RAM을 사용하지 않고 HD의 속도로 작업하고 있기 때문에 페이지를 스 와이프하고 다시 가져 오면 많은 시간이 걸리고 PC 성능이 크게 저하됩니다.
그것은 HDD에 약간 의 HD 파티션을 생성하고 전용 "스왑"( "실제"파일에는 사용하지 않음) 공간으로 할당하여 스와핑이 HD 조각화의 영향을 덜받는 데 도움이됩니다.
하드 드라이브는 RAM보다 속도 가 느리고 RAM 자체가 (전체 아키텍처에서) 시작하기에 빠르지는 않습니다. 액세스 속도 순서대로 (각 단계는 위 단계보다 속도가 느립니다)
가상 메모리 관리자는 도박꾼입니다. 항상 모든 RAM이 필요하지 않다는 것을 내기하고 있습니다. 따라서 교육받은 추측을하고 문서 프로그램 (이 글을 읽는 동안 지난 10 분 동안 백그라운드에 있었음)이 아닌 주사위를 굴립니다. 정말 중요하며 HDD에 저장합니다.
그런 다음 문서를 다시 클릭하십시오! 이제 VMM은 모든 데이터를 HDD에서 다시로드해야합니다. 더 나쁜 것은, RAM이 적 으면 사용 가능한 공간을 확보하기 위해 다른 데이터 (도박을 더 많이)를 HDD로 푸시해야합니다. 리눅스는 여기 가장자리에 사는 것을 좋아합니다. 대부분의 RAM을 자주 사용하는 데이터로 채 웁니다 (프로세스가 적은 서버에 적합).