정보처리기사

[11. 응용 SW 기초 기술 활용] 핵심 키워드 정리

김꼬알 2023. 4. 15. 17:26

운영체제의 개념

  • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
  • 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종
  • 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공
  • 운영체제는 프로세스, 기억 장치, 주변 장치, 파일 등을 관리하는 기능 수행
  • 운영체제의 종류: Windows, UNIX, Linux, MacOS, MS-DOS 등

 

운영체제의 목적

  • 처리 능력(Throughput): 일정 시간 내에 시스템이 처리하는 일의 양
  • 반환 시간(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
  • 사용 가능도(Availability): 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
  • 신뢰도(Reliability): 시스템이 주어진 문제를 정확하게 해결하는 정도

 

운영체제의 기능

  • 프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입출력 장치, 파일 및 정보 등의 자원을 관리
  • 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공
  • 사용자와 시스템 간의 편리한 인터페이스를 제공
  • 시스템의 각종 하드웨어와 네트워크를 관리, 제어
  • 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공

 

운영체제의 종류

Windows

  • 1990년대 마이크로소프트(Microsoft) 사가 개발한 운영체제

 

주요 특징

  • 그래픽 사용자 인터페이스(GUI; Graphic User Interface)
    • 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
  • 선점형 멀티태스킹(Preemptive Multi-Tasking)
    • 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
  • PnP(Plug and Play, 자동 감지 기능)
    • 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능
  • OLE(Object Linking and Embedding)
    • 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체(Object)를 현재 작업 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능
  • 255자의 긴 파일명
    • /, \, *, ?, <, >, | 를 제외한 모든 문자 및 공백을 사용하여 최대 255자까지 파일 이름을 지정할 수 있음
  • Single-User 시스템
    • 컴퓨터 한 대를 한 사람만이 독점해서 사용함

 

 

UNIX

  • 1960년대 AT&T 벨(Bell) 연구소, MIT, General Electronic이 공동 개발한 운영체제
  • 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제

 

주요 특징

  • 소스가 공개된 개방형 시스템(Open System)
  • 대부분 C 언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높음
  • 다중 사용자(Multi-User), 다중 작업(Multi-Tasking) 을 지원
  • 트리(Tree) 구조의 파일 시스템

 

시스템 구성 요소

  • 커널(Kernel)
    • 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당함
    • UNIX의 가장 핵심적인 부분
    • 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행
  • 쉘(Shell)
    • 사용자의 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기
    • 시스템과 사용자 간의 인터페이스를 담당함
    • 종류: Bourne Shell, C Shell, Korn Shell
  • 유틸리티 프로그램(Utility Program)
    • 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용함
    • DOS에서의 외부 명령어에 해당됨
    • 종류: 에디터, 컴파일러, 인터프리터, 디버거 등

 

 

Linux

  • 1991년 리누스 토발즈(Linus Tovalds)가 UNIX를 기반으로 개발한 운영체제
  • 프로그램 소스 코드가 무료로 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가할 수 있음
  • 다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능
  • UNIX와 완벽하게 호환되며 대부분의 특징이 동일함

 

 

메모리 관리 기법의 종류: 반배할교

반입(Fetch) 기법

  • 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정
  • 요구 반입(Demend Fetch): 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
  • 예상 반입(Anticipatory Fetch): 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법

 

배치(Placement) 기법

  • 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정

 

배치 기법의 유형: 초적악

  • 최초 적합(First-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
  • 최적 적합(Best-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
  • 최악 적합(Worst-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
    • 단편화: 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간

 

할당 기법

  • 프로그램이나 데이터를 실행기키기 위해 주기억장치에 어떻게 할당할 것인지를 결정

 

연속 할당 기법

  • 프로그램을 주기억장치에서 연속으로 할당하는 방법
  • 종류: 단일 분할 할당 기법, 다중 분할 할당 기법

 

분산 할당 기법

  • 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
  • 종류: 페이징 기법, 세그먼테이션 기법

 

교체(Replacement) 기법

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

 

교체 기법의 종류

  • FIFO(First In First Out): 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 방법
  • OPT(OPTimal replacement, 최적 교체): 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 방법
  • LRU(Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 방법
  • LFU(Least Frequently Used): 사용 빈도가 가장 적은 페이지를 교체하는 방법
  • LUR(Least Used Recently): NUR와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 방법
  • SCR(Second Chance Replacement, 2차 기회 교체): 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법으로 FIFO의 단점을 보완하는데 사용

 

 

프로세스 상태: 생준 실대완

  • 생성(Created) 상태: 프로세스 최초 상태로, 주기억장치에 적재되지 않고 보조 기억 장치에 저장되어 있는 실행 파일 상태
  • 준비(Ready) 상태: 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 실행(Run) 상태: 준비 상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기(Wait) 상태: 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
  • 완료(Terminated) 상태: 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

 

 

프로세스 상태 전이: 디타 블웨

  • 디스패치(준비 → 실행): 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
  • 타이머 런아웃(실행 → 준비): 일정 시간이 지나면 스케줄러에 의해 PCB에 저장, 프로세스 반잡 후 준비 상태로 전이
  • 블록(실행 → 대기): 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
  • 웨이크 업(대기 → 준비): 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정

 

 

선점 스케줄링 알고리즘

  • 하나의 프로세스가 CPU를 할당 받아 실행하고 있을 때, 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
  • 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용
  • 많은 오버헤드(Overhead) 초래

 

종류: SMMR

  • SRT(Shortest Remaining Time): 짧은 시간 순서대로 프로세스를 수행하며, 남은 처리 시간이 더 짧은 프로세스가 Ready 큐에 들어오면 그 프로세스가 바로 선점됨 
  • MLQ(Multi-Level Queue): Ready 큐를 여러 개 사용하는 기법으로 각각의 큐는 자신의 스케줄링 알고리즘을 수행하며, 큐와 큐 사이에도 우선순위를 부여함
  • MLFQ(Multi-Level Feedback Queue): MLQ큐와 비슷하나 프로세스들이 큐를 이동할 수 있음 
  • Round Robin(Round Robin): 각 프로세스는 같은 크기의 CPU 시간을 할당받고 선입선출에 의해 수행됨. 할당 시간이 너무 크면 선입선출과 다를 바가 없어지고, 너무 작으면 오버헤드가 너무 커짐

 

 

비선점 스케줄링 알고리즘

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
  • 프로세스 응답 시간의 예측이 용이
  • 일괄 처리 방식에 적합

 

종류: 우기 HFS

  • 우선순위(Priority): 프로세스에게 우선순위를 정적, 혹은 동적으로 부여하여 우선순위가 높은 순서대로 처리함. 동적으로 부여할 경우 구현이 복잡하고 오버헤드가 많다는 단점이 있으나, 시스템의 응답속도를 증가시킴  
  • 기한부(Deadline): 작업을 명시된 시간이나 기한 내에 완료하도록 계획
  • HRN(Highest Response-ratio Next): 대기시간과 서비스(실행) 시간을 이용해서 우선순위를 계산하여 숫자가 가장 높은 것부터 낮은 순으로 우선순위를 부여하는 기법
    • 우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간
  • FCFS(First Come First Service, 선입 선출 = FIFO): 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
  • SJF(Shortest Job First, 단기 작업 우선): 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법

 

 

반환시간 및 대기시간 계산 방법: 반종도 대반서

  • 반환시간 = 종료시간 - 도착시간
  • 대기시간 = 반환시간 - 서비스시간

 

 

클라우드 컴퓨팅 분류: 사공하

  • 사설 클라우드(Private Cloud): 주로 기업 내부에 구축된 인프라를 운영하는방식으로, 방화벽으로 보호된인프라는 단일 고객만 사용  
  • 공용 클라우드(Public Cloud): 타사 클라우드 서비스 공급자가 소유하고 운영하며, 인터넷을 통해 제공하는 방식
  • 하이브리드 클라우드(Hybrid Cloud): 필요에 따라 홍용하여 운영하는 방식으로, 사설 클라우드와 공용 클라우드의 이점을 모두 제공받을 수 있지만 그만큼 환경이 복잡함

 

 

클라우드 서비스 유형: 인플소

  • 인프라형 서비스(IaaS): 가상화 기술과 물리적 자원, 즉 인프라만 제공
    • Amazon, AWS, MS Azure, Google GCP 등
  • 플랫폼형 서비스(PaaS): 개발에 필요한 환경, 즉 플랫폼까지만 빌려주고 앱과 데이터는 기업이 직접 운영
    • AWS Elastic Beanstalk, Heroku, Red Hat OpenShift 등
  • 소프트웨어형 서비스(SaaS): 전통적인 IT 솔루션으로 사용자의 하드웨어, 소프트웨어 모두 서비스
    • Dropbox, Salesforce, Google Drive, Naver MYBOX 등

 

 

IPv4 전송 방식: 유멀브

  • 유니 캐스트
  • 멀티 캐스트
  • 브로드 캐스트

 

 

IPv6 전송 방식: 유멀애

  • 유니 캐스트(Unicast): 단일 송신자와 단일 수신자 간의 통신(1 대 1 통신에 사용)
  • 멀티 캐스트(Multicast): 단일 송신자와 다중 수신자 간의 통신(1 대 다 통신에 사용)
  • 애니 캐스트(Anycast): 단일 송신자와 가장 가까이에 있는 단일 수신자 간의 통신(1 대 1 통신에 사용)

 

 

OSI(Open System Interconnection) 참조 모델

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

 

OSI 7계층: 아파서 티내다, 피나다

응용 계층(Application Layer)

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

 

표현 계층(Presentation Layer)

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

 

세션 계층(Sesson Layer)

  • 송, 수신 간의 관련성을 유지하고 대화 제어를 담당
  • 대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능을 함
  • 동기점은 오류가 있는 데이터의 회복을 위해 사용하는 것으로, 소동기점과 대동기점이 있음

 

전송 계층(Transport Layer)

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

 

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

  • 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 함
  • 네트워크 연결을 설정, 유지, 해제하는 기능을 함
  • 경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송 수행
  • X.25, IP 등의 표준이 있음
  • 관련 장비: 라우터

 

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

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

 

물리 계층(Physical Layer)

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

 

 

네트워크 관련 장비

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

  • 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치
  • 정보 전송 시 정보가 케이블을 통해 전송될 수 있도록 정보 형태를 변경
  • 이더넷 카드(LAN 카드) 혹은 네트워크 어댑터라고도 함

 

허브(Hub)

  • 한 사무실이나 가까운 거리의 컴퓨터를 연결하는 장치로, 각각의 회선을 통합하여 관리
  • 허브는 신호 증폭 기능을 하는 리피터의 역할을 포함함
  • 종류: 더미 허브(Dummy Hub), 스위칭 허브(Switching Hub)

 

리피터(Repeater)

  • 거리가 증가할수록 감소하는 디지털 신호의 장거리 전송을 위해 수신한 신호를 재생시키거나 출력 전압을 높여 전송하는 장치
  • OSI 참조 모델의 물리 계층에서 동작하는 장비
  • 전송 거리의 연장 또는 배선의 자유도를 높이기 위한 용도로 사용됨

 

브리지(Bridge)

  • LAN과 LAN을 연결하거나, LAN 안에서 컴퓨터 그룹을 연결하는 장치
  • 네트워크의 수많은 단말기들에 의해 발생되는 트래픽 병목 현상을 줄일 수 있음
  • 네트워크를 분석적으로 구성할 수 있어 보안성을 높일 수 있음
  • 브리지를 이용한 서브넷(Subnet) 구성 시, 전송 가능한 회선 수는 브리지가 n개 일때 n(n-1)/2개

 

스위치(Switch)

  • 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
  • 하드웨어를 기반으로 처리하므로 전송 속도가 빠름
  • 포트마다 서로 다른 전송 속도를 지원하게 제어할 수 있음
  • 수십에서 수백 개의 포트를 제공
  • OSI 참조 모델의 데이터 링크 계층에서 사용

 

라우터(Router)

  • 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택하는 기능이 추가된 장치
  • 서로 다른 LAN 또는 LAN과 WAN을 연결하는 기능도 함
  • OSI 참조 모델의 네트워크 계층에서 동작하는 장비
  • 네트워크 계층까지의 프로토콜 구조가 다른 네트워크 간의 연결을 위해 프로토콜 변환 기능 수행

 

게이트웨이(Gateway)

  • OSI 전 계층의 프로토콜 구조가 다른 네트워크를 연결하는 장치
  • LAN에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 데이터를 받아들이는 출입구 역할을 함
  • 세션 계층, 표현 계층, 응용 계층 간을 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 등을 수행

 

 

프로토콜(Protocol)

  • 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약
  • 프로토콜의 기능: 단편화와 재결합, 캡슐화, 흐름 제어, 오류 제어, 동기화, 순서 제어, 주소 지정, 다중화, 경로 제어, 전송 서비스 등

 

프로토콜의 기본 요소: 구의타

  • 구문(Syntax): 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정함
  • 의미(Semantics): 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정함
  • 시간(Timing): 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정함

 

 

TCP/IP(Transmission Control Protocol/Internet Protocol)

  • 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고 받을 수 있도록 하는 표준 프로토콜

 

TCP(Transmission Control Protocol)

  • OSI 7계층의 전송 계층에 해당함
  • 신뢰성 있는 연결형 서비스 제공
  • 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공

 

IP(Internet Protocol)

  • OSI 7계층의 네트워크 계층에 해당함
  • 데이터 그램을 기반으로 하는 비연결형 서비스 제공
  • 패킷의 분해/조립, 주소 지정, 경로 선택 기능 제공

 

TCP/IP 구조

OSI TCP/IP 기능
응용 계층
표현 계층
세션 계층
응용 계층 - 응용 프로그램 간의 데이터 송수신 제공
- TELNET, FTP, SMTP, SNMP, DNS, HTTP 등
전송 계층 전송 계층 - 호스트들 간의 신뢰성 있는 통신 제공
- TCP, UDP, RTCP
네트워크 계층 인터넷 계층 - 데이터 전송을 위한 주소 지정, 경로 설정을 제공
- IP, ICMP, IGMP, ARP, RARP
데이터 링크 계층
물리 계층
네트워크 액세스 계층 - 실제 데이터(프레임)를 송수신하는 역할
- Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ 등

 

응용 계층의 주요 프로토콜

프로토콜 내용
TELNET - 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스
- 프로그램을 실행하는 등 시스템 관리 작업을 할 수 있는 가상의 터미널(Virtual Terminal) 기능을 수행
FTP
(File Transfer Protocol)
컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜
SMTP
(Simple Mail Transfer Protocol)
전자 우편을 교환하는 서비스
SNMP
(Simple Network Management Prococol)
TCP/IP 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용되는 표준 통신 규약
DNS
(Domain Name System)
도메인 네임을 IP 주소로 매핑하는 시스템
HTTP
(HyperText Transfer Protocol)
월드 와이드 웹(WWW)에서 HTML 문서를 송수신 하기 위한 표준 프로토콜

 

전송 계층의 주요 프로토콜

프로토콜 내용
TCP
(Transmission Control Protocol)
- 양방향 연결(Full Duplex Connection)형 서비스를 제공함
- 가상 회선 연결(Virtual Circuit Connection) 형태의 서비스를 제공함
- 스트림 위주의 전달(패킷 단위)을 함
- 신뢰성 있는 경로를 확립하고 메시지 전송을 감독함
- 순서 제어, 오류 제어, 흐름 제어 기능을 함
- 패킷의 분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성이 보장되는 통신을 제공함
- TCP 프로토콜의 헤더는 기본적으로 20Byte에서 60Byte까지 사용할 수 있는데, 선택적으로 40Byte를 더 추가할 수 있으므로 최대 100Byte까지 크기를 확장할 수 있음
UDP
(User Datagram Protocol)
- 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스를 제공함
- TCP에 비해 상대적으로 단순한 헤더 구조를 가지므로, 오버헤드가 적고, 흐름 제어나 순서 제어가 없어 전송 속도가 빠름
- 고속의 안정성 있는 전송 매체를 사용하여 빠른 속도를 필요로 하는 경우, 동시에 여러 사용자에게 데이터를 전달할 경우, 정기적으로 반복해서 전송할 경우에 사용함
- 실시간 전송에 유리하며, 신뢰성보다는 속도가 중요시되는 네트워크에서 사용됨
- UDP 헤더에는 Source Port Number, Destination Port Number, Length, Checksum 등이 포함됨
RTCP
(Real-Time Control Protocol)
- RTP(Real-Time Transport Protocol) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
- 세션(Session)에 참여한 각 참여자들에게 주기적으로 제어 정보를 전송함
- 하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화(Multiplexing)를 제공함
- 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만을 제공함
- RTCP 패킷은 항상 32비트의 경계로 끝남

 

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

프로토콜 내용
IP
(Internet Protocol)
- 전송할 데이터에 주소를 지정하고, 경로를 설정하는 기능을 함
- 비연결형인 데이터그램 방식을 사용하는 것으로, 신뢰성이 보장되지 않음
ICMP
(Internet Control Message Protocol)
인터넷 제어 메시지 프로토콜
- IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 함
- 헤더는 8Byte로 구성됨
IGMP
(Internet Group Management 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 간의 인터페이스를 제공하는 프로토콜

 

 

네트워크(Network)

  • 2대 이상의 컴퓨터를 전화선이나 케이블 등으로 연결하여 자원을 공유하는 것
  • 다른  컴퓨터의 데이터, 프로그램, 주변 장치, 인터넷 등을 공유하기 위해 사용

 

네트워크 설치 구조

성형(Star, 중앙 집중형)

  • 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말 장치들이 연결되는 중앙 집중식의 네트워크 구성 형태
  • 포인트 투 포인트(Point-to-Point) 방식으로 회선 연결

 

링형(Ring, 루프형)

  • 컴퓨터와 단말 장치들을 서로 이웃하는 것끼리 연결시킨 포인트 투 포인트(Point-to-Point) 방식의 구성 형태
  • 단말 장치의 추가/제거 및 기밀 보호가 어렵고, 각 단말 장치에서 전송 지연이 발생할 수 있음
  • 데이터는 단방향 또는 양방향으로 전송할 수 있음

 

버스형(Bus)

  • 1개의 통신 회선에 여러대의 단말 장치가 연결되어 있는 형태
  • 단말 장치의  추가와 제거가 용이하고, 단말 장치가 고장나더라도 통신망 전체에 영향을 주지 않기 때문에 신뢰성을 높일 수 있음

 

계층형(Tree, 분산형)

  • 중앙 컴퓨터와 일정 지역의 단말 장치까지는 하나의 통신 회선으로 연결시키고, 이웃하는 단말 장치는 일정 지역 내에 설치된 중간 단말 장치로부터 다시 연결시키는 형태
  • 분산 처리 시스템을 구성하는 방식

 

망형(Mesh)

  • 모든 지점의 컴퓨터와 단말 장치를 서로 연결한 형태로, 노드의 연결성이 높음
  • 많은 단말 장치로부터 많은 양의 통신을 필요로 하는 경우에 유리함
  • 모든 노드를 망형으로 연결하려면 노드의 수가 n개 일 때, n(n-1)/2개의 회선이 필요하고, 노드당 n-1개의 포트가 필요함

 

네트워크의 분류

근거리 통신망(LAN; Local Area Network)

  • 회사, 학교, 연구소 등에서 비교적 가까운 거리에 있는 컴퓨터, 프린터, 저장 장치 등과 같은 자원을 연결하여 구성함
  • 사이트 간의 거리가 짧아 데이터의 전송 속도가 빠르고, 에러 발생률이 낮음
  • 주로 버스형이나 링형 구조를 사용함

 

광대역 통신망(WAN; Wide Area Network)

  • 국가와 국가 혹은 대륙과 대륙 등과 같이 멀리 떨어진 사이트들을 연결하여 구성함
  • 사이트 간의 거리가 멀기 때문에 통신 속도가 느리고, 에러 발생률이 높음
  • 일정한 지역에 있는 사이트들을 근거리 통신망으로 연결한 후 각 근거리 통신망을 연결하는 방식을 사용함

  

 

경로 제어(Routing)

  • 송수신 측 간의 전송 경로 중에서 최적 패킷 교환 경로를 결정하는 기능
  • 경로 제어표(Routing Table)를 참조해서 이루어지며, 라우터에 의해 수행됨
  • 경로 제어 요소: 성능 기준, 경로의 결정 시간과 장소, 정보 발생지, 경로 정보의 갱신 시간

 

경로 제어 프로토콜(Routing Protocol)

프로토콜 내용
IGP
(Interior Gateway Protocol)
내부 게이트웨이 프로토콜
- 하나의 자율 시스템(AS) 내의 라우팅에 사용되는 프로토콜

RIP(Routing Information Protocol)
- 현재 가장 널리 사용되는 라우팅 프로토콜로, 거리 벡터 라우팅 프로토콜이라고도 불리며 최단 경로 탐색에 Bellman-Ford 알고리즘이 사용됨
- 소규모 동종의 네트워크(자율 시스템, AS) 내에서 효율적인 방법
- 최대 홉(Hop) 수를 15로 제한하므로, 15 이상의 경우는 도달할 수 없는 네트워크를 의미하는데 이것은 대규모 네트워크에서는 RIP를 사용할 수 없음을 의미함
- 라우팅 정보를 30초 마다 네트워크 내의 모든 라우터에 알리며, 180초 이내에 새로운 라우팅 정보가 수신되지 않으면 해당 경로를 이상 상태로 간주함

OSPF(Open Shortest Path First protocol)
- RIP의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜로, 대규모 네트워크에서 많이 사용됨
- 인터넷 망에서 이용자가 최단 경로를 선정할 수 있도록 라우팅 정보에 노드 간의 거리 정보, 링크 상태 정보를 실시간으로 반영하여 최단 경로로 라우팅을 지원함
- 최단 경로 탐색에 다익스트라(Dijkstra) 알고리즘을 사용함
- 라우팅 정보에 변화가 생길 경우, 변화된 정보만 네트워크 내의 모든 라우터에 알림
- 하나의 자율 시스템(AS)에서 동작하면서 내부 라우팅 프로토콜의 그룹에 도달함
EGP
(Exterior Gateway Protocol)
외부 게이트웨이 프로토콜
자율 시스템(AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜
BGP
(Border Gateway Protocol)
- 자율 시스템(AS) 간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해 만들어짐
- 초기에 BGP 라우터들이 연결될 때에는 전체 경로 제어표(라우팅 테이블)를 교환하고, 이후에는 변화된 정보만들 교환
  • 최적 패킷 교환 경로:  어느 한 경로에 데이터의 양이 집중되는 것을 피하면서, 최저의 비용으로 최단 시간에 송신할 수 있는 경로를 의미함
  • 경로 제어표(Routing Table): 일반적으로 라우팅 테이블이라고 하며, 다음 홉 주소, 메트릭(Metric), 목적지(수신지) 주소가 저장됨
  • 자율 시스템(AS; Autonomous System): 하나의 도메인에 속하는 라우터들의 집합을 의미하며, 하나의 자율 시스템에 속한다는 것은 하나의 도메인에 속한다는 것과 같은 의미
  • 홉(Hop): 데이터가 목적지까지 전달되는 과정에서 거치는 네트워크의 수를 의미

 

 

트래픽 제어(Traffic Control)

  • 네트워크의 보호, 성능 유지, 네트워크 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름 또는 그 양을 조절하는 기능

 

종류

흐름 제어(Flow Contol)

  • 네트워크 내의 원활한 흐름을 위히 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능
  • 수신 측에서는 수신된 데이터를 버퍼에 저장한 후 순차적으로 처리해서 상위 계층으로 전달하는데, 송신 측의 속도가 수신 측보다 빠르면 수신된 데이터 양이 제한된 버퍼를 초과할 수 있으며, 이로 인해 이후 수신 데이터가 손실될 수 있음
  • 이러한 상황은 송신 측과 수신 측의 전송 속도를 적절히 조절하여 예방할 수 있는데, 이것을 흐름 제어라고 함
기법 내용
정지-대기
(Stop-and-Wait)
- 수신 측의 확인 신호(ACK)를 받은 후에 다음 패킷을 전송하는 방식
- 한 번에 하나의 패킷만들 전송할 수 있음
슬라이딩 윈도우
(Sliding Window)
- 확인 신호, 즉 수신 통지를 이용하여 송신 데이터의 양을 조절하는 방식
- 수신 측의 확인 신호를 받지 않더라도 미리 정해진 패킷의 수만큼 연속적으로 전송하는 방식으로, 한 번에 여러 개의 패킷을 전송할 수 있어 전송 효율이 좋음
- 송신 측은 수신 측으로부터 확인 신호(ACK) 없이도 보낼 수 있는 패킷의 최대치를 미리 약속받는데, 이 패킷의 최대치가 윈도우 크기(Window Size)를 의미함

 

폭주(혼합) 제어

  • 흐름 제어(Flow Control)가 송수신 측 사이의 패킷 수를 제어하는 기능이라면, 폭주 제어는 네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로(Overflow)를 방지하는 기능을 함
  • 송신 측에서 전송한 데이터는 수신 측에 도착할 때까지 여러 개의 라우터를 거치는데, 데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못함
  • 송신 측에서는 라우터가  처리하지 못한 데이터를 손실 데이터로 간주하고 계속 재전송하게 되므로 네트워크는 더욱 더 혼잡하게 되는데, 이러한 상황은 송신 측의 전송 속도를 적절히 조절하여 예방할 수 있는데 이것을 폭주 제어라고 함
기법 내용
느린 시작
(Slow Start)
- 윈도우의 크기를 1, 2, 4, 8, ... 과 같이  2배씩 지수적으로 증가시켜 초기에는 느리지만 갈수록 빨라짐
- 전송 데이터의 크기가 임계값에 도달하면 혼잡 회피 단계로 넘어감
혼잡 회피
(Congestion Avoidance)
느린 시작(Slow Start)의 지수적 증가가 임계값에 도달하면 혼잡으로 간주하고 회피를 위해 윈도우의 크기를 1씩 선형적으로 증가시켜 혼잡을 예방하는 방식

 

 

교착 상태(Dead Lock)

  • 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
  • 상호 배제에 의해 나타나는 문제점

 

교착 상태 발생의 필요 충분 조건

기법 설명
상호 배제
(Mutual Exclusion)
한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
점유와 대기
(Hold and Wait)
최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
비선점
(Non-preemption)
다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
환형 대기
(Circular Wait)
공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 

 

교착 상태의 해결 방법

기법 설명
예방 기법
(Prevention)
- 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
- 교착 상태 발생의 4가지 조건 중에서 어느 하나를 제거함으로써 수행됨
- 자원의 낭비가 가장 심한 기법
회피 기법
(Avoidance)
- 교착 상태가 발생할 가능성을 배제하지 않고, 교착 상태가 발생하면 적절히 피해나가는 방법
- 주로 은행원 알고리즘(Banker's Algorithm)이 사용됨
- 은행원 알고리즘(Banker's Algorithm): E. J.. Dijkstra가 제안한 것으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법 
발견 기법
(Detection)
- 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것
- 교착 상태 발견 알고리즘과 자원 할당 그래프 등을 사용할 수 있음
회복 기법
(Recovery)
교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것

 

 

회복(Recovery)

  • 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업

 

회복 기법의 종류

회복 기법 설명
연기 갱신 기법
(Defferred Update)
- 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법
- 트랜잭션이 수행되는 동안 갱신된 내용은 일단 로그(Log)에 보관됨
- 트랜잭션의 부분 완료 시점에 로그에 보관된 갱신 내용을 실제 데이터베이스에 기록함
- Redo 작업만 가능함
즉각 갱신 기법
(Immediate Update)
- 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법
- 장애가 발생하여 회복 작업을 할 경우를 대비하여 갱신된 내용들은 로그에 보관시킴
- Redo와 Undo 모두 사용 가능함
그림자 페이징 기법
(Shadow Paging)
갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지를 별도 보관해놓고, 실제 페이지를 대상으로 갱신 작업을 수행하다가 장애가 발생하여 트랜잭션 작업을 Rollback 시킬 때는 갱신 이후의 실제 페이지 부분을 그림자 페이지로 회복시키는 기법
검사점 기법
(Check Point)
트랜잭션 실행 중, 특정 단계에서 재실행 할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관해두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 수행하여 회복 시간을 절약하도록 하는 기법 

 

재시도(Redo)

  • 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후, 트랜잭션을 재실행 시키는 것
  • 덤프(Dump): 주기적으로 데이터베이스 전체를 복사해 두는 것
  • 로그(Log): 갱신되기 전후의 내용을 기록하는 별도의 파일로, 저널(Journal)이라고도 함

 

실행 취소(Undo)

  • 데이터베이스를 원상태로 되돌리기 위해 사용자가 했던 작업을 반대로 진행하는 것

 

 

병행 제어(Concurrency Control)

  • 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 것

 

병행 제어가 없을 때의 문제점

  • 갱신 분실(Lost Update): 2개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상
  • 비완료 의존성(Uncommitted Dependency): 하나의 트랜잭션 수행이 실해한 후, 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
  • 모순성(Inconsistency): 하나의 트랜잭션이 여러 데이터 갱신 연산을 수행할 때, 일관성 없는 상태의데이터베이스에서 데이터를 가져옴으로써 데이터의 불일치가 발생
  • 연쇄 복귀(Cascading Rollback): 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback 하는 경우, 다른 트랜잭션도 함께 Rollback 되는 현상

 

병행 제어 기법의 종류

기법 설명
로킹
(Locking)
- 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 Lock(잠금)을 요청해서 허락되어야만 그 로킹 단위를 액세스 할 수 있도록 하는 기법
- 주요 데이터의 액세스를 상호 배타적으로 함
타임 스탬프 순서
(Time Stamp Ordering0)
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 하기 전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법
최적 병행 수행
(낙관적 기법, 검증 기법, 확인 기법)
병행 수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행 제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템 상태를 일관성 있게 유지한다는 점을 이용한 기법
다중 버전 기법 - 타임 스탬프의 개념을 이용하는 기법
- 다중 버전 타임 스탬프 기법이라고도 함
- 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다 버전을 부여하여 관리함