운영체제의 개념
- 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종
- 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공
- 운영체제는 프로세스, 기억 장치, 주변 장치, 파일 등을 관리하는 기능 수행
- 운영체제의 종류: 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) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행 제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템 상태를 일관성 있게 유지한다는 점을 이용한 기법 |
다중 버전 기법 | - 타임 스탬프의 개념을 이용하는 기법 - 다중 버전 타임 스탬프 기법이라고도 함 - 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다 버전을 부여하여 관리함 |
'정보처리기사' 카테고리의 다른 글
[JAVA] 자바의 객체 지향 특징 (2) | 2023.04.17 |
---|---|
[문제 & 풀이] 정보처리기사 실기 족보_3 (0) | 2023.04.17 |
[문제 & 풀이] 정보처리기사 실기 족보_2 (0) | 2023.04.13 |
[문제 & 풀이] 정보처리기사 실기 족보_1 (0) | 2023.04.11 |
[9. 소프트웨어 개발 보안 구축] 핵심 키워드 정리 (0) | 2023.04.10 |