1필드 2~4필드 5~7필드 8~10필드
타입 소유자 그룹 사용자 기타 사용자
- r w x r w x  r w x

유닉스는 위와 같이 각 그룹을 3비트로 표현하는데, 읽기 엑세스(r), 쓰기 엑세스(w), 실행 엑세스(x)를 제어하여 파일당 9비트로 보호 정보를 사용한다.

ex) -rwxr-xr-x  : 소유자 읽기 쓰기 실행 권한 있음/ 그룹 사용자 읽기 실행 권한 있음/ 기타 사용자 읽기 실행 권한 있음.

이는 비트로 표현되기 때문에 r = 4, w = 2, x = 1, -(권한 없음) = 0이다.

타입의 종류는 다음과 같다

- : 파일
d : 디렉토리
| : 다른 파일을 가리키는 링크
p : pipe/ 두 개의 프로그램을 연결하는 파이프 파일
b : block device/ 블럭 단위로 하드웨어와 반응하는 파일
c : character device/ 스트림 단위로 하드웨어와 반응하는 파일

 

디렉터리 구조의 종류에는 크게 5가지가 있다.

1. 1단계 디렉터리

가장 간단한 구조로, 모든 파일이 하나의 디렉터리 내에 위치해 관리되는 구조이다.
하지만 모든 파일이 하나의 디렉터리에 존재하기 때문에 각각의 파일 이름이 달라야하고, 파일이나 사용자의 수가 증가하면 파일을 관리하는데에 어려움이 생긴다. 파일명은 보통 내용과 관련되어있고, 시스템에 따라 길이에 제한을 받는다.

2. 2단계 디렉터리

2단계 디렉터리 구조에서 루트는 마스터 파일 디렉터리(MFD)이고, 아래로 사용자 파일 디렉터리(UFD), 그 아래로 파일이 있다. 여기서 파일은 트리의 리프에 해당한다.

사용자 이름과 파일 이름은 루트 디렉터리로부터 리프까지의 경로로 정의되는데, 이를 경로명이라 한다. 원하는 파일의 경로명을 알아야 해당 파일을 지정할 수 있다.

마스터 파일 디렉터리는 각 사용자 이름, 계정 번호, 사용자 파일 디렉터리를 가리키는 포인터를 갖고 있으며, 사용자 파일 디렉터리를 관리한다.

사용자 파일 디렉터리는 한 사용자가 갖고 있는 파일들에 대한 정보를 가지고 있고, 해당 사용자의 파일을 관리한다.

두 파일이 서로 다른 사용자 파일 디럭터리에 속하는 경우, 동일한 파일 이름을 사용할 수 있다.

3. 트리 구조 디렉터리

말 그대로 트리의 형태를 띄는 디렉터리 구조다.

하나의 루트 디렉터리와 여러 개의 서브 디렉터리로 구성되어있다.

각 디렉터리에는 파일과 서브 디렉터리가 존재한다. 우리가 흔히 사용하는 폴더 안에 폴더나 파일이 들어있는것을 생각하면 이해가 편하다.

트리 구조 디렉터리는 디렉터리의 생성과 제거가 비교적 용이하다.

디렉터리 탐색은 포인터를 이용하고, 경로명은 절대 경로명상대 경로명이 있다.

절대 경로명은 루트에서부터 가리킨 파일까지 모든 경로를 지정하는것이고, 상대 경로명은 현재 디렉터리의 위치를 기준으로 목적하는 파일까지의 경로를 지정하는것이다.

4. 비순환 그래프 디렉터리

트리 구조 디렉터리를 확장한것이다.

트리 구조 디렉터리에서는 디렉터리간 파일이나 서브 디렉터리의 공유를 금지한 반면, 비순환 그래프 디렉터리에서는 디렉터리간에 파일이나 서브 디렉터리의 공유가 가능하다. 이는 한 폴더에 다른 폴더에 있는 파일이나 폴더의 바로가기를 생성한것을 생각하면 이해가 편하다.

여기서 일어나는 공유는 복사의 개념이 아니다. 한 디렉터리에서 공유한 파일이나 폴더에 수정이 일어나면 다른 디렉터리에서도 해당 파일이나 디렉터리의 변화를 볼 수 있다.

디렉터리 구조가 복잡하고, 공유된 하나의 파일에 대해 두번 이상 탐색될 수 있기 떄문에 시스템 성능이 저하될 수 있다.

그리고 한 디렉터리에서 공유된 파일을 삭제할 경우, 고아 포인터가 발생하는데, 이는 바로가기를 눌렀을 때 해당 파일이 없다는 문구가 뜨는것을 생각하면 이해가 쉽다. 

5. 일반 그래프 디렉터리

트리 구조에 링크를 더해 순환을 허용하는 그래프 구조이다.

디렉터리와 파일 공유에 대해 융통성이 있고, 탐색 알고리즘이 간단해 파일과 디렉터리에 대한 엑세스가 쉽다.

일반 그래프 디렉터리는 마지막 참조가 끝났음에도 메모리를 재할당 할 수 있는지 결정하는 쓰레기 수집(Garbage Collection)이 필요하다. 쓰레기 수집은 전 파일 시스템을 탐색해 엑세스할 수 있는 파일에 표시하고, 두번째 탐색에서는 표시하지 않은 메모리를 사용 가능 메모리 리스트에 추가하는 것이다.

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

[운영체제 공부] 제어 비트  (0) 2020.03.03
[운영체제 공부] RAID  (0) 2020.03.02
[운영체제 공부] 입출력 모듈  (0) 2020.03.02
[운영체제 공부] 가상 메모리  (0) 2020.02.27
[운영체제 공부] 세그먼테이션  (0) 2020.02.25

RAID(Redundant Array of Independent Disks)란 운영체제로 여러대의 물리적 디스크를 하나의 논리적 디스크로 인식하는 기술이다.

RAID 방법은 6계층으로 분류되며, 주로 사용되는 방식은 RAID 0, RAID1, RAID10 등이 있다.

 

RAID 0 (Striping 스트라이핑)

RAID 0은 여러 개의 하드디스크를 병렬로 배치해 하나의 디스크처럼 사용한다. 일련의 데이터를 이 디스크들에 일정한 크기로 나누어 분산 저장하는 방법이다. 그러나 RAID 0은 모든 디스크에 각 파일의 내용을 분산시키기 떄문에 하나의 디스크에 문제가 생기면 전체 파일이 손실된다. RAID 0의 장점은 여러 파일에 대한 읽기 및 쓰기 작업 처리량이 디스크 수를 곱한것만큼 빨라지는것이다.

RAID 1 (Mirroring 미러링)

RAID 1은 RAID 0처럼 데이터 스트라이핑을 사용하면서 배열 내의 모든 디스크에 동일한 데이터가 있는 미러 디스크를 가진다. 중복 저장된 데이터가 적어도 2개가 있는 드라이브로 구성된다. 읽기 요구는 요구 데이터가 있는 디스크 2개 중 어떤 디스크에서든 서비스 받을 수 있기 떄문에 성능이 향상될 수 있다. RAID 1은 드라이브에 장애가 발생하거나 데이터 손실이 발생해도 나머지 디스크로 액세스 가능하기떄문에 안정성이 높다. 그러나 디스크공간이 두 배 필요하다.

RAID 10 (1+0)

RAID 1로 미러링후, RAID 0으로 스트라이핑 한다.

RAID 0과 RAID 1을 응용한 방식으로, 디스크가 불량이 나면 미러링으로 묶인 하드를 통하여 손실된 데이터만 복원이 가능하다. 이 방법은 규모가 큰 DB영역을 다룰때 사용된다.

입출력 모듈(I/O Module)은 컴퓨터 시스템과 입출력 또는 주변장치(스캐너, 프린터 등)를 연결하는 역할을 수행한다.

입출력 모듈은 다음과 같은 기능들을 제공한다.

프로세서 통신 이 기능에는 주로 프로세서에서 전송한 명령 해독, 프로세서와 입출력 모듈 간의 데이터 교환, 현재 상태 보고, 마지막으로 묘듈에 연결된 여러 장치를 구분할 주소 인식 기능이 있다.  
디바이스 통신 상태 보고와 같은 장치간 통신을 지원한다.
제어/타이밍 기능 컴퓨터 내부 자원과 연결된 외부 장치 간의 데이터 흐름을 관리한다.
데이터 버퍼링 프로세서와 메모리 및 주변장치간의 데이터 전송 속도 차이를 관리하는 기능이다.
오류 검출 기계식 오류(용지 걸림) 또는 데이터 기반 오류를 감지하고 이를 프로세서에 보고한다.

 

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

[운영체제 공부] 디렉터리 구조  (0) 2020.03.03
[운영체제 공부] RAID  (0) 2020.03.02
[운영체제 공부] 가상 메모리  (0) 2020.02.27
[운영체제 공부] 세그먼테이션  (0) 2020.02.25
[운영체제 공부] 페이징  (0) 2020.02.24

램 디스크는 RAM을 디스크처럼 사용하는것을 말한다. 

램 디스크의 성능은 일반적으로 SSD, 하드 드라이브 등 모든 보조 기억장치보다 훨씬 빠르다.
이는 액세스 시간, 최대 처리량 및 파일 시스템 유형을 비롯한 여러 요인으로 인해 발생한다.

RAM에 저장되기 때문에 이는 휘발성 메모리임을 뜻하고, 의도적이든 우발적이든 컴퓨터를 끄면 데이터가 손실된다.

이는 일반적으로는 약점이지만, 암호화 된 파일의 해독된 사본 등을 작업할때는 장점으로 작용한다.

보통 램 디스크에 저장된 데이터는 영구적으로 다른 곳에 저장되어있다가 시스템이 재부팅 될 때 램 디스크에 다시 저장된다.

 

'잡다한 이야기' 카테고리의 다른 글

HTML을 공부해보자  (0) 2019.02.02
블로그 개시!  (0) 2018.12.31

가상 메모리는 사용자와 논리적 주소를 물리적으로 분리한 후 사용자가 메인 메모리 용량을 초과한 프로세스에 주소를 지정하여 메모리를 제한 없이 사용할 수 있도록 하는 개념이다. 각 프로세스에 균일한 주소 공간을 제공하여 메모리 관리가 단순하며, 메인 메모리를 더 효율적으로 사용할 수 있다.

간단히 말하면, 가격이 비싼 RAM의 용량부족을 대체하기 위해 보조기억장치의 일부를 메인메모리처럼 사용하는것이다.

하지만 최근 메인메모리의 값이 내려간 만큼, 메인메모리의 용량을 충당하기 쉬워져 예전보다 가상메모리의 필요성이 낮은 편이다.

+ Recent posts