스왑 공간에 파일 시스템이 있습니까?


26

저장 장치를 사용하려면 파일 시스템이 필요합니다. 스왑 공간은 어떻습니까?

파일 시스템이없는 경우 운영 체제는 어떻게 작동합니까? RAM의 데이터는 어떻게 디스크에 기록되며 어떻게 다시 액세스됩니까?


6
스왑은 파일 시스템이 필요하지 않습니다. 파일을 저장하지 않습니다.
Pilot6

3
RAM 페이지를 저장합니다.
Pilot6

2
하려는 일을 정확히 설명해 주시겠습니까? 필요한 것은 데이터를 임시로 저장할 수있는 장소라는 것입니까?
Jake

6
"파일 시스템없이 저장 공간에 쓸 수있는 방법을 알고 싶습니다." – 저장 공간에 쓰기 만하면됩니다. 파일 시스템이 스토리지 공간에 쓰기 위해 필요한 경우 파일 시스템은 파일 시스템없이 스토리지 결정에 쓸 수 있어야하기 때문에 파일 시스템이 존재할 수 없었습니다. "답변에 따르면 RAM에 작은 파일 시스템이 있고 스왑 파일이이 파일 시스템을 페이지 작업에 사용한다고 말할 수 있습니까?" – 아니오. 파일 시스템은 파일을 저장하기위한 것입니다. 스왑 공간은 파일을 저장하지 않습니다.
Jörg W Mittag

4
포맷되지 않은 스토리지에 단일 파일 (ala tar 및 dd)을 쓰는 것이 일반적이며 중첩 된 파일 시스템 (가상 디스크, .iso, squashfs)을 사용하는 것이 더 일반적입니다. 플로피 게임은 때때로 절대 (고정) 위치에 높은 점수를 기록 할 수 있으며 일부 응용 분야는 실린더, 헤드, 섹터 기반입니다. 스왑 파티션은 여전히 ​​파티션이지만 아니요, 오프셋 및 실행 이외의 파일 시스템이나 "매핑"이 없습니다.
mckenzm

답변:


28

기술적으로 스왑에는 특정 파일 시스템이 없습니다. 파일 시스템의 전체 목적은 데이터를 특정 방식으로 구성하는 것입니다. 스왑 파티션은 구조가 없지만 mkswap프로그램에 의해 생성되는 특정 헤더를 가지고 있습니다. 특히, 이것은 ( kernel.org 에서 가져온 ) :

 25 union swap_header {
 26     struct 
 27     {
 28         char reserved[PAGE_SIZE - 10];
 29         char magic[10];
 30     } magic;
 31     struct 
 32     {
 33         char     bootbits[1024];
 34         unsigned int version;
 35         unsigned int last_page;
 36         unsigned int nr_badpages;
 37         unsigned int padding[125];
 38         unsigned int badpages[1];
 39     } info;
 40 };

각 파티션에는 관련 코드가 있으며 TLDP 에 따라 다릅니다 .

ext2의 코드는 0x83이고 리눅스 스왑은 0x82입니다.

스왑 파일이 포함 된, 즉 약간 다른 이야기입니다. 커널은 파일 시스템이 자체적으로 데이터를 구조화 할 수 있다는 사실을 존중해야합니다. 동일한 kernel.org 링크에서 :

파일 시스템에는 파일과 디스크를 저장하는 고유 한 방법이있을 수 있으며 정보가 디스크에 직접 기록 될 수있는 스왑 파티션만큼 간단하지는 않습니다. 백업 스토리지가 파티션 인 경우, 하나의 페이지 크기 블록에만 IO가 필요하며 파일 시스템이 없으므로 bmap ()이 필요하지 않습니다.

결론적으로 기술적으로 스왑 공간을 자체 유형의 파일 시스템이라고 할 수 있지만 NTFS 또는 ext4와 같은 파일 시스템과 비교할 수는 없습니다.

당신은 또한 물었다

파일 시스템없이 저장 공간에 쓸 수있는 방법을 알고 싶습니다

엄밀히 말하면, RAM을 구성 할 필요가 없습니다. 그러나 RAM의 일부는 유닉스 계열 OS에서 tmpfs 로 구성 될 수 있습니다 . 부팅 프로세스 중에로드되는 ramfs 및 initramfs 도 있습니다 . 그러나 RAM 데이터는 기술적으로 원시 1과 0으로 간주되므로 어쨌든 구조화 할 필요가 없습니다.


1
파일 시스템이 없어도 파일 시스템이 무엇인지 인식 할 수있는 기본 구조를 가지고 있음을 지적하는 것이 좋습니다. 실수로 다른 파티션을 덮어 쓰지 못하게합니다.
스펙트럼

RAM이 아닌 "파일 시스템이없는 저장 공간에 쓸 수있는 방법을 알고 싶습니다"라는 디스크 공간을 의미한다고 생각합니까?
Anwar

@Anwar, 네,하지만
알았

tar를 사용하면 여러 파일을 RAW 스트림으로 플래시 드라이브와 같은 포맷되지 않은 장치에 쓸 수 있습니다. 그렇지 않으면 단일 파일을 쓸 수 있지만 이름을 지정하지 않아도 프로세스를 되돌려 다시 쓸 수 있습니다. 이것은 일반적으로 ISO에서 광학 미디어로 수행되지만 결과적으로 인플레 이스 파일 시스템입니다.
mckenzm

1
동의했다. 기본적으로 매핑 된 영역으로 설명 할 수 있습니다. 이는 실제 메모리의 확장이 아니라 요청시 다시 겹쳐 질 수있는 청크를 저장하는 작업 공간입니다.
mckenzm

14

스왑 공간은 시스템 메모리 (RAM) 페이지가 가득 차면 임시로 커널에 의해 사용됩니다. 커널은 자체 내부 테이블을 사용하여 스왑 디스크 내에서 페이지를 배치 한 위치를 정확히 "기억"합니다. 결과적으로 스왑 디스크는 적절한 파일 시스템을 포함하지 않으며 일반적으로 디스크의 빈 파티션입니다.

당신이 관심을 가질 수있는 것은 시스템의 메모리에 저장된 작은 파일 시스템 인 RAM 디스크입니다. 더 많은 메모리가 필요한 경우 커널은 메모리 (및 기타 내용)를 스왑 공간으로 푸시합니다. 하나를 설정하는 방법 은 여기 를 참조 하십시오 .


13

스왑 공간은 메모리 페이지와 동일한 크기 (보통 4kB)로 분할되며,이 페이지를 응용 프로그램 메모리에 매핑 한 기록은 CPU 및 OS에서 가상 메모리 하위 시스템의 확장을 형성합니다.

즉, 응용 프로그램 메모리 공간과 실제 실제 메모리 주소간에 매핑 시스템이 이미 있습니다. 응용 프로그램에는 가능한 한 많이 또는 적게 사용할 수있는 큰 메모리 주소 공간이 제공됩니다. 이 메모리 주소 공간이 실제로 사용되면 실제 메모리는 해당 응용 프로그램에 매핑되어 저장 매체로 사용됩니다.

메모리가 디스크로 교체 될 때 관련 시스템은 응용 프로그램의 메모리 공간을 디스크의 블록에 매핑하는 것을 유지합니다.

매핑 테이블 자체는 디스크에 저장되지 않으며 디스크에 남아있는 데이터는 재부팅 후 쓸모가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.