티스토리 뷰

* 자기 디스크의 구조

- 트랙: 하드디스크 표면의 동심원

- 섹터: 트랙을 쪼갠, 데이터가 저장되는 기본 단위

- 실린더: 회전축에서 동일한 거리에 있는 트랙의 집합

- 클러스터: 파일을 저장하는 논리적 단위로 몇 개의 섹터를 묶은 것

 

* 디스크 스케줄링

데이터 액세스를 위해 디스크 헤드의 이동 경로를 결정하는 방법.

1) FCFS (First Come First Service) = FIFO: 대기 큐에 먼저 들어온 트랙에 대한 요청을 먼저 처리. 구현이 쉽지만 Arm이 많이 움직여서 Seek Time이 증가

2) SSTF (Shortest Seek Time First): 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 처리. 가운데 트랙이랑 안/바깥쪽 트랙이랑 응답시간 편차가 크다. 너무 바깥쪽에 멀리 떨어져있으면 Starvation이 발생할 수도 있음.

3) SCAN: 현재 헤드 위치에서 진행 방향으로 쭉 돌면서 서비스를 처리하고, 끝에 도달하면 반대 방향으로. Starvation은 발생하지 않으나 Wait Time이 뒤죽박죽임.

4) C-SCAN (Circular SCAN): 그냥 SCAN하곤 달리 끝에 도달하면 거기서 반대방향으로 움직이는게 아니라 처음 위치로 돌아가서 다시 정방향 스캔을 한다. 그냥 SCAN보단 Fair함.

5) N-step SCAN: 스캔 시작 전까지 들어와있던 요청들에 대해서만 이번 스캔에서 처리하고, 도중에 들어온 요청들은 반대 방향으로 스캔할때 처리함.

6) Eschenbach 스케줄링: 각 실린더에 대해서 한번의 디스크팩 회전 시간 동안만 입출력 요청을 처리하는 기법?

7) LOOK / C-Lookup : 기본적으로 양쪽 끝을 왕복하는데, 움직이고 있는 방향 쪽에 더이상 요청이 없으면 끝까지 가는게 아니라 그 시점에서 방향을 틀어버리는 것. 예측을 위한 계산이 별도로 필요하다.

 

ex) 대기 큐에 [90, 183, 37, 122, 14, 128, 65, 67] 이라는 요청이 들어와있고 디스크 트랙의 범위는 [1, 200] 이라고 치자.

현재 디스크 헤드의 위치는 53이고 진행방향은 <- 였다면,

> SSTF: 53 -> 65 -> 67 -> 90 -> 122 -> 128 -> 183 -> 37 -> 14

> C-SCAN: 53 -> 37 -> 14 -> (1) -> (200) -> 183 -> 128 -> 122 -> 90 -> 67 -> 65

 

* 파일 시스템

보조기억장치의 파일들을 관리하는 기술.

파일을 CRUD하고, 파일에 대한 접근 제어 방법을 제공하고, 정보손실과 파괴를 방지하고 보안성을 제공하는 등의 역할

 

* 파일 디스크립터

- 파일이 액세스되는 동안 OS가 알아야 할 관리 정보들을 모아놓은 자료구조

- 파일 제어 블럭 (FCB) 이라고도 함

- 보조기억장치에 저장되어 있다가 파일이 open될 때 메인 메모리로 옮겨진다.

내용: 보조기억장치의 type, 파일 ID, 디스크 내 주소, 파일 크기, 사용횟수, 생성일, 삭제일, 수정일 등...

 

* 파일 구조의 종류

1) 순차 파일: 연속된 물리적 저장공간에 기록. 저장장치 효율은 높지만 검색 효율은 낮다.

2) 직접 파일: 직접 접근 기억장치의 물리 주소를 통해 직접 접근. 해시함수 등을 이용.

3) 색인 순차 파일: 순차파일 + 직접파일. 각 레코드가 키값에 따라 논리적으로 배열. 순차, 랜덤처리가 모두 가능하고 레코드 추가/삭제가 용이하다. 대신 Index 처리시간때문에 파일처리속도가 느림.

> 기본 영역: 데이터 저장 공간

> 색인 영역: 인덱스가 저장되는 공간

> 오버플로우 영역: 블록 내 레코드가 모두 사용되었을 때 연결시켜 추가 블록을 할당받기 위한 공간

 

* 디렉토리 구조

1) 1단계 구조 (Single-Level Directory): 디렉토리가 하나. 모든 파일들의 이름이 Unique해야 함

2) 2단계 구조 (Two-Level Directory): 유저정보-파일정보 쌍으로 관리되며 파일 공유가 어렵다

3) 트리 구조 (Tree-structured Directory): 대부분의 OS에서 사용되고 있는 구조. 다른 폴더라면 이름이 같아도 된다

4) 비주기 구조: 파일/디렉토리의 공유가 가능. 하나의 파일이나 디렉토리가 여러 경로 이름을 가질 수 있다. 공유 파일 제거시 Dangling Pointer 이슈 발생.

5) 일반 그래프형 구조 (General Graph Directory): 사이클이 허용되고 공유 문제를 해결.

 

* 자원 및 파일 보호 기법

- 자원 보호 기법

1) 접근 제어 행렬 (Access Control Matrix): 접근 주체와 객체를 행렬 형태로 표현해서 접근 가능성을 나타내는 것

2) 접근 제어 리스트 (- List): 객체를 기준으로 접근 리스트를 구성

3) 권한 리스트 (Capability List): 접근 제어 행렬의 각 행을 중심으로 구성, 즉 사용자 기준으로 자격을 나타낸 것

4) Lock-key 기법: 2) 와 3) 을 절충한 기법으로 영역별로 키값을 설정해서 접근 제어

5) 전역 테이블: 영역, 객체, 접근 권한을 필드명으로 적고 세 데이터를 순서대로 하나의 레코드씩 추가

 

- 파일 보호 기법

1) 파일 네이밍: 파일 이름을 다른 사용자가 알 수 없게 함

2) 비밀번호 설정: 말 그대로...

3) 암호화: 파일 내용을 암호화

4) 접근 제어: 사용자에 따라 서로 다른 접근 권한 부여 (chmod 같은)

 

* 보안

- 외부 보안: 물리적인 침입자나 천재지변 등으로부터 시스템을 보호하는 것

> 시설 보안, 운용 보안

- 내부 보안: 하드웨어나 OS에 내장된 보안 기능을 통해 신뢰성을 유지하고 시스템을 보호

- 사용자 인터페이스 보안: 사용자의 신원을 OS가 확인하는 절차를 통해 시스템을 보호

 

- 암호화

> 비밀키 시스템 (대칭키): 사용자가 많아지면 관리해야 할 키가 늘어난다. DES 등

> 공개키 시스템 (비대칭키): 관리할 키가 적지만 속도가 느리다. RSA 등

- 인증 교환 기법: 메시지가 변조되지 않았고 정당한 상대방으로부터 전달된 것임을 확인하는 기법

- 전자 서명 기법

 

* 멀티프로세서

하나의 시스템에 여러 프로세서가 있는 것. 각 프로세서들은 전용 기억 장치를 사용하지만 공동으로 사용하는 장치도 있다. 다수의 프로세서를 이용해 빠른 처리 가능.

- 프로세서 연결 방식

1) 시분할 공유 버스

> 각종 장치들을 단일 버스로 연결한 구조

> 장치 추가가 쉽고 경제적

> 각 장치들이 버스를 사용하기 위해 경쟁이 발생하면 효율이 떨어지며, 버스가 고장나면 전체 시스템에 장애 

2) 크로스바 교환 행렬

> 버스 수를 메모리 수만큼 증가시킨 구조

> 장치 연결이 복잡해지지만 각 장치들이 서로 다른 경로로 정보 전송이 가능하다

3) 하이퍼큐브

> CPU의 수: 2^(CPU 연결점 수)

> 다수의 프로세서를 연결하고 확장성이 용이함. 대체로 경제적이나 프로세서가 많이 연결되면 비용이 급격히 증가

4) 다중 포트 기억장치

> 1) 방식과 2) 방식을 혼합한 방식. 다양한 연결 조합이 가능하나 전송 시간이 느리다.

 

- 멀티프로세서의 OS

1) Master/Slave 처리기

> 하나의 프로세서를 마스터, 나머지는 슬레이브로 지정.

> 슬레이브는 연산만 담당하며 I/O 발생시 마스터에게 요청한다.

2) 분리 수행 처리기

> 각 프로세서가 독자적인 운영체제를 수행하도록 구성, 인터럽트도 독립적으로 수행.

> 1) 방식과 달리 하나의 프로세서가 망가지더라도 전체 시스템이 다운되진 않는다.

3) 대칭적 처리기

> 여러 프로세서가 완전한 기능을 갖춘 하나의 운영체제를 공유하여 동시에 수행가능한 구조

> 복잡하지만 강력한 성능

 

* 프로세서 결합도

- Loosely-Coupled 시스템

> 각 프로세서마다 독립된 OS와 메모리를 가짐. 분산처리 시스템이라고도 한다.

> 각 시스템은 독립적으로 작동하며 메시지를 사용하여 상호 통신을 함

 

- Tightly-Coupled 시스템

> 하나의 OS가 모든 프로세서를 제어.

> 공유 메모리를 통해 프로세스간 통신을 한다. 저장 장치도 공유.

> 다중처리 시스템이라고도 함

> 공유 메모리를 잘 조율하는 방법이 필요

 

* 분산처리 시스템 (Distributed Processing System)

물리적으로 떨어져있는 시스템을 네트워크로 연결시켜 사용자에게 하나의 시스템인 것처럼 보이게 하는 것

약결합 (Loosely-Coupled) 시스템이라 볼 수 있다.

 

- 장점

> 투명성을 보장

> 다수 사용자의 데이터 공유 가능

> 시스템 확장이 용이

> 연산속도, 신뢰성, 가용성이 증가함

- 단점

> 설계와 소프트웨어 개발이 복잡해 구축 비용 증가

> 보안에 더 신경을 써야 함

 

- 투명성 (Transparency)

> 위치 투명성: HW, SW의 물리적 위치를 사용자가 알 필요가 없다

> 이주 (Migration) 투명성: 사용자나 App의 동작에 영향을 받지 않고 시스템 내의 객체를 이동 가능

> 복제 투명성: 시스템 안의 파일, 자원들의 복사가 자유로움

> 병행 투명성: 다중 사용자들이 자동으로 자원을 공유할 수 있음

 

- 분산 파일시스템

> 말 그대로 분산 시스템에서 파일 서비스를 제공하는 것

> 사용자는 장소에 구애받지 않고 같은 파일 시스템 구조에서 자신의 파일을 사용할 수 있다

> 다른 사용자간의 정보 공유가 쉬워짐

> NFS, LoCUS, Andrew 등이 있다

 

- 분산처리 시스템의 구조

> Star: 중앙 노드가 존재하는 형태. 중앙집중형이므로 관리 및 유지보수가 용이하나 중앙 노드가 뻗으면...

> Ring: 각 노드가 양옆의 두 노드와 물리적으로 연결됨.

> Tree: 노드가 트리 형태로 구성. 부모 노드가 고장나면 자식 노드들도 뻗는다.

> Network: 각 노드가 서로서로 모두 연결된 형태. 설치비용이 높지만 통신비용은 저렴.

> Multi-Access Bus Connection: 공유 버스 하나가 모든 노드와 연결. 노드의 추가/삭제가 용이하나 버스가 뻗으면...

 

* Unix 운영체제

- 유닉스 시스템의 구조

> 사용자

> 유틸리티: 사용자 프로그램

> 쉘 (Shell): 사용자와 시스템 간의 인터페이스이자 명령어 해석기

> 커널 (Kernel): 유닉스 시스템의 중심부로 메모리에 상주하면서 프로세스, I/O, 파일 관리 등을 담당하는 시스템 SW

> 하드웨어

 

- 유닉스 파일 시스템: 기본적으로 트리 구조

> 부트 블록: 부팅에 필요한 정보를 가지고 있는 블록

> 슈퍼 블록: 전체 파일시스템에 대한 정보를 가지고 있는 블록

> I-node 블록: 각 파일에 대한 정보 (메타데이터) 를 저장하고 있는 블록

> 데이터 블록: 실제 파일의 데이터를 저장하고 있는 블록

 

* 그 외 운영체제

- Windows

> GUI, 선점형 멀티태스킹

> FAT32 파일 시스템: File Allocation Table.

> PnP (플러그 앤 플레이): 하드웨어를 부착하면 자동으로 인식

> OLE (Object Linking and Embedding): 응용 프로그램간의 자료 공유

 

- MS-DOS

> CUI (Character User Interface)

> Single User, Single Tasking

> 트리 구조 파일 시스템

> 도스 명령어와 유닉스 명령어의 비교표

DOS UNIX 기능
ATTRIB chmod 파일 퍼미션 변경
CD cd 디렉토리 변경
CHDIR cd 디렉토리 변경
COPY cp 파일 복사
DEL rm 파일 삭제
DIR ls 디렉토리에 있는 파일 리스트 보기
FC- comm / cmp 파일 비교
TYPE cat 파일을 stdout으로 출력

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함