운영체제(), File System Interface

2022. 12. 7. 04:02카테고리 없음

728x90
반응형

File System Interface

 

세컨더리 스토리지에 컴퓨터 전원이 꺼지더라도 데이터를 저장하기 위한 파일 시스템이 있다.

13장은 사용자 입장에서의 File System이다. 14장과 15장은 개발자 입장에서의 File System이다.

 

Basic Concept

파일 시스템이란 전원이 꺼지더라도 오랜 기간 동안 정보를 저장하기 위해 지원하는 운영체제의 서브 시스템

레귤러 파일은 일반적인 파일이고, 디렉토리(폴더)는 파일을 논리적으로 잘 다루기 위해서 사용하는 파일이다. 

파일은 여러 사람들이 쉐어할 수 있게 하고, 변경하지 못하거나 볼 수 없게하는 프로텍션 기능도 제공해야한다.

 

 

File Structures

파일을 두 케이스로 나눈다.

 

텍스트 파일

텍스트 파일은 알파벳은 아스키 코드, 한글은 한글 코드 등으로 저장한다. 문자를 유니파이된 형태로 저장한다. 그 값이 의미있는 것이 아니라 이를 나타내는 코드로 변환해서 화면에 보여주는 식으로 진행된다. txt 파일, header 파일 등이 이에 해당한다.

 

 

바이너리 파일

바이너리 파일은 그 값 자체로 의미가 있는 파일을 의미한다. 예를 들어 그림이나 실행 파일이 이에 해당한다. 아래 한글 파일도 이에 해당한다. 이를 인식하기 위한 헤더 정보가 있는데 이러한 것들은 텍스트가 존재하지만 전체적으로는 바이너리 파일로 본다.

 

 

File Operations

파일과 관련된 시스템 콜이다. 

 

File type

파일 시스템의 종류에 따라 달라진다. 파일에 이름을 붙일 수 있고, 이 는 익스텐션(확장자)라고 표현한다. 유닉스는 익스텐션이라는 개념이 없다. 익스텐션을 붙이기도 하지만(.c와 같이) 이는 사람이 관리하기 위해서 필요한 것이다. 따라서 윈도우즈에서는 .exe나 .com가 아니면 실행이 안되지만 유닉스에서는 excute를 바이너리로 표현해 실행할 수 있는지 여부를 판단한다.

 

 

File Access

Sequential Access

파일은 Sequential access가 가장 많다. 이는 프로그램을 실행하면 실행파일의 코드를 처음부터 끝까지 읽는 것을 의미한다. 

 

Direct Access

데이터의 경우에는 내가 원하는 데이터를 골라서 읽을 수 있어야한다. 즉, 랜덤 액세스가 가능해야한다. 이러한 형태,는 Direct access라고 한다.  이는 블럭이나 바이트 단위로 액세스한다.

 

Recode Access

이는 레코드 단위로 읽고 쓴다. 이를 레코드 엑세스라 한다. 

 

Index access

주요한 키 값에 대한 인덱싱한 파일이 별도로 존재하고 서치는 인덱스에서 별도로 진행된다.


Directories

윈도우즈에서의 폴더이다. 디렉토리 내에 어떤 파일이 있는지 프로그램으로 읽을 수 있다. 이를 시스템 콜을 이용해서 읽을 수 있다.

 

Pathname Translation

윈도우에서는 탐색기인 GUI로 이동하지만 유닉스/리눅스에서는 커맨드를 입력해가며 디렉토리를 이동해야한다.

윈도우에서는 \(백슬래쉬), 유닉스/리눅스에서는 /(슬래시)를 사용해 경로를 표현한다.

 

File System mounting

유닉스/리눅스는 드라이브 개념이 없이 루트에서부터 내려간다. 운영체제가 추가된 드라이브를 사용하기 위해서는 파일 시스템을 만들고 마운팅이라는 절차가 필요하다. 기존에 있는 파일 시스템에 이를 붙인다. 

윈도우에서는 드라이브가 있다.

 

File Sharing - Remote File Systems

네트워크에 연결된 파일 시스템을 내 컴퓨터에 있는 것처럼 사용한다. 윈도우즈에서는 네트워크 드라이브를 하나 더 만들어서 사용할 수 있는데 이를 CIFS라고 한다. 

유닉스/리눅스에서 사용하는 것은 NFS라고 한다. 프로토콜/파일 시스템 모두 NFS라고 한다. 이게 윈도우즈보다 더 오래전부터 있었다.

 

 

Protection

사용자의 프로세스가 내가 사용하는 파일을 변경하거나 삭제하지 못하거나 리드도 못하게 하기 위한 방법이다. 윈도우즈는 기본적으로 나 혼자 쓰기에 이는 별로 중요하지 않지만 유닉스/리눅스에서는 협업을 하는 경우가 많기에 이는 중요해진다.

 

(1) Access Control lists

파일이나 디렉토리별로 사용자마다 어떤 것이 가능한지 체크하는 것이다. 현재 대부분 운영체제가 이 방법을 사용한다.

유닉스/리눅스는 모든 사용자를 다 표현하지 않고, 사용자를 그룹핑해서 3가지 클래스에 대해 이를 지원한다. 

 

(2) Capabilities

사용자별로 파일이나 디렉토리를 어떻게 사용할 수 있을지를 체크하는 것이다.

 

Access Lists in Unix/Linux의 3가지 클래스

Owner

Read / Write / Excute 모두 사용가능하다.

 

Group

Read / Write는 가능하고, Excute는 불가능하다.

 

Public

Excute만 가능하다.

 

하지만 이는 절대적인 것이 아니라 각 클래스 별로 사람들에게 어떻게 할지를 각 파일마다 설정하면 되기에 파일 하나 당 총 9비트가 더 소모된다. 각 클래스에 대한 프로텍션 값은 팔진수로 표현한다.

 

 

현재 디렉터리의 리스트를 보여준다.

-: 레귤러 타입

d: 디렉터리 타입

그 위에 각각 rwx가 쓰여져있다. 따라서 이를 보고 판단하면 된다. 메일의 경우에는 나만 메일을 읽을 수 있게 설정되어있다. 디렉터리에서 x는 디렉터리를 change 할 수 있다는 것을 의미한다.

 

728x90
반응형