메모리에 대해 조금
분석을 진행하기 전에 메모리 관리 방법에 대해 간단히 설명하겠습니다. 그런 다음 Windows 7 리소스 모니터에 어떤 정보가 표시되는지 이해하기가 더 쉬울 것입니다.
Windows 7 메모리 관리자는 사용 가능한 물리적 RAM과 하드 드라이브의 스왑 파일로 구성된 가상 메모리 시스템을 만듭니다. 이를 통해 운영 체제는 물리적 및 가상 메모리에 연속적인 주소가 있는 고정 길이 메모리 블록(페이지)을 할당할 수 있습니다.
Windows 7 리소스 모니터 시작
Windows 7 리소스 모니터를 시작하려면 시작 메뉴(시작)를 열고 검색 창에 "Resmon.exe"를 입력하고 을 클릭합니다. 열리는 창에서 "메모리" 탭을 선택합니다(메모리, 그림 A).
그림 A Windows 7 리소스 모니터의 메모리 탭은 자세한 메모리 할당 정보를 제공합니다.
표 "프로세스"
메모리 탭에는 실행 중인 모든 프로세스를 나열하는 프로세스 테이블(그림 B)이 있으며 메모리 사용량이 여러 범주로 나뉩니다.
그림 B 각 프로세스의 메모리 사용량 정보는 여러 범주로 나뉩니다.
"이미지" 열
이미지 열에는 프로세스의 실행 파일 이름이 포함됩니다. 응용 프로그램에 의해 시작된 프로세스는 인식하기가 매우 쉽습니다. 예를 들어 "notepad.exe" 프로세스는 분명히 메모장(메모장)에 속합니다. "svchost.exe"라는 프로세스는 다양한 운영 체제 서비스를 나타냅니다. 서비스 이름은 프로세스 이름 옆의 괄호 안에 표시됩니다.
프로세스 ID 열
프로세스 ID(PID) 열에는 실행 중인 프로세스를 식별하는 고유한 숫자 조합인 프로세스 번호가 포함됩니다.
"완료" 열
Commit 열은 시스템이 이 프로세스를 위해 예약한 가상 메모리의 양(KB)을 표시합니다. 여기에는 사용된 실제 메모리와 페이징 파일에 저장된 페이지가 모두 포함됩니다.
열 "작업 세트"
작업 집합 열은 프로세스가 현재 사용 중인 물리적 메모리의 양을 킬로바이트 단위로 표시합니다. 작업 집합은 공유 및 개인 메모리로 구성됩니다.
열 "일반"
공유 가능 열은 이 프로세스가 다른 사람과 공유하는 물리적 메모리의 양을 킬로바이트 단위로 표시합니다. 관련 프로세스에 대해 단일 메모리 세그먼트 또는 스왑 페이지를 사용하면 메모리 공간이 절약됩니다. 이 경우 페이지의 복사본 하나만 물리적으로 저장되고 페이지에 액세스하는 다른 프로세스의 가상 주소 공간에 매핑됩니다. 예를 들어, 시스템 DLL에 의해 시작된 모든 프로세스(Ntdll, Kernel32, Gdi32 및 User32)는 공유 메모리를 사용합니다.
"비공개" 열
Private 열은 이 프로세스에서 독점적으로 사용하는 물리적 메모리의 양(KB)을 나타냅니다. 특정 응용 프로그램이 작동하는 데 필요한 메모리 양을 결정할 수 있는 것은 이 값입니다.
"메모리/초에 페이지가 없는 오류" 열
"페이지 메모리 오류/초" 열에서 (Hard Faults/sec)는 지난 1분 동안 초당 평균 메모리 페이지 폴트 수를 나타냅니다. 프로세스가 현재 사용 가능한 것보다 더 많은 실제 메모리를 사용하려고 하면 시스템은 메모리의 데이터 중 일부를 디스크(페이징 파일)에 씁니다. 디스크에 저장된 데이터에 대한 후속 액세스를 메모리 부족 오류라고 합니다.
페이지 아웃 오류는 무엇을 나타냅니까?
이제 Processes 테이블에 어떤 정보가 수집되는지 이해했으므로 이를 사용하여 메모리 할당을 모니터링하는 방법을 살펴보겠습니다. 응용 프로그램이 시작되고 파일로 작업할 때 메모리 관리자는 각 프로세스의 작업 집합 크기를 추적하고 추가 메모리 리소스에 대한 요청을 캡처합니다. 프로세스의 작업 집합이 증가함에 따라 디스패처는 이러한 요청을 커널 및 기타 프로세스의 요구 사항과 일치시킵니다. 사용 가능한 주소 공간이 충분하지 않은 경우 디스패처는 데이터를 메모리에서 디스크로 저장하여 작업 세트를 축소합니다.
나중에 디스크에서 이 데이터를 읽을 때 페이지 메모리 부족 오류가 발생합니다. 이는 지극히 정상이지만 다른 프로세스에서 동시에 오류가 발생하면 시스템이 디스크에서 데이터를 읽는 데 추가 시간이 필요합니다. 페이지 부족 오류가 너무 자주 발생하면 시스템 성능이 저하됩니다. 모든 응용 프로그램에서 예상치 못한 속도 저하를 경험한 적이 있을 것입니다. 거의 확실하게, 이러한 속도 저하의 원인은 물리적 메모리와 스왑 간의 활성 데이터 재할당 때문입니다.
이것은 특정 프로세스에 대한 메모리 부족 오류가 너무 자주 정기적으로 발생하면 컴퓨터에 충분한 물리적 메모리가 없다는 결론으로 이어집니다.
메모리 부족 오류가 자주 발생하는 프로세스를 모니터링하기 쉽도록 플래그로 표시할 수 있습니다. 이렇게 하면 선택한 프로세스가 목록의 맨 위로 이동하고 메모리 부족 오류 그래프가 주황색 곡선으로 표시됩니다.
메모리 할당은 다른 여러 요인에 따라 달라지며 페이지 외부 오류를 모니터링하는 것이 문제를 식별하는 최선의 방법도 유일한 방법도 아닙니다. 그러나 관찰을 위한 좋은 출발점이 될 수 있습니다.
표 "물리적 메모리"
프로세스 테이블은 개별 프로세스에 메모리가 할당되는 방법에 대한 자세한 정보를 제공하는 반면 물리적 메모리 테이블은 RAM 사용량에 대한 전체 그림을 제공합니다. 핵심 구성 요소는 그림 1에 표시된 고유한 히스토그램입니다. 씨.
그림 C. 실제 메모리 테이블의 막대 그래프는 Windows 7의 메모리 할당에 대한 개요를 제공합니다.
히스토그램의 각 섹션은 고유한 색상으로 표시되며 메모리 페이지의 특정 그룹을 나타냅니다. 시스템이 사용됨에 따라 메모리 관리자는 백그라운드에서 이러한 그룹 간에 데이터를 이동하여 물리적 메모리와 가상 메모리 간의 섬세한 균형을 유지하여 모든 애플리케이션이 효율적으로 실행되도록 합니다. 히스토그램을 자세히 살펴보겠습니다.
"예약된 장비" 섹션
왼쪽에는 회색으로 표시된 "Hardware Reserved" 섹션이 있습니다. 이것은 운영 체제와 상호 작용하는 데 사용하는 연결된 장비의 요구 사항에 할당된 메모리입니다. 하드웨어용으로 예약된 메모리가 잠겨 있어 메모리 관리자가 액세스할 수 없습니다.
일반적으로 하드웨어에 할당되는 메모리 양은 10~70MB이지만 이 수치는 시스템의 특정 구성에 따라 다르며 경우에 따라 수백 메가바이트에 이를 수도 있습니다. 예약된 메모리 양에 영향을 미치는 구성 요소는 다음과 같습니다.
;
구성품 마더보드- 예를 들어, 고급 프로그래밍 가능 입출력 인터럽트 컨트롤러(APIC);
메모리 매핑된 입력/출력을 수행하는 사운드 카드 및 기타 장치;
PCI 익스프레스(PCIe) 버스;
비디오 카드;
다양한 칩셋;
플래시 드라이브.
일부 사용자는 시스템에 하드웨어용으로 비정상적으로 많은 양의 메모리가 예약되어 있다고 불평합니다. 나는 그런 상황에 처한 적이 없으므로 제안된 솔루션의 효과를 보증할 수 없지만 많은 사람들은 BIOS 버전을 업데이트하면 문제가 해결된다는 점에 주목합니다.
섹션 "중고"
사용 중 섹션, 그림 C, 레이블 녹색으로, 시스템, 드라이버 및 실행 중인 프로세스에서 사용하는 메모리 양을 나타냅니다. 사용된 메모리 양은 "Total"(Total) 값에서 "Changed"(수정됨), "Waiting"(대기) 및 "Free"(무료) 표시기의 합계를 뺀 값으로 계산됩니다. 차례로 "Total"의 값은 "Installed"(설치된 RAM) 표시기에서 "Reserved equipment" 표시기를 뺀 것입니다.
섹션 "변경됨"
주황색으로 강조 표시된 부분은 수정되었지만 사용되지 않은 메모리를 표시하는 "수정됨" 섹션입니다. 실제로는 사용하지 않지만 필요할 경우 언제든지 다시 활성화할 수 있습니다. 메모리를 장기간 사용하지 않은 경우 데이터는 페이징 파일로 전송되고 메모리는 대기 범주로 이동합니다.
"대기" 섹션
파란색으로 표시된 보류 섹션은 작업 세트에서 제거되었지만 여전히 관련되어 있는 메모리 페이지를 나타냅니다. 즉, 보류 범주는 실제로 캐시입니다. 이 범주의 메모리 페이지에는 0에서 7(최대)의 우선 순위가 할당됩니다. 우선 순위가 높은 프로세스와 연결된 페이지가 가장 높은 우선 순위를 받습니다. 예를 들어, 공유 프로세스는 우선 순위가 높기 때문에 관련 페이지에 보류 범주에서 가장 높은 우선 순위가 부여됩니다.
프로세스가 보류 중인 페이지의 데이터를 필요로 하는 경우 메모리 관리자는 즉시 해당 페이지를 작업 집합으로 반환합니다. 그러나 보류 범주의 모든 페이지는 다른 프로세스의 데이터를 쓰는 데 사용할 수 있습니다. 프로세스가 필요할 때 추가 메모리, 사용 가능한 메모리가 충분하지 않은 경우 메모리 관리자는 우선 순위가 가장 낮은 보류 중인 페이지를 선택하여 초기화하고 요청 프로세스에 할당합니다.
섹션 "무료"
Blue Free 범주는 아직 프로세스에 할당되지 않았거나 프로세스가 종료된 후 해제된 메모리 페이지를 나타냅니다. 이 섹션은 아직 사용되지 않은 메모리와 이미 해제된 메모리를 모두 보여주지만 실제로 아직 사용되지 않은 메모리는 다른 범주인 "제로 페이지"(제로 페이지)에 속합니다.
여유 메모리 문제에 대해
이제 메모리 관리자가 어떻게 작동하는지에 대한 기본 아이디어를 얻었으므로 Windows 7의 메모리 관리 시스템에 대한 일반적인 오해를 간단히 살펴보겠습니다. C에서 여유 메모리 섹션은 히스토그램에서 가장 작은 섹션 중 하나입니다. 그러나 이를 근거로 Windows 7이 너무 많은 메모리를 소비하고 사용 가능한 메모리가 너무 적으면 시스템이 제대로 작동하지 않을 것이라고 가정하는 것은 실수입니다.
사실, 그 반대입니다. 메모리 관리에 대한 Windows 7 접근 방식의 맥락에서 여유 메모리는 쓸모가 없습니다. 관련된 메모리가 많을수록 좋습니다. Windows 7은 메모리를 최대로 채우고 우선 순위 시스템을 사용하여 한 범주에서 다른 범주로 페이지를 지속적으로 이동함으로써 효율성을 높이고 데이터가 페이지 파일에 들어가는 것을 방지하여 메모리 부족 페이지 오류로 인한 성능 저하를 방지합니다.
메모리 모니터링
제어 시스템을 보고 싶어 윈도우 메모리 7 실행 중? 컴퓨터를 재부팅하고 시작 직후 Windows 7 리소스 모니터를 엽니다.메모리 탭으로 이동하여 물리적 메모리 히스토그램의 섹션 비율에 주의하십시오.
그런 다음 응용 프로그램 실행을 시작합니다. 달리면서 히스토그램의 변화를 관찰하십시오. 최대한 빨리 실행 더 많은 애플 리케이션, 하나씩 닫고 물리적 메모리 히스토그램의 섹션 비율이 어떻게 변하는지 관찰하십시오.
이 극단적인 실험을 통해 Windows 7이 특정 컴퓨터의 메모리를 관리하는 방법을 이해하고 Windows 7 리소스 모니터를 사용하여 일상적인 작업 조건에서 메모리 할당을 모니터링할 수 있습니다.
어떻게 생각해?
Windows 7 리소스 모니터를 사용하여 메모리 할당을 모니터링하는 아이디어가 마음에 드십니까? 의견에 의견을 공유하십시오!
새 장치를 연결했지만 작업이 서두르지 않거나 이전 장치가 작동을 멈췄거나 제대로 작동하지 않습니다. 이러한 경우 어떻게 해야 합니까? 모든 것을 다시 설치하시겠습니까? 번거롭고 항상 필요한 것은 아닙니다. 그 이유와 제거 방법을 찾는 방법은 무엇입니까? 매우 간단합니다. 사실은 Windows 제품군의 운영 체제에서 뿐만 아니라 일부기기 관리자, 사실, 당신이 그를 그렇게 부를 수 있다면, 매우 필요하고 유용한 관리자입니다. 여기 있습니다. 문제의 원인을 찾는 데 도움이 되며 내 치트 시트가 문제를 해결합니다. 따라서 위의 내용에서기기 관리자 코드 형태의 장치 작동에 오류의 흔적이 있습니다. 오류 코드를 알면 문제의 원인을 쉽게 파악할 수 있습니다. 초심자에게 코드는 이해할 수없고 의미없는 숫자 일뿐입니다. 그러나 지식이 풍부한 사용자는 많은 것을 알 수 있습니다. 나는 이 주제에 대해 조금이나마 밝히기 위해 최선을 다할 것입니다.
장치 오류를 보려면 먼저 장치 관리자 자체에 들어가야 합니다. 이렇게 합니다. 로그인제어판 메뉴에서시작 ( 할 수 있다,나의 컴퓨터 , 마우스 오른쪽 버튼으로 클릭속성 — 기기 관리자, 명령의 작업을 통해서도 가능합니다.실행하다 , 하지만 왜 일을 복잡하게 만드는가). 우리가 통해 입력하면패널 관리 , 경로는 다음과 같습니다.시스템 - 하드웨어 - 장치 관리자 . 메뉴를 입력하여 선택기기 관리자 , 관심 있는 장치 유형(키보드, 프린터, 모뎀 등)을 두 번 클릭하면 결과적으로 이 유형에 포함된 장치가 표시됩니다. 필요한 장치를 선택하고 두 번 클릭하십시오. 정보 탭의 열을 봅니다.일반, 장치 상태. 장치 작동에 문제가 있는 경우 여기에 오류 코드로 표시됩니다. 그래서 우리는 숫자와 숫자를 봅니다. 그들은 무엇을 의미합니다. 아래에서 오류 및 가능한 솔루션에 대한 간략한 설명과 함께 전체 오류 목록을 제공합니다. 오류 코드는 빨간색으로 강조 표시되고 설명은 파란색으로, 제거는 검은색으로 강조 표시됩니다.
코드 1장치 설정에 문제가 있습니다. 설정이 올바르지 않거나 드라이버가 없습니다. 버튼을 클릭 드라이버 업데이트 , 마법사를 시작하려면하드웨어 업그레이드 . 드라이버가 전혀 없으면 설치하십시오.
코드 3옵션으로 장치가 올바르게 작동하기에 충분한 RAM이 없기 때문에 장치 드라이버가 손상되었습니다.1. 손상된 드라이버를 제거하고 새 드라이버를 설치하십시오. 이렇게 하려면 속성 - 드라이버 - 삭제를 선택한 다음 마법사의 지시를 따릅니다. 재부팅 우리는 다시 열립니다기기 관리자 — 동작 — 하드웨어 구성 업데이트 마법사의 지시를 따릅니다. 2. 문제가 가상 메모리 부족인 경우 실행 중인 응용 프로그램을 닫아 메모리를 언로드합니다. 우리가 들어가야 할 메모리의 상태를 확인하려면작업 관리자 , 이렇게 하려면 키 조합을 누르십시오.Ctrl+Shift+Esc마우스 오른쪽 버튼을 클릭하여 가상 메모리 설정을 볼 수 있습니다.내 컴퓨터 — 속성 - 고급 - 성능 - 설정(매개변수) . 스왑 파일을 늘릴 수 있지만(이 작업이 내 블로그의 이전 기사 중 하나에서 어떻게 수행되는지 설명했습니다) 이것은 과감한 조치와는 거리가 멉니다. 당신은 증가해야합니다 램. 이 작업을 수행하는 방법은 이 게시물의 범위를 벗어나는 별도의 주제입니다.
코드 10레지스트리 키에 장치별 설정이 있습니다.실패 이유 문자열,이 매개변수의 값은 오류 데이터에 표시됩니다. 즉, 매개변수와 같은 매개변수가 없으면 오류 코드가 나타납니다. 즉, 장치를 시작할 수 없습니다. 위와 같이 드라이버를 업데이트 합니다. 또는 새로운 것을 설치하십시오.
코드 12이 장치에 필요한 리소스 재고가 없습니다. 실행 중인 다른 장치를 하나 이상 비활성화하여 이를 수행하려면 문제 해결 마법사를 사용하십시오. 지침을 따르면 충돌하는 장치가 비활성화됩니다. (즉, 속성 - 일반 - 문제 해결을 상기시켜 드리겠습니다.)
코드 14이 장치가 작동하려면 PC를 다시 시작해야 합니다.
코드 16장치 작동에 필요한 리소스를 식별할 수 없으며 장치가 완전히 구성되지 않았습니다. 장치에 추가 리소스를 할당해야 합니다. 그러나 장치가 다음과 같은 경우 문제 없이 수행할 수 있습니다.플러그 앤 플레이.
속성 - 리소스. 리소스 목록에 ? 기호가 있는 리소스가 있으면 이를 선택하여 선택한 장치에 할당합니다. 리소스를 변경할 수 없는 경우설정 변경 , 이 기능을 사용할 수 없는 경우 확인란을 선택 취소합니다.자동 설정
코드 18장치 드라이버를 다시 설치하십시오. 우리는 드라이버를 업데이트하거나 제거하려고 시도합니다. 예에서와 같이코드 3.
코드 19장치 설정에 대한 레지스트리 정보가 충분하지 않거나 설정이 손상되었습니다. 운영문제 해결 마법사 그의 지시를 따르십시오. 도움이되지 않습니다. 위에서 언급 한대로 장치를 다시 설치하십시오. (코드 3). 또는 작동하지 않으면 다운로드마지막으로 성공한 구성입니다. 이것이 도움이되지 않으면 시스템 레지스트리를 편집해야하므로 전문가의 도움이 필요합니다. 지식과 경험이 부족하면 스스로 할 수 있는 일이 없으며 시스템 관리자가 이를 확인시켜 줄 것입니다. 알면서도 능력이 있는 그는 나 없이도 그것을 할 수 있는 방법을 알고 있습니다. 그리고 경험이 없는 사람은 시도하지 않는 것이 좋습니다. 레지스트리는 운영 체제의 핵심이며 숙련된 전문가 또는 그의 지도 하에 운영 체제에 대한 작업을 수행해야 합니다. 어떤 식으로든 나는 누군가의 기분을 상하게 하고 싶지는 않지만, 시스템 레지스트리로 작업하지 않았고 컴퓨터가 당신에게 소중한 경우, 내 조언은 그곳으로 가는 길을 잊어버리는 것입니다. 나는 전문가를 위해 쓰는 것이 아니라 필요하지 않지만 일반 사용자를 위해 작성합니다. 물론 거기에 어떻게, 무엇을 해야 하는지는 제가 쓸 수 있지만, 이것은 손가락에 대한 설명이 될 것이며, 작은 실수로 인해 컴퓨터에 손상을 입힌 경우 책임을 져야 합니다. 나는 전혀 필요하지 않으며 당신도 필요하지 않습니다.
코드 21 장치가 시스템에서 제거됩니다. 즉, 운영 체제가 장치를 제거하려고 하지만 프로세스가 아직 완료되지 않았습니다.
몇 초 동안 일시 중지하고 키를 누릅니다.
코드 22 장치가 비활성화되었습니다. 장치가 켜져 있어야 합니다.작업 - 활성화 추가 지침을 따르십시오.
코드 24 장치가 없거나 잘못 설치되었거나 드라이버가 실패했으며 장치를 제거할 준비가 되었을 수 있습니다. 장치를 제거하고 다시 설치하십시오.
코드 28 드라이버가 없습니다. 드라이버를 설치합니다. 이렇게 하려면 드라이버를 업데이트해야 합니다. 단계는 코드 1의 지침과 같습니다.
코드 29비활성화된 장치 . 장치가 작동하도록 허용해야 합니다. 설정바이오스,장치 사용 지침을 읽으십시오.
코드 31시스템이 이 장치의 드라이버를 로드할 수 없습니다. . 위에서 설명한 대로 드라이버를 업데이트하십시오.
코드 32이 장치의 드라이버는 시스템 레지스트리에서 비활성화되어 있습니다. . 드라이버 제거 및 재설치(위에서 설명)
코드 33운영 체제에서 이에 대한 리소스를 결정할 수 없습니다. 장치 . 장치를 설정하거나 교체하십시오.
코드 34운영 체제에서 설정을 결정할 수 없습니다. 장치 . 함께 제공된 하드웨어 설명서를 검토하고 리소스 탭에서 수동으로 구성합니다.
코드 35PC 펌웨어에는 제대로 작동하는 데 필요한 정보가 없습니다. 장치 작동 . 업데이트 필요바이오스.이 작업을 수행하는 방법에 대한 지침은 공급업체에 문의하되 숙련된 장인의 서비스를 이용하는 것이 좋습니다.
코드 36장치가 작동하려면 인터럽트가 필요합니다.PCI,장치가 인터럽트로 설정되어 있습니다.이사,혹은 그 반대로도 . 설정을 변경해야 합니다바이오스,숙련 된 마스터를 참조하십시오.
코드 37운영 체제가 이 장치의 드라이버를 인식하지 못합니다. . 드라이버를 다시 설치하십시오(위에 설명됨).
코드 38OS는 다음과 같은 이유로 장치의 드라이버를 로드할 수 없습니다. 이전 버전의 드라이버가 메모리에 남아 있습니다. . PC를 다시 시작해야 합니다. 문제 해결 마법사가 시작되지 않으면(속성 - 일반 - 문제 해결) 실행하고 마법사의 지시를 따릅니다. 필수 재부팅 후.
코드 39OS가 장치 드라이버를 로드할 수 없습니다. 드라이버가 손상되었습니다 아니면 전혀 . 위에서 설명한 대로 드라이버를 다시 설치합니다.
코드 40시스템 레지스트리에 정보가 없거나 정보에 오류가 포함되어 있어 장비에 액세스할 수 없습니다. . 드라이버를 다시 설치하십시오.
코드 41장치가 감지되지 않음 . 문제 해결 마법사(위에서 설명)를 실행하고, 도움이 되지 않으면 하드웨어 구성을 업데이트(위 참조)하거나 드라이버를 업데이트하십시오. 그렇지 않은 경우 최신 버전의 드라이버를 설치하십시오.
코드 42시스템에 이미 그러한 드라이버가 있습니다. 즉 두 가지가 있다. 다른 장치버그로 인해 같은 이름으로 . PC를 다시 시작합니다.
코드 43작동 문제로 인한 장치 중지 . 문제 해결 마법사를 실행하고 지시를 따릅니다.
코드 44앱 또는 서비스가 기기를 중지했습니다. . PC를 다시 시작합니다.
코드 45장치가 연결되지 않음 . 장치를 연결합니다.
코드 46이 오류는 운영 체제가 종료될 때 나타납니다. 아무 것도 할 필요가 없으며 다음에 OS를 시작할 때 모든 것이 작동합니다.
코드 47 장치가 안전하게 제거되도록 준비되었지만 아직 제거되지 않았습니다(예: 플래시). . 장치를 제거한 다음 다시 연결하고 PC를 다시 시작하십시오.
코드 48장치 또는 소프트웨어가 차단됨 . 드라이버를 업데이트하거나 새 드라이버를 설치하십시오.
코드 49허용 가능한 레지스트리 설정을 초과하는 큰 시스템 레지스트리 하이브가 있기 때문에 장치를 시작할 수 없습니다. . 레지스트리에서 사용하지 않는 장치를 삭제하십시오. 다음을 수행할 수 있습니다. 장치 관리자 - 보기 - 숨겨진 장치 표시. 여기에 PC에 연결되지 않은 숨겨진 장치가 표시됩니다. 제거할 장치를 선택하고 장치 속성 - 드라이버 - 제거를 클릭한 다음 마법사의 지시에 따라 PC를 다시 시작합니다.
자신의 손으로 PC에서 바이러스를 제거하기 위한 설명서입니다. 바이러스를 제거하는 모든 방법은 실제로 작동하고 실제로 입증되었으며, 단계별 지시삽화 포함 - 초등학생도 쉽고 간단하게 접근할 수 있음 + 비디오 자습서 + ultraiso 프로그램 부트로더 생성 + 바이러스 퇴치 도구에 대한 유용한 링크. 아카이브 다운로드
많은 컴퓨팅 시스템은 멀티태스킹 운영 체제가 각 작업에 메모리를 할당하고 사용자 프로그램으로부터 보호하는 메모리 관리자(메모리 관리자, MMU라고도 함)의 일부 형태를 통합합니다. 예를 들어, 응용 프로그램이 너무 크거나 너무 작은 인덱스 값을 사용하여 주소 계산에 오류를 범할 때 일반적인 문제가 발생합니다. 시스템에 보호 장치가 없는 경우 이러한 종류의 오류는 운영 체제의 프로그램에 포함된 코드를 변경하거나 장치 테이블을 수정할 수 있으며 승인되지 않은 쓰기와 같은 치명적인 결과를 초래하는 예기치 않은 장치 시작을 유발할 수도 있습니다. 데이터 파일에.
의도하지 않은 파괴로부터 운영 체제를 보호하는 것 외에도 메모리 관리자는 자동 프로그램 재배치를 제공합니다. 메모리 관리자는 사용자 프로그램의 논리적 또는 프로그램 주소를 물리적 또는 하드웨어 주소로 변환합니다. 이러한 주소는 논리 주소가 가리키는 위치와 완전히 다른 메모리에 위치할 수 있습니다. 주소 변환은 사용자의 주소 공간에서 운영 체제와 보호된 I/O 장치를 완전히 제거합니다. 사용자의 주소 공간 외부에서 메모리를 읽거나 쓰려고 하면 프로세서가 사용자 프로그램을 충돌시킵니다.
정보는 일반적으로 고정된 수의 비트로 구성된 청크로 전송됩니다. 80386 MP는 청크 크기를 16비트로 줄이도록 지시하지 않는 한 32비트 청크를 사용합니다. 이러한 부분을 단어라고 합니다. 메모리 시스템에 단어를 쓰는 과정을 메모리 입력,기억에서 단어를 얻는 과정 - 메모리에서 읽기.
메모리 액세스 방법에는 랜덤과 순차의 두 가지가 있습니다. 순차 액세스는 단어가 미리 결정된 순서로 액세스되는 메모리 시스템에서 사용됩니다. 반면에 임의 액세스는 거의 같은 시간에 임의의 순서로 스토리지 시스템의 단어에 액세스할 수 있는 가능성을 포함합니다.
메모리가 아무리 완벽하더라도 신호가 장치 간에 전달되면 전파가 지연됩니다. 전파 지연은 논리 신호가 논리 체인을 형성하는 장치 또는 일련의 장치를 통해 이동하는 데 필요한 시간으로 정의됩니다. 이 지연은 또한 미세 회로 사이의 모든 상호 연결 라인을 통과하는 신호를 고려합니다.
직접 메모리 액세스(DMA)
직접 메모리 액세스를 사용하면 외부 장치와 메모리가 프로그램 개입 없이 데이터를 직접 교환할 수 있습니다. DMA는 최대 I/O 속도와 최대 프로세스 병렬 처리를 제공합니다. 인터럽트 I/O 및 소프트웨어 제어 I/O가 프로세서를 통해 데이터를 전송하는 동안 DMA의 경우 데이터가 I/O 장치와 메모리 간에 직접 전송됩니다.
데이터 버스의 수를 최소화하기 위해 RPS에 대한 기존 백본을 사용할 수 있도록 특별한 조치가 취해집니다. 이러한 조치는 프로세서가 고속도로를 해제하고 외부 장치가 이를 캡처하여 데이터를 전송하는 데 사용한다는 사실로 구성됩니다.
RAP 기간 동안 프로그램 실행은 일반적으로 일시 중단됩니다. RAP 요청 제어 라인이 활성화되는 즉시 트렁크가 해제됩니다. 프로세서는 현재 작업을 종료하고 주소 및 데이터 라인을 해제하며 정의되지 않은 제어 신호의 우발적인 디코딩을 방지하기 위해 제어 라인 중 하나에 신호를 표시합니다.
I/O 인터페이스는 특수 레지스터를 사용하여 데이터를 메모리로 직접 전송합니다. 데이터를 전송해야 할 때 인터페이스는 프로세서에 메모리 주기를 요청합니다. 승인되면 인터페이스는 데이터를 메모리로 직접 전송하는 반면 프로세서는 한 메모리 주기 동안 일시 중지합니다. 이 전송을 수행하는 논리를 호출합니다. 채널.
채널에는 데이터가 전송되거나 전송되는 메모리 위치의 주소를 저장하기 위한 레지스터가 포함되어 있으며 대부분의 경우 채널에는 직접 전송 횟수를 계산하는 워드 카운터도 포함되어 있습니다. 또한 채널에는 제어 신호 교환, 동기화 및 기타 보조 작업을 제공하는 회로가 포함되어야 합니다. 무화과에. 13.4는 CPU와 PDP 컨트롤러 간의 논리적 연결을 보여줍니다.
RAP 구성 요소. DMA의 주요 구성 요소는 요청 트리거, 주소 레지스터, 카운터 및 주변 장치에서 사용하는 데이터 레지스터입니다. DMA 채널을 통한 데이터 전달에는 다음과 같은 여러 단계가 포함됩니다. 1) 백본 점유 주기가 반복되는 동안 DMA를 수행하기 위한 DMA 논리 초기화 2) RAP의 프로그램 작동 활성화와 관련하여 비동기식; 3) 전송 종료 알림(카운터의 신호 또는 장치 상태 변경의 결과) 4) 전송이 끝날 때 "정리" 프로그램을 호출합니다. 5) 메인 프로그램에 제어를 반환하는 인터럽트 핸들러의 도움으로 DMA를 완료합니다.
데이터 전송 차단. 고속 장치에 대한 DMA 절차는 블록 단위의 데이터 전송을 사용합니다. 현재 프로그램을 실행함으로써 프로세서는 데이터 블록의 전송을 시작하고 블록을 구성하는 단어의 수를 결정합니다. 그러나 실제 단어의 전송은 별도의 장치인 PMA 컨트롤러의 제어 하에 수행됩니다. DMA 채널을 통한 최대 블록 전송 속도는 메모리 주기(읽기 또는 쓰기)의 지속 시간과 DMA 컨트롤러의 속도에 의해서만 제한됩니다.
메모리 주기를 점유하는 RAP. 프로그램은 주소 카운터에 시작 주소를 배치하고 워드 카운터에 워드 수를 배치하여 블록 전송을 시작합니다. 및 실행 명령을 발행하는 단계를 포함한다. 이러한 유형의 RAP는 종종 RAP라고 합니다. 메모리 사이클을 점유하고,매번 약 한 기계 사이클 동안 프로그램 실행을 일시 중지하기 때문입니다.
메모리 주기가 있는 DMA를 사용할 때 데이터 전송은 CPU가 수행하는 다른 프로세스와 병렬로 수행됩니다. 여기서 일련의 동작은 DMA 컨트롤러가 프로세서에서 메모리 사이클을 차지하여 작업 속도를 늦추는 점을 제외하고 블록 전송과 동일합니다(DMA 채널을 통한 블록 데이터 전송도 소요 DMA가 별도의 버스에서 사용되지 않는 한 메모리 사이클).
Windows에서 프로세스가 시작되면 EXE 및 DLL 파일 이미지를 표시하는 많은 페이지가 다른 프로세스에서 사용되고 있기 때문에 이미 메모리에 있을 수 있습니다. 쓰기 가능한 이미지 페이지에는 수정이 필요할 때까지 공유할 수 있도록 "기록 중 복사"라는 레이블이 지정됩니다. 운영 체제가 이미 실행 중인 EXE를 인식하면 페이지 링크 패턴을 작성할 수 있습니다(Microsoft에서 Super-Fetch라고 부르는 기술 사용). 이 기술은 필요한 많은 페이지를 미리 미리 가져오려고 시도합니다(프로세스가 아직 페이지 오류를 수신하지 않았지만). 이것은 응용 프로그램 시작의 대기 시간을 줄입니다(디스크에서 페이지 읽기는 이미지의 초기화 코드 실행에 겹쳐집니다). 이 기술은 디스크 드라이버가 읽기 작업을 보다 쉽게 오케스트레이션하여(필요한 검색 시간을 줄이기 위해) 디스크 출력 성능을 향상시킵니다. 이 프리페칭 프로세스는 시스템 부팅 중에도 사용되며, 백그라운드 애플리케이션이 포그라운드로 전환되고 시스템이 최대 절전 모드에서 재개될 때도 사용됩니다.
정방향 페이징은 메모리 관리자에서 지원되지만 별도의 시스템 구성 요소로 구현됩니다. 교환된 페이지는 프로세스의 페이지 테이블에 삽입되지 않고 대신 대기 목록에 삽입되어 디스크 액세스 없이 프로세스에 빠르게 삽입될 수 있습니다.
매핑되지 않은 페이지는 다소 다릅니다. 파일에서 읽어서 초기화되지 않습니다. 대신 매핑되지 않은 페이지에 처음 액세스할 때 메모리 관리자는 새로운 물리적 페이지를 제공합니다(보안상의 이유로 내용이 0으로 채워져 있는지 확인). 후속 페이지 폴트에서 매핑되지 않은 페이지를 메모리에서 찾거나 스왑 파일에서 읽어야 할 수 있습니다.
메모리 관리자의 요청 페이징은 페이지 폴트에 의해 제어됩니다. 모든 오류는 커널에 인터럽트를 발생시킵니다. 그런 다음 커널은 기계 독립적 핸들(발생한 일을 보고함)을 빌드하고 런타임 메모리 관리자에 전달합니다. 그런 다음 메모리 관리자는 액세스가 유효한지 확인합니다. 실패한 페이지가 커밋된 영역 내에 있으면 VAD 목록에서 주소를 조회하고 프로세스의 페이지 테이블 항목을 찾습니다(또는 생성). 공유 페이지의 경우 메모리 관리자는 프로토타입 페이지 테이블 항목(세그먼트 개체와 연결됨)을 사용하여 새 프로세스 페이지 테이블 항목을 채웁니다.
페이지 테이블 항목 형식은 프로세서 아키텍처에 따라 다릅니다. x86 및 x64 프로세서의 경우 표시된 페이지의 요소가 그림에 나와 있습니다. 11.17. 요소가 유효한 것으로 표시되면 해당 내용이 하드웨어에서 해석되므로 가상 주소가 유효한 물리적 페이지로 변환될 수 있습니다. 렌더링되지 않은 페이지에도 자체 요소가 있지만 유효하지 않은 것으로 표시되고 하드웨어는 나머지 요소를 무시합니다. 소프트웨어 형식은 하드웨어 형식과 약간 다르며 메모리 관리자에 의해 결정됩니다. 예를 들어 매핑되지 않은 페이지(사용하기 전에 배치하고 0으로 설정해야 함)의 경우 이 사실이 페이지 테이블 항목에 기록됩니다.
페이지 테이블 항목의 두 가지 중요한 비트는 하드웨어에 의해 직접 업데이트됩니다. 액세스 비트(A)와 변경된 비트(D)입니다. 이 비트는 주어진 페이지 매핑을 사용하여 페이지에 액세스하고 해당 액세스로 페이지를 수정할 수 있는지 여부를 추적합니다. 메모리 관리자가 액세스 비트를 사용하여 LRU(Least-Recently Used) 페이징을 구현할 수 있으므로 시스템 성능이 정말 향상됩니다. LRU의 원칙은 가장 오래 사용되지 않은 페이지가 가까운 장래에 재사용될 가능성이 가장 낮다는 것입니다. 액세스 비트를 통해 메모리 관리자는 페이지에 액세스했는지 확인할 수 있습니다. "수정된" 비트는 메모리 관리자에게 페이지가 수정되었을 수 있음(또는 더 중요하게는 수정되지 않음)을 알려줍니다. 디스크에서 읽은 후 페이지가 수정되지 않은 경우 메모리 관리자는 해당 내용을 디스크에 쓸 필요가 없습니다(다른 용도로 사용하기 전에).
x86 및 x64 아키텍처 모두 64비트 페이지 테이블 항목을 사용합니다(그림 11.17 참조).
각 페이지 부재는 다음 다섯 가지 범주 중 하나로 분류할 수 있습니다.
1. 페이지가 고정되어 있지 않습니다.
2. 권한을 위반한 페이지에 접근을 시도합니다.
3. 기록 중 복사 페이지 수정을 시도합니다.
1. 스택을 늘려야 합니다.
2. 페이지가 고정되어 있지만 현재 표시되지 않습니다.
첫 번째와 두 번째 경우는 프로그래밍 오류입니다. 프로그램이 유효한 매핑이 없는 주소를 사용하려고 하거나 잘못된 작업(예: 읽기 전용 페이지에 쓰기 시도)을 수행하려고 시도하는 경우 이를 액세스 위반이라고 하며 일반적으로 과정. 액세스 위반은 해제되고 프로세스에서 분리된 메모리에 대한 액세스를 포함하여 잘못된 포인터 값의 결과인 경우가 많습니다.
세 번째 경우는 두 번째 경우와 동일한 증상(읽기 전용 페이지에 쓰려는 시도)이 있지만 처리 방법이 다릅니다. 페이지가 기록 중 복사로 표시되었기 때문에 메모리 관리자는 액세스 위반을 발생시키지 않습니다. 대신 현재 프로세스에 대한 페이지의 개인 복사본을 만든 다음 페이지에 쓰려고 시도한 스레드로 돌아갑니다. 스레드는 쓰기 작업을 재시도하며 이제 페이지 오류 없이 완료됩니다.
네 번째 경우는 스레드가 스택에 값을 푸시하고 아직 할당되지 않은 페이지에 도달할 때 발생합니다. 메모리 관리자는 이것을 특별한 경우로 인식합니다. 스택용으로 예약된 가상 페이지에 공간이 있는 한 메모리 관리자는 새 페이지를 제공하고 0으로 만들고 프로세스에 매핑합니다. 스레드가 실행을 재개하면 액세스를 다시 시도하고 이번에는 성공합니다.
마지막으로 다섯 번째 경우는 일반 페이지 폴트입니다. 그러나 여러 하위 변형이 있습니다. 페이지가 파일에 매핑되면 메모리 관리자는 데이터 구조(예: 세그먼트 개체와 연결된 프로토타입 페이지 테이블)를 검사하여 메모리에 복사본이 없는지 확인해야 합니다. 복사본이 있는 경우(예: 다른 프로세스, 대기 목록 또는 수정된 페이지 목록에) 단순히 공유하게 됩니다(이를 수행하려면 기록 중 복사로 표시해야 할 수 있습니다. 변경 사항이 공유되지 않는 경우).가정). 아직 복사본이 없으면 메모리 관리자는 그 순간에 다른 페이지가 디스크에서 전송되지 않는 한 사용 가능한 물리적 페이지를 할당하고 디스크에서 파일의 페이지를 복사하기 위해 준비합니다(이 경우 이 전송이 완료될 때까지 기다립니다).
메모리 관리자가 디스크에서 읽는 것이 아니라 메모리에서 올바른 페이지를 찾아 페이지 오류를 처리할 수 있으면 오류를 소프트 오류라고 합니다. 디스크에서 복사본이 필요한 경우 이것은 하드 결함입니다. 소프트 버그는 훨씬 저렴하고 애플리케이션 성능에 거의 영향을 미치지 않습니다(하드 버그에 비해). 소프트 오류는 공유 페이지가 이미 다른 프로세스에 매핑되었거나 단순히 비워진 새 페이지가 필요하거나 원하는 페이지가 프로세스의 작업 집합에서 제거되었지만 재사용되기 전에 회수되었기 때문에 발생할 수 있습니다. 실제 메모리 크기를 효과적으로 늘리기 위해 페이지가 압축되었기 때문에 소프트 오류가 발생할 수도 있습니다. 대부분의 CPU 구성의 경우 디스크에서 페이지를 읽어야 하는 값비싼 I/O(성능 및 전력 측면에서)를 낭비하는 것보다 현재 시스템에서 메모리 및 I/O를 압축하는 것이 더 효율적입니다.
물리적 페이지가 더 이상 프로세스의 페이지 테이블에 매핑되지 않으면 세 가지 목록(무료, 수정됨 또는 예약됨) 중 하나에 배치됩니다. 다시는 필요하지 않은 페이지(예: 종료 프로세스의 스택 페이지)는 즉시 해제됩니다. 다시 페이지 폴트가 발생할 수 있는 페이지는 수정된 목록 또는 예약 목록에 있습니다(디스크에서 마지막으로 읽은 이후 이 페이지를 표시한 페이지 테이블 요소에 대해 "수정된" 비트가 설정되었는지 여부에 따라 다름). 수정된 목록의 페이지는 결국 디스크에 기록된 다음 예약 목록으로 이동됩니다.
메모리 관리자는 필요에 따라 페이지를 할당할 수 있습니다(사용 가능한 페이지 또는 예약된 페이지 목록 사용). 페이지를 할당하고 디스크에서 복사하기 전에 메모리 관리자는 항상 예약 및 수정된 페이지 목록을 확인하여 페이지가 이미 메모리에 있는지 확인합니다. Windows의 페이징 체계는 미래의 하드 오류를 소프트 오류로 변환합니다(필요할 수 있는 페이지를 읽고 이를 대체 목록에 추가). 메모리 관리자는 자체적으로 소량의 페이징을 수행합니다(개별 페이지가 아닌) 연속 페이지 그룹에 액세스합니다. 추가 페이지는 예약 페이지 목록에 즉시 배치됩니다. 메모리 관리자의 오버헤드가 I/O 작업을 수행하는 비용보다 훨씬 적기 때문에 이것은 낭비가 아닙니다. 전체 페이지 클러스터를 읽는 것은 단일 페이지를 읽는 것보다 약간 더 비쌉니다.
그림의 페이지 테이블 요소. 11.17은 물리적(가상이 아닌) 페이지 번호를 나타냅니다. 커널은 페이지 테이블 항목(및 페이지 디렉토리)을 업데이트하기 위해 가상 주소를 사용해야 합니다. Windows는 페이지 디렉토리의 self-map 요소를 사용하여 현재 프로세스의 페이지 테이블과 페이지 디렉토리를 커널의 가상 주소 공간에 매핑합니다(그림 11-18). 페이지 디렉토리 항목을 페이지 디렉토리(자체 맵)에 매핑하여 페이지 디렉토리 항목(그림 11.18a) 및 페이지 테이블 항목(그림 11.18b)을 참조하는 데 사용할 수 있는 가상 주소를 얻습니다. 자체 맵은 프로세스당 8MB의 커널 가상 주소를 차지합니다(x86 프로세서에서). 단순화를 위해 이 그림은 32비트 PTE 레코드(페이지 테이블 항목)에 대한 x86 자체 맵 요소를 보여줍니다. 실제로 Windows는 64비트 PTE를 사용하므로 시스템은 4GB 이상의 물리적 메모리를 사용할 수 있습니다. 32비트 PTE 항목의 경우 자체 맵 요소는 페이지 디렉토리에서 단 하나의 PDE 항목(페이지 디렉토리 항목)을 사용하므로 8MB가 아닌 4MB의 주소만 차지합니다.