
이를 묻는 또 다른 방법은 다음과 같습니다.
"하드 드라이브, 펜 드라이브 및 SSD에는 파티션 구성이 필요하고 RAM에는 필요하지 않은 이유는 무엇입니까?"
모든 메모리 장치가 어떻게 작동하는지 더 잘 이해하려고 노력 중입니다.
답변1
음, 문제는 좀 더 복잡합니다.
첫째, 질문에 표현된 가정은 거짓입니다. 하드 디스크와 플래시 메모리에는 실제로 파티션이 전혀 필요하지 않습니다! 간단히 하드 디스크에 원시 데이터를 쓴 다음 다시 읽으면 제대로 작동합니다. 비교적 단순한 일부 컴퓨터 시스템에서는 파티션을 사용할 필요가 없기 때문에 오늘날에도 파티션을 사용하지 않습니다. 예를 들어, 지금 제 책상 위에는 ATmega 162 마이크로컨트롤러를 기반으로 하고 파티션 없이 플래시를 잘 사용하는 컴퓨터가 있습니다.
기본적으로 파티션이 하는 일은 시스템 설계자 간의 노동 책임을 분리하는 것입니다. 내 162에서는 각 데이터 비트가 어디에 저장되어 있는지, 그리고 각 플래시 셀이 몇 번이나 액세스되는지 알아야 웨어 레벨링을 구현할 수 있습니다. 그러기 위해서는 파일도 필요하지 않습니다. 그러나 문제는 내 소형 컴퓨터에 플래시 용량이 16KiB밖에 없고 그 양을 직접 관리하거나 소스 코드 주석으로 관리할 수 있다는 것입니다. 마치 서랍이 하나 있는 책상과 같습니다. 거기에 무엇이든 놓을 수 있고 쉽게 접근하고 접근할 수 있을 거예요.
오늘날의 데스크톱 컴퓨터와 같은 대형 컴퓨터 시스템에서 소프트웨어는 수천 명의 프로그래머가 별도로 작업하는 작업의 산물입니다. 데이터를 저장하는 방법이 필요하며 이것이 바로 파일과 파티션이 필요한 이유입니다. 이를 보유하면 프로그래머는 작업에 필요한 데이터에만 집중할 수 있으며 다른 데이터 손상에 대해 걱정할 필요가 없습니다. 그는 파일 시스템 프로그래밍 작업을 하는 프로그래머가 데이터의 물리적 저장에 대해 걱정하도록 할 수 있습니다. 서랍의 예를 계속하자면, 이는 창고 시스템을 갖추고 수십만 개의 재고가 있는 경우 단일 항목을 찾으려고 하는 것과 같습니다. 예를 들어 간단한 서랍에 손을 뻗어 연필을 얻을 수 있지만 창고 케이스에서는 연필이 창고 3, 섹션 P, 선반 273, 레벨 3, 상자 5에 있을 것입니다.
실제로 파티션이 필요하지 않더라도 파티션을 사용하는 이유를 더 명확하게 설명했으면 좋겠습니다.
이제 RAM으로 이동해보겠습니다. RAM에 파티션이 없다는 것도 사실이 아닙니다. 파티션을 사용하는 기본 이유는 구성이며 RAM도 구성됩니다. 그러나 RAM의 경우 각 정보 비트가 이동할 위치를 결정하고 공간 사용량을 추적하는 것은 시스템 커널입니다.
간단한 ATmega 162의 프로그램이 작동하는 방식과 Windows와 같은 최신 운영 체제의 프로그램이 작동하는 방식을 비교해 보겠습니다. 162에서 프로그램은 데이터를 저장하는 데 사용할 메모리 위치의 주소로 미리 프로그래밍되어 있습니다. 162에는 하나의 프로그램만 있기 때문에 다른 프로그램에서 사용하는 데이터를 덮어쓰거나 메모리 할당에 대해 걱정할 필요가 없습니다. 각 메모리 셀에 원하는 것을 무엇이든 쓸 수 있으며 컴퓨터가 실행되는 동안 메모리는 그대로 유지됩니다.
반면에 Windows에서는 동시에 실행되는 많은 수의 프로그램이 있을 수 있으며 모든 프로그램은 메모리에 데이터를 쓰고 읽습니다. 즉, 개별 프로그램이 메모리 셀에 직접 액세스하도록 허용할 수 없습니다(프로그래머는 특정 컴퓨터의 메모리에 액세스하는 방법과 해당 컴퓨터의 RAM 용량 등을 알아야 합니다. 이 시점에서 우리는 다음을 얻습니다). 수천 대 한 명의 프로그래머 토론으로 돌아갑니다.) 대신, 각 프로그램이 시작될 때 커널은 해당 프로그램과 프로그램에 메모리를 할당하므로 해당 프로그램이 컴퓨터에서 실행되는 유일한 프로그램인 것처럼 보입니다. 커널은 우리 프로그램이 다른 프로그램에 제공된 메모리를 읽거나 쓰려고 시도하지 않고 데이터로 표시된 메모리를 실행하려고 시도하지 않으며 전체 시스템을 위험에 빠뜨리지 않도록 하기 위해 존재합니다. 따라서 기본적으로 Windows 및 기타 많은 최신 운영 체제에서 각 프로그램은 자체 RAM 파티션을 갖습니다. 또한 32비트 시스템에서 각 프로그램은 최대 2GiB의 RAM만 사용할 수 있다는 점도 흥미롭습니다. 왜냐하면 이것이 "파티션" 크기의 상한선이기 때문입니다.
나는 여기서 약간의 여담을 만들고 싶습니다. RAM의 파티션으로 인해 손상되는 일부 프로그램이 있습니다. 예를 들어, 컴퓨터 게임에서 부정행위를 허용하는 트레이너라는 프로그램이 있었습니다. 그들은 게임이 생명수나 체력 등의 데이터를 저장하는 메모리 위치를 찾은 다음 데이터에 직접 액세스하여 이를 변경하는 방식으로 작업했습니다. 반면에 중요한 시스템 서비스에서 사용하는 메모리에 액세스하고 이를 손상시켜 사악한 행위를 할 수 있도록 하는 바이러스도 있었습니다.
알아낼 만한 또 다른 사항은 페이지 파일이나 스왑 파티션입니다. 애플리케이션을 작성하는 프로그래머에게는 프로그램이 페이지 파일에 있는지 RAM에 있는지는 중요하지 않습니다. 커널이 이를 처리하기 때문입니다. 내 ATmega 162에서는 상황이 좀 더 복잡합니다. 사용 가능한 것보다 더 많은 RAM을 사용해야 하는 경우 먼저 RAM을 모두 사용한 상황을 직접 감지해야 합니다. 그런 다음 RAM에서 플래시로 데이터를 수동으로 복사하고 RAM을 비우고 원하는 용도로 사용해야 합니다. 이를 위해 사용하고, 다시 비우고, 플래시에서 RAM으로 데이터를 이동한 다음 플래시 메모리에서 차지하는 공간을 비워야 합니다. 데스크톱 컴퓨터에서 프로그램은 디스크로 교체된 다음 다시 RAM으로 이동되었는지조차 확인할 수 없습니다.
또 하나 흥미로운 점은 성능이다. 서랍과 창고의 예로 돌아가 보겠습니다. 창고에 있는 모든 품목을 꺼내서 한 더미에 버리자. 따라서 서랍에서 연필 한 개를 꺼내야 한다면 서랍을 열고 연필을 가져가면 됩니다. 수천 개의 다른 연필, 공책, 자, 캔디바, 지우개 등에서 특정 연필 하나를 가져와야 한다면 우리는 그것을 찾는데 상당한 시간을 소비해야 할 것입니다. 그 시간(일반적인 경우)은 잘 정리된 창고에서 동일한 연필을 찾는 데 필요한 시간에 비해 훨씬 더 깁니다. 반면에 정리된 창고에서 연필을 찾는 데 필요한 시간은 서랍에서 연필을 찾는 데 필요한 시간보다 훨씬 깁니다. 따라서 일부 방법은 적은 양의 데이터에 잘 작동하고 일부 방법은 대량의 데이터에 잘 작동합니다. 파일 시스템은 각 개별 데이터를 쉽게 찾을 수 있는 디스크에 논리적인 방식으로 데이터를 저장하여 성능을 향상시킵니다. 일부 파일 시스템은 다른 이점도 제공합니다. 플래시 메모리용으로 설계된 파일 시스템인 JFFS2의 경우 파일 시스템에서는 Wear Leveling을 구현하여 사용자나 하드웨어가 설계할 필요가 없습니다.
또 다른 흥미로운 점은 RAM에도 표준 파일 시스템을 사용할 수 있다는 것입니다! RAM을 차지하고 이를 파일 시스템처럼 구성하며 프로그램이 이를 디스크 공간인 것처럼 사용할 수 있도록 하는 프로그램이 있습니다.
몇 가지 흥미로운 링크: Wikipeda 메모리 관리 기사RAM의 데이터가 분할되는 방법과 이유를 설명합니다. 운영 체제 기사, 메모리 섹션메모리 분할, 가상 메모리 페이징 등과 같은 기능이 필요한 이유를 설명합니다.
답변2
지나치게 단순화하기 위해 RAM에는 레이아웃 구성표가 있지만 하드웨어에 의해 추상화되어 있습니다.
내부적으로 RAM은 스프레드시트처럼 행과 열로 배열된 "메모리 셀"의 매트릭스로 배열됩니다. 각 메모리 셀은 데이터의 행과 열 위치(또는 주소)를 표시하여 즉시 검색할 수 있는 데이터 비트를 저장하는 데 사용됩니다.
이는 장기 저장소가 작동하는 방식에 대한 기본 개념과 크게 다르지 않습니다. 파일 시스템과 파티션 맵은 원시 디스크에 직접 액세스하지 못하도록 하기 위한 단순한 추상화입니다.
답변3
동일한 플래터의 서로 다른 부분에 공존할 수 있는 호환되지 않는 여러 운영 체제를 설치할 수 있도록 하드 드라이브에 대한 파티션 구성표가 만들어졌습니다. 펜 드라이브와 SSD 드라이브는 이전 사촌격인 하드 드라이브의 구성표를 상속받습니다.
개인용 컴퓨터의 경우 일반적으로 RAM은 한 번에 하나의 운영 체제에서만 사용되므로 이에 대한 파티션 구성표가 없습니다. 그러나 일부 대형 컴퓨터(메인프레임)에도 RAM에 대한 파티션 구성표가 있습니다.
답변4
RAM은 페이지로 구성되어 있고 이러한 페이지는 사전 할당 영역 없이 동적으로(MMU) 구조화되므로 분할이 필요하지 않습니다. 그러나 하드웨어 구성 요소(주로 일부 그래픽 카드일 수도 있지만 무엇이든 가능)가 OS가 부팅되기 전에 물리적 RAM의 일부를 예약할 때 RAM에서 일종의 임시 파티셔닝이 발생합니다.
실제로 하드 드라이브, 펜 드라이브 또는 SSD에는 파티션 구성표가 실제로 필요하지 않거나 적어도 필요하지 않습니다. BIOS(또는 동등한 펌웨어) 및 부트 로더와 같이 제대로 작동하려면 파티션 테이블이 필요하지만 그렇지 않은 경우 운영 체제(보다 정확하게는 파일 시스템 및 볼륨 관리자) 설계 제한 때문에 파티션이 필요한 구성 요소가 여전히 있습니다.
ZFS 풀 개념에 따르면 여러 운영 체제를 부팅하려는 경우와 이러한 OS에 여러 볼륨과 파일 시스템이 필요한 경우에도 파티션이 필요하지 않습니다.
그런 다음 드라이브가 ZFS(또는 가상의 동등한 OS)를 지원하지 않는 하나 이상의 OS에서 사용되는 경우에만 파티션이 필요합니다.