2

나는 이것이 내 질문을하는 법에 대해 묻거나 알맞은 곳인지 확신하지 못한다.메모리 및 디스크의 다른 영역은 무엇입니까?

나에게 이런 식으로 넣어 보자 :

  • 메인 메모리를 0xFFFFF에은 0x00000에서 시작.
  • 디스크 공간은 0x00000000에서 0xFFFFFFFF까지입니다.

하지만 우리가 액세스 할 수있는 것은 0 바이트에서 마지막 바이트까지입니다. 하드 디스크에서 우리는 MBR이 0 번째 바이트에있는 것 같아요. & 어딘가에 우리는 파일 시스템을 가지고 있습니다 (우리는이 문제 만 처리 할 수 ​​있습니다). 또 뭐야?

메인 메모리와 비슷합니다. 우리는 일부 커널 메모리 & 사용자 메모리 (각 프로세스가 살아 있음)를 가지고 있습니다. 또 뭐야?

내 질문은 무엇입니까 모두 0 바이트에서 마지막 바이트까지의 영역은 무엇입니까? 나는 무엇을 검색해야하는지, 그런 정보를 어디에서 찾을 지 모른다. 어느 누구라도 링크를 게시 할 수 있다면 좋을 것입니다.

편집 :

내가 Windows에서 86 32 비트를 사용하고 있습니다. 사실 저는 컴퓨터 보안에 관한 책을 읽었습니다. 저자는 악성 코드가 디스크 나 메모리에있을 수 있다고 언급했습니다. (이는 사실입니다). 그러나 컴퓨터가 감염되었다고 말하면 파일 (파일 시스템의 일부) 만 감염된다는 것을 의미하지는 않습니다. MBR과 같이 사용자를위한 것이 아닌 다른 영역이 있습니다. 또는 커널 메모리.

그래서 내 마음에 질문이 나타났습니다. 내가 인식하지 못하는 부분이 모두 무엇입니까?

+1

이것은 ** 당신이 말하는 플랫폼에 따라 다릅니다 ** 매우 다릅니다. 아무도 우리가 무슨 하드웨어에 대해 이야기하는지 알 때까지 의미있는 대답을 줄 수는 없습니다. (프로그래밍으로 성취하려는 작업을 첨부 할 수 없다면 프로그래밍과 관련이 없습니다.) – GManNickG

+0

그 정보가 필요한 이유는 무엇입니까? 거기에 "드라이버"라는 태그가 있습니다. 일부 드라이버를 작성하려면 운영 체제에서 제공하는 기능을 사용하여 메모리 액세스를 수행하면 세부 사항을 염려 할 필요가 없습니다. – ahans

+0

어쨌든 이러한 가정은 사실이 아닙니다. 가상 메모리를 사용하면 _ 모든 것이 가능합니다. –

답변

1

이 질문에 대한 대답이 OS에 크게 의존한다는 사실 외에도 디스크 공간은 주 메모리의 일부가 아닙니다. Intel 아키텍처에서 디스크 액세스는 채널당 일부 I/O 주소 공간 (메모리 주소와 다름)을 필요로합니다. 정확한 단어 수는 IDE/ATA/SATA/SCSI의 채널에 따라 다릅니다. PowerPC 디스크 액세스와 같이 매핑 된 메모리 인 다른 아키텍처에서는 일부 메모리 주소 공간을 차지하지만 그다지 많지 않습니다.

예를 들어 (이것은 실제 세계가 아닌 매우 단순화 된 예이다) LBA 어드레싱이있는 디스크에 액세스하려는 PowerPC와 같은 메모리 매핑 된 CPU *를 가정하십시오. 디스크는 실제로 여러 기가 바이트의 데이터를 저장하기 위해 2 ~ 3 단어의 메모리 만 필요합니다. 즉, 우리는 기가 바이트의 데이터를 저장하고 검색하는 데 12 바이트 만 필요합니다.

  • 디스크를 검색 할 위치, 즉 어떤 주소에서 양식을 읽으려고하는지 또는 디스크를 알려주는 데 2 ​​단어 (8 바이트)가 필요합니다. 에 쓰기.
  • 실제로 읽기 및 쓰기를 수행하는 단어 (4 바이트)는 1 단어입니다. 이 주소에서 읽을 때마다 포인터은 자동으로 1 문자 씩 증가합니다 (32 비트를 읽으면 4가됩니다).

그러나 위의 내용은 실제로 발생하는 것을 추상화 한 것입니다. 대부분의 디스크 컨트롤러에는 전원 관리, 디스크 회전 속도, 절전 모드 시작 및 종료 등을 제어하는 ​​몇 가지 레지스터가 있습니다.

그리고이 메모리 위치의 주소는 무엇입니까? 글쎄, 그것은 당신이 말하는 I/O 채널에 달려 있습니다.구식 ISA 버스는 주소를 설정하는 카드의 점퍼 설정에 따라 다릅니다. 따라서 사용자에게 물어볼 필요가있는 사람들을 위해. PCI 버스는 부팅시 디스크 컨트롤러와 주소를 자동 협상 한 다음 아키텍처에 따라 BIOS가 어떤 장치가 있는지 알려주거나 매개 변수로 부트 로더에 전달하거나 시스템 버스의 일부 임시 레지스터에 저장합니다. USB는 PCI와 같이 작동하지만 BIOS 대신 ... OS와 협상합니다.

64 비트 AMD에서 실행되는 Windows7과 같은 특정 사례로만 제한하는 경우에도이 간단한 대답은 없습니다. Dell 마더 보드에서 실행중인 CPU.

* 참고 : 메모리 위치가 걱정되기 때문에.

0

귀하의 질문은 복잡하고 메모리의 관점이 어디인지에 대한 범위를 모른 채 대답하기가 어렵습니다.

우리는 직접 매핑 된 메모리가있는 링 0에 가장 가깝고 PC 호환은 여러 메모리 영역을 가지고 있습니다. 낮은 메모리, BIOS 매핑 된 코드, IO 포트, 비디오 메모리 등. 이들은 모두 동일한 메모리 공간에 있습니다. 특정 메모리 주소 (해당 구성 요소에 매핑 됨)에서 읽고 쓰는 방법으로 주변 장치와 통신합니다. 이 주소는 문제의 하드웨어와 사용중인 드라이버에 의해 설정됩니다.

일단 사용자 모드로 전환하면 가상 메모리를 처리해야합니다. 주소는 상징적이며 실제 메모리의 특정 부분에 매핑되거나 매핑되지 않을 수 있습니다. 나는 위로 읽는 것이 좋습니다 Virtual memory

관련 문제