자격증 + 어학/4. 프로그래밍언어 활용

3. 응용 SW 기초 기술 활용

cat_no2 2024. 5. 12. 17:05

운영체제의 개념 

운영체제의 목적 

처리 능력 향상(Throughput): 일정시간내에 시스템이 처리하는 일의 양 

반환 시간 단축(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 

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

신뢰도(Reliability): 시스템이 주어진 문제를 정확하게 해결하는 정도 

 

운영체제의 구성 

제어 프로그램 - 컴퓨터 전체의 작동 상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터 관리 등의 역할을 수행하는 것으로 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램 등 이 있다. 

처리 프로그램 - 제어 프로그램의 지시를 받아 자용자가 요구한 문제를 해결하기 위한 프로그램으로, 언어번역 프로그램, 서비스 프로그램이 있다. 

 

운영체제의 기능

프로세서, 기억장치, 입출력 장치, 파일 및 정보등의 자원을 관리. 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공. 사용자와 시스템 간의 인터페이스 제공. 각종 하드웨어와 네트워크를 관리/제어. 데이터 관리, 데이터 및 자원의 공유기능 제공. 시스템의 오류를 검사하고 복구. 제원 보호 기능 제공. 입출력에 대한 보조 기능을 제공. 가상 계산기 기능을 제공.  


Windows 

마이크로사가 개발한 운영체제이다.

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

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

PnP(Plug and Play, 자동 감지 기능) - PnP는 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을때. 해당 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동응로 구성해 주는 기능. PC 주변장치를 연결할때 사용자가 직접 환경을 설정하지 않아도 됨. 하드웨어와 소프트웨어 모두 PnP를 지원하여야 함. 

OLE(Object Linking and Embedding ) - 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결 하거나 삽입 하여 편질 할 수 있게 하는 기능. 

255자의 긴 파일명 - 파일 이름을 지정할때 VFAT(Virtual File Allocation Table)를 이용하여 최대 255까지 지정할 수 있고 /:*?<>|을 제외한 모든 문자 및 공백사용 가능하고 한글은 127까지 가능. 

Single-User 시스템 - 컴퓨터 한 대를 한 사람만이 독점해서 사용 


UNIX/LINUX/MacOS

Unix 

시분할 시스템을 위해 설계된 대화식 운영체제. 소스가 공개된 개방형 시스템. 대부분 C 언어로 작성되어 있어 이식성이 높고 장치와 프로세스 간의 호환성이 높다. 크기가 작고 이해하기 쉽다. 다중사용자(multi-user), 다중 작업(multi-tasking)을 지원한다. 네트워킹 기능 제공하므로 통신망 관리용 운영체제로 적합하다. 트리 구조의 파일 시스템이고 전문적인 프로그램 개발에 용이하다. 다양한 유틸리티 프로그램들이 존재한다.

다중사용자 - 여러 사용자가 동시에 시스템을 사용 

다중 작업 - 여러개의 직업이나 프로그램을 동시에 수행 

하나 이상의 작업을 백그라운드에서 수행하므로 여러 작업을 동시헤 처리 할 수 있다.

 

커널 - 유닉스의 가장 핵심적인부분. 컴퓨터가 부팅될때 주기억장치에 적재되고 상주하며 실행된다. 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다. 프로세스(CPU 스케줄링)관리, 기억장치 관리, 파일관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행한다. 

쉘(Shell) - 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기이다. 시스템과 사용자 간의 인터페이스를 담당한다. DOS COMMAND.COM과 같은 기능을 수행. 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가 가능하다. 파이프 라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있다. 공용 Shell 이나 사용자 자신이 만들 Shell을 사용 할 수 있다. 

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

 

Linux

프로그램 소스 코드가 공개되어 있기때문에 프로그래머가 원하는 기능을 추가할 수 있고, 다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능하다. 유닉스와 완벽하게 호환된다. 대부분의 특징이 유닉스와 동일하다.

 

MacOS 

아이맥과 맥북등 애플 사에서 생산하는 제품에서만 사용이 가능하고 드라이버 설치 및 제거 과정이 단순하다.


기억장치 관리의 개요 

기억장치는 레지스터, 캐시 기억장치, 주기억장치, 보조기억장치.

(가격비싸고 기억용량 적음)

레지스터

캐시

주기억 

보조기억 

(가격 저렴하고 기억용량 큼) 

계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 기억 용량이 적고 고가이다. 주기억장치는 각기 자신의 주소를 갖는 워드또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스할 수 있다. 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나, 보조기억장치에 있는 프로그램이나 데이터는 직접 액세스 할 수 없다. 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다. 

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

 

반입(Fetch) 전략

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

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

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

 

배치(Placement)전략

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

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

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

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

 

교체(Replacement) 전략

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


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

보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용 한다.

주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용한다.

주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.

가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소변환 작업이 필요하다.

블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결 할 수 있다.

구현 방법에는 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌수 있다.

 

페이징 기법 

가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법. 고정된 크기로 나눔. 

프로그램을 일정한 크기로 나눈 단위를 페이지 라고 하고, 페이지 크기로 일정하게 나누어진 주기억장차의 단위를 페이지 프레임 이라고 한다. 일반적으로 페이지의 크기는 1~4KB이다. 

외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다. 예를 들어, 페이지의 크기가 4KB이고 사용할 프로그램이 17KB라면 프로그램은 페이지 단위로 4KB씩 나누어지고 이때 마지막 페이지의 실제 용량은 1KB가 되고, 이것이 주기억장치에 적재되면 3KB의 내부 단편화가 발생된다. 

주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요하다.

페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다. 

 

세그먼테이션 기법 

세그먼테이션 기법은 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법. 가변적인 크기의 블록으로 나눔. 

프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다. (하나의 작업을 크기가 각각 다른 여러 논리적인 단위로 나누어 사용) 

기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다. 사용하는 이유는 기억 공간을 절약하기 위해서이다. 주소 변환을 위해서 세그먼트 맵 테이블(세그먼트가 존재하는 위치정보)이 필요하다. 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키가 필요하다. 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다. 

세그먼테이션 기법의 일반적인 주소 변환
주소 형식에 따른 주소와 세그먼트 맵 테이블의 구성 

-가상주소는 세그먼트 번호를 나타내는 (s)와 세그먼트 내에 실제 내용이 위치하고 있는 곳까지의 거리를 나타내는 변위값 (d) 로 구성된다. 가상주소 형식: 세그먼트 번호 + 변위값. 

-실기억주소는 완전주소 형태를 사용하며 이는 세그먼트의 기준번지와 변위값을 더함으로써 얻을 수 있다. 실기억주소 형식: 실기억주소(세그먼트 기준번지 +변위값) 논리주소(2, 176)에서 2는 세그먼트 번호, 176은 변위. 세그먼트 번호 2의 시작 주소인 222에 176을 더하면 물리적인 실기억장치의 주소가 됨. 

-세그먼트 맵 테이블은 세그먼트 번호 (s) 와 세그먼트의 크기(L), 주기억장치 상의 기준번지 (b)로 구성된다.

가상기억장치에서 주기억장치로 페이지를 옮겨 넣을때 주소를 조정해주어야 하는데, 이말은 즉 가상주소로부터 물리주소를 찾는것이고 사상(Mapping) 이라고 부른다.

주소 변환 순서

세그먼트 맵 테이블: 세그먼트 번호(s) + 세그먼트 크기(L) + 기준번지(b) 

1. 가상주소의 세그먼트 번호로 세그먼트 맵 테이블에서 해당 세그먼트의 기준번지와 세그먼트 크기를 구한다. 세그먼트 번호는 세그먼트 맵 테이블에 대한 색인으로 사용된다. 

2. 가상주소의 변위값과 세그먼트의 크기를 비교한다. 

3. 변위값이 작거나 같으면 기준번지와 변위값을 더하여 실기억주소를 만들어 주기억장치를 액세스 한다. 

4. 변위값이 크면 다른 영역을 침범하게 되므로 실행 권한을 운영체제에게 넘기고 트랩을 발생시킨다(변위값이 크다는 것은 현재 찾는 세그먼트의 위치가 해당 세그먼트의 크기를 초과하였다는 의미이다). 

 

페이지 교체 알고리즘 

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

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

FIFO(First In First Out) - 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법. 이해하기 쉽고, 프로그래밍 설계가 간단하다. 

LRU(Least Recently Used) - LRU는 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다. 각 페이지마다 카운터(계수기)나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체한다.

계수기* - 각 페이지별로 존재하는 논리적 시계로, 해당 페이지가 사용 될때마다 0으로 클리어 시킨 후 시간을 증가시켜서 시간이 가장 오래된 페이지를 교체

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

NUR(Not Used Recently) - NUR은 LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법. 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 LRU에 나타나는 시간적인 오버헤드를 줄일 수 있다. 최근의 사용 여부를 확인하기 위해 각 페이지마다 두개의 하드웨어 비트, 즉 참조 비트와 변형 비트가 사용된다. 

참조비트* - 페이지가 호출되었을때는 1, 않았을때는 0 

변형비트* - 페이지 내용이 변경되었을때는 1, 변경되지 않았을때는 0 

SCR(Second Chance Replacement, 2차 기회 교체) - 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로, FIFO 기법의 단점을 보완. 


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

가상기억장치를 구현할때 시스템의 성능에 영향을 미치는 페이지 크기나 Locality, working set, page fault, prepaging, thrashing 에 대해 알아보자

페이지 크기에 따라 시스템에 미치는 영향이 다르다. 

페이지 크기가 작을 경우: 

페이지 단편화가 감소되고 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어든다. 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋 유지 가능. Locality에 더 일치할 수 있어 기억 장치 효율이 높고, 페이지 맵 테이블의 크기가 커지고 매핑 속도가 늦어짐. 디스크 접근 횟수가 많아져서 전체적인 입출력 시간은 늘어남. 페이지 크기가 작을수록 페이지의 갯수가 많아져 주소를 저장하는 맵 테이블의 크기가 커짐. 페이지 크기가 작아도 페이지 테이블의 단편화는 발생한다. 

페이지 크기가 클 경우: 

페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라진다. 디스크 접근 횟수가 줄어들어 전체적인 입출력의 효율성이 증가된다. 페이지 단편화가 증가되고, 한개의 페이지를 주기억장치로 이동하는 시간이 늘어난다. 프로세스 수행에 불필요한 내용까지도 주기억장치에 적재될 수 있다. 페이지 크기가 크면 페이지의 수가 적어지므로 페이지 정보를 갖는 페이지 테이블 공간은 줄어듬. 

Locality 는 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론이다. 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다. 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법중 하나이고 가상기억장치 관리의 이론적인 근거가 된다. 데닝 교수에 의해 구역성의 개념이 증명되었고 캐시 메모리 시스템의 이론적 근거이다. 로컬리티의 종류에는 시간 구역성과 공간 구역성이 있다. 

시간 구역성(Temporal Locality) - 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상. 한번 참조한 페이지는 가까운 시간내에 계속 참조할 가능성이 높음. 루프, 스택, 서브 루틴, 카운팅, 집계에 사용되는 변수등. 최근에 참조한 기억장소가 다시 참조될 가능성이 높다. 

공간 구역성(Spatial Locality) - 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스하는 현상. 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음. 배열순회(array traveral), 순차적 코드의 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수를 참조할 때 사용

Working Set - 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 지합. 로컬리티 특징을 이용한다. 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정. 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 변경. 프로세스가 일정 시간 동안 참조하는 페이지들의 집합이므로 참조된 페이지에서 중복을 제거하면 됨. 

페이지 부재 빈도방식 - 페이지 부재는 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상이며, 페이지 부재 빈도(PFF; Page Fault Frequency) 는 페이지 부재가 일어나는 횟수. 

페이지 부재 빈도 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식이다. 운영체제는 프로세스 실행 초기에 임의의 페이지 프레임을 할당하고, 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀더 많은 페이지 프레임을 할당하고, 부재율이 하한선을 넘어가면 페이지 프레임을 회수하는 방식을 사용한다. 

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

Thrashing - 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상. 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정중 자주 페이지 부재가 발생함으로써 나타나는 현상으로, 전체 시스템의 성능이 저하된다. 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 된다. 

스래싱 현상 방지 방법 - 다중 프로그래밍의 정도를 적정 수준으로 유지한다. 페이지 부재 빈도를 조절하여 사용한다. 워킹 셋을 유지한다. 부족한 자원을 증설하고, 일부 프로세스를 중단시킨다. CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영한다. 

다중 프로그래밍의 정도* - 얼마나 많은 프로그램을 동시에 수행하느냐를 나타내는 것으로, 다중 프로그래밍의 정도를 높인다는 것은 동시에 수행하는 프로그램의 수를 늘린다는 것


프로세스의 개요 

프로세스 - 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업, 태스크 라고도 한다. PCB*를 가진 프로그램, 실기억장치에 저장된 프로그램, 프로세서가 할당되는 실체로서 디스패치가 가능한 단위, 프로시저가 활동중인것, 비동기적 행위를 일으키는 주체, 지정된 결과를 얻기 위한 일련의 계통적 동작, 목적 또는 결과에 따라 발생되는 사건들의 과정, 운영체제가 관리하는 실행단위. 비동기적 행위를 일으키는 주체. 프로세서가 할당되는 실체로 디스패치가 가능한 단위. 

PCB(Process Control Block, 프로세스 제어 블록) - 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳. 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다. PCB에 저장되어 있는 정보는 프로세스의 현재 상태(준비, 대기, 실행 등), 포인터(부모, 자식, 위차한 메모리), 프로세스 고유 식별자, 스케줄링 및 프로세스의 우선순위, CPU 레지스터 정보, 주기억장치 관리 정보, 입/출력 상태 정보, 계정 정보. PCB는 프로세스에 대한 고유 정보이므로 공유할 수 없다.  

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

 

제출 -> 접수 -> 잡 스케줄러 -> 준비 

접수 -> 스풀링 -> 디스크

준비 -> 디스패치 -> 실행

실행 -> 입출력 발생 -> 대기 

대기 -> 입출력 종료/깨움 -> 준비 

 

디스패치* - 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정 

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

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

Context Switching - 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정. 

 

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

접수 - 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태 

준비 - 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태, 준비상태 큐에서 실행을 준비하고 있고, 접수상태에서 준비 상태로의 전이는 잡 스케줄러에 의해 수행된다. 

실행 - 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태. 수행이 완료되기전 프로세서 할당시간이 타이머 런아웃 되면 프로세스는 준비 상태로 전이 된다. 실행중인 프로세스에 입/출력 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이된다. 준비 상태에서 실행 상태로의 전이는 CPU(프로세서) 스케줄러에 의해 수행된다. 

대기/보류 블록 - 프로세스에 입/출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료 될때 까지 대기하고 있는 상태

종료 - 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

스레드 - 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위. 하나의 스레드가 존재하는 경우에는 단일 스레드, 한개의 프로세스는 여러개의 스레드를 가질수 있고 이를 다중 스레드라고 한다. 경량 프로세스라고도 한다. 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당하며 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.

스레드의 분류: 

사용자 수준의 스레드 - 사용자가 만든 라이브러리 사용. 커널 모드로의 전환이 없어 오버헤드가 줄어들고 속도는 빠르지만 구현이 어렵다. 

커널 수준의 스레드 - 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기 하지 않으므로 시스템 성능을 높일수 있다. 여러 스레드가 커널에 동시에 접근 할 수 있다. 스레드의 독립적인 스케줄링이 가능하다. 구현은 쉽지만, 속도가 느리다. 

 

스레드 사용의 장점

하나의 프로세스를 여러개의 스레드로 생성하여 병행성 증진.

하드웨어나 운영체제의 성능과 응용 프로그램의 처리율을 향상.

응용 프로그램의 응답시간을 단축.

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

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

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


스케줄링 

프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업

장기 스케줄링 - 상위 스케줄링, 작업 스케줄링 이라고 하며 어떤 프로세스가 시스템의 자원을 차지할수 있도록 할것인가 결정하여 준비상태 큐로 보냄. 

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

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

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


주요 스케줄링 알고리즘 

FCFS = (First Come First Service = FIFO) - 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법으로 가장 간단한 알고리즘. 먼저 도착한것이 먼저 처리되어 공평성은 유지하지만, 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다리게 되는것이 단점.

SJF(Shortest Job First) - SJF는 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다. 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이다. 실행 시간이긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생될 수 있다. 

HRN(Hightest Response-ratio Next) - 실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것응로, 대기 시간과 서비스 시간을 이용하는 기법이다. 우선순위 계산 공식을 이용하여 서비스 시간이 짧은 프로세스나 대기 시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당한다. 서비스 실행시간이 짧거나 대기 시간이 긴 프로세스일 경우 우선순위가 높아진다. 우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위가 부여된다. 우선순위 = (대기시간+서비스시간)/서비스시간. 대기 시간이 긴 프로세스일 경우 우선순위가 높아짐. 


환경 변수 

시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임. 환경변수는 변수명과 값으로 구성된다. 시스템의 기본 정보를 저장한다. 자식 프로세스에 상속된다. 시스템 전반에 걸쳐 적용되는 시스템 환경변수와 사용자 계정 내에서만 적용되는 사용자 환경 변수로 구분. 

유닉스/리눅스 주요 환경 변수

환경변수를 명령어나 스크립트에서 사용하려면 변수명 앞에 $ 를 입력해야 한다. 유닉스나 리눅스에서 set, env, printevn, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시한다.

$DISPLAY - 현재 윈도 디스플레이 위치 

$HOME - 사용자의 홈 디렉토리 

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

$MAIL - 메일을 보관하는 경로 

$PATH - 실행파일 찾는 경로 

$PS1 - 쉘 프롬프트 정보 

$PWD - 현재 작업하는(위치하는) 디렉토리 

$TERM - 로긴 터미널 타입 

$USER - 사용자 이름 


운영체제 기본 명령어  

운영체제를 제어하는 방법은 크게 CLI 와 GUI로 구분할 수 있다.

CLI(Command Line Interface) - 키보드로 명령어를 직접 입력하여 작업을 수행 

GUI(Graphical User Interface) - 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 사용자 인터페이스 

 

윈도우 기본 명령어 - 명령 prompt (command line)에 명령어 입력 

DIR - 파일 목록 표시 

COPY - 파일복사 

TYPE - 파일 내용 표시 

REN - 파일이름변경 

DEL - 파일삭제 

MD - 디렉토리 생성 

CD - 디렉토리 위치변경 

CLS - 화면의 내용을 클리어 

ATTRIB - 파일속성을 변경 

FIND - 파일을 찾음 

CHDSK - 디스크 상태를 점검 

FORMAT - 디스크 표면을 트랙과 섹터로 나누어 초기화하여 사용 가능한 상태로 만들어 주는 작업  

MOVE - 파일 이동 

 

UNIX/LINUX 기본 명령어 - Shell에 명령어를 입력하여 작업을 수행 

cat - 파일내용을 화면에 표시 

chdir - 디렉토리 위치 변경 

chmod - 파일의 보호 모드를 설정하여 사용 허가를 지정 

chown - 소유자 변경 

cp - 파일 복사 

exec - 새로운 프로세스 수행 

find - 파일 찾음 

fork - 새로운 프로세스를 생성 

fsck - 파일시스템을 검사하고 보수 

getpid - 자신의 프로세스 아이디를 얻음 

getppid - 부모 프로세스 아이디를 얻음 

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

mount/unmount - 마운팅/마운팅해제 

마운팅* - 새로운 파일 시스템을 기존 파일 시스템의 서브 디렉토리에 연결하는 것 

rm - 파일 삭제 

uname - 시스템의 이름과 버전, 네트워크 호스트명 등의 시스템 정보 표시

wait - fork 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료등의 event를 기다린다. 자식 프로세스의 하나가 종료될 때까지 부모 프로세스를 임시 중지시키는 명령어. 


인터넷 

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

미 국방성의 APRANET에서 시작되었고 인터넷은 유닉스 운영체제를 기반으로 한다.

통신망과 컴퓨터가 있는 곳이라면 시간과 장소에 구애받지 않고 정보를 교환할 수 있다.

인터넷에 연결된 모든 컴퓨터는 고유한 IP 주소를 갖는다.

컴퓨터 또는 네트워크를 서로 연결하기 위해서는 브리지, 라우터, 게이트웨이가 사용된다.

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

 

IP 주소(Internet Protocol Address)

IP 주소는 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소.

숫자로 8비트씩 4부분, 총 32 비트로 구성 되어 있다. 

A class - 국가, 대형통신망에 사용 (0~127로 시작). 2^24 개의 호스트 사용가능 

B class - 중대형 (128~191로 시작). 2^16 개의 호스트 사용가능 

C class - 소규모 통신망 (192~223로 시작). 2^8= 256개의 호스트 사용가능 

D class - 멀티캐스트 용으로 사용 (224~239로 시작) 

E class - 실험적 주소로 공급되지 ㅇ낳음.

 

멀티캐스트* - 한명 이상의 송신자들이 특정한 한명 이상의 수신자들에게 데이터를 전송하는 방식으로, 인터넷 화상 회의 등에 사용 

 

Subnetting

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

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

subnet-zero* - subnet 부분이 모두 0인 192.168.1.0 은 사용하지 않았는데, IP 주소가 부족해지면 subnet 부분이 모두 0인 주소도 IP 주소로 사용할 수 있도록 한다는 의미. 

 

IPv6

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

인증성(사용자 식별과 접근권한 검증), 기밀성(시스템내 정보와 자원은 인가된 사용자에게만 접근허용), 데이터 무결성(시스템 내의 정보는 사용자만 수정가능) 의 지원으로 보안 문제 해결 가능. 

주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원한다.

Traffic Class, Flow Label을 이용하여 등급별, 서비스별로 패킷을 구분가능하여 품질 보장이 용이. 

패킷 크기를 확장할수 있어 패킷 크기에 제한 없음. 

기보노 헤더 뒤에 확장 헤더를 더함으로써 다양한 정보의 저장이 가능해져 네트워크 기능 확장 용이. 

미리 예약된 알고리즘을 통해 고유성이 보장된 주소를 자동으로 구성가능. 자동으로 네트워크 환경 구성 가능. 

 

IPv4를 IPv46로 전환하는 전략

듀얼 스택 - 호스트에서 IPv4와 IPv6을 모두 처리 할수있도록 2개의 스택 구성

터널링 - IPv46 망에서 인접한 IPv4 망을 거쳐 다른 IPv6 망으로 통신할때 IPv4망에 터널을 만들어 IPv6 패킷이 통과할수 있도록 하는것 

IPv4/IPv46 변환 - 헤더 변환, 전송 계층 릴레이 방식, 응용 계층 게이트웨이 방식 

 

트래픽 클래스 - IPv6 패킷의 클래스나 우선순위를 나타내는 필드

플로우 레이블 - 네트워크 상에서 패킷들의 흐름에 대한 특성을 나타내는 필드 

헤더 - 패킷 전송시 제일 앞에 배치되는 40Byte(옥텟) 크기의 영역으로, IP 주소의 버전, 인증정보, 패킷에 대한 정보, 출발주소, 도착주소 등의 다양한 정보를 포함.

 

 

IPv6 구성 

16비트씩 8부분 총 128비트로 구성. 

각 부분을 16진수로 표현하고, 콜론(:) 으로 구분

IPv6은 다음과 같이 세가지 주소 체계로 나누어짐

유니캐스트: 단일 송신자와 단일 수신자간의 통신 1:1 통신에 사용 

멂티캐스트: 단일 송신자와 다중 수신자 간의 통신 1:다 통신에 사용 

애니캐스트: 단일 송신자와 가장 가까이 있는 단일 수신자간의 통신 1:1 통신에 사용 

 

Domain Name 

숫자로된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현 한것. 

호스트 컴퓨터이름, 소속 기관이름, 기관의 종류, 소속 국가명 순으로 구성되고 왼쪽에서 오른쪽으로 갈수록 상위 도메인. 

문자로 된 도메인 네임을 컴퓨터가 이해할수 있는 ip 주소로 변환하는 역할을 하는 시스템을 DNS라고 하며 이러한 역할을 하는 서버를 DNS 서버라고 함


OSI(Open System Interconnection) 참조 모델 

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

OSI 참조 모델의 목적

서로 다른 시스템 간의 상호 접속하기 위한 개념을 규정. OSI 규격을 개발하기 위한 범위를 정한다. 관련 규정의 적합성을 조절하기 위한 공통적 기반을 제공한다. 

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

프로토콜 데이터 단위는 동일 계층 간에 교환되는 정보의 단위.

물리계층(Physical Layer) 

전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의. 물리적 전송 매체와 전송 신호 방식을 정의하며, RS-232C, X.21 등의 표준이 있다. 관련장비: 리피터, 허브

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

두개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정과 유지 및 종료를 담당한다. 송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능을 한다. 프레임의 시작과 끝을 구분하기 위한 프레임의 동기화 기능을한다. 오류의 검출과 회복을 위한 오류 제어 기능을 한다. 프레임의 순서적 전송을 위한 순서 제어 기능을 한다. HDLC, LAPB, LLC, MAC, LAPD, PPP등의 표준이 있다. 관련장비: 랜카드, 브리지, 스위치. 데이터 단위가 프레임. 

네트워크 계층(Network Layer) 

네트워크 계층은 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 한다. 네트워크 연결을 설정, 유지, 해제하는 기능을 한다. 발신지와 목적지의 논리 주소가 추가된 패킷을 최종 목적지까지 전달하는 책임을 진다. 경로설정(routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행한다. X.25, IP 등의 표준이 있다. 관련 장비: 라우터. 데이터 단위는 패킷. 

전송 계층(Transport Layer) 

논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간에 투명한 데이터 전송을 가능하게 한다. 하위 3계층과 상위 3계층의 인터페이스를 담당한다. 종단시스템(End-to-End, 단말기 사이)간의 전송 연결 설정, 데이터 전송, 연결 해제 기능을 한다. 주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어를 수행한다. TCP/UDP 등의 표준이 있다. 관련장비: 게이트웨이

세션 계층(Session Layer) 

송수신 측 간의 관련성을 유지하고 대화 제어를 담당한다. 대화 구성 및 동기 제어, 데이터 교환 관리 기능을 한다. 송수신 측 간의 데이터 전송, 연결 해제, 동기 처리 등의 대화를 관리하기 위해 토큰이 사용된다. 송수신 측 간의 대화 동기를 위해 전송하는 정보의 일정한 부분에 체크점을 두어 정보의 수신 상태를 체크하며, 이때의 체크점을 동기점 이라고 한다. 동기점은 오류가 있는 데이터의 회복을 위해 사용하는 것으로, 종류에는 소동기점과 대동기점이 있다. 

표현 계층(Presentation Layer) 

응용계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 한다. 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층이다. 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보형식 변환, 문맥 관리 기능을 한다. 

응용 계층(Application Layer) 

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


네트워크 관련 장비 

네트워크 인터페이스 카드 (NIC; Network Interface Card) - 이더넷 카드, LAN 카드 혹은 네트워크 어댑터라고 한다. 

 

허브(Hub) - 한 사무실이나 가까운 거리의 컴퓨터를 연결하는 장치. 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터 역할도 포함.  

더미허브: 네트워크에 흐르는 모든 데이터를 단순히 연결하는 기능만 제공. LAN이 보유한 대역폭을 컴퓨터 수만큼 나누어 제공. 

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

 

리피터(Repeater) 

전송되는 신호가 전송 선로의 특성 및 외부 청격 등의 요인으로 인해 원래의 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할 수행. OSI 참조 모델의 물리 계층에서 동작하는 장비. 근접한 네트워크 사이에 신호를 전송하는 역할로 전송 거리의 연장 도는 배선의 자유도를 높이기 위한 용도로 사용. 

브리지(Bridge) 

LAN 과 LAN 을 연결하거나 LAN 안에서의 컴퓨터 그룹을 연결하는 기능 수행. 데이터 링크 계층중 MAC 계층에서 사용되므로 MAC 브리지라고도 함. 트래픽 병목 현상을 줄일수 있고 네트워크를 분산적으로 구성할수 있어 보안성을 높일수 있다. 브리지를 이용한 서브넷 구성시 전송 가능한 회선 수는 브리지가 n개 일때, n(n-1)/2개 이다. 

스위치(Switch) 

LAN 과 LAN을 연결하여 훨씬 큰 LAN을 만드는 장치. 하드웨얼르 기반으로 처리하므로 전송속도 빠르고 포트마다 각기 다른 전송 속도를 지원하도록 제어 할 수 있고, 수십에서 수백 개의 포트를 제공. 데이터 링크 계층에서 사용됨.

라우터(Router) 

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

게이트웨이(Gateway) 

전 계층(1~7계층)의 프로토콜 구조가 다른 네트워크의 연결을 수행한다.

 


TCP/IP 

인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜. TCP/IP는 ARPA에서 개발하여 사용하기 시작하였다. UNIX의 기본 프로토콜로 사용되었고, 현재 인터넷 범용 프로토콜로 사용된다.

TCP(Transmission Control Protocol) 

OSI 7계층의 전송 계층에 해당한다.

신뢰성 있는 연결형 서비스를 제공한다. 

패킷의 다중화, 순서제어, 오류제어, 흐름제어 기능을 제어한다.

스트림 전송 기능 제공한다. 

TCP 헤더에는 Source/Destination Port Number, Sequence Number, Acknowledgement Number, Checksum 등이 포함된다. 

IP(Internet Protocol) 

OSI 7계층의 네트워크 계층에 해당한다. 

데이터그램을 기반으로 하는 비연결형 서비스를 제공한다. 

Best Effort 원칙에 따른 전송 기능을 제공한다.

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

헤더의 길이는 최소 20Bytes 에서 최대 60Bytes 읻. 

IP 헤더에는 Version, Header Length, Total Packe Length, Header Checksum, Source IP Address, Destination IP Address 등이 포함된다. 

 

TCP/IP 의 구조

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

OSI: TCP/IP

응용, 표현, 세션 계층: 응용 계층

전송: 전송 계층

네트워크: 인터넷 계층 

데이터 링크 계층, 물리계층: 네트워크 액세스 계층

 

응용 계층의 주요 프로토콜 

FTP(File Transfer Protocol) - 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을수 있도록 하는 원격 파일 전송 프로토콜  

SMTP(Simple Mail Transfer Protocol) - 전자 우편을 전송하는 프로토콜 

TELNET - 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스. 프로그램을 실행하는 등 시스템 관리작업을 할 수 있는 가상의 터미널(Virtual Terminal) 기능을 수행한다. 

SNMP(Simple Network Management Protocol) - TCP/IP 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템으로 보내는데 사용되는 표준 통신 규약이다. 

DNS(Domain Name System) - 도메인 네임을 IP 주소로 매핑(Mapping) 하는 시스템이다. 

HTTP(Hyper Text Transfer Protocol) - 월드 와이드 웹(WWW)에서 HTML 문서를 송수신 하기 위한 표준 프로토콜. 

MQTT(Message Queing Telemetry Transport) - 발행-구독 기반의 메시징 프로토콜로, loT 환경에서 자주 사용된다. 

발행-구독(Publish-Subscribe) 기반* - 예를 들어, 유튜브의 채널 운영자가 새로운 메시지를 발행하면, 유튜브 사용자 전체가 아닌 해당 채널 구독자만을 대상으로 메시지가 전달되도록 운영되는 구조 

 

전송 계층의 주요 프로토콜 

TCP(Transmission Control Protocl) 

양방향 연결(Full Duplex Connection)형 서비스를 제공한다 

가상 회선연결 형태의 서비스를 제공한다 

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

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

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

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

프로토콜 헤더는 20에서 60바이트까지 사용할수 있는데 최대 100바이트까지 크기를 확장 할 수 있다  

TCP를 사용하는 서비스 - FTP, SMTP, TELNET, HTTP 등

인접한 노드 사이의 프레임 전송 및 오류를 제어는 데이터 링크 계층의 프로토콜인 HDLC, LAPB, LLC, MAC 등이 수행함.

 

UDP(User Datagram Protocl) 

데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스를 제공한다 

TCP에 비해 상대적으로 단순한 헤더 구조를 가지므로, 오버헤드가 적고, 흐름제어나 순서 제어가 없어 전송 속도가 빠르다 

고속의 안정성 있는 전송 매체를 사용하여 빠른 속도를 필요로 하는 경우, 동시에 여러 사용자에게 데이터를 전달할 경우, 정기적으로 반복해서 전송할 경우에 사용한다  

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

UDP 헤더에는 Source Port Number, Destination Port Number, Length, Checksum 등이 포함된다 

 

RTCP(Real-Time Control Protocol) 

RTP(Real-time Transport Protocol) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜이다. 

세션(Session)에 참여한 각 참여자들에게 주기적으로 제어 정보를 전송한다.

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

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

RTCP 패킷은 항상 32 비트의 경계로 끝난다

 

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

IP(Internet Protocl) - 전송할 데이터에 주소를 지정하고, 경로를 설정하는 기능을 한다. 비연결형인 데이터그램 방식을 사용하는 것으로 신뢰성이 보장되지 않는다. 

ICMP(Internet Control Message Protocol) - IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하며, 헤더는 8Byte로 구성된다. 

IGMP(Internet Group Managemnt Protocol) - 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용된다. 

ARP(Address Resolution Protocol, 주소 분석 프로토콜) - 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 바꾼다. 

RARP(Reverse Address Resolution Protocol) - ARP와 반대로 물리적 주소를 IP 주소로 변환하는 기능을 한다. 

 

네트워크 악세스 계층의 주요 프로토콜 

Ethernet(IEEE 802.3) - CSMA/CD 방식의 LAN 

IEEE 802 - LAN을 위한 표준 프로토콜

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

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

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