[OS] 13. File System Interface

SYiee·2022년 12월 31일
0

🦕Operating System

목록 보기
12/14
post-thumbnail

OS는 컴퓨터의 하드웨어 리소스를 관리하는 주체이다.
이때 자원에 cpu, memory, io 장치 자원이 있다.
세컨더리 스토리지 안에 있는 logical한 부분을 운영체제에서 관리하는 것을 File System이라고 한다.

Files

File

  • A named collection of related information that is recorded on secondary storage
  • 관련된 정보를 집합으로 모아둔 것
  • OS 입장으로 보면 하나의 단위로 secondary storage에 저장 될 수 있는, 사용자가 한 단위로 볼 수 있는 것
    ⇒ 이런 파일을 체계적으로 관리하기 위한 시스템 = 파일 시스템
  • window : FAT → NTFS FAT 과 NTFS의 차이 : 안정성
  • Linux : ext
  • Apple : AFS
  • USB는 파일 시스템을 쓸까? → FAT 이건 하드디스크처럼 PC 안에서 설치해서 고정적으로 사용하는 것이 아니고 들고 다니면서 써야 한다.

File Operations

  • 실제로 우리가 코딩할 때
    • C랑 C++에서 기본적으로 제공하는 라이브러리 안에 이런것들을 platform independant하게 사용할 수 있도록 잘 만들어 두었다 인터페이스로
    • fstream, open …
  • 언어에서 제공하는 인터페이스는 같지만 운영체제마다 그 내부는 다르게 구현이 된다. 이유는 system call이 운영체제 마다 다르기 때문이다.

File Types

  • Understood by file systems : 파일 시스템이 알고 있는 파일들
    → device, directory, symbolic link, etc
  • Understood by other parts of OS or runtime libraries : 운영체제의 특정 파트 혹은 런타임 라이브러리나 사용자와읭 약속에 의해 만들어진 것들
    → executable, dll, source code, object code, text, etc.
  • Understood by application programs : 어플리케이션이상 사용자가 정해둔 것들
    → jpg, mpg, avi, mp3, etc.

✔ 운영체제가 파일의 타입을 알 필요가 있을까?

→ 운영체제가 알고 있거나 어플리케이션이 알고 있거나 둘 다 알고 있거나 정답은 없다.

→ .c 확장자를 운영체제는 텍스트 덩어리로 본다 그러나 gcc는 알고 유저도 안다.

💻 Encoding file types

  • Windows encodes type in name
    • .com, .exe, .bat, .dll, .jpg, .avi, .mp3, etc.
    • 윈도우는 extension 이라는 개념으로 인코딩을 함
    • 리눅스는 그러지 않은 확장자의 개념으로 익스텐션을 쓰는게 아니고 윈도우처럼 명확하게 구분하지는 않는다. extension이라는 개념이 들어가 있지 않는다.

File Access

1. Sequential access

파일을처음부터 쭈르륵 하는것

2. Direct access

원하는 곳을 드문드문 access 하는 것, 드문드문하려면 그게 어디 있는지 알아야 하는데 그 정보의 단위를 record라고 한다. record에 대한 index를 유지함으로 인해서 인덱싱 되어 있는 record 정보를 읽어서 접근하는 방식이 많이 사용되고 있고 그게 곧 random access record 이다

3. Record access

4. Index access

→ 밑에 세개는 하나의 세트

Example of Index and Relative Files

  • 인포21에 수많은 정보ㄷ르이 있는데 내 학점 들은 과목… 그런데 이걸 시퀀셜하게 읽으려고 하면 엄청 오래 걸린다. 오버헤드가 크다
  • DBMS 밑바닥에 index 파일을 만들고 여기에 레코드 정보를쭉 집어 넣고 이것을 이용해 찾아나감.
  • 웹브라우저로 특정 정보를 검색을 하면 데이터 센터 랜덤 메모리 액세스를 어떻게 하냐에 따라 검색 성능이 달라진다. 매커니즘 설계를 어떻게 하냐

Directories

윈도우에서의 폴더를 리눅스 유닉스에서 디렉토리라고 한다.

  • 디렉토리는 파일을 모아다가 구성한 하나의 구조
  • 사용자가 편하게 파일에 액세스하고 관리하고 정리할 수 있다.
  • 하이어라키컬한 구조를 가진다. 절대 경로나 상대경로 등등

Directory Internals

A directory is

  • unix 관점 : 디렉토리는 스페셜한 파일이다. 다른 레귤러 파일들의 리스트를 가질 수 있기 때문에 특별
  • 이 디렉토리는 개념 덕에 파일 시스템이 계층 구조를 가지게 되고 더 효과적으로 임의 접근이 가능하게 된다.
  • 그렇기 때문에 정렬되지 않는 상태로 저장이 된다. 실제도 피지컬한 형태로 저장이 될 때는 정렬이 되어 저장되지 않는다 → usually unordered effectively random

Directory Operations

  • 특정 디렉토리 밑에 파일이 있는지 프로그램에서도 읽을 수 있어야 한다. 운영체제가 파일 시스템을 관리하는데 이것 이제 사용자 프로그램이 액세스 할 수 있게 해주어야 한다.

Pathname Translation

  • 윈도우는 백슬래시 쓴다. 후발주자의 몸부림...

File System Mounting

  • 용량이 부족해서 ssd를 하나 더 샀다. 그러면 유닉스나 리눅스에서는 새로 산 것을 비어 있는 데렉토리에 끼운다. 그러면 루트 밑에 실제 물리적인 ssd가 설치 윈도우는 C: D: 각 드라이브가 독립적인 레터링을 갖는다.
  • 유닉스에는 루트 파일 시스템이 존재하고 그 루트 파일 시스템 밑에 비어 있는 부분에다가 마운티이라는 개념으로 추가 시킴. 비어있는 디텍토리 하나 만들고 거기에 추가

File Sharing – Remote File Systems

다른 컴퓨터 파일 시스템 영역을 나의 컴퓨터 파일 시스템인 것 처럼 접근하는 것

  • NFS is standard UNIX client-server file sharing protocol
  • CIFS is standard Windows protocol

→ 다 같은 개념임

Protection

Representing protection

  • 윈도우에서는 별로 안 중요, 혼자 쓰기 때문
  • 유닉스에 다수의 사용자들 접근을 해서 사용할 수 있기 때문에 프로텍션이 중요한다.
  • Access control lists (ACLs)
    : 특정 파일이랑 어떤 사용자가 어떤 동작을 할 수 있는지 설정해주는 것.
    특정 사용자당 파일이나 오브젝트
  • Capabilities
    : 특정 사용자당 파일이나 오브젝트에 대한 권한을 가질 수 있도록 설정해주는 것

⇒ 파일 수가 엄청나게 많아 서 ACL이 프로텍트 하기가 더 쉽다. 어떤 사용자한테 어떤 그룹한데 권한을 줄 것인지 결정

Access Lists in Unix/Linux

  • 파일에 대해 권한을 읽을 수 있는, 쓸 수 있는, 실행시킬 수 있는 구너한ㅇ으로 설정
  • 권한 설정을 할 때 각각의 사용자 혹은 그룹을
    1. owner access : 파일의 주인이 그 파일에 대해 어떤 권한을 가지고 있는지
    2. group access
    3. public access

Memory-Mapped File

  • file에 있는 data를 읽으려면 cpp에서는 fstream 객체를 하나 만들고 open해야하고 read write close 순서로 접근을 하는데 이 파일 액세스를 방금 말한 절차 없이 로컬 포인터 변수로 컨트롤 하는 것.
  • 포인터 변수를 파일을 가르키도록 만들어, 포인터에서 실제 파일을 읽으면 파일에서 데이터를 가지고 오고 포인터를 따라가서 무언가 write하면 실제 써지도록 mapping을 해둔 것이다.
profile
게임 개발자

0개의 댓글