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으로 만들고 프로세스에 매핑합니다. 스레드가 실행을 재개하면 액세스를 다시 시도하고 이번에는 성공합니다.

마지막으로 다섯 번째 경우는 일반 페이지 폴트입니다. 그러나 여러 하위 변형이 있습니다. 페이지가 파일에 매핑되면 메모리 관리자는 데이터 구조(예: 세그먼트 개체와 연결된 프로토타입 페이지 테이블)를 검사하여 메모리에 복사본이 없는지 확인해야 합니다. 복사본이 있는 경우(예: 다른 프로세스, 대기 목록 또는 수정된 페이지 목록에) 단순히 공유하게 됩니다(이를 수행하려면 기록 중 복사로 표시해야 할 수 있습니다. 변경 사항이 공유되지 않는 경우).가정). 아직 복사본이 없으면 메모리 관리자는 그 순간에 다른 페이지가 디스크에서 전송되지 않는 한 사용 가능한 물리적 페이지를 할당하고 디스크에서 파일의 페이지를 복사하기 위해 준비합니다(이 경우 이 전송이 완료될 때까지 기다립니다).

메모리 관리자가 디스크에서 읽는 것이 아니라 메모리에서 올바른 페이지를 찾아 페이지 오류를 처리할 수 있는 경우 오류를 소프트 오류라고 합니다. 디스크에서 사본이 필요한 경우 이것은 하드 결함입니다. 소프트 버그는 훨씬 저렴하고 애플리케이션 성능에 거의 영향을 미치지 않습니다(하드 버그에 비해). 공유 페이지가 이미 다른 프로세스에 매핑되었거나 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의 주소만 차지합니다.

새 장치를 연결했지만 작업이 서두르지 않거나 이전 장치가 작동을 멈췄거나 제대로 작동하지 않습니다. 이러한 경우 어떻게 해야 합니까? 모든 것을 다시 설치하시겠습니까? 번거롭고 항상 필요한 것은 아닙니다. 그 이유와 제거 방법을 찾는 방법은 무엇입니까? 매우 간단합니다. 사실은 Windows 제품군의 운영 체제에서 뿐만 아니라 일부기기 관리자, 사실, 당신이 그를 그렇게 부를 수 있다면, 매우 필요하고 유용한 관리자입니다. 여기 있습니다. 문제의 원인을 찾는 데 도움이 되며 내 치트 시트가 문제를 해결합니다. 따라서 위의 내용에서기기 관리자 코드 형태의 장치 작동에 오류의 흔적이 있습니다. 오류 코드를 알면 문제의 원인을 쉽게 파악할 수 있습니다. 초심자에게 코드는 이해할 수없고 의미없는 숫자 일뿐입니다. 그러나 지식이 풍부한 사용자는 많은 것을 알 수 있습니다. 나는 이 주제에 대해 조금이나마 밝히기 위해 최선을 다할 것입니다.


장치 오류를 보려면 먼저 장치 관리자 자체에 들어가야 합니다. 이렇게 합니다. 로그인제어판 메뉴에서시작 ( 할 수 있다,나의 컴퓨터 , 마우스 오른쪽 버튼으로 클릭속성 기기 관리자, 명령의 작업을 통해서도 가능합니다.실행하다 , 하지만 왜 일을 복잡하게 만드는가). 우리가 통해 입력하면패널 관리 , 경로는 다음과 같습니다.시스템 - 하드웨어 - 장치 관리자 . 메뉴를 입력하여 선택기기 관리자 , 관심 있는 장치 유형(키보드, 프린터, 모뎀 등)을 두 번 클릭하면 결과적으로 이 유형에 포함된 장치가 표시됩니다. 필요한 장치를 선택하고 두 번 클릭하십시오. 정보 탭의 열을 봅니다.일반, 장치 상태. 장치 작동에 문제가 있는 경우 여기에 오류 코드로 표시됩니다. 그래서 우리는 숫자와 숫자를 봅니다. 그들은 무엇을 의미합니다. 내가 제시하는 아래 전체 목록실수, 간단한 설명실수와 가능한 방법제거. 오류 코드는 빨간색으로 강조 표시되고 설명은 파란색으로, 제거는 검은색으로 강조 표시됩니다.

코드 1기기 설정 문제 올바른 설정또는 드라이버가 없습니다. 버튼을 클릭 드라이버 업데이트 , 마법사를 시작하려면하드웨어 업그레이드 . 드라이버가 전혀 없으면 설치하십시오.

코드 3옵션이 충분하지 않아 손상된 장치 드라이버 랜덤 액세스 메모리장치의 올바른 작동을 위해.1. 손상된 드라이버를 제거하고 새 드라이버를 설치하십시오. 이렇게 하려면 속성 - 드라이버 - 삭제를 선택한 다음 마법사의 지시를 따릅니다. 재부팅 우리는 다시 열립니다기기 관리자 동작 하드웨어 구성 업데이트 그리고 주인의 지시를 따른다. 2. 문제가 부족한 경우 가상 메모리, 실행 중인 응용 프로그램을 닫아 메모리를 언로드합니다. 우리가 들어가야 할 메모리의 상태를 확인하려면작업 관리자 , 이렇게 하려면 키 조합을 누르십시오.Ctrl+Shift+Esc마우스 오른쪽 버튼을 클릭하여 가상 메모리 설정을 볼 수 있습니다.내 컴퓨터 속성 - 고급 - 성능 - 설정(매개변수) . 스왑 파일을 늘릴 수 있지만(이 작업이 내 블로그의 이전 기사 중 하나에서 어떻게 수행되는지 설명했습니다) 이것은 과감한 조치와는 거리가 멉니다. RAM을 늘려야 합니다. 이 작업을 수행하는 방법은 이 게시물의 범위를 벗어나는 별도의 주제입니다.

코드 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에서 바이러스를 제거하기 위한 설명서입니다. 바이러스를 제거하는 모든 방법은 실제로 효과가 있고 실제로 입증되었으며, 단계별 지시삽화 포함 - 초등학생도 쉽고 간단하게 접근할 수 있음 + 비디오 자습서 + 울트라 이소 프로그램 부트로더 생성+ 유용한 링크바이러스 퇴치를 위한 도구. 아카이브 다운로드

Windows 9x 및 Windows NT의 메모리 할당. Windows 7 리소스 모니터 메모리 관련 항목 및 탭을 탐색합니다. Windows 7 리소스 모니터를 사용하여 메모리 할당을 모니터링합니다. 페이징 파일(가상 메모리)의 크기를 늘립니다. Windows를 사용하여 메모리를 확인합니다.

3.1. Windows 9x의 메모리 할당

Windows 9x는 선점형 멀티태스킹 및 그래픽 사용자 인터페이스를 갖춘 32비트 멀티스레드 OS입니다. 부트를 위해 그들은 두 가지 프로세서 작동 모드를 제공하는 MS-DOS 7.0을 사용합니다. 즉, 실제(MSDOS.SYS 파일에서 BootGUI=0이 섹션에 기록됨) 및 보호(BootGUI=1)입니다. 보호 모드는 Windows 9x가 부팅되기 직전에 설정되어 프로세서가 가상 대 물리적 주소 페이징 메커니즘을 사용하여 메모리를 관리하도록 합니다. 가상 주소 공간의 영역은 RAM 또는 디스크에 배치되는 4KB 페이지로 구성됩니다.

가상 주소 공간의 하위 주소는 실시간 장치 드라이버, Windows 상주 프로그램 등과의 호환성을 보장하기 위해 모든 프로세스에서 공유됩니다. 이것은 한편으로는 편리하지만 다른 한편으로는 안정성(하나는 OS의 주요 특성), 모든 프로세스는 이러한 주소에 있는 구성 요소를 손상시킬 수 있습니다.

각 32비트 Windows 응용 프로그램은 고유한 주소 공간에서 실행되지만 올바른 주소가능, 즉 가상 주소 구성은 마이크로프로세서에 내장된 모든 하드웨어 보호 기능을 사용하지 않습니다. 16비트 프로그램은 공통 주소 공간을 공유하며 서로 취약합니다. Windows 9x 메모리 모델은 그림 3.1에 나와 있습니다.

쌀. 3.1. Windows 9x의 OP 배포

하위 64KB RAM은 32비트 프로그램에서 액세스할 수 없지만 16비트 프로그램은 여기에 데이터를 쓸 수 있습니다. 4MB 미만의 주소는 각 응용 프로그램의 주소 공간에 매핑되며 모든 프로세스에서 공유됩니다. 이렇게 하면 이 영역이 우발적인 쓰기로부터 보호되지 않습니다.

Windows 9x의 작동에 필요한 최소 메모리 양은 4MB이지만 실제로 이 양의 메모리로 작업하는 것은 불가능합니다. 페이지 파일 가상 메모리 메커니즘을 구현하는 는 다음 위치에 있습니다. 윈도우 디렉토리가변 크기를 가지며 필요한 경우 시스템 자체에서 변경됩니다. 크기는 시스템 도구(제어판 → 시스템 → 성능 → 파일 시스템)를 사용하여 설정하거나 SYSTEM.INI 파일 섹션에서 설정할 수 있습니다(드라이브 및 파일 이름을 나타내는 줄:

Pagingfive=c:\PageFile.sys

MinPagingFileSize=65536(64MB)

MaxPagingFileSize=262144(256MB)

첫 번째와 두 번째 줄은 파일 이름과 위치를 정의하고 마지막 두 줄은 페이지 파일의 초기 및 제한 크기(KB)를 정의합니다.

SysMon(시스템 모니터)을 실행하고 페이징 파일 크기와 여유 메모리를 필수 매개변수로 선택하여 가장 일반적으로 사용되는 응용 프로그램의 메모리 요구 사항을 추정하여 최소 페이징 파일 크기를 얻을 수 있습니다.

3.2. Windows NT의 메모리 할당

배포 방식과 Windows 9x의 차이점은 다음과 같습니다.

1) 마이크로프로세서에 제공된 메모리 보호 하드웨어의 더 심각한 사용;

2) 모든 시스템 프로그램 모듈은 고유한 가상 주소 공간에 위치하며 응용 프로그램이 액세스할 수 없습니다.

Windows NT의 주소 공간 할당은 그림 1에 나와 있습니다. 3.2.

쌀. 3.2. Windows NT의 OP 배포

응용 프로그램에는 2GB의 로컬(기본) 선형(구조화되지 않은) 주소 공간이 할당됩니다(처음 64KB는 액세스할 수 없음). 이들은 서로 격리되어 있으며 클립보드나 DDE(Dynamic Data Exchange) 및 OLE(Object Linking and Embedding) 메커니즘을 통해서만 서로 통신할 수 있습니다.

2GB 영역의 상단에는 코드가 있습니다. 시스템 DLL(동적으로 연결된 라이브러리) 서버 프로세스로 작동합니다. 쿼리 매개변수의 값을 확인하고, 요청된 기능을 실행하고, 결과를 호출 프로그램의 주소 공간으로 다시 보냅니다.

2-4GB의 주소 범위에는 Windows의 시스템(낮은 수준) 구성 요소(즉, 무단 액세스에 대한 최고 수준의 보호: 커널, 스레드 스케줄러, 메모리 관리자)가 있습니다.

16비트 Windows 응용 프로그램의 경우 WOW(Windows On Windows) 세션은 자체 주소 공간에서 개별적으로 또는 공유 주소 공간에서 공동으로 선점형 멀티태스킹 모드로 구현됩니다.

응용 프로그램이 시작되면 작업이 시작되는 자체 정보 구조로 프로세스가 생성됩니다. 다른 작업을 실행할 수 있습니다. 결과적으로 멀티태스킹 작동 모드가 구성됩니다.

메모리 관리(할당, 예약, 할당 해제, 페이징)는 VMM(가상 메모리 관리자)에서 수행합니다. 각 가상 페이지는 물리적 페이지로 전송됩니다 - 페이지 프레임(페이지 프레임), 채워진 원래 상태 0(이것은 다른 프로세스에서 이전 내용을 사용할 수 없음을 결정하는 C2 보안 시스템 표준의 주요 요구 사항입니다). 페이지 언로드를 위한 공간은 디스크 공간의 예약된 블록인 페이지 파일 Pagefile.sys에 예약되어 있습니다.

모두 윈도우 메모리 NT는 다음과 같이 세분화됩니다. 예약된(작업을 실행할 때 프로세스가 동적으로 사용하기 위해), 헌신적인(Pagefile.sys에 예약된 언로드용) 및 얻기 쉬운(나머지 여유 메모리).

      Windows의 가상 메모리

제일 일반적인 원인시스템 속도 저하 윈도우 컨트롤- 물리적 메모리를 채우는 것. 동시에 Windows는 실제 메모리에서 하드 디스크로 코드 및 프로그램 데이터 블록(이러한 각 블록을 페이지 페이지라고 함)을 이동하는 소위 "페이징"(페이징)을 시작합니다. 때때로 페이징 파일에 액세스하는 것은 정상이며 시스템 성능을 저하시키지 않지만 디스크의 파일에서 데이터를 자주 요청하면 시스템의 전체 속도가 크게 느려질 수 있습니다. 이 문제는 물리적 메모리가 충분하지 않은 컴퓨터에서 여러 메모리 집약적 프로그램 간에 전환할 때 특히 두드러집니다. 결과적으로 시스템이 디스크에서 메모리로 데이터를 "펌핑"하려고 시도하기 때문에 디스크는 거의 지속적으로 사용됩니다.

할당된 총 메모리 양이 총 실제 메모리 양을 초과하면 Windows는 페이지 파일에서 빠른 RAM과 훨씬 느린 가상 메모리 사이에서 페이지를 "펌핑"해야 하므로 시스템 속도가 느려집니다.

진행중 윈도우 설치 XP 스왑 파일은 동일한 드라이브의 루트 폴더에 자동으로 생성됩니다. 시스템 파일윈도우. 페이징 파일 크기는 시스템의 실제 메모리 양에 따라 결정됩니다. 기본적으로 최소 페이지 파일 크기는 실제 메모리 양의 1.5배이고 최대 크기는 크기의 3배입니다. 페이징 파일은 숨김 파일 및 시스템 파일의 표시 모드를 켜면 탐색기 창에서 볼 수 있습니다(그림 3.3).

쌀. 3.3. 숨김 및 시스템 파일 표시 활성화

일반적으로 Windows 운영 체제 자체에서 최적의 가상 메모리 양을 설정하고 대부분의 작업에 충분하지만 컴퓨터에서 많은 메모리가 필요한 응용 프로그램을 실행하는 경우 가상 메모리 양이 변경될 수 있습니다.

이렇게 하려면 다음 작업 순서를 수행해야 합니다.

1. 관리자 그룹의 계정으로 로그인하고 "제어판 - 시스템" 창을 엽니다.

2. "고급" 탭에서 "성능" 섹션의 "설정" 버튼을 클릭합니다(그림 3.4).

3. "성능 옵션" 대화 상자에서 "고급" 탭을 선택하고 "변경" 버튼(그림 3.5)을 클릭하여 그림 3.5와 같이 "가상 메모리" 대화 상자를 표시합니다. 3.6 Windows XP 및 그림. Windows7용 3.7.

현재 페이징 파일 설정은 "모든 드라이브의 총 페이징 파일 크기" 필드에 반영됩니다.

4. 대화 상자 상단의 목록에서 드라이브를 선택하여 해당 드라이브에 대한 설정을 구성합니다.

다음 옵션을 변경할 수 있습니다.

- 스페셜 사이즈. 필드에 값 입력 원래 크기지정된 드라이브에 있는 pagefile.sys 파일의 초기 크기(MB)를 설정합니다. 현장에서 최대 크기필드에 값보다 작지 않은 숫자를 입력하십시오. 원래 크기, 그러나 4096MB(4GB)를 초과하지 않습니다.

- 시스템의 선택에 따른 크기.동적 스왑 파일 크기 관리를 활성화하려면 이 항목을 선택하십시오. 이 디스크. Windows에서 제공하는 기본 설정을 변경하지 않으려면 이 옵션을 선택하십시오.

- 스왑 파일 없음. 스왑 파일이 필요하지 않은 모든 드라이브에 사용합니다. 스왑 파일이 하나 이상의 드라이브에 있는지 확인하십시오.

5. 변경한 후 묻다변경 사항을 기록합니다.

6. 다른 드라이브에 대해 4단계와 5단계를 반복합니다(필요한 경우). 완료되면 확인을 클릭하여 대화 상자를 닫습니다.

쌀. 3.4. 보기 및/또는으로 이동하는 "옵션" 버튼

가상 메모리 설정 변경

쌀. 3.5. Windows XP(왼쪽) 및 Windows 7에서 가상 메모리 설정 변경으로 이동하는 "변경" 버튼

쌀. 3.6. 가상 메모리 크기에 대한 보기 창 및 설정

쌀. 3.7. Windows7에서 가상 메모리의 크기를 보고 설정하는 창

컴퓨터에 물리적 드라이브가 두 개 이상 있는 경우 페이징 파일을 다음 위치에 저장하는 것이 가장 좋습니다. 가장 빠른, 그리고 다음과 같은 시스템이 바람직하다. Windows 파일다른 드라이브에 있을 것입니다. 스왑 파일을 여러 개로 분할하는 것이 훨씬 좋습니다. 물리적 인디스크 컨트롤러가 여러 쓰기 및 읽기 요청을 병렬로 처리할 수 있기 때문입니다.

하나의 물리적 드라이브의 여러 논리 드라이브에 페이징 파일을 저장하려고 하지 마십시오!!!

시스템에 단일 하드 드라이브가 C, D 및 E 파티션으로 분할되어 있고 스왑 파일이 여러 파티션으로 분할되어 있는 경우 이 구성에서 하드 드라이브의 자기 헤드가 데이터를 읽어야 하기 때문에 시스템 속도가 느려질 수도 있습니다. 여러 영역의 데이터가 아닌 디스크의 한 영역에서 순차적으로 데이터를 가져옵니다.

최소 또는 최대 페이지 파일 크기를 줄이고 디스크에 새 페이지 파일을 생성하는 경우 변경 사항을 적용하려면 시스템을 재부팅해야 합니다. 페이지 파일 크기를 늘리면 일반적으로 컴퓨터를 다시 시작할 필요가 없습니다.

실제 메모리가 많은 경우 스왑 파일을 모두 비활성화하고 싶을 수 있습니다. 그거 하지마! !!

Windows XP는 페이징 파일이 일부 커널 작업을 수행하는 데 사용되도록 설계되었으므로 일부 타사 프로그램은 가상 메모리를 완전히 비활성화하려고 할 때 메모리 부족 메시지를 보고할 수 있습니다.

Windows는 필요할 때까지 스왑 파일을 사용하지 않으므로 가상 메모리를 비활성화해도 성능이 향상되지 않습니다!!!

Windows는 필요에 따라 페이징 파일의 크기를 동적으로 늘릴 수 있습니다. 이 기능은 "를 선택한 경우에만 작동합니다. 시스템 선택 가능 사이즈"뿐만 아니라 페이징 파일의 현재 크기보다 큰 최대 크기를 설정할 때.

이전 버전의 Windows에 대한 경험을 바탕으로 일부 사용자는 동일한 초기 및 최대 치수. 이론적으로 이렇게 하면 페이지 파일 조각화 가능성이 제거되므로 성능이 향상됩니다. 그러나 스왑 하위 시스템은 실제로 파일이 디스크 공간의 큰 블록만 차지하도록 설계되어 조각화를 최소화합니다. Windows에서 페이징 파일의 크기를 늘리면 성능이 약간 저하될 수 있지만 이는 일회성 작업이며 어떤 식으로든 평균 성능에 영향을 주지 않습니다.

      Windows에서 메모리 사용량 제어

얼마나 많은 RAM이 사용 중인지 확인하는 가장 쉬운 방법 이 순간시간 - ++를 눌러 작업 관리자를 열고 "성능" 탭으로 이동합니다(그림 3.8). Windows XP의 "성능" 탭에 대한 정보에 대한 자세한 설명은 표에 나와 있습니다. 3.1.

표 3.1. 작업 관리자 데이터 해독

Windows7의 성능 탭은 해당 탭 관리자에 비해 상당한 혁신을 가지고 있습니다. Windows 작업경험치

"물리적 메모리" 섹션의 "총계" 열에 있는 숫자는 이 시스템의 총 RAM 양을 나타냅니다. Cached 열은 시스템 리소스에서 최근에 사용한 물리적 메모리의 양을 보여줍니다. 시스템이 다시 필요할 경우를 대비하여 캐시에 남아 있지만 다른 프로세스에서 사용할 수 있습니다. 새 열 "Available"(Available)은 현재 사용되지 않은 물리적 메모리의 양을 나타내고 "Free"(Free) 열은 캐시에서 사용하지만 유용한 정보를 포함하지 않는 메모리 양을 나타냅니다.

커널 메모리 섹션에는 페이징 및 비페이징의 두 열이 있습니다. 함께 커널이 사용 중인 메모리 양을 나타냅니다. 페이징은 가상 메모리이고 비페이징은 물리적 메모리입니다.

"시스템"(시스템) 열에는 프로세스의 복합 구성 요소와 관련된 "설명자"(핸들) 및 "스레드"(스레드)가 나타납니다. "설명자" 열은 현재 실행 중인 프로세스에서 사용하는 개체 식별자(핸들)의 수를 나타냅니다. "Threads" 열은 더 큰 프로세스 내에서 실행되는 하위 프로세스의 수를 보여줍니다. 물론 "프로세스" 열의 숫자는 "프로세스" 탭에서 볼 수 있는 실행 중인 총 프로세스 수를 나타냅니다.

가동 시간 열에는 컴퓨터가 마지막으로 시작된 이후 경과된 시간이 표시됩니다. 커밋 열에는 페이징 파일에 대한 정보가 포함됩니다. 첫 번째 숫자는 현재 사용 중인 실제 및 가상 메모리의 총량을 나타내고 두 번째 숫자는 일반적으로 이 컴퓨터의 총 메모리 양을 나타냅니다.

"Resource Monitor" 버튼을 클릭하고 "Memory" 탭을 선택하면 더 자세한 정보를 얻을 수 있습니다(그림 3.9).

쌀. 3.9. Windows 리소스 모니터 창의 메모리 탭

"메모리" 탭에는 실행 중인 모든 프로세스를 나열하는 "프로세스" 테이블이 있으며 각 프로세스에 사용된 메모리에 대한 정보는 여러 범주로 나뉩니다(그림 3.10).

쌀. 3.10. 테이블 "프로세스"

"라는 칼럼에서 영상»는 프로세스 실행 파일의 이름을 나타냅니다. 응용 프로그램에 의해 시작된 프로세스는 인식하기가 매우 쉽습니다. 예를 들어 "Winword.exe" 프로세스는 분명히 Word 텍스트 편집기에 속합니다. "svchost.exe"라는 프로세스는 다양한 운영 체제 서비스를 나타냅니다. 서비스 이름은 프로세스 이름 옆의 괄호 안에 표시됩니다.

"라는 칼럼에서 프로세스 ID»는 프로세스 번호를 나타냅니다. 실행 중인 프로세스를 식별할 수 있는 고유한 숫자 조합입니다.

"란에 완전한»는 이 프로세스를 위해 시스템에서 예약한 가상 메모리의 양(KB)을 나타냅니다. 여기에는 사용된 실제 메모리와 페이징 파일에 저장된 페이지가 모두 포함됩니다.

"란에 작업 세트»는 현재 프로세스에서 사용하는 물리적 메모리의 양(KB)을 나타냅니다. 작업 집합은 공유 및 개인 메모리로 구성됩니다.

"라는 칼럼에서 일반적인» 물리적 메모리의 양을 킬로바이트 단위로 나타냅니다. 이 과정다른 사람들과 공유합니다. 관련 프로세스에 대해 단일 메모리 세그먼트 또는 스왑 페이지를 사용하면 메모리 공간이 절약됩니다. 이 경우 페이지의 복사본 하나만 물리적으로 저장되고 페이지에 액세스하는 다른 프로세스의 가상 주소 공간에 매핑됩니다. 예를 들어, 시스템 DLL에 의해 시작된 모든 프로세스(Ntdll, Kernel32, Gdi32 및 User32)는 공유 메모리를 사용합니다.

"란에 사적인»는 이 프로세스에서 독점적으로 사용하는 물리적 메모리의 양(KB)을 나타냅니다. 특정 응용 프로그램이 작동하는 데 필요한 메모리 양을 결정할 수 있는 것은 이 값입니다.

"란에 페이지 메모리 부족 오류/초'는 지난 1분 동안 초당 평균 메모리 부족 페이지 폴트 수를 보여줍니다. 프로세스가 현재 사용 가능한 것보다 더 많은 실제 메모리를 사용하려고 하면 시스템은 메모리의 데이터 중 일부를 디스크(페이징 파일)에 씁니다. 디스크에 저장된 데이터에 대한 후속 액세스를 메모리 부족 오류라고 합니다.

응용 프로그램이 파일을 시작하고 작업할 때 메모리 관리자는 각 프로세스의 작업 집합 크기를 추적하고 추가 메모리 리소스에 대한 요청을 캡처합니다. 프로세스의 작업 집합이 증가함에 따라 디스패처는 이러한 요청을 커널 및 기타 프로세스의 요구 사항과 일치시킵니다. 사용 가능한 주소 공간이 충분하지 않은 경우 디스패처는 데이터를 메모리에서 디스크로 저장하여 작업 세트를 축소합니다.

나중에 디스크에서 이 데이터를 읽을 때 페이지 메모리 부족 오류가 발생합니다. 이는 지극히 정상이지만 다른 프로세스에서 동시에 오류가 발생하면 시스템이 디스크에서 데이터를 읽는 데 추가 시간이 필요합니다. 너무 많이 흔한 실수메모리에 페이지가 없으면 각각 시스템 성능이 저하됩니다. 이것은 모든 응용 프로그램에서 예기치 않은 속도 저하로 나타나며 예기치 않게 중지됩니다. 속도가 느려지는 것은 실제 메모리와 페이징 간의 데이터 재분배가 활발하기 때문입니다.

이것은 특정 프로세스에 대한 메모리 부족 오류가 너무 자주 정기적으로 발생하면 컴퓨터에 충분한 물리적 메모리가 없다는 결론으로 ​​이어집니다.

메모리 부족 오류가 자주 발생하는 프로세스를 모니터링하기 쉽도록 플래그로 표시할 수 있습니다. 이렇게 하면 선택한 프로세스가 목록의 맨 위로 이동하고 메모리 부족 오류 그래프가 주황색 곡선으로 표시됩니다.

메모리 할당은 다른 여러 요인에 따라 달라지며 페이지 외부 오류를 모니터링하는 것이 문제를 식별하는 최선의 방법도 유일한 방법도 아닙니다. 그러나 관찰을 위한 좋은 출발점이 될 수 있습니다.

프로세스 테이블은 개별 프로세스 간의 메모리 할당에 대한 자세한 정보를 제공하는 반면 물리적 메모리 테이블은 RAM 사용량에 대한 전체 그림을 제공합니다. 핵심 구성 요소는 그림 1에 표시된 고유한 히스토그램입니다. 3.11.


그림 3.11. 물리적 메모리 테이블의 막대 그래프는 Windows 7의 메모리 할당에 대한 일반적인 아이디어를 제공합니다.

히스토그램의 각 섹션은 고유한 색상으로 표시되며 메모리 페이지의 특정 그룹을 나타냅니다. 시스템이 사용됨에 따라 메모리 관리자는 백그라운드에서 이러한 그룹 간에 데이터를 이동하여 물리적 메모리와 가상 메모리 간의 섬세한 균형을 유지하여 모든 애플리케이션이 효율적으로 실행되도록 합니다. 히스토그램을 자세히 살펴보겠습니다.

왼쪽은 섹션 예약 장비", 회색으로 표시: 연결된 장비의 요구 사항에 할당된 메모리로 운영 체제와 상호 작용하는 데 사용합니다. 하드웨어용으로 예약된 메모리가 잠겨 있어 메모리 관리자가 액세스할 수 없습니다. 일반적으로 하드웨어에 할당되는 메모리 양은 10~70MB이지만 이 수치는 시스템의 특정 구성에 따라 다르며 경우에 따라 수백 메가바이트에 이를 수도 있습니다.

예약된 메모리 양에 영향을 미치는 구성 요소는 다음과 같습니다.

APIC(Advanced Programmable Input/Output Interrupt Controller)와 같은 마더보드 구성 요소;

메모리 매핑된 입력/출력을 수행하는 사운드 카드 및 기타 장치

타이어 PCI 익스프레스(PCIE);

비디오 카드;

다양한 칩셋;

플래시 드라이브.

부분 " 사용된녹색으로 표시된 "은 시스템, 드라이버 및 실행 중인 프로세스에서 사용하는 메모리 양을 나타냅니다. 사용된 메모리 양은 " » 지표 합계 빼기 « 변경됨», « 기대" 그리고 " 무료". 차례로 값 "는 "의 지표입니다. 설치됨» 빼기 표시기 « 예약 장비».

많은 컴퓨팅 시스템은 멀티태스킹 운영 체제가 각 작업에 메모리를 할당하고 사용자 프로그램으로부터 보호하는 메모리 관리자(메모리 관리자, 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가 별도의 버스에서 사용되지 않는 한 메모리 사이클).