준코딩

파일 시스템 본문

CS/운영체제

파일 시스템

Ljunhyeob - App Dev 2019. 4. 9. 11:18

파일 시스템

-사용자가 운영체제에서 가장 관찰하기 쉬운 부분이다.

-파일의 이름을 정하고 저장, 검색을 위해서 논리적으로 어디에 위치시켜야 하는지에 대한 방법을 구성한 시스템.

 

파일의 개념

-컴퓨터는 정보를 자기 디스크, 자기테이프, 광디스크 같은 다양한 저장매체에 저장할 수 있다.

-저장장치들은 일반적으로 비휘발성이다.

 

파일 속성

-이름, 식별자, 유형, 위치, 크기, 보호, 시간, 날짜, 사용자 식별

-모든 파일에 대한 정보는 보조 저장장치에 상주하는 디렉터리 구조 내에 유지된다.

 

파일 연산

-파일이란 추상적인 데이터 유형이다. 파일을 적절히 정의하기 위해 파일에 대해 실행할 수 있는 연산들을 고려해 볼 필요가 있다.

 

-파일 생성, 파일 쓰기, 파일 읽기, 파일 내에서 위치 재설정, 파일 삭제, 파일 절단  6개 기본 연산들은 파일 조작에 필요한 최소 연산들이다..

 

파일 유형

-파일 시스템은 물론 전체 운영체제 설계 시 중요한 사항 중 하나는 운영체제가 파일 유형을 인식하고 지원할 것인지를 결정하는 것이다.

-운영체제가 파일 유형을 인식한다면 운영체제는 파일에 대해
 
합리적인 연산을 실행할 수 있다.

파일 구조

-파일의 유형을 사용하여 파일의 내부 구조 형태를 짐작할 수 있다.

-운영체제에서 지원하지 않는 파일 유형이 요구되는 새로운 응용 프로그램의 경우는 문제가 발생할 수 있다.

Ex) 실행파일이 메모리 상 어느 위치에 적재되며 첫 번째로 실행할 명령어의 위치를 운영체제가 파악할 수 있도록
   
 구조를 가져야만 한다

 

 

파일 잠금

-공유 잠금: 여러 프로세스가 동시에 잠금을 획득할 수 있다.

-배타적 잠금: 한 번에 한 프로세스만 잠금을 획득할 수 있다.

->모든 운영체제가 두 종류의 잠금을 모두 지원하지는 않는다.

->운영체제는 강제적(Windows) 또는 권고적(UNIX) 파일 잠금 방법을 제공할 수 있다.

 

 

접근 방법

-파일이 사용될 때 이 정보가 반드시 접근되어 컴퓨터 메모리로 읽혀야 한다.

 

 

순차 접근

-가장 간단한 접근방법이다. 파일의 정보가 레코드 순서로 차례대로 처리된다.

 

직접 접근

-파일은 고정 길이의 논리 레코드들로 구성되고 특별한 순서 없이 빠르게 레코드를 읽고 쓸 수 있다.

 

기타 접근

-파일에 대한 색인을 사용한다. 찾으려는 레코드가 있으면 먼저 이 색인부터 찾아

 그에 대응하는 포인터를 얻는다. 그런 다음 그 포인터를 사용하여 파일을 직접

 접근하고 원하는 레코드를 찾는다.

(색인): 검색을 빠르게 하기 위해 데이터를 저장하는 장소

->특정 장소에 데이터를 저장하는 과정

 

 

 

디렉터리 구조

-디렉터리: 파일 시스템 내부에 있는 것으로, 효율적인 파일 사용을 위해 디스크에 존재하는 파일에 대한 여러 정보를

 가지고 있는 특수한 형태의 파일이다.

 

 

저장소의 구조

-디스크는 전체를 파일 시스템으로 사용할 수 있다. 파일 시스템을 포함하고 있는 각 볼륨은 시스템에 존재하는 파일에
 
대한 정보 또한 가지고 있어야 한다.

 

 

디렉터리 개관

-디렉터리에서 실행될 수 있는 연산

->파일 찾기, 파일 생성, 파일 삭제, 디렉터리 나열, 파일의 재명명, 파일 시스템의 순회

1단계 디렉터리

-가장 간단한 구조의 디렉터리, 모든 파일이 같은 디렉터리에 존재하기 때문에 지원이 쉽고 이해하기 쉽다.

->파일이 많아지거나 다수의 사용자가 사용할 경우 심각한 제약이 따른다

->각 파일들은 서로 유일한 이름을 가진다. 서로 다른 사용자라 하더라도 같은 이름은 사용할 수 없다.

 

 

 

 

2단계 디렉터리

-사용자들에게 개별적인 디렉터리를 만들어 준다.

-UFD(User File Directory): 자신만의 사용자 파일 디렉터리, 비슷한 구조를 가지고 있지만 오직 한 사용자만의 파일을
       
저장한다.

-MFD(Master File Directory): 사용자의 이름이나 계정 번호로 색인되어있고, 엔트리는 사용자의 UFD를 가리킨다.

디렉터리엔트리: 디렉토리를 표현하는 데에 쓰이는 자료구조

트리 구조 디렉터리

-2단계 구조 디렉터리를 확장하여 다단계 트리 구조로 만들 수 있다.

-사용자들이 자신의 서브 디렉터리를 만들어서 파일을 구성할 수 있게 한다.

 

 

 

비순환 그래프 디렉터리

-디렉터리들이 서브 디렉터리와 파일을 공유할 수 있도록 허용한다.
-디스크 공간을 절약할 수 있다.

-디렉터리 구조가 복잡하고, 공유된 하나의 파일을 탐색할 경우 다른 경로로

 두 번 이상 찾아갈 수 있으므로 시스템 성능이 저하될 수 있다.

 

 

일반 그래프 디렉터리

-트리 구조에서 새로운 링크를 추가한 것

-탐색 알고리즘이 간단하다.

-불필요한 파일을 제거하여 사용 공간을 늘리기 위하여 참조 계수기가 필요함.

링크: 다른 파일이나 하위 디렉터리를 가리키는 포인

파일 시스템 마운팅

-파일이 사용되기 전에 열리는 것처럼 파일 시스템은 프로세스들에 의해 사용되기 전에 마운트 되어야 한다.

 

 

마운트 과정

1. 파일.

2. 디바이스가.

3. 운영체제는마운트 포인트에 장착되었음을 디렉터리 구조에 기록

->이 기법은 운영체제가 디렉터리 구조를 순회하고 파일 시스템을 적절히 교체할 수 있게 한다.

 

 

파일 공유

-공동 작업을 원하거나 결과를 얻기 위해 필요한 노력을 줄이기를 원하는 사용자에게 중요하다.

 

 

다수의 사용자

-운영체제가 여러 사용자를 수용할 때 파일 공유, 파일 지명, 파일 보호가 더욱 중요해진다.

-디렉터리 구조가 사용자의 파일 공유를 허용한다면 시스템은 파일 공유를 중재해야 한다.

 

 

원격 파일 시스템

-네트워크의 출현으로 원격 컴퓨터 간 통신이 가능해졌다. 네트워크는 캠퍼스 안에 또는 세계 곳곳에 퍼진 자원을

 공유하는 것을 가능하게 했다.

->공유 가능한 명백한 자원은 파일 형태로 제공되는 데이터이다.

 

클라이언트 서버 모델

-컴퓨터가 하나 이상의 원격 시스템으로부터 여러 파일 시스템을 마운트 하는 것을 허용한다.

->파일을 가지고 있는 컴퓨터를 서버, 파일에 접근하기를 원하는 컴퓨터를 클라이언트

-클라이언트 신원 확인은 좀 더 어렵다. 클라이언트는 네트워크 이름이나 IP주소 같은 다른 식별자로 확인 가능하지만

 이런 것들은 도용되거나 모방될 수 있다.

->도용의 결과로 인증되지 않은 클라이언트가 서버를 접근하도록 허가 받을 수 있다. 보다 안전한 해결 방안은 암호화된

 키를 통하여 클라이언트를 보안 인증하는 것이다.

 

 

분산 정보 시스템

-클라이언트-서버 시스템을 쉽게 관리하기 위해  분산 정보 시스템 이 원격 컴퓨팅을 위해 필요한 정보에

 단일화된 접근을 제공한다.

->도메인 네임 서비스(DNS)WWW를 포함하는 전체 인터넷의 호스트 이름을 네트워크 주소로 변환하는 서비스를

제공한다.

 

 

일관성 의미

-파일 공유를 지원하는 파일 시스템을 평가하는 데 있어 중요한 기준

-여러 사용자가 동시에 공유 파일을 접근하는 방법

->한 사용자가 데이터를 변경했을 때 다른 사용자가 변경된 데이터를 언제 사용하게 되는지를 지정

  ->동기화 알고리즘과 직접적으로 관련된다.

 

 

 

보호

-정보가 컴퓨터 시스템에 저장되어 있을 때 정보가 물리적인 손상(신뢰성)과 부적절한 접근(보호)으로부터

 안전하게 유지되어야 한다.

-신뢰성은 일반적으로 파일의 복사본에 의해 제공된다. 많은 컴퓨터는 파일 시스템이 뜻하지 않게 파괴될 경우를

 대비하여 복사본을 유지하기 위해 규칙적으로 디스크 파일을 테이프에 자동 복사하는 시스템 프로그램을 가지고 있다.

-보호 방법은 여러 가지가 있다. 소규모의 단일 사용자 시스템은 단순히 USB에 담아 그것을 책상 서랍이나 금고에 넣어

 잠가 놓으면 된다.

 

접근 제어

-보안 상 위험으로부터 제반 시설 및 환경을 보호하는 보안 대책.

-인증 접근 제어 : 비인가자 (또는 단말)의 사용을 막는 접근 통제

->각 파일이나 디렉터리에 접근 제어 리스트(ACL)를 연관하여 사용자가 요청한 접근에 대하여 권한이 있는지 확인.

-패킷 접근 제어 : 불필요 패킷을 걸러내거나 입출 제한

 

 

기타 보호 방법

-파일마다 패스워드를 연결시킨다.

->파일이 너무 많아지면 패스워드를 기억하기 힘들다.

-읽기, 쓰기 권한에 패스워드를 사용한다.

 

 

파일 시스템 구조

-디스크는 파일 시스템을 유지하기 위한 많은 보조 저장장치를 제공한다.

디스크 특징

-제자리에서 재기록이 가능하다.

-저장하고 있는 임의의 위치의 정보를 직접 접근할 수 있다.

 

 

디스크를 효율적이고 편리하게 접근하기 위해서 운영체제는 디스크 내에 반드시 하나 이상의 파일 시스템을 구성한다.

->파일 시스템은 데이터를 쉽게 저장하고, 찾고 또한 검색할 수 있다.

 

 

파일 시스템 구현

-많은 디스크 상의 구조와 메모리 내 구조가 파일 시스템을 구현하는데 사용된다.

-디스크에 유지되는 정보

*부트 제어 블록 : 운영체제를 부팅하기 위해 필요한 정보

*파티션 제어 블록 : 파티션에 대한 정보를 유지하는 블록으로 파티션의 크기, 블록의 크기, 블록수, 빈 블록 포인터
                          
FCB, FCB포인터 등등

*디렉터리 구조

 

 

FCB(File Control Block)

파티션과 마운팅

 

 

-파티션:  *하나의 디스크가 여러 개의 파티션으로 분할 가능

            *하나의 파티션에 여러 개의 디스크가 사용됨

 

미가공 파티션(raw disk): 파일 시스템을 포함하지 않음

->유닉스의 스왑공간, 데이터베이스에서 자체적인 포맷을 사용할 때

 

가공된 파티션(cooked disk): 파일 시스템을 포함

 

 

 

-마운팅: 하나의 파일 시스템을 다른 파일 시스템에 붙이는 것

마운팅 전

 

마운팅 후

가상 파일 시스템(VFS: Virtual File System)

: 파일 시스템 인터페이스를 제공하기 위해 구현된 커널의 서브시스템이다. 모든 파일 시스템은 공존하는 것 뿐만 아니라

  상호 동작하기 위하여 VFS에 의존한다.

->클라이언트 응용 프로그램이 여러 파일 시스템에 같은 방법으로 접근 가능

 

 

 

디렉터리 구현

-디렉터리 할당과 디렉터리 관리 알고리즘의 선택은 파일 시스템의 효율, 성능 및 신뢰성에 매우 큰 영향을 미친다.

 

 

*선형 리스트

-파일 이름과 데이터 블록을 가리키는 포인터들의 선형 리스트를 사용하는 것이다.

->이 방법은 프로그램이 쉽지만 실행 시간이 길다

->새로운 파일을 생성하기 위해 먼저 디렉터리를 탐색하여 같은 이름의 존재 여부 확인 후 끝 부분에 새로운 항목을

   첨가한다.

->파일을 삭제 하려면 디렉터리에서 이름을 찾아 해당된 공간을 방출시킨다

 

 

*해시 테이블

-파일 이름을 제시하면 해시로부터 값을 얻어서 그것을 포인터로 활용하여 리스트에 직접 접근할 수 있다.

-> 디렉터리 탐색 시간을 상당히 개선할 수 있다.

-> 충돌이 일어날 수 있다. (두 개의 파일이 같은 위치로 해시하는 상황)

단점: 해시 테이블이 고정된 크기를 갖는다

        ->해시 테이블의 크기에 따라 해시 기능도 제한을 받는다.

 

 

할당 방법

-파일들을 어떻게 디스크 공간에 배치해야 효율적으로 사용할 수 있고, 파일들을 빨리 접근할 수 있는가 하는 것.

 

 

*연속 할당

-각 파일을 디스크의 선형적으로 연속된 기억 공간을 할당한다.

장점: 파일 접근 시간이 빠름, 순차 접근과 직접접근이 가능

단점: 외부 단편화 발생

 

 

*연결 할당

-각 파일은 디스크 블록의 연결 리스트이고 디스크 블록은 디스크의 어느 곳에도 산재할 수 있다.

장점: 외부 단편화가 발생하지 않음

단점: 파일에 대한 순차접근만 가능 (연결리스트를 따라서)

*색인 할당

-디스크의 한 블록에 파일의 나머지 블록에 대한 포인터를 유지

장점: 연결 할당의 문제점인 직접 접근 불가능 문제를 해결

단점: 연결 할당에 비해 공간 낭비가 심함

 

디스크 자유 공간 관리(Free-Space Management)

-디스크의 공간은 제한되어 있기 때문에 삭제된 파일들이 차지하던 공간을 새로운 파일들을 위하여 다시 재사용하여야 한다. 시스템은 이러한 디스크 자유 공간 관리로 유지하고 관리한다.

 

 

 

비트 벡터

-자유 공간 리스트는 흔히 비트 또는 비트 벡터 로써 구현 된다. 여기서 각 블록은 1비트로 표현된다.

->블록이 자유로우면 비트는 1, 블록이 할당되어 있으면 비트는 0

장점: 첫 번째 빈 블록 찾기 쉬움

단점: 디스크 크기가 큰 경우 주기억장치 부담이 큼

 

 

 

 

연결 리스트(Linked list)

-모든 자유 디스크 블록들을 함께 연결시키는 것인데 첫 번째 자유 블록은 다음 자유 블록을 가리키는 포인터를 가진다. 두 번째 자유 블록은 다음 자유 블록의 포인터를 가지고 계속 그런 방법으로 구현 된다.

 

 

 

복구

-파일과 디렉터리는 때에 따라서 디스크와 주 메모리 두 곳에 존재하게 되기 때문에 시스템 고장으로

인하여 데이터 손실이나 데이터 간의 불일치가 생기지 않는다는 것을 보장하기 위한 노력을 해야 한다.

일관성 검사

-디렉터리 구조에 있는 데이터와 디스크에 있는 데이터 블록을 비교하고 불일치가 발견되면 그것을 정정하려고 시도한다.

 

 

 

 

백업과 복구

-자기디스크는 때때로 고장을 일으키기도 하고 디스크 고장은 데이터를 잃어버리게 할 수 있으므로 이때 자료가 영원히 손실되지 않도록 보장해 줄 필요가 있다.

->다른 저장장치에 백업

 

 

 

 

NFS

->네트워크를 통한 파일 공유

-SunOS Solaris 에서 제공하는 근거리/원거리 파일 접근 시스템

-클라이언트-서버 관계를 기반으로 함

목적: 파일 시스템들 사이에서  일정 수준의 공유를 투명하게 허용하는 것이다.

 

 

 

NFS 프로토콜

-원격 파일 연산을 위한 RPC(Remote Procedure Call)를 제공한다.

                     -> 아래의 연산들을 지원한다.

-디렉터리 내의 파일 검색

-디렉터리 항목 집합 읽기

-링크와 디렉터리들의 조작

-파일 속성의 접근

-파일 읽기와 쓰기

'CS > 운영체제' 카테고리의 다른 글

보안  (0) 2019.04.09
주 메모리 & 가상 메모리  (0) 2019.03.29
보안 Security  (0) 2019.03.29
운영체제 구조  (0) 2019.01.21
운영체제 서론2  (0) 2019.01.11
Comments