이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.
파일과 디렉터리
- 모두 운영체제 내부 파일 시스템이 관리하는 존재들이다.
- 보조기억장치의 데이터 덩어리
파일(file)
- 보조기억장치에 저장된 관련 정보의 집합
- 의미 있고 관련 있는 정보를 모은 논리적 단위
파일을 이루는 정보
- 파일 이름
- 파일을 실행하기 위한 정보
- 파일 관련 부가 정보(=속성(attribute) 또는 메타데이터(metadata))
윈도우 운영체제에서 임의의 파일을 선택하고 마우스 우클릭을 하고 속성 버튼을 누르면 나타나는 정보가 파일 속성이다.
파일 속성과 유형
- 유형 : 운영체제가 인식하는 파일 종류(확장자)를 나타냄
파일 연산을 위한 시스템 호출
파일을 다루는 모든 작업은 운영체제에 의해 이뤄진다.
어떤 응용 프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제에 요청을 해야 한다.
운영체제는 이를 위해 다음과 같은 파일 연산을 위한 시스템 호출을 제공한다
- 파일 생성
- 파일 삭제
- 파일 열기
- 파일 닫기
- 파일 읽기
- 파일 쓰기
디렉터리(directory)
- 파일들을 관리하기 위해 디렉터리를 이용
- 윈도우 운영체제에서는 디렉터리를 폴더(folder)라고 부름
- 옛날 운영체제에서는 하나의 디렉터리만 존재했고 이를 1단계 디렉터리(single-level directory)라고 부른다.
- 현대에는 여러 계층을 가진 트리 구조 디렉터리(tree-structured directory)를 사용한다.
- 트리 구조 디렉터리는 최상위 디렉터리가 있고 그 아래에 여러 서브 디렉터리가 있고, 서브 디렉터리는 또 다른 서브 디렉터리를 가질 수 있다.
- 최상위 디렉터리는 흔히 루드 디렉터리(root directory)라 부르고, 윈도우에서는 (c:\), 유닉스에서는 (\) 로 표현한다.
절대 경로와 상대 경로
- 절대 경로(absolute path) : 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
- 상대 경로(relative path) : 현재 디렉터리에서 자기 자신까지 이르는 경로
절대 경로와 상대 경로
a.sh의 절대 경로는 / (또는 C:\)home\minchul\a.sh
현재 디렉터리 경로가 \home이라면 a.sh의 상대 경로는 minchul\a.sh
디렉터리 연산을 위한 시스템 호출
운영체제는 디렉터리 연산을 위해 시스템 호출도 제공한다. 대표적인 종류는 아래와 같다.
- 디렉터리 생성
- 디렉터리 삭제
- 디렉터리 열기
- 디렉터리 닫기
- 디렉터리 읽기
디렉터리 엔트리
- 많은 운영체제에서 디렉터리를 그저 '특별한 형태의 파일'로 간주, 즉 디렉터리도 파일이다.
- 파일이 내부에 해당 파일과 관련된 정보를 담고 있다면, 디렉터리는 내부에 해당 디렉터리에 담겨있는 대상과 관련된 정보를 담고 있다.
- 대상과 관련된 정보는 보통 테이블(표) 형태로 구성된다. 즉, 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장된다.
각각의 엔트리(행)에 담기는 정보는 파일 시스템마다 차이가 있다.
디렉터리 엔트리만 보아도 해당 디렉터리에 무엇이 담겨 있는지, 보조기억장치의 어디에 있는지를 직간접적으로 알 수 있다.
파일 시스템에 따라 디렉터리 엔트리에 아래와 같이 파일 속성을 명시하는 경우도 있다.
아래와 같은 구조의 디렉터리와 파일이 있다고 가정하면,
home 디렉터리 테이블은 위 그림의 오른쪽과 같이 구성된다.
..은 상위 디렉터리를 가리키고 .은 현재 디렉터리를 가리킨다.
디렉터리 엔트리를 통해 보조기억장치에 저장된 위치를 알 수 있기 때문에 home 디렉터리에서 minchul 디렉터리가 저장된 곳을 알 수 있고 따라서 그곳으로 이동할 수도 있다.
마찬가지로 minchul 디렉터리 엔트리에는 디렉터리에 속한 파일들의 이름과 이들의 위치를 알 수 있는 정보 등이 포함되어 있기 때문에 이 파일들이 보조기억장치 내에 저장된 위치를 알 수 있고 실행할 수 있다.
'컴퓨터 구조 & 운영체제 > 운영체제' 카테고리의 다른 글
[운영체제] 파일 시스템(File System) (0) | 2023.07.11 |
---|---|
[운영체제] 페이징의 쓰기 시 복사와 계층적 페이징 (0) | 2023.07.09 |
[운영체제] 페이지 교체와 프레임 할당 (0) | 2023.07.08 |
[운영체제] 페이징을 통한 가상 메모리 관리 (0) | 2023.07.07 |
[운영체제] 연속 메모리 할당 (0) | 2023.07.06 |