본문 바로가기

정보처리기사/4과목 프로그래밍 언어 활용

[정보처리기사] Chapter 03. 프로그래밍 언어 활용: 응용 소프트웨어 기초 기술 활용

1. 운영체제의 개념

1.1. 운영체제(OS)의 정의

 운영체제(OS, Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 스스로는 어떤 유용한 기능도 수행하지 않는다.

 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.  유틸리티와 하드웨어 사이에 존재한다.

 

구조: HW > OS > Utility > APP > User

 

 

1.2. 운영체제의 목적 

 처리 능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축을 목적으로 한다.

 

처리능력 (Throughput)

일정 시간 내에 시스템이 처리하는 일의 양

반환 시간 (Turn Around Time)

시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간

사용 가능도 (Availability)

시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도

신뢰도 (Reliability)

시스템이 주어진 문제를 정확하게 해결하는 정도

 

1.3. 운영체제의 기능 

 프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입출력장치, 파일 및 정보 등의 자원을 관리한다.

 자원을 효율적으로 관리하기 위해 자원의 스케줄링* 기능을 제공하며, 사용자와 시스템 간의 편리한 인터페이스를 제공한다. 

 또한 운영체제는 시스템의 각종 하드웨어와 네트워크를 관리, 제어하며, 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공한다.

 이외에도 시스템의 오류를 검사하고 복구하며 자원 보호 기능을 제공하고, 입출력에 대한 보조 기능, 가상 계산기 기능을 제공한다.

 

* 스케줄링: 어떤 자원을 누가, 언제, 어떤 방식으로 사용할지 결정해주는 것

 

1.4. 운영체제의 주요 자원 관리

프로세스 관리

프로세스 스케쥴링 및 동기화 관리 담당, 프로세스의 생성과 제거, 시작과 정치, 메시지 전달 등의 기능 제공

기억장치 관리

프로세스에게 메모리 할당 및 회수 관리 담당

주변장치 관리

입출력장치 스케줄링 및 전반적인 관리 담당

파일 관리

파일의 생성과 삭제, 변경, 유지 등의 관리 담당

 

1.5. 운영체제의 종류 

운영체제

특징

인터페이스 

Windows

마이크로소프트 사가 개발한 운영 체제

GUI 

UNIX

AT&T벨 연구소, MIT, General Eletric이 공동 개발한 운영체제

CLI 

LINUX

UNIX와 호환이 가능한 커널, 누구나 제한 없이 활용 및 재배포 가능

CLI 

MacOS

애플사가 UNIX 기반으로 개발한 운영체제

GUI

MS-DOS

Window 이전에 사용되던 운영체제

CLI

 

◍ Window, MacOS, MS-DOS는 Client용이다. 

◍ UNIX, LINUX는 Server 용

* GUI(Graphic User Interface): 그래픽 사용자 인터페이스

* CLI(Command Line Interface): 키보드로 명령어를 직접 입력해 사용하는 사용자 인터 페이스 

* 커널: 운영체제의 가장 중요한 핵심 부분, 기본적인 서비스 제공

 

 


2. Windows

2.1. Windows의 개요

 

 1990년, Microsoft 에서 개발한 운영체제로, 95 부터 10까지 버전이 발전해 왔다. (버전: 95, 98, me, XP, Vista, 7, 8, 10 등) GUI, 선점형 멀티태스킹, OLE, PnP를 주요 기술로 사용한다. 

 

2.2. Windows의 특징

1) 그래픽 사용자 인터페이스(GUI: Graphic User Interface)

그래픽 사용자 인터페이스는 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식이다.

 

2) 선점형 멀티태스킹(Preemptive Multi-Tasking)

 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식을 말한다. 하나의 응용 프로그램이 CPU를 독점하는 것을 방지할 수 있어 시스템 다운 현상 없이 더욱 안정적인 작업을 할 수 있다.

(멀티태스킹 = 멀티 프로그래밍)

 

* 멀티태스킹: 여러 개의 프로그램을 동시에 열어 두고 다양한 작업을 동시에 진행하는 것

 

3) PnP(Plug and Play, 자동 감지 기능)

 PnP는 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능이다. 운영체제가 하드웨어의 규격을 자동으로 인식하여 동작하게 해주므로 PC 주변장치를 연결할 때 사용자가 직접 환경을 설정하지 않아도 된다. PnP 기능을 활용하기 위해서는 하드웨어와 소프트웨어 모두 PnP를 지원하여야 한다.

 

4) OLE(Object Linking and Embedding)

 OLE는 다른 여러 응용 프로그램에서 작성된 문서나 그림 등의 개체(Object)를 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능이다. OLE로 연결된 이미지를 원본 프로그램에서 수정하거나 편집하면 그 내용이 그대로 해당 문서에 반영된다.

 

5) 255자의 긴 파일명

 Windows에서는 파일 이름을 저장할 때 VFAT(Virtual File Allocation Table)을 이용하여 최대 255자까지 지정할 수 있다. 파일 이름으로는 몇 가지 특수문자(\/:*?"<>|)를 제외한 모든 문자 및 공백을 사용할 수 있으며, 한글의 경우 127자까지 지정할 수 있다.

 

* 특수문자가 불가능한 이유: 위의 특수문자는 프로그램에서 명령어로 오해할 소지가 있는 언어이다. 위의 문자가 파일명에 입력되면 프로그램이 이를 혼동하여 파일 수행이 불가능할 가능성이 높다. 때문에 이 문자들을 지정할 수 없는 것이다. 

6) Single-User 시스템

 컴퓨터 한 대를 한 사람만이 독점해서 사용한다. UNIX, LINUX, Windows NT와 같은 서버용 OS는 여러 사람이 사용하는 Multi-User 시스템이다.



3. UNIX/ LINUX/ MacOS 

3.1. UNIX의 개요

 UNIX는 1990년대에 벨 연구소, MIT, General Electric이 공동 개발한 운영체제이다. 시분할 시스템을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다. 

 대부분 C로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다. 크기가 작고 이해하기 쉽다. 

 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원한다. 때문에 많은 네트워킹을 제공하므로 통신망(Network) 관리용 운영체제로 적합하다. 또한, 트리 구조의 파일 시스템을 갖는다.

 이러한 특성들에 따라 전문적인 프로그램 개발에 용이하며, 다양한 유틸리티 프로그램들이 존재한다. 각 프로세스는 시스템 호출(프로세스가 커널에 접근하기 위한 인터페이스를 제공하는 명령어)을 통해 커널의 기능을 사용하며, 프로세스 간 통신은 시그널(간단한 메시지), 파이프(단방향 통신), 소켓(쌍방향 통신) 등을 사용한다.

 

3.2. UNIX 시스템의 구성

 

1) 커널(Kernel) 

 UNIX의 핵심적인 부분으로, 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행된다. 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.

 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 가지 기능을 수행한다.

 

2) 쉘(Shell)

 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기이다. 시스템과 사용자 간의 인터페이스 역할을 담당한다.

 DOS의 COMMAND.COM과 같은 기능을 수행한다. 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가 가능하다. 

 파이프라인(둘 이상의 명령어를 함께 묶어 처리한 결과를 다른 명령의 입력으로 전환하는 기능) 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있다.

 공용 Shell이나 사용자 자신이 만든 Shell을 사용할 수 있다.

 

3) 유틸리티 프로그램 (Utility Program)

 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용한다. DOS에서의 외부 명령어에 해당한다. 유틸리티 프로그램에서는 에디터, 컴파일러, 인터프리터, 디버거 등이 있다.

 

▶ UNIX에서의 프로세 스 간 통신

 각 프로세스는 시스템 호출을 통해 커널의 기능을 사용한다.

◍ 시그널(Signal): 간단한 메시지를 이용하여 통신하는 것, 초기 UNIX 시스템에서 사용한다.

◍ 파이프(Pipe): 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신이다.

◍ 소켓(Socket): 프로세스 사이의 대화를 가능하게 하는 쌍방향 통신이다.

 

3.3. LINUX

 1991년 Linus Torvalds가 UNIX 기반으로 개발했다. 프로그램 소스 코드가 무료로 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가할 수 있고, 다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능하다.

 UNIX와 완벽하게 호환 가능하며, 대부분의 특징이 UNIX와 동일하다.

 

3.4. MacOS

 1980년대 Apple이 UNIX를 기반으로 개발한 운영체제이다. 아이맥(iMac)과 맥북(MacBook) 등 애플 사에서 생산하는 제품에서만 사용이 가능하다. 

 드라이버 설치 및 intall과 uninstall의 과정이 단순하다.



4. 기억장치 관리의 개요

4.1. 기억장치 계층 구조의 특성

 

 기억장치는 레지스터, 캐시 기억장치, 주기억장치, 보조기억장치를 계층 구조로 분류할 수 있다. 계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 기억 용량이 적고 고가이다.

 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스할 수 있다.

 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나 보조기억장치에 있는 데이터는 직접 액세스할 수 없다.

보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다.

 

4.2. 기억장치의 관리 전략의 개요

 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재 시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것으로 반입(Fetch) 전략, 배치(Placement) 전략, 교체(Replacement) 전략이 있다.

 

4.3. 반입(Fetch) 전략

 반입 전략은 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략이다.

 

◍ 요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법이다.

◍ 예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법이다.



4.4. 배치(Placement) 전략

 배치 전략은 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략이다.

 

◍ 최초 적합(First Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법

◍ 최적 적합(Best Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화*를 가장 작게 남기는 분할 영역에 배치시키는 방법

◍ 최악 적합(Worst Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화*를 가장 많이 남기는 분할 영역에 배치시키는 방법

 

* 단편화: 데이터를 할당할 경우 생기는 빈 기억 공간

 

4.5. 교체(Replacement) 전략

 교체 전략은 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략이다.

 교체 전략에는 FIFO, OPT, LRU, LFU, NUR, SCR 등이 있다.

 

◍ FIFO(First-In First-Out): 가장 먼저 메모리에 적재된 페이지를 먼저 내보낸다.

◍ OPT(Optimal replacement): 앞으로 가장 사용되지 않을 페이지를 교체한다.

◍ LRU(Least Recently Used): 최근 가장 오랫동안 참조되지 않은 페이지를 교체한다.

◍ LFU(Least Frequently Used): 최근 가장 적은 참조횟수를 갖는 페이지를 교체한다.

◍ NUR(Not Used Recently): 최근에 사용하지 않은 페이지 중 앞으로도 사용되지 않을 가능성이 높은 페이지를 교체한다. 

◍ SCR(Second Chance Replacement): 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지한다. //참고 

 

 


5. 주기억장치 할당 기법

5.1. 주기억장치 할당의 개념

 주기억장치 할당 기법은 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용이며 연속 할당 기법과 분산 할당 기법으로 분류할 수 있다

 

연속 할당 기법

프로그램을 주기억장치에 연속으로 할당하는 기법

◍ 단일 할당 기법 : 오버레이, 스와핑

◍ 다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법

분산 할당 기법

(가상기억장치 관리 기법)

프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법

◍ 페이징 기법

◍ 세그먼테이션 기법

 

5.2. 단일 분할 할당 기법

 단일 분할 할당 기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 사용자만이 주기억장치의 사용자 영역을 사용하는 기법이다. 가장 단순한 기법으로 초기의 운영체제에 많이 사용하던 기법이다.

 운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용된다. 프로그램의 크기가 작을 경우 사용자 영역이 낭비될 수 있다.

 초기에는 주기억장치보다 큰 사용자 프로그램은 실행할 수 없었으나 오버레이 기법을 사용하면서 이 문제가 해결되었다.

 

오버레이

(Overlay) 기법

◍ 오버레이 기법은 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법이다.

◍ 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행한다.

◍ 프로그램이 실행되면서 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소에 새로운 프로램의 조각을 중첩(Overlay)하여 적재한다.

◍ 프로그램을 여러 개의조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 시스템 구조나 프로그램 구조를 알아야 한다.

스와핑

(Swiping) 기법

◍ 스와핑 기법은 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법이다.

◍ 주기억장치에 있는 프로그램이 보조기억장치로 이동되는 것을 Swipe Out, 보조기억장치에 있는 프로그램이 주기억장치로 이동되는 것을 Swipe In 이라고 한다.

◍ 하나의 사용자 프로그램이 완료될 때까지 교체과정을 여러 번 수행할 수 있다.

◍ 가상기억장치의 페이징 기법으로 발전되었다.

 

5.3. 다중 분할 할당 기법

1) 고정 분할 할당 기법(= 정적 할당 기법)

 고정 분할 할당(MFT, Multiple Contiguous Fixed parTition allocation)은 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법이다.

 프로그램을 실행하려면 프로그램 전체가 주기억장치에 위치해야 한다. 프로그램이 분할된 영역보다 커서 영역 안에 못들어가는 경우가 발생할 수 있다.

 일정한 크기의 분할 영역에 다양한 크기의 프로그램이 할당되므로 내부 단편화 및 외부 단편화가 발생하여 주기억장치의 낭비가 많다. 실행할 프로그램을 미리 알고 있어야 한다.

 다중 프로그래밍을 위해 사용되었으나 현재는 사용되지 않는다. 또한 메모리의 할당 방식이 정해져있는 방식이기 때문에 정적 할당 기법(Static Allocation)이라고도 한다.

 

2) 가변 분할 할당 기법(= 동적 할당 기법)

 가변 분할 할당(MVT, Multiple contiguous Variable parTition allocation)은 고정 분할 할당 기법의 단편화를 줄이기 위한 것으로, 미리 주기억장치를 분할해 놓는 것이 아니라 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법이다.

 주기억장치를 효율적으로 사용할 수 있으며, 다중 프로그래밍의 정도를 높일 수 있다. 고정 분할 할당 기법에 비해 실행될 프로세스 크기에 대한 제약이 적다. 단편화를 상당 부분 해결할 수 있으나 영역과 영역 사이에 단편화가 발생할 수 있다.

 메모리 크기가 유동적이므로 동적 할당 기법(Dynamic Allocation)이라고도 한다. 

* 내부 단편화: 프로그램이 할당된 후 사용되지 않고 남아있는 공간

* 외부 단편화: 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아있는 분할된 전체 영역

* 단편화(Fragment): 남아 있는 공간을 말한다.

  

3) 단편화 해결 방안

단편화 해결 방안에는 통합과 압축이 있다. 

◍ 통합(Coalescing): 인접공간 합침

◍ 압축(Compaction): 기억공간의 맨 끝으로 합침

 

 


6. 가상기억장치 구현 기법 / 페이지 교체 알고리즘

6.1. 가상기억장치의 개요

 가상기억장치는 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다. 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리한다.

 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용한다. 가상기억장치를 이용하면 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.

 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업(매핑, Mapping)이 필요하다. 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다. 

 가상기억장치의 일반적인 구현 방법에는 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌 수 있다.

 

6.2. 페이징(Paging) 기법

 페이징 기법은 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법이다.

 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 한다.

 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다. 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요하다.

 페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다. 페이지 크기가 4KB이고 사용할 프로그램이 17KB라면 프로그램은 페이지 단위로 4KB씩 나누어지게 된다. 이때 마지막 페이지의 실제 용량은 1KB가 되고, 이것이 주기억장치에 적재되면 3KB의 내부 단편화가 발생한다.

 

6.3. 세그멘테이션(Segmentation) 기법

 세그먼테이션 기법은 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법이다. 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.

 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다. 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위해서이다.

 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요하다. 연속적인 가상주소가 반드시 연속적인 실기억주소로 변환되지 않아도 되는데, 이를 인위적 연속성(Artificial Contiguity)이라고 한다.

 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키(Storage Protection Key)가 필요하다.

 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.

 

6.4. 페이지 교체 알고리즘

 페이지 교체 알고리즘은 페이지 부재(Page Fault)가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법이다. 페이지 교체 알고리즘에는 OPT, FIFO, LRU, LFU, NUR, SCR 등이 있다.

 

1) OPT(OPTimal replacement, 최적 교체)

 OPT는 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법이다. 벨레이디가 제안한 것으로, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘이다.

 

2) FIFO(First In First Out)

 FIFO는 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법이다.

 

참조
페이지 

2

3

2

1

5

2

3

5

페이지
프레임 

2

2

2

2

5

5

5

5

 

3

3

3

3

2

2

2

 

 

 

1

1

1

3

3

부재 발생

 

 

 

3) LRU(Least Recently Used)

 LRU는 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다. 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체한다. 숫자를 증가시키며 가장 큰 것을 대체한다. 갱신되면 초기값으로 돌아온다.

 

참조
페이지 

2

3

2

1

5

2

3

5

페이지
프레임 

2

2

2

2

2

2

2

2

 

3

3

3

5

5

5

5

 

 

 

1

1

1

3

3

부재 발생

 

 

 

 

4) LFU(Least Frequently Used)

 LFU는 사용 빈도가 가장 적은 페이지를 교체하는 기법이다. 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용된다.

 

5) NUR(Not Used Recently)

 LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법이다. 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.

 최근의 사용 여부를 확인하기 위해서 각 페이지마다 두 개의 비트, 즉 참조 비트와 변형 비트가 사용된다. 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정된다.

 

참조 비트

0

0

1

1

변형 비트

0

1

0

1

교체 순서

1

2

3

4

 

6) SCR(Second Chance Replacement, 2차 기회 교체)

 SCR은 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로, FIFO 기법의 단점을 보완하는 기법이다.

 

 


7. 가상기억장치 기타 관리 사항

7.1. 페이지 크기 / 비교문제

페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다르다.

 

페이지 크기가 

작을 경우

◍ 페이지 단편화가 감소하고, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어든다.

◍ 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지할 수 있다.

◍ Locality에 더 일치할 수 있기 때문에 기억장치 효율이 높아진다.

◍ 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어진다.

◍ 디스크 접근 횟수가 많아져서 전체적인 입출력 시간을 늘어난다.

페이지 크기가 

경우

◍ 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라진다.

◍ 디스크 접근 횟수가 줄어들어 전체적인 입출력의 효율성이 증가된다.

◍ 페이지 단편화가 증가되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 늘어난다.

◍ 프로세스(프로그램) 수행에 불필요한 내용까지도 주기억장치에 적재될 수 있다.

 

7.2. Locality

 Locality(국부성, 지역성, 구역성, 국소성)는 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론이다.

 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다. 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중 하나로, 가상기억장치 관리의 이론적인 근거가 된다.

 데닝(Denning)교수에 의해 구역성의 개념이 증명되었으며 캐시 메모리 시스템의 이론적 근거이다. Locality의 종류에는 시간 구역성(Temporal Locality)과 공간 구역성(Spatial Locality)이 있다.



시간 구역성

(Temporal Locality)

◍ 프로그램이 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스 하는 현상

◍ Loop, Stack, Sub Routine, Counting, Totaling에 사용되는 변수 기억 장소

공간 구역성

(Spatial Locality)

◍ 프로그램 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상

◍ Array 순회, 순차적 코드, 데이터 저장 기억장소 등

 

7.3. 워킹 셋(Working Set)

 워킹 셋은 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다. 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용한다.

 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정된다. 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간이 지남에 따라 변경된다.

 

7.4. 페이지 부재 빈도 방식

 페이지 부재(Page Fault)는 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상이며, 페이지 부재 빈도는 페이지 부재가 일어나는 횟수를 의미한다.

 페이지 부재 빈도(Page Fault Frequency) 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식이다.

 운영체제는 프로세스 실행 초기에 임의의 페이지 프레임을 할당하고, 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀더 많은 페이지 프레임을 할당하고, 부재율이 하한선을 넘어가면 페이지 프레임을 회수하는 방식을 사용한다.

 

7.5. 프리페이징(Prepaging)

 프리페이징은 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법이다. 기억장치에 들어온 페이지들 중에서 사용되지 않는 페이지가 많을 수도 있다.

 

7.6. 스래싱(Thrashing)

 스래싱은 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상이다. 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정중 자주 페이지 부재가 발생함으로써 나타나는 현상으로, 전체 시스템의 성능이 저하된다.

 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 된다.

 

▶ 스래싱 현상 방지 방법

◍ 다중 프로그래밍의 정도를 적정 수준으로 유지한다.

◍ 페이지 부재 빈도를 조절하여 사용한다.

◍ 워킹 셋을 유지한다.

◍ 부족한 자원을 증설하고, 일부 프로세스를 중단시킨다.

◍ CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영한다.

 

 


8. 프로세스의 개요

8.1. 프로세스(Process)의 정의

 프로세스는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업, 태스크라고도 한다. 프로세스는 이하의 특성을 가진 프로그램을 말한다. 

 

◍ PCB를 가진 프로그램

◍ 실기억장치에 저장된 프로그램

◍ 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위

◍ 프로시저가 활동중인 것

◍ 비동기적 행위를 일으키는 주체

◍ 지정된 결과를 얻기 위한 일련의 계통적 동작

◍ 목적 또는 결과에 따라 발생되는 사건들의 과정

◍ 운영체제가 관리하는 실행 단위

 

8.2. PCB(Process Control Block, 프로세스 제어 블록)

 PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로, Task Control Block 또는 Job Control Block이라고도 한다. 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다. PCB에 저장되어 있는 정보는 다음과 같다.

 

저장 정보

설명 

프로세스의 현재 상태

준비, 대기, 실행 등의 프로세스 상태

포인터

◍ 부모 프로세스에 대한 포인터: 부모 프로세스의 주소 기억

◍ 자식 프로세스에 대한 포인터: 자식 프로세스의 주소 기억

프로세스 고유 식별자

프로세스를 구분할 수 있는 고유의 번호

스케줄링 및 

프로세스의 우선순위

스케줄링 정보 및 프로세스가 실행될 우선순위

CPU 레지스터 정보

Accumulator, 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC)등에 대한 정보

주기억장치 관리 정보

기준 레지스터, 페이지 테이블에 대한 정보

입출력 상태 정보

입출력장치, 개방된 파일 목록

계정 정보

CPU 사용 시간, 실제 사용 시간, 한정된 시간

 

8.3. 프로세스 상태 전이

 

 

버퍼 

스풀링 

주기억장치  

보조기억장치 

한개 작업 

여러개 작업 

 

 프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변화하는 것을 의미한다. 프로세스의 상태는 제출, 접수, 준비, 실행, 대기 상태로 나눌 수 있으며, 이 중 주요 세 가지 상태는 준비, 실행, 대기 상태이다.

 

1) 제출(Submit)

◍ 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태이다.

 

2) 접수(Hold)

◍ 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태이다.

 

3) 준비(Ready)

◍ 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태이다.

◍ 프로세스는 준비상태 큐에서 실행을 준비하고 있다.

◍ 접수 상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행된다.

 

4) 실행(Run)

◍ 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태이다.

◍ 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비 상태로 전이된다.

◍ 실행중인 프로세스에 입출력처리가 필요하면 실행중인 프로세스는 대기 상태로 전이된다.

◍ 준비 상태에서 실행 상태로의 전이는 CPU스케줄러에 의해 수행된다.

 

5) 대기(Wait), 보류, 블록(Block)

◍ 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태이다.

 

6) 종료(Terminate) 

◍ 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태이다.

 

8.4. 프로세스 상태 전이 관련 용어

◍ Dispatch: 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정이다.

◍ Wake Up: 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정이다.

◍ Spooling: 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정이다.

◍ 교통량 제어기(Traffic Controller): 프로세스의 상태에 대한 조사와 통보를 담당한다.

 

8.5. 스레드(Thread)

 스레드는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다. 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다.

 프로세스의 일부 특성을 갖기 때문에 경량 프로세스라고도 한다. 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당한다. 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.

 

1) 스레드의 분류

사용자 수준의 스레드

◍ 사용자가 만든 라이브러리를 사용하여 스레드 운용

◍ 속도는 빠르지만 구현 어렵 

커널 수준의 스레드

◍ 운영체제의 커널에 의해 스레드를 운용

◍ 구현이 쉽지만 속도가 느림 

 

2) 스레드 사용의 장점

◍ 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 있다.

◍ 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.

◍ 응용 프로그램의 응답 시간을 단축시킬 수 있다.

실행 환경을 공유시켜 기억장소의 낭비가 줄어든다.

◍ 프로세스들 간의 통신이 향상된다.

◍ 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.

 

 


9. 스케줄링

9.1. 스케줄링(Scheduling)의 개요

 스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다. 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다. 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있다.

 

1) 장기 스케줄링

 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미한다. 작업 스케줄링, 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 실행된다.

 

2) 중기 스케줄링

 어떤 프로세스들이 CPU를 할당받을 것인지를 결정하는 작업을 한다. CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절한다.

 

3) 단기 스케줄링

 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미한다. 프로세스 스케줄링, 하위 스케줄링이라고도 한다. 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행된다.

 

▶ 문맥교환 

 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미한다.

 

9.2. 스케줄링의 목적

 스케줄링의 목적 CPU 및 자원을 효율적으로 사용하기 위함이다. 이러한 목적에는 다음과 같은 항목들이 있다. 

 

◍ 공정성: 모든 프로세스가 공정하게 할당한다.

◍ 처리율(량) 증가: 단위 시간당 프로세스를 처리하는 비율(양)을 증가시킨다.

◍ CPU 이용률 증가: 프로세스 실행 과정에서 주기억장치를 액세스한다든지, 입출력 명령 실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비 시간을 줄이고, CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가시킨다.

◍ 우선순위 제도: 우선순위가 높은 프로세스를 먼저 실행한다.

◍ 오버헤드 최소화: 오버헤드를 최소화 한다.

◍ 응답 시간 최소화: 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.

◍ 반환 시간 최소화: 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.

◍ 균형 있는 자원의 사용: 메모리, 입출력장치 등의 자원을 균형 있게 사용한다.

◍ 무한 연기 회피: 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.

◍ 스케줄링의 성능 평가 기준: CPU 이용률, 처리율, 반환 시간, 대기 시간, 응답 시간

 

9.3. 프로세스 스케줄링의 기법

1) 비선점(Non-Preemptive) 스케줄링

◍ 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.

◍ 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.

◍ 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.

◍ 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합하다.

◍ 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생할 수 있다.

◍ 비선점 스케줄링의 종류에는 FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘이 있다.

 

2) 선점(Preemptive) 스케줄링

◍ 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.

◍ 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.

◍ 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용된다.

◍ 많은 오버헤드를 초래한다.

◍ 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요하다.

◍ 선점 스케줄링의 종류에는 Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등이 있다.

 

 


10. 환경 변수

10.1. 환경 변수의 개요

 환경 변수란 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미한다.

환경 변수는 변수명과 값으로 구성되며 시스템의 기본 정보를 저장한다. 또한, 자식 프로세스에 상속된다. 

 환경 변수는 시스템 전반에 걸쳐 적용되는 시스템 환경 변수와 사용자 계정 내에서만 적용되는 사용자 환경 변수로 구분된다.

 

10.2. Windows에서의 환경 변수

 Windows에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞뒤에 '%'를 입력해야 한다. set을 입력하면 모든 환경 변수와 값을 표시해준다.

 

환경 변수

용도

%ALLUSERSPROFILE%

모든 사용자의 프로필이 저장된 폴더

%APPDATA%

설치된 프로그램의 필요 데이터가 저장된 폴더

%ComSpec%

기본 명령 프롬프트로 사용할 프로그램 명

%HOMEDRIVE%

로그인 한 계정의 정보가 저장된 드라이브

%HOMEPATH%

로그인 한 계정의 기본 폴더

%LOGONSERVER%

로그인 한 계정이 접속한 서버 명

%PATH%

실행 파일을 찾는 경로

%PATHEXT%

cmd에서 실행할 수 있는 파일의 확장자 목록

%PROGRAMFILES%

기본 프로그램의 설치 폴더

%SYSTEMDRIVE%

Windows가 부팅된 드라이브

%SYSTMEROOT%

부팅된 운영체제가 들어 있는 폴더

%TEMP% / %TMP%

임시 파일이 저장되는 폴더

%USERDOMAIN%

로그인 한 시스템의 도메인 명

%USERNAME%

로그인 한 계정 이름

%USERPROFILE%

로그인 한 유저의 프로필이 저장된 폴더 명

 

10.3. UNIX / LINUX에서의 환경 변수

 UNIX나 LINUX에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞에 '$'를 입력해야 한다. set, env, printenv를 입력하면 모든 환경 변수와 값을 표시해준다.

 

환경 변수

용도

$DISPLAY

현재 X윈도 디스플레이 위치

$HOME

사용자의 홈 디렉토리

$LANG

프로그램 사용 시 기본적으로 지원되는 언어

$MAIL

메일 보관 경로

$PATH

실행 파일을 찾는 경로

$PS1

쉘 프롬프트 정보

$PWD

현재 작업하는 디렉토리

$TERM

로긴 터미널 타입

$USER

사용자 이름

 


11. 운영체제 기본 명령어 

11.1. 운영체제 기본 명령어의 개요

 운영체제를 제어하는 방법은 크게 CLI, GUI로 구분할 수 있다. CLI(Command Line Interface)는 키보드로 명령어를 직접 입력하여 작업을 수행하는 사용자 인터페이스를 말한다. GUI(Graphic User Interface)는 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 사용자 인터페이스를 의미한다.

 

11.2. Windows 기본 명령어

1) CLI 기본 명령어

 

명령어

기능

DIR

파일 목록 표시

COPY

파일 복사

TYPE

파일 내용 표시

REN

파일 이름 변경

DEL

파일 삭제

MD

디렉토리 생성

CD

디렉토리 위치 변경

CLS

콘솔 창 화면 내용 지우기

ATTRIB

파일 속성 변경

FIND

파일 찾기

CHKDSK

디스크 상태 점검

FORMAT

디스크 표면을 트랙과 섹터로 나눠 초기화

MOVE

파일 이동

 

2) GUI 기본 명령어

 바탕 화면이나 Windows 탐색기에서 마우스로 아이콘을 더블클릭하여 프로그램을 실행하는 것 등 모든 작업이 GUI 명령어에 해당한다.

 

11.3. UNIX/LINUX 기본 명령어

1) CLI 기본 명령어

 쉘(Shell)에 명령어를 입력하여 작업을 수행하는 것으로 UNIX/LINUX의 주요 기본 명령어는 다음과 같다.

 

명령어

기능

cat

파일 내용 화면에 표시

chdir

현재 사용할 디렉토리 위치 변경

chmod

파일 보호 모드 설정, 파일의 사용 허가 지정

chown

소유자 변경

cp

파일 복사

exec

새로운 프로세스 수행

find

파일 찾기

fork

새로운 프로세스 생성(하위 프로세스 호출, 프로세스 복제)

fsck

파일 시스템 검사 및 보수

getpid

자신의 프로세스 아이디 가져오기

getppid

부모 프로세스 아이디 가져오기

ls

현재 디렉토리 내 파일 목록 확인

mount / unmount

파일 시스템을 마운트 / 마운트 해제

rm

파일 삭제

waint

fork 후 exec 된 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event를 기다리는 것

 

2) GUI 기본 명령어

 UNIX/LINUX는 기본적으로 CLI를 기반으로 운영되는 시스템이지만 X Window 라는 별도의 프로그램을 설치하여 GUI 방식으로 운영할 수 있다.

 

 


12. 인터넷

12.1. 인터넷의 개요

 인터넷이란 TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망이다. 

미 국방성의 ARPANET에서 군사목적으로 시작되었다. 유닉스 운영체제를 기반으로 하며, 통신망과 컴퓨터가 있는 곳이라면 시간과 장소에 구애받지 않고 정보를 교환할 수 있다.

 인터넷에 연결된 모든 컴퓨터는 고유한 IP 주소를 갖는다. 컴퓨터 또는 네트워크를 서로 연결하기 위해서는 브리지, 라우터, 게이트웨이가 사용된다.

 다른 네트워크 또는 같은 네트워크를 연결하여 중추적 역할을 하는 네트워크로, 보통 인터넷의 주가 되는 기간망을 일컫는 용어를 백본(Backbone)이라고 한다.

 

12.2. IP주소(Internet Protocol Address)

 IP 주소는 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소이다. 숫자로 8비트씩 4부분, 총 32비트로 구성한다. IP 주소는 네트워크 부분의 길이에 따라 A 클래스에서 E 클래스까지 총 5단계로 구성되어 있다.

 

Dividing IP addresses, Part I : Classful Networking - Knowledge of Things

 

A Class

◍ 국가나 대형 통신망에 사용

◍ 0~127로 시작

◍ 2^24개의 호스트 사용 가능

B Class

◍ 중대형 통신망에 사용

◍ 128~191로 시작

◍ 2^16개의 호스트 사용 가능

C Class

◍ 소규모 통신망에 이용

◍ 192~223로 시작

◍ 2^8개의 호스트 사용 가능

D Class

◍ 멀티캐스트(한 명 이상의 송신자들이 특정한 한 명이상의 수신자들에게 데이터를 전송하는 방식)용으로 사용

◍ 224~339로 시작

E Class

◍ 실험적 주소이며 공용되지 않음

 

12.3. 서브네팅(Subnetting)

 서브네팅은 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것을 말한다. 

 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크(Subnet Mask)라고 하며, 이를 변경하여 네트워크 주소를 여러 개로 분할하여 사용한다.

 서브넷 마스크는 각 클래스마다 다르게 사용한다.

 

12.4. IPv6(Internet Protocol version 6)의 개요

 IPv6은 현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발되었다. 128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 있으며, IPv4에 비해 자료 전송 속도가 빠르다.

 인증성, 기밀성, 데이터 무결성(인가된 사용자만 수정 가능)의 지원으로 보안 문제를 해결할 수 있으며, IPv4와 호환성이 뛰어나다.

 주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원한다. Traffic Class, Flow Label 을 이용하여 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장이 용이하다.

 

* Traffic Class: IPv6 패킷의 클래스나 우선순위를 나타내는 필드

* Flow Label: 네트워크 상에서 패킷들의 흐름에 대한 특성을 나타내는 필드

 

12.5. IPv6의 구성

 16비트씩 8부분, 128비트로 구성되어 있다. 각 부분을 16진수로 표현하고, 콜론(:)으로 구분한다. IPv6은 다음과 같이 세 가지 주소 체계로 나누어진다.

 

유니캐스트(Unicast) 

단일 송신자와 단일 수신자 간의 통신(1대 1 통신) 

멀티캐스트(Multicast)

단일 송신자와 다중 수신자 간의 통신(1대 다 통신) 

애니캐스트(Anycast)  

단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신(1대 1 통신) 

 

12.6. 도메인 네임(Domain Name)

 도메인 네임은 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것이다. 호스트 컴퓨터 이름, 소속 기관 이름, 소속 기관의 종류, 소속 국가명 순으로 구성되며, 왼쪽에서 오른쪽으로 갈수록 상위 도메인을 의미한다. 

 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP주소로 변환하는 역할을 하는 시스템을 DNS(Domain Name System)라고 하며 이런 역할을 하는 서버를 DNS 서버라고 한다.

 

 www.hankook.co.kr 에서 www은 호스트 컴퓨터 이름, hankook은 소속 기관 이름, co는 소속 기관 종류, kr은 소속 국가이다.

 

* DNS: Domain Name System, 문자로 된 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로변환하는 역할

* DNS Server: DNS 역할을 하는 서버

 

 


13. OSI 참조 모델

1. OSI(Open System Interconnection) 참조 모델의 개요

OSI 참조 모델은 다른 시스템 간의 원활한 통신을 위해 ISO(국제 표준화 기구)에서 제안한 통신 규약(Protocol)이다. 

 개방형 시스템간의 데이터 통신 시 필요한 장비 및 처리 방법 등을 7단계로 표준화하여 규정했다. 

OSI 7계층은 1~3계층을 하위 계층, 4~7계층을 상위 계층이라 한다.

 

13.2. OSI 참조 모델의 목적

 OSI 참조 모델의 목적 서로 다른 시스템 간을 상호 접속하기 위한 개념을 규정하는 것이다. 또한, OSI 규격을 개발하기 위한 범위를 정하며, 관련 규정의 적합성을 조절하기 위한 공통적 기반을 제공한다.

 

​13.3. OSI 참조 모델에서의 데이터 단위

◍ 프로토콜 데이터 단위(PDU, Protocol Data Unit): 동일 계층 간에 교환되는 정보 단위

◍ 물리 계층: 비트(Bit)

◍ 데이터 링크 계층: 프레임(Frame)

◍ 네트워크 계층: 패킷(Packet)

◍ 전송 계층: 세그먼트(Segment)

◍ 세션, 표현, 응용 계층: 메시지(Message)

◍ 서비스 데이터 단위(SDU, Service Data Unit): 서비스 접근점을 통해 상/하위 계층끼리 주고받는 정보의 단위

 

13.4. 계층(Layer)

1) 물리 계층(Physical Layer)

 물리 계층은 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의한다. 물리적 전송 매체와 전송 신호 방식을 정의하는 계층이다.

◍ 표준: RS-232C, x.21 등

◍ 장비: 리피터, 허브

2) 데이터 링크 계층(Data Link Layer)

 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 한다. 송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능을 하며, 프레임의 시작과 끝을 구분하기 위한 프레임의 동기화 기능을 한다.

 또한, 오류 검출과 회복을 위한 오류 제어 기능, 프레임의 순서적 전송을 위해 순서 제어 기능을 한다.

◍ 표준: HDLC, LAPB, LLC, MAC, LAPD, PPP 등

◍ 장비: 랜카드, 브리지, 스위치

3) 네트워크 계층(Network Layer, 망 계층)

 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 한다. 네트워크 연결을 설정, 유지, 해제하며, 경로 설정(Routing), 데이터 교환 및 중재, 트래픽 제어, 패킷 정보 전송을 수행한다.

◍ 표준: X.25, IP 등

◍ 장비: 라우터

4) 전송 계층(Transport Layer)

 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템(End-to-End) 간에 투명한 데이터 전송을 가능하게 한다. OSI 7계층 중 하위 3계층과 상위 3계층의 인터페이스를 담당한다. 종단 시스템 간의 전송 연결 설정, 데이터 전송, 연결 해제하며, 주소 설정, 다중화, 오류 제어, 흐름 제어를 수행한다.

◍ 표준: TCP, UDP 등

◍ 장비: 게이트웨이

5) 세션 계층(Session Layer)

 송수신 측 간의 관련성을 유지하고 대화 제어를 담당한다. 대화 구성 및 동기 제어, 데이터 교환 관리 기능을 한다.

 송수신 측 간의 대화 동기를 위해 전송하는 정보의 일정한 부분에 체크점을 두어 정보의 수신 상태를 체크하며, 이때의 체크점을 동기점(Synchronization Point)이라고 한다.

 동기점은 오류가 있는 데이터의 회복을 위해 사용하는 것으로, 종류에는 소동기점과 대동기점이 있다.

 

​6) 표현 계층(Presentation Layer)

 응용 계층으로부터 받은 세션 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 한다.

 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층이다. 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식 변환, 문맥 관리 기능을 한다.

 

7) 응용 계층(Application Layer)

 사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공한다. 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공한다.

 

 


14. 네트워크 관련 장비

14.1. 네트워크 인터페이스 카드(NIC; Network Interface Card)

 네트워크 인터페이스 카드는 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치로, 정보 전송 시 정보가 케이블을 통해 전송될 수 있도록 정보 형태를 변경한다.

 이더넷 카드(LAN 카드) 혹은 네트워크 어댑터라고도 한다.

 

14.2. 허브(Hub)

 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터의 역할도 포함한다. 허브의 종류에는 더미 허브, 스위칭 허브가 있다

 

1) 더미 허브(Dummy Hub)

◍ 네트워크에 흐르는 모든 데이터를 단순히 연결하는 기능만을 제공

◍ LAN이 보유한 대역폭을 컴퓨터 수만큼 나누어 제공

◍ 네트워크에 연결된 각 노드를 물리적인 성형 구조로 연결

 

2) 스위칭 허브(Switching Hub)

◍ 네트워크상에 흐르는 데이터의 유무 및 흐름을 제어하여 각각의 노드가 허브의 최대 대역폭을 사용할 수 있는 지능형 허브이다.

◍ 최근에 사용되는 허브는 대부분 스위칭허브 이다.

 

14.3. 리피터(Repeater)

 리피터는 전송 신호가 원래 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할을 수행한다. 물리 계층에서 동작하며, 근접한 네트워크 사이에 신호를 전송한다. 리피터는 전송 거리의 연장 또는 배선의 자유도를 높이기 위한 용도로 사용한다.

 

14.4. 브리지(Bridge)

 브리지는 LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹을 연결하는 기능을 수행한다. 데이터 링크 계층 중 MAC(Media Access Control) 계층에서 사용되므로 MAC 브리지라고도 한다.

 네트워크 상의 많은 단말기들에 의해 발생되는 트래픽 병목 현상을 줄일 수 있다. 네트워크를 분산적으로 구성할 수 있어 보안성을 높일 수 있다.

 브리지를 이용한 서브넷(Subnet) 구성 시 전송 가능한 회선 수는 브리지가 n개일 때 nC2개이다.

 

14.5. 스위치(Switch)

 스위치는 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치이다. 하드웨어를 기반으로 처리하므로 전송 속도가 빠르다.

 포트마다 각기 다른 전송 속도를 지원하도록 제어할 수 있고, 수십에서 수백 개의 포트를 제공한다. 스위치는 데이터 링크 계층에서 사용한다.

 

14.6. 라우터(Router)

 라우터는 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것으로, 서로 다른 LAN이나 LAN과 WAN의 연결도 수행한다. 라우터는 네트워크 계층에서 동작하는 장비로, 접속 가능한 경로에 대한 정보를 라우팅 제어표에 저장하여 보관한다.

 3계층까지의 프로토콜 구조가 다른 네트워크 간의 연결을 위해 프로토콜 변환 기능을 수행한다.

 

14.7. 게이트웨이(Gateway)

 게이트웨이는 전 계층(1~7계층)의 프로토콜 구조가 다른 네트워크의 연결을 수행한다. 세션 계층, 표현 계층, 응용 계층 간을 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 등을 수행한다.

 LAN에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 데이터를 받아들이는 출입구 역할을 한다.

 

14.8. 네트워크 장비 설치 시 고려사항

◍ 네트워크에 설치된 장비를 최대한 활용

◍ 향후 시스템 확장 및 증설을 고려하여 설계

◍ 하드웨어와 소프트웨어의 최신 버전 선정

◍ 트래픽 분산을 위한 설계

◍ 네트워크 관리나 유지 보수가 용이하도록 설계

◍ 장애 발생 시 즉시 조치 가능하도록 여유 포트 고려하여 설계

◍ 신기술 도입 시 연동할 수 있는 미래 지향적 네트워크 시스템 구축

 


15. 프로토콜의 개념

15.1. 프로토콜(Protocol)의 정의

 프로토콜은 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약이다. 통신을 제어하기 위한 표준 규칙과 절차의 집합으로 하드웨어와 소프트웨어, 문서를 모두 규정한다.

 

15.2. 프로토콜의 기본 요소

◍ 구문(Syntax): 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정

◍ 의미(Semantics): 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정

◍ 시간(Timing): 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정

 

15.3. 프로토콜의 기능

1) 단편화와 재결합

 송신측에서 전송할 데이터를 자르는 것을 단편화(Fragmentation)라고 하고, 수신 측에서 모으는 것을 재결합(Reassembly)이라고 한다. 단편화를 통해 세분화된 데이터 블록을 프로토콜 데이터 단위(PDU; Protocol Data Unit)이라고 한다.

 데이터를 단편화하여 전송하면 전송 시간이 빠르고, 통신 중 오류를 효과적으로 제어할 수 있다. 다만, 너무 작은 블록으로 단편화하면 비효율적이다.

 

2) 캡슐화

 캡슐화(Encapsulation)는 단편화된 데이터에 송수신지 주소, 오류 검출 코드, 프로토콜 기능을 구현하기 위한 프로토콜 제어 정보 등의 정보를 부가하는 것으로, 요약화라고도 한다.

 대표적인 예가 데이터 링크 제어 프로토콜의 HDLC 프레임이다. 정보 데이터를 오류 없이 정확하게 전송하기 위해 캡슐화 한다.

3) 흐름 제어

 흐름제어(Flow Control)는 수신 측의 처리 능력에 따라 송신 측에서 송신하는 데이터의 전송량이나 전송 속도를 조절하는 기능이다.

 정지-대기(Stop and Wait), 슬라이딩 윈도(Sliding Window) 방식을 이용한다.

 

4) 오류 제어

 오류제어(Error Control)는 전송중에 발생하는 오류를 검출하고 정정하는 기능이다.  데이터나 제어 정보의 파손에 대비한다.

5) 동기화

 동기화(Synchronization)는 송수신측이 같은 상태를 유지하도록 타이밍(Timing)을 맞추는 기능

 

6) 순서 제어

 순서 제어(Sequencing)는 전송되는 데이터 블록(PDU)에 전송 순서를 부여하는 기능으로, 연결 위주의 데이터 전송 방식에만 사용된다. 

 송신 데이터들이 순서적으로 전송되도록 함으로써 흐름 제어 및 오류 제어를 용이하게 하는 기능을 한다.

7) 주소 지정

주소 지정(Addressing)은 데이터가 목적지까지 정확하게 전송될 수 있도록 목적이 이름(전송할 데이터가 가리키는 곳), 주소(목적지 위치), 경로(도착하는 방법)를 부여하는 기능이다.​

 

8) 다중화

 다중화(Multiplexing)는 한 개의 통신 회선을 여러 가입자들이 동시에 사용하도록 하는 기능이다.

9) 경로 제어

경로 제어(Routing)는 송수신 측 간의 송신 경로 중에서 최적의 패킷 교환 경로를 설정하는 기능이다.

10) 전송 서비스

 전송하려는 데이터가 사용하도록 하는 별도의 부가 서비스이다.

◍ 우선 순위: 특정 메시지를 최대한 빠른 시간 안에 목적지로 전송하기 위해 메시지 단위에 우선순위를 부여하여 높은 우선순위 메시지가 먼저 도착하도록 한다.

◍ 서비스 등급: 데이터 요구에 따라 서비스 등급을 부여하여 서비스 제공한다.

◍ 보안성: 액세스 제한과 같은 보안 체제 구현한다.

 


16. TCP/IP 

16.1. TCP/IP의 개요(Transmission Control Protocol/ Internet Protocol)

 TCP/IP는 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고 받을 수 있도록 하는 표준 프로토콜이다. 군사목적으로 미국의 ARPANET에서 사용하기 시작하였다. 

 UNIX의 기본 프로토콜로 사용되었고, 현재 인터넷 범용 프로토콜로 사용된다. TCP/IP는 다음과 같은 기능을 수행하는 TCP 프로토콜과 IP 프로토콜이 결합된 것을 의미한다.



TCP

(Transmission

Control 

Protocol) 

◍ OSI 7계층의 전송 계층에 해당

◍ 신뢰성 있는 연결형 서비스 제공

◍ 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공

◍ 스트림(Stream) 전송 기능 제공

◍ TCP 헤더에는 Source/Destination Port Number, Sequence Number, Ack Number, CheckSum 등이 포함된다.

IP

(Internet 

Protocol)

◍ OSI 7계층의 네트워크 계층에 해당

◍ 데이터그램을 기반으로 비연결형 서비스 제공

패킷의 분해/조립, 주소 지정, 경로 선택 기능 제공

◍ 헤더의 길이는 20~60Byte이다.

◍ IP 헤더에는 Version, Header Length, Destination IP Address 등이 포함된다.

 

* 연결형 통신: 송수신 측 간을 논리적으로 연결 후 데이터 전송 ex) 가상 회선 방식

* 비연결형 통신: 송수신 측 간을 논리적으로 연결 없이 데이터를 독립적으로 전송 ex) 데이터그램 방식

 

16.2. TCP/IP의 구조

 TCP/IP는 응용 계층, 전송 계층, 인터넷 계층, 네트워크 액세스 계층으로 이루어져 있다.

 

OSI

TCP/IP 

기능 

응용 계층

표현 계층

세션 계층 

응용 계층 

◍ 응용 프로그램 간의 데이터 송수신 제공 ◍ TELNET, FTP, SMTP, SNMP, DNS 등

전송 계층

전송 계층 

◍ 호스트들 간의 신뢰성 있는 통신 제공

◍ TCP, UDP 

네트워크 계층

인터넷 계층 

◍ 데이터 전송을 위한 주소 지정, 경로 설정 제공

◍ IP, ICMP, IGMP, ARP, RARP 

데이터 링크 계층 

물리 계층

네트워크 

액세스 계층 

◍ 실제 데이터를 송수신하는 역할

◍ Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ 등 

 

16.3. 응용 계층의 주요 프로토콜

FTP

(File Transfer Protocol)

컴퓨터와 컴퓨터, 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜 

SMTP (Simple Mail

Transfer Protocol) 

전자 우편을 교환하는 서비스 

TELNET 

◍ 멀리 떨어져 있는 컴퓨터에 접속해 내 컴퓨터처럼 사용할 수 있도록 해주는 서비스

◍ 프로그램 실행하는 등 시스템 관리 작업을 할 수 있는 가상의 터미널기능 수행

SNMP

(Simple Network 

Management Protocol)

TCP/IP 네트워크 관리 프로토콜, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약 

DNS

(Domain Name System)

도메인 네임을 IP주소로 매핑하는 시스템 

HTTP (HyperText 

Transfer Protocol)

월드 와이드 웹에서  HTML 문서를 송수신 하기 위한 표준 프로토콜 

 

16.4. 전송 계층의 주요 프로토콜

TCP

(Transmission Control 

Protocol)

◍ 양방향 연결형 서비스 제공

◍ 가상 회선 연결 형태의 서비스 제공

◍ 스트림 위주의 전달(패킷 단위)을 한다.

◍ 신뢰성 있는 경로를 확립하고 메시지 전송을 감독

◍ 순서 제어, 오류 제어, 흐름 제어 기능을 한다.

◍ 패킷의 분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성이 보장되는 통신을 제공

UDP

(User Datagram

Protocol)

◍ 비연결형 서비스 제공

◍ 단순한 헤더구조, 오버헤드가 작음.

◍ 빠른 속도를 필요로 하는 경우, 동시에 여러 사용자에게 전달하는 경우, 정기적으로 반복해서 전송할 경우에 사용

◍ 실시간 전송에 유리하며, 신뢰성보다는 속도가 중요시되는 네트워크에서 사용된다.

◍ 헤더에는 Source Port Number, Checksum 등이 포함

RTCP

(Real-Time Control 

Protocol)

◍ RTP 패킷의 전송 품질을 제어하기 위한 프로토콜

◍ 세션에 참여한 각 참여자들에게 주기적으로 제어 정보를 전송

◍하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화를 제공한다.

◍ 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만을 제공          

◍ 항상 32비트의 경계로 끝난다.

 

16.5. 인터넷 계층의 주요 프로토콜

IP

◍ 전송할 데이터에 주소를 지정하고, 경로를 설정하는 기능

◍ 비연결형인 데이터그램 방식을 사용하는 것으로 신뢰성이 보장되지 않음

ICMP

(Internet Control 

Message Protocol)

IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 한다.

IGMP

(Internet Group 

Message Protocol)

멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지 위해 사용한다.

ARP

(Address Resolution 

Protocol)

호스트의  IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 바꾼다.

PARP

(Reverse Address 

Resolution Protocol)

ARP와 반대로 물리적 주소를 IP 주소로 변환하는 기능이다.

 

16.6. 네트워크 액세스 계층의 주요 프로토콜

ETHERNET(IEEE 802.3)

CSMA/CD 방식의 LAN

IEEE 802

LAN을 위한 표준 프로토콜

HDLC

비트 위주의 데이터 링크 제어 프로토콜

X.25

패킷 교환망을 통한 DTE와 DCE 간의 인터페이스 제공하는 프로토콜

RS-232C

공중 전화 교환망(PSTN)을 통한 DTE와 DCE간의 인터페이스 제공하는 프로토콜