File-System Structure

  • logical file system : meta data(내용을 제외한 모든 파일 시스템 구조) 관리, Directory 구조를 관리, FCB
  • file-organiztion module : 물리 블럭과 논리 블럭을 알고 있어서 논리 주소를 물리주소로 변경
  • basic file system : 적절한 장치드라이버에게 물리블록을 읽고 쓰도록 명령 내림
  • I/O control : Device driver와 interrupt handler로 이루어져 있으며 고수준 언어의 명령을 디바이스에 맞는 저수준 언어로 변경

 

Virtual File System

  • os는 동시에 여러 타입의 파일 시스템을 지원해야함.
  • 기존 파일 시스템 밑에 가상파일 시스템을 두어 다양한 파일 시스템을 다룸
  • 네트워크로 연결된 파일 시스템도 하나의 파일 시스템으로 볼 수 있도록 도와줌

 

Directory Implementation

  • 하드에서는 파일과 디렉터리를 대부분 선형 구조로 관리
  • Linked List를 이용(Hash Table, B+트리)

 

Allocation Methods

  • Contiguous Allocation : 외부 단편화가 일어날 수 있으며 압축에 많은 비용
  • Linked Allocation : 디스크를 구성하는 블락 단위로 연결리스트 구조로 연결, 중간에 접근하기 위해선 순차 탐색, 에러 블락있으면 끊긴다.
  • Indexed Allocation : index block을 두어 해당 블락안에 파일을 구성하는 블락들의 포인터를 담는다. 디렉토리는 파일 이름과 index block의 주소를 가진다. index block이 사라지면 파일을 모두 잃어 버린다..

 

Free-Space Management

  • Bit map : n개의 블락이 있으면 n개의 배열을 만들어 0과 1 저장
  • Linked List : 비어있는 블락끼리 연결
  • Grouping : 하나의 블락이 루트 블락이 되어 다른 빈 블락을 가리킴
  • Counting : 첫번째 빈 블락에 연속된 빈 블락의 개수 저장

 

(추가)

B-Tree

  • 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조
  • 자료를 정렬된 상태로 보관하고, 삽입 및 삭제를 대수 시간으로 가능
  • 상향식 구성

https://hyungjoon6876.github.io/jlog/2018/07/20/btree.html

'Computer Science > Operating System' 카테고리의 다른 글

[Linux] CentOS 교육 -2  (0) 2022.10.26
[Linux] CentOS 교육 -1  (0) 2022.10.24
[개념] File System 1  (0) 2021.08.12
[개념] Storage Management  (0) 2021.08.12
[개념] Memory Management 5(Virtual Memory)  (0) 2021.08.12

File

  • 컴퓨터 시스템을 편리하게 사용하기 위해 저장된 정보에 대한 일과된 논리적 관점을 제공하고 저장장치의 물리적 특성을 추상화하여 논리적 저장 단위, File을 정의
  • 속성 : 이름, 식별자, 타입, 위치, 크기, 시간 등
  • 명령어 : 생성, 쓰기, 읽기, 재설정, 삭제, 절단
  • open() 시스템 호출로 파일에 접근
  • 재접근에 대한 낭비를 줄이기 위해 open-file table에 모든 열린 파일에 대한 정보가 저장됨
  • close()로 닫으면 open-file table에서 제거됨
  • file pointer : 읽기와 쓰기 시스템 호출의 일부분, 파일을 어디까지 읽었다는 것을 나타냄
  • Open File Locking : Shared lock 여러 프로세스가 잠금 가능, writer lock 한 번에 한 프로세스만 잠금

 

File Structure & Internal File Structure

  • 각각의 파일들은 그 파일을 다루는 프로그램에 의해 인식 가능한 내부 구조를 일정한 형태로 가짐
  • 특정 파일들은 os가 인식할 수 있도록 미리 정해진 구조를 따름
  • 파일은 일련의 블록으로 간주, 디스크 입출력은 한 블록 단위로 수행되고 모든 디스크 블록들은 동일한 크기를 가짐

 

Access Methods

  • Sequentail Access : 순차 접근, Tape Model과 비슷
  • Direct Access : 고정길이의 논리 레코드의 집합으로 정의되어야함, 레코드 번호로 접근
  • IBM의 ISAM : 크기가 작은 마스터 색인을 메모리에 유지, 우선 메모리에서 색인 블록 번호를 찾고 레코드로 가서 순차적으로 데이터를 찾음.

 

Directory and Disk Structure

  • 디렉토리는 그 볼륨에 있는 모든 파일에 대한 이름, 위치, 크기, 유형과 같은 정보를 기록

  • 위 그림에서 directory는 root라 생각하면 되고 하나의 disk가 파티션의 복수의 directory로 나누어질 수 있다.
  • format : 해당 디스크의 데이터를 모두 지우는 것이 아닌 directory를 재설정

Directory 종류

Single-Level Directory

  • 모든 파일이 한개의 디렉터리 밑에 있다. (1:1)

 

Two-Level Directory

  • master file directory 밑에 user file directory 존재, 경로명을 써서 파일을 찾아가야 함

 

Tree-Structure Directories

  • os는 하위 디렉터리 역시 하나의 file로 본다. 비트를 설정해 0이면 file, 1이면 subdirectory
  • 아래로 계속해서 나아갈 수 있지만 cycle은 안된다. 즉, 파일공유 안됨!
  • rm -r <dir-name>에서 r의 recursive..

 

Acyclic-Graph Directories

  • 그래프 구조로 cycle 허용
  • 링크는 다른 파일이나 서브 디렉터리를 가리키는 포인터(하나의 파일로 취급)
  • 하나의 파일에 복수의 링크가 존재 가능
  • 원본 파일을 지워도 링크 파일은 존재 → Dangling pointer

 

General Graph Directory

  • 파일을 검색할 때 마스터 디렉터리부터 경로를 따라 탐색
  • 서브 디렉터리를 지시하는 링크가 사이클 만들면 똑같은 경로를 재탐색하거나 무한루프
  • 한 번에 탐색할 수 있는 디렉터리 개수를 제한!
  • garbage collection 기법을 사용해 외부에서 가리키는 지시 포인터 없으면 삭제

 

File-System Mounting

  • 파일 시스템의 디렉터리 구조에 접근을 하기 위해서는 마운트가 되어야 한다.
  • os는 디바이스 이름과 파일 시스템을 부착할 수 있는 mount-point가 있고 파일 시스템 연결 가능

 

File Sharing

  • 시스템에 복수의 사용자가 있다면 파일 공유 가능
  • 단 파일을 보호하기 위해 해당 파일에 대한 권한이 사용자마다 정해짐
  • 소유자, 그룹, 모든 사람 (리눅스 명령어 chmod로 권한 설정 가능)

Memory vs Storage

  • memory(DRAM)는 단기 데이터 액세스 허용(웹 탐색, 애플리케이션 로드 등)
  • storage(HDD)는 장기적 데이터 액세스 허용(파일, 애플리케이션 및 os)
  • memory와 storage는 함께 작동 가능 : 컴퓨터에 프로세스를 지원하기에 충분한 RAM이 없으면 HDD의 일부를 가상메모리로 변환 

Storage Management

  • 사용자가 스토리지 장치 사용을 최적화하고 데이터가 상주하는 모든 미디어의 데이터 무결성을 보호하는 프로세스
  • 보안, 가상화 등의 측면을 다룸
  • 성능, 신뢰성, 복구 가능성, 용량

 

 

❗ 자료가 너무 없네...? ❗

Virtual Memory

  • (메인 메모리 크기) < (프로세스 크기)를 위해 나왔다.
  • 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다.

  • 페이징 과정을 걸쳐 필요한 페이지만 메모리에 적재 "요구 페이징(Demand Paging)"

 

Demand Paging

  • 프로세스의 이미지를 backing store에 저장(swap device)

  • valid bit를 페이지 테이블에 추가(1 - memory에 적재 중, 0 - memory에 없음)
  • valid bit가 0인데 해당 페이지를 부르면 Page Fault 발생

  • pure demand paging : 처음부터 모든 페이지를 적재시키지 않고 CPU가 요구할 때 valid를 바꾸어 페이지를 적재
  • prepaging : 우선 필요할 것 같은 페이지를 적재시키고 필요할 때 다른 페이지를 적재

 

Page Replacement

FIFO

  • First-In First-Out
  • 메모리에 먼저 올라온 페이지를 먼저 내보낸다.
  • victim page의 대상은 가장 먼저 메모리에 올라온 페이지
  • 처음에 프로세스가 실행 될 때 최초 초기화를 시키는 역할만 진행
  • 프레임의 수가 많을수록 page fault가 감소 (Belady's Anomaly)

 

OPT

  • Optimal
  • 가장 사용하지 않을 페이지를 가장 우선적으로 내보낸다.
  • 미래를 알 수 없기 때문에 실질적으로 수행하기 어렵다.

 

LRU

  • Least-Recently-Used
  • 최근에 사용하지 않은 페이지를 가장 먼저 내보낸다.
  • 과거를 보고 판단, 실질적으로 사용 가능!

  • Global 교체 : 메모리상의 모든 프로세스 페이지에 대해 교체
  • Local 교체 : 메모리상의 자기 프로세스 페이지에서만 교체

'Computer Science > Operating System' 카테고리의 다른 글

[개념] File System 1  (0) 2021.08.12
[개념] Storage Management  (0) 2021.08.12
[개념] Memory Management 4(Segmentation)  (0) 2021.08.12
[개념] Memory Management 3(Paging)  (0) 2021.08.12
[개념] Memory Management 2  (0) 2021.08.12

Segmentation

  • 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자르자!
  • segment의 크기는 다 다를 수 있음.(code(main함수, 사용자 함수,...), data(array, structure,..), stack)
  • 하위 변위 비트(n bit)를 제외한 나머지 상위 비트가 segment number가 된다.
  • segment의 크기는 가변적, 동적 메모리 할당이 필요하다. → 외부 단편화 발생 가능

 

Segmentation + Paging

 

  • 프로세스를 세그먼트 단위로 자르고 이를 다시 일정 간격인 페이지 단위로 자른다.
  • 외부 단편화는 없앴지만 두 가지 테이블을 거쳐야 해서 속도가 조금 떨어진다.

Paging

  • 최초 적합과 최적 적합(1/3정도 메모리 낭비) → Compaction(메모리 계산 부담) → Paging
  • 프로세스를 일정 크기인 페이지로 잘라 메모리에 적재하는 방식
  • hole과 프로세스를 모두 특정 페이지 단위로 잘라서 관리
  • 프로세스를 나눈 페이지 마다 relocation register를 만들어 놓으면 CPU는 마치 프로세스가 연속된 메모리 공간에서 동작하고 있다고 생각...

  • MMU ⇒ page table
  • CPU가 내는 주소 : Logical Address / page table을 거쳐 Physical Address

ex) logical address = 50, page size = 16byte

50 = 110010(2)

하위 4bit(0010)은 n비트

상위 2bit(11)가 '3'의 값이 페이지 번호 → 이에 해당하는 페이지 테이블 숫자를 읽는다. 8이라 가정하면

8 = 1000(2)

8과 n비트를 합쳐 10000010(2)라는 물리적 주소로 간다. 10진수로 바꾸면 130!

 

  • 페이징 과정을 진행하면 내부 단편화가 발생할 수 있다.
  • 프로세스의 크기가 페이지 크기의 배수가 아니라면 마지막 프로세스의 페이지는 한 프레임을 다 채울 수 없다.
  • 하지만 외부 단편화에 비하면 낭비가 적다!

+ Recent posts