Operating System Ch 13

LeemHyungJun·2022년 12월 3일
0

Operating System

목록 보기
11/14
post-thumbnail

운영체제 수업 + 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() 시스템은 메모리가 부족한 시스템에서 사용하는 방식

0개의 댓글