임시 폴더
1. 개요
임시 폴더는 운영체제 및 응용 프로그램이 데이터를 일시적으로 저장하기 위해 사용하는 디렉토리이다. MS-DOS 및 Microsoft Windows에서는 환경 변수 TEMP 또는 TMP로 임시 디렉토리를 설정하며, Windows API를 통해 경로를 찾거나 고유한 이름의 임시 파일 경로를 얻을 수 있다. 유닉스 및 리눅스에서는 /tmp 및 /var/tmp를 전역 임시 디렉토리로 사용하며, macOS에서는 샌드박스된 응용 프로그램이 NSTemporaryDirectory 함수를 통해 사용자별 디렉토리를 사용한다. OpenVMS에서는 SYS$SCRATCH, AmigaDOS에서는 T:가 사용된다. 임시 폴더는 성능 향상을 위해 별도의 디스크 파티션이나 RAM 디스크로 구성될 수 있으며, 솔리드 스테이트 드라이브(SSD)는 읽기/쓰기 특성상 임시 저장 장치로 적합하지 않다.
-
파일 시스템 디렉토리 -
홈 디렉토리
홈 디렉토리는 다중 사용자 환경에서 각 사용자가 개인 파일과 설정을 저장 및 관리하는 공간으로, 유닉스에서 처음 도입되어 다양한 운영체제에서 구현 방식과 위치가 다르지만 파일 시스템 권한으로 보호되어 개인 정보와 시스템 안정성을 유지하는 데 중요한 역할을 한다. -
파일 시스템 디렉토리 -
작업 디렉토리
작업 디렉토리는 컴퓨터 파일 시스템에서 현재 사용자가 작업 중인 디렉토리를 의미하며, 운영체제 및 프로그래밍 언어에서 변경 및 확인 기능을 제공하고, DLL 검색 경로에 포함 시 보안 문제가 발생할 수 있다. -
파일 시스템 -
부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다. -
파일 시스템 -
ZFS
ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
2. 임시 디렉토리의 위치
운영체제별 임시 디렉터리의 표준 위치는 다르며, 환경 변수를 통해 지정된다.
* DOS 및 윈도우: `TEMP` 또는 `TMP` 환경 변수를 사용한다. (자세한 내용은 윈도우 섹션 참고)
* 유닉스 및 리눅스: `/tmp` 및 `/var/tmp`를 사용한다. (자세한 내용은 유닉스 및 리눅스 섹션 참고)
* macOS: `NSTemporaryDirectory` 함수에서 제공하는 경로를 가진 사용자별 디렉토리를 사용한다. (자세한 내용은 macOS 섹션 참고)
* OpenVMS: `SYS$SCRATCH`를 사용한다.
* AmigaDOS: `T:`를 사용한다.
2.1. 윈도우
MS-DOS 및 Microsoft Windows에서 임시 디렉토리는 환경 변수 `TEMP` 또는 `TMP`로 설정된다. Windows API를 사용하여 `GetTempPath2` 함수로 임시 디렉토리의 경로를 찾거나, `GetTempFileName` 함수를 사용하여 고유한 이름의 임시 파일 경로를 얻을 수 있다. 원래 기본값은 `C:\Temp`였고, 그 다음은 `%WinDir%\Temp`였다. Windows XP 시대에는 사용자별로 `Local Settings\Temp`로 설정되었지만, 여전히 사용자가 재배치할 수 있었다. Windows Vista, 7, 8 및 10의 경우 임시 위치가 사용자 프로필의 AppData 섹션 내로 다시 이동하여 일반적으로 `C:\Users\`사용자 이름`\AppData\Local\Temp` (`%USERPROFILE%\AppData\Local\Temp`)가 되었다. 모든 Windows 버전에서 임시 위치는 탐색기, "실행..." 상자 및 응용 프로그램의 내부 코드에서 `%TMP%` 또는 `%TEMP%`를 사용하여 접근할 수 있다. 다른 환경 변수와 마찬가지로 `%TMP%` 또는 `%TEMP%`는 전체 경로와 같다.
2.2. 유닉스 및 리눅스
유닉스 및 리눅스에서 전역 임시 디렉터리는 /tmp영어 및 /var/tmp영어이다. 웹 브라우저는 페이지 보기 및 다운로드 중에 데이터를 tmp 디렉터리에 주기적으로 쓴다. 일반적으로 /var/tmp영어는 재부팅 후에도 보존될 수 있는 지속적인 파일용이며, /tmp영어는 더 임시적인 파일용이다. 파일 시스템 계층 표준을 참조하라. 사용자는 파일의 생성 및 수정이 허용되는 선호하는 디렉터리를 가리키도록 TMPDIR 환경 변수를 설정할 수도 있다.
2.3. macOS
macOS에서 샌드박스된 응용 프로그램은 표준 유닉스 위치를 사용할 수 없지만, NSTemporaryDirectory영어 함수에서 제공하는 경로를 가진 사용자별 디렉터리를 사용할 수 있다.
2.4. 기타 운영체제
OpenVMS에서는 `SYS$SCRATCH`를 사용하며, AmigaDOS에서는 `T:`를 사용한다.
3. 기술적 고려 사항
유닉스에서 `/tmp` 디렉터리는 별도의 디스크 파티션으로 지정되는 경우가 많다. 자기 디스크 드라이브 시스템에서는 일반적인 디스크 입출력(I/O)과 임시 디렉터리 접근을 분리하면 디스크 헤드 이동이 줄어들어 전반적인 시스템 성능(IOPS)이 향상된다. 임시 디렉터리나 폴더를 RAM에 설정하거나 리눅스의 공유 메모리 장치인 /dev/shm영어를 사용하는 등 메모리 기반 솔루션("RAM 디스크")의 사용이 늘고 있다. 플래시 메모리 기반의 솔리드 스테이트 드라이브는 읽기/쓰기 기간이 비대칭적이고 마모가 발생하기 때문에 임시 저장 장치로 적합하지 않다.
3.1. 성능 향상
유닉스에서는 /tmp 디렉토리가 종종 별도의 디스크 파티션이 된다. 자기 디스크 드라이브가 있는 시스템에서는 일반적인 디스크 I/O로 인한 디스크 헤드 이동과 임시 디렉토리에 대한 접근이 분리되면 성능(전반적인 시스템 IOPS)이 향상된다. "RAM 디스크"와 같이 임시 디렉토리 또는 폴더에 대한 메모리 기반 솔루션이 점점 더 많이 사용되고 있으며, RAM에 설정되거나 리눅스의 공유 메모리 장치 /dev/shm영어가 사용된다.
플래시 메모리 기반의 솔리드 스테이트 드라이브는 읽기/쓰기 기간이 비대칭적이고 마모가 발생하기 때문에 읽고 쓰기 위한 임시 저장 장치로 적합하지 않다. (마모 평준화 참조).
3.2. 솔리드 스테이트 드라이브 (SSD)
플래시 메모리 기반의 솔리드 스테이트 드라이브(SSD)는 읽기와 쓰기 속도가 서로 다르고, 쓰기 횟수가 제한되어 마모가 발생하기 때문에 임시 저장 장치로는 적합하지 않다. (마모 평준화 참조).