File
저장장치에 저장되는 논리적 저장 단위
- 유저나 애플리케이션이 데이터를 저장하고 불러들이는 방법
- 비 휘발성
- 프로그램(source, object) 또는 데이터(numeric, character, binary)
파일의 속성들에는 다음과 같은 것들이 있다.
파일들에 대한 정보는 directory structure에 있고, directory structure은 disk 내에 존재한다.
File operations
file operation은 여러가지 있지만 그중에서
'Write'은 write pointer가 위치한 부분을 write하고
'Read'는 read pointer가 위치한 부분을 read한다.
'Reposition'은 seek이라 부르며, 파일 내의 위치를 바꾼다. 이를 통해 write, read pointer의 위치를 바꿀 수 있다.
'Truncate'는 파일의 특성은 남기고 내용만을 지운다.
'Create'과 'Delete'를 제외한 모든 operation은 'Open'을 먼저 한 뒤 실행되야 한다.
OS는 open된 파일을 open-file table이라는 데이터 구조를 통해 관리한다.
open-file table에 들어있는 variable 중 open count가 있는데 여기에는 파일이 몇번 열려 있는지에 대한 데이터가 담겨있다. 따라서 프로세서들이 파일을 열면 카운터가 하나씩 늘고 파일을 닫으면 하나씩 줄어든다. 파일을 열고 있는 프로세서가 없으면 open count는 0이 되고 해당 파일은 open-file table에서 제외된다.
위 그림은 Unix/Linux에서 사용하는 system call들이다. Creat과 Open은 'fd'라는 integer을 리턴하는데 이는 프로세서에서 연 파일들을 구별해주는 역할을 한다.
lseek - read/write하는 위치를 옮겨줌
stat - 파일에 대한 정보를 얻어옴
chmod - 파일의 모드를 변경(접근 권한을 변경)
chown - 파일의 주인을 변경
flock - 파일에 대한 lock을 적용
fcntl - 파일을 컨트롤 하는 다양한 작업을 할 수 있음
File locking
- shared lock: 여러 개의 프로세서가 동시에 lock을 걸 수 있음
- exclusive lock: 하나의 프로세서가 lock을 걸면 다른 프로세서는 lock을 걸지 못함
- mandatory: OS가 locking을 제공
- advisory: 파일을 사용하는 주체가 lock을 aquire release
Access methods
sequential access - 데이터를 순차적으로 접근하는 방식으로 일렬로 나열된 데이터를 처음부터 순서대로 접근하면서 데이터를 읽거나 씀
direct access - 데이터의 위치 또는 주소를 사용하여 데이터를 검색하고 수정하는 방식
index access - 일반적인 순차 방식 대신 index를 사용하여 데이터에 접근, 인덱스에는 해당 속성 값과 데이터의 위치에 대한 포인터를 포함
Directory structure
파일들에 대한 정보를 담고 있는 data structure
Efficiency - 폴더가 파일을 찾고자 할때 빠르게 찾을 수 있게 해야 함
Naming - 서로 다른 파일들의 이름을 다르게 하여 유저의 편의를 보장
Grouping - 파일을 그룹화하여 관리하여 더 편하게 함
Single-Level Directory
모든 유저들에게 하나의 directory만 제공됨
- 하나의 directory 밖에 없으니 name도 모두 달라야 하고 그룹화도 불가능함
Two-Level Directory
각 유저마다 다른 directory를 갖는다.
- path name = user name + file name
- 파일을 좀 더 효율적으로 탐색 가능
- 유저 당 하나의 directory만 가지므로 그룹화는 불가능함
Tree-Structured Directories
트리 형태의 directory
- directory가 sub directory를 가질 수 있음
- 모든 파일이 유일한 경로를 가짐
Acyclic-Graph Directories
하나의 파일이 서로 다른 경로를 가질 수 있는 방식
- 바로가기(symbolic link) 기능 사용 가능
General Graph Directory
사이클을 허용하는 방식
접근할 수 있는 파일 혹은 directory인지 판단하기 어려울 수 있음
-> garbage collection으로 접근 가능한지 판단
File protection
우리는 누가 파일에 어떤 식으로 접근 가능한지 나타내줄 수 있다.
ex) chgrp G game
chgrp은 디렉토리 그룹 소유권을 변경하는 명령, G는 그룹 소유자를 지정하는 옵션, game은 변경하려는 그룹의 이름이다.
따라서 본 명령은 현재 디렉토리에서 파일 또는 디렉토리의 그룹 소유자를 "game" 그룹으로 변경하는 명령이다.
Memory-Mapped Files
파일을 메모리에 매핑하여 파일과 메모리 간의 데이터를 직접 주고 받을 수 있는 기술
Memory-mapped files는 운영체제에서 지원하는 기능으로 파일을 가상 메모리 공간에 매핑하여, 파일을 메모리에 로드하거나 메모리에서 파일로 저장하는 과정을 줄여주며, 데이터를 효과적으로 처리할 수 있다.
'학교공부 > 운영체제' 카테고리의 다른 글
[운영체제] File-System Internals (0) | 2023.06.06 |
---|---|
[운영체제] File system implementation (0) | 2023.06.06 |
[운영체제] Main Memory (0) | 2023.05.11 |
Exercise 3. Process Synchronization (0) | 2023.04.24 |
[운영체제] Deadlock (0) | 2023.04.24 |