운영체제 수업 + Operating System Concepts 10E 정리 내용
Operating System Ch13 : File System Interface
Basic Concept
1. Memory
- 전원을 끄면 데이터가 사라짐
- 보조 기억 장치 : 전원을 꺼도 데이터가 사라지지 않음
2. File system
- OS가 보조 기억 장치를 위해 관리하는 체계
- 특징
- Implement an abstraction for secondary storage (files)
- Organize files logically (directories)
- Permit sharing of data between processes, people, and machines (sharing)
- Protect data from unwanted access (protection)
Files
1. File
- secondary 저장소에 저장된 것들 중에서 관련된 것들의 모임
- OS에서는 파일을 관리하는 기능을 제공해준다.
- file 구조
- byte sequence
- lines
- fixed length records
2. File Attributes
- OS가 파일을 관리하기 위해서 추가적인 여러 개념들이 필요하다
ex) 내PC (windows)
- file에 대한 많은 정보가 있어야 관리가 가능
3. File Operations
- OS의 관리 하에 특정 파일에 대해서 새로운 파일에 대해 read, write, move, copy 발생
- 특정 파일을 열면 파일에 대한 포인터가 생성된다. -> file seek
- unix와 linux에서는 system call로 지원
- 다른 언어에서는 unix/linux의 system call을 기준으로 라이브러리를 만들어서 사용
4. File Types
- Understood by file system - kernel이 알아야 함
- OS가 해당 파일이 어떤 파일인지 알고 있는 경우
- cf) windows에서 바로가기 기능
- ex) device, directory, symbolic, link
- Understood by other parts of OS or runtime libraries - kernel이 꼭 알 필요는 없지만 가까움
- OS가 완전히 알지는 못하지만 가까움. kernel과 user간의 system application과 같은 의미
- ex) executable, dll, source code, object code, text
- Understood by application programs - kernel과 원래 관련이 없음
- 해당 프로그램을 kernel에 등록하면 OS가 인식할 수 있음
- ex) pptx, docx, hwp
5. Encoding file types
- OS 마다 다른 encoding 방식 지원
- Windows
- encodes type in name
- 이름을 가져와서 사용하는 방식
- ex) .com .exe .bat .dll .jpg
- Unix
- encodes type in contents
- 상수 값이나 magic number를 가지고 저장하는 방식
- 파일마다 이미 약속된 특수한 상수값 적용
6. File Access
- file access의 방식은 크게 보면 Sequential 과 Random으로 나뉜다.
- Sequential access : 순차적, 비효율적
- Random
- Direct access
- random 과 거의 유사
- 다른 절차 없이 direct 하게 접근 가능
- Record access
- 특정한 파일이 어떤 위치에 있는지 정보를 알아야 random access 가능
- 해당 파일의 위치 정보를 알고 있는 곳이 record
- Index access
- 위치 정보를 알고있는 데이터들을 index로 저장하여 이용
- Record 정보를 index로 저장해두면 빠르게 데이터에 접근하여 찾을 수 있다.
Directory
1. Directories
- Directory : special 한 데이터를 가지는 file 개념
- windows에서 folder와 같은 개념
- Directory 아래에 존재하는 파일이나 디렉토리 리스트 정보를 저장
- 계층적 구성이 가능하여 경로가 생긴다.
2. Directory Internals
- directory 안에 들어있는 list는 sorting 되어 있지 않다.
-> random access로 접근할 것이기 때문에 sorting 할 필요 없다.
3. Directory Operations
- OS가 여러가지 operation을 지원해준다.
4. Pathname Translation
- path의 종류
- 절대 경로 : file system의 root directory 기준의 경로
- 상대 경로 : 현재 작업하고 있는 폴더의 위치 기준의 경로
- Windows : \사용
- Linux, Unix, Mac : /사용
5. File System Mounting
- Unix/Linux : mounting
- 새로운 저장공간을 추가하면 비어있는 디렉토리에 끼워넣는다.
- Windows : 파티션 별로 다른 루트(C:\, D:)
6. File Sharing
- 원격으로 주고받기 위해서 프로토콜을 사용, 물리적으로 abstraction 필요하다.
- Unix : NFS
- Windows : CIFS
Protection
1. Overview
- Windows 에서는 중요한 이슈가 아니다 (혼자서 사용)
- Unix, Linux 계열은 각각의 파일에 대해서 접근 권한을 부여할 수 있다. (다수의 사용자가 접근)
-> root, owner, guest
- ACLs (Access Control Lists)
- colum level로 관리
- 특정 파일 당 어떤 사용자가 어떤 동작을 할 수 있을지를 결정하는 방식
- 더 효율적인 방식
- root, owner, guest 세개만 확인 하고 접근 결과를 줄 수 있다.
- easier to manage
- Capabilities
- row level로 관리
- 특정 사용자 당 파일이나 오브젝트에 대한 권한을 부여
- 단일 파일 하나하나에 접근하여 다 찾아야 한다.
2. Access Lists in Unix/Linux
- Modes of access : read, write, execute (RWX)
- chmod (change mode) 사용
- owner, group, public으로 나눠진다.
- 각 subject가 파일에 접근하는 권한(RWX)을 순서대로 나열하여 가능하면 1 불가능하면 0으로 표현하고 10 진수로 바꿔서 나타낸다.
- ex) chmod 761 game
- 7 (1 1 1) : owner
- 6 (1 1 0) : group
- 1 (0 0 1) : public
- $ ls -l
- 현재 디렉토리의 모든 파일 리스트를 애트리뷰트와 함께 출력
- d가 붙어있는 것은 directory이다
- 디렉토리 / user id / group / size / 변경시간 / name
- 사용자 별로 보안처리를 하는 것이 중요하다.
3. Access Lists in Windows
Memory-Mapped File
- 기존 file IO
- file io 순서
- file open -> read/write -> file close
- write하는 것은 메모리에 모아두었다가 한꺼번에 쓰는 방식으로 동작한다.
-> 우리는 썻는지 안썻는지 확인 할 방법이 없기 때문에 file close를 항상 해줘야 한다.
- Memory mapped (
mmap()
)
- 프로세스의 특정 메모리를 우리가 쓰려고 하는 크기만큼 할당하여 mapping 시키는 방식
- local pointer 변수를 사용
- OS의 개입이 적고 쓰는 즉시 올라가는 방식
- 빠르지만 사용이 어려워서 잘 사용하지 않는다.
- OS의 개입이 없다면 신뢰성 측면에서 큰 차이가 있기 때문에
mmap()
시스템은 메모리가 부족한 시스템에서 사용하는 방식