파일 시스템이 무엇일까?
우리가 흔하게 쓰는 폴더 안에 폴더 안에 파일 몇개, 그리고 폴더 몇개, 그 폴더 안에 파일 몇개 폴더 몇개.... 끝도없이 구조를 만들 수 있다.
이런 구조를 어떻게 생각해냈고, 어떻게 접근하는걸까?
이거에 대해서 간단하게 공부해보았다.
일단, 폴더를 '디렉토리' 라는 명칭으로 파일 시스템이 이루어져 있다.
폴더는, 파일 시스템에서 부르는 디렉토리, 그 이상의 의미를 가진다.
파일 시스템에서, 파일들을 담으면서, 파일의 경로를 알려주는 디렉토리 이상으로 폴더는 역할을 가지고 있다.
폴더는 파일 시스템에서 다루지 않는 네트워크 환경등을 담고 있기 때문이다.
이를 알고, 디렉토리 & 파일로 파일 시스템을 이해해 보자.
파일 시스템은 디렉토리가 계층적으로 구조를 가지고 있다.
쉽게 말하면 디렉토리가 트리의 구조를 가지고 있다.
디렉토리 안에는 다수의 디렉토리가 존재할 수 있고, 그 속에 또 디렉토리고 다수 존재할 수 있다.
이런 구조속에서, 각 디렉토리는 파일을 가질 수 있다.
즉, 하나의 파일을 위해서는 하나 또는 다수의 디렉토리를 거치게 된다.
이들을 나열해두는 것이 경로이다.
- 윈도우 : '\'로 경로들을 구분한다.
- 리눅스(+맥) : '/'로 경로들을 구분한다.
우리가 사용하는 컴퓨터는, 하드디스크를 가지고 있다.
이 공간에 파일 시스템이 하나씩 들어간다.
그러면 공간을 나누면 어떻게 될까?
우리가 케이크를 한 덩이씩 팔지 않고, 조각케이크를 판다고 생각해보자.
케이크 한판을 사서, 모든 조각이 똑같은 맛을 먹을 수 있다.
조각 케이크 여러 개로 한 판을 만들면? 각 조각이 모두 맛이 다른 케이크가 될 수 있다.
이렇게, 하드디스크를 조각내서, 각 조각이 다른 파일 시스템을 가지게 할 수 있다.
이렇게, 디스크을 잘라서 각 조각이 다른 파일 시스템을 가지게 하는 것을, 디스크 파티션이라고 한다.
이렇게 하면 무슨 이점이 있을까?
- 각 파티션마다 다른 운영체제를 사용할 수 있다
- 시스템 파일, 개인 데이터를 분리해 관리를 수월하게 할 수 있다.
- 파티션이 하나 망가져도, 다른 파티션을 쓰면 된다!!
- 파일 시스템의 루트 노드(최상위 노드)가 여러개가 된다. 즉, a -> A, B, C, D를 a, b, c, d->로 더 짧게 경로수정을 할 수 있다.
- 민감한 데이터를 다루는 파일 시스템을 분리해, 데이터를 안전하게 관리할 수 있다.
이런 이점들이 있다.
그러면 디스크 파티션을 두건, 그렇지 않건 어쨌건!!!
파일 시스템이 어떻게 생겼는지 공부해야겠다.
- 파일 시스템의 구조
- 루트 노드가 존재하며, 그 안에 디렉토리와, 파일 시스템이 있다(여기에서 파일 시스템과 디렉토리는 운영체제 설치 후 배당된다) (해당 디렉토리명을 보고 생각나는 대로 적어봤다.)
- 디렉토리
- /bin : /usr/bin을 위해 사용하는 기호에 대한 링크들이 들어있다.
- /dev : 로컬 장치를 위한 특수 파일용 장치 노드를 포함합니다. /dev 디렉토리는 테이프 장치, 프린터, 디스크 파티션 및 터미널에 대한 특수 파일
- /etc : 장치에 대한 다양한 구성 파일이 들어있다.
- /lib : 이름과 형식이 lib*.a인 구조 독립형 라이브러리가 있는 /usr/lib 디렉토리에 대한 기호 링크
- 파일 시스템
- /usr : 변경되지 않고 시스템에서 공유될 수 있는 파일(실행 가능한 프로그램 및 ASCII 문서)을 포함하는 파일 시스템을 위한 마운트 위치의 역할
- /tmp : 작성 임시 파일을 포함하는 파일 시스템에 대한 마운트 위치
- /var : 각각의 기계를 연결 변환하는 다양한 파일에 대한 마운트 위치
- /home : 사용자 홈 디렉토리를 포함하는 파일 시스템에 대한 마운트 위치
- 디렉토리
- 루트 노드가 존재하며, 그 안에 디렉토리와, 파일 시스템이 있다(여기에서 파일 시스템과 디렉토리는 운영체제 설치 후 배당된다) (해당 디렉토리명을 보고 생각나는 대로 적어봤다.)
겁나 복잡하다.
실제로 사용해보면서 경로 탐색, 경로에 대해서 파일인지 디렉토리인지 검증, 해당 파일에 대한 데이터 조회 및 추가/수정을 주로 사용했던 것 같다.
막 쓰던 구조인데, 공부해보니 되게 딥한 내용들이었다.
조금씩 살을 더 붙여봐야겠따.
그럼...twenty thousand...🔥
'CS > 운영 체제' 카테고리의 다른 글
[운영체제] 리눅스 패키지(내가 맨날 헷갈린 apt쓸 때와 yum을 쓸 때) (1) | 2024.04.03 |
---|---|
[운영체제] 패키지(리눅스 배포 패키지, npm) (0) | 2024.04.03 |
[운영체제] 컴퓨터 구조 간단하게 정리해보기(부제. 왜 스왑 메모리가 느렸을까?) (0) | 2024.03.15 |
[운영체제] 주소지정 방식!(이거만 하고 진짜 컴퓨터구조와 운영체제를 봅시다) (0) | 2024.03.11 |
[운영체제] 소스코드 찍어먹기(부제 : 프로그래머스에서 js가 java보다 느린 이유?) (0) | 2024.03.06 |