오늘날 대부분의 데이터베이스 관리 시스템 (예 : PostGreSQL , MongoDB 등)은 내부적으로 데이터를 OS 파일 내부에 보관합니다 (과거에는 일부 DBMS는 원시 디스크 파티션을 직접 사용했습니다).
아직도 회전하는 하드 디스크를 사용하는 최근 컴퓨터 에서 디스크는 CPU 또는 RAM에 비해 너무 느려서 소프트웨어 계층을 추가하는 것은 관련이 없습니다. SSD 기술이 약간 변경 될 수 있으며 일부 파일 시스템은 SSD에 최적화되어 있습니다.
파일 은 역사적 및 사회적 이유로 (일반적으로 C 컴파일러 및 대부분의 도구-편집자, 링커-파일을 원하므로 닭고기 및 계란 문제가 있음) 대부분의 OS에서 일반적으로 존재하며 매우 좋은 파일 이 많기 때문에 시스템 구현.
BTW, 일부 필수 시스템 기능은 데이터베이스를 사용할 수 있습니다. 예를 들어 Linux 에서 데이터베이스의 정보를 사용하도록 PAM 을 구성 할 수 있지만 실제로는 거의 수행되지 않습니다. 또한 일부 메일 서버는 일부 또는 대부분의 데이터를 데이터베이스 (예 : Exim )에 저장할 수 있습니다 .
파일은 데이터베이스보다 추상화가 약간 낮으므로 구현하기 쉽고 ( 리눅스 커널 의 파일 시스템 및 VFS 계층으로) 사용하기가 더 빠릅니다. 특히 파일 작업은 데이터베이스 작업보다 훨씬 제한적입니다. 실제로 파일이나 파일 시스템을 매우 제한된 데이터베이스로 볼 수 있습니다!
당신이 디자인 할 수있는 운영 체제를 모든 파일없이 , 그러나 다른 직교과 지속성 기계 (예를 들어, 모든 필요 과정이 지속 될, 당신은 많은 상관 없어 명시 적으로 OS가 지속적으로 자원을 관리하기 때문에, 스토리지에 대한). 이는 여러 학술 운영 체제 (1) ( 1980 년대 의 Smalltalk 및 Lisp 시스템 , IBM System i , 일명 AS / 400 및 osdev 와 연결된 일부 장난감 프로젝트)에서 수행 되었습니다.), 그러나 이런 방식으로 OS를 디자인 할 때 기존의 많은 도구를 활용할 수 없습니다 (예 : 컴파일러와 사용자 인터페이스를 처음부터 새로 만들어야하므로 많은 작업이 필요합니다).
파일 시스템은 응용 프로그램 서버 (예 : 사용자 영역에서 실행되는 Hurd 변환기) 이므로 마이크로 커널 운영 체제는 커널 계층에서 제공하는 파일이 필요하지 않을 수 있습니다 . 오늘날 MirageOS 의 유니 커널 접근 방식 도 살펴보십시오
리눅스 (그리고 아마도 VMS & Unix 에서 영감을 얻은 Windows )는 파일이 필요합니다. 최소한 init 프로그램 (커널에 의해 시작된 첫 번째 프로그램)은 파일에 저장된 실행 파일이어야합니다 (종종 요즘 시스템화/sbin/init
될 수 있음 ). (거의) 다른 모든 프로그램은 execve (2 ) syscall은 파일에 저장해야합니다. 그러나 FUSE를 사용하면 파일과 유사한 의미를 파일이 아닌 것들에 제공 할 수 있습니다.
또한 Linux (그리고 아마도 모르고 사용하지 않은 Windows)에서도 sqlite 는 파일에서 일부 SQL 데이터베이스를 관리하고이를위한 API를 제공하는 라이브러리입니다. 안드로이드 (리눅스 변형)가 많은 sqlite 파일을 사용하는 것으로 널리 알려져 있지만 POSIX와 유사한 파일 시스템을 가지고 있습니다.
응용 프로그램 검사 점에 대해서도 읽어보십시오 (현재 많은 OS에서 프로세스 상태를 파일로 작성하도록 구현 됨). 이 접근법은 응용 프로그램 파일을 수동으로 작성할 필요가 없지만 체크 포인트 장치를 사용하여 전체 프로세스 상태를 유지하기 만하면됩니다.
실제로 흥미로운 질문은 현재 운영 체제가 여전히 파일을 사용하는 이유이며 그 대답은 기존의 경제적, 문화적 이유 (슬프게도 오늘날 대부분의 프로그래밍 언어 및 라이브러리는 여전히 파일을 원합니다)입니다.
참고 1 : 지속적인 학술 운영 체제 에는 Lisaac & Grasshopper가 포함 되지만 이러한 학술 프로젝트는 비활성화 된 것으로 보입니다. http://tunes.org/ 도 살펴보십시오 . 비활성 상태이지만 이러한 주제에 대해 많은 토론을 받았습니다.
참고 2 : 파일 개념은 시간 이 지남에 따라 크게 바뀌 었습니다 ( 최초의 프로그래밍 경험에 대한 이 답변을보십시오) : 1980 년대 IBM PC (디렉토리 없음 )의 첫 번째 MSDOS , 1978 Vaxen의 VMS- (모두 고정 레코드가 있음) 1970 년대 메인 프레임 ( OS / VS2 MVS를 사용하는 IBM / 370 )은 파일 및 파일 시스템의 개념이 매우 다릅니다 (특히 해당 시간에 하드 디스크 액세스 시간의 비율 때문에 코어 메모리 액세스 시간은 수천에 달했습니다. 따라서 현재 디스크가 절대적으로 사용 되더라도 디스크는 오늘보다 비교적 빠르게 실행 됩니다.이전 세기보다 더 빠른 오늘날의 CPU / 디스크 속도 비율은 약 백만입니다. 그러나 이제 SSD가 있습니다). 또한 파일이 메모리가 지속적 일 때 유용하지 않거나 유용하지 않습니다 ( CAB500 마그네틱 드럼, 1960 년대 또는 MRAM을 사용하는 향후 컴퓨터 )