정보처리기사 4과목
배치 프로그램(Batch Program)의 개요
- 배치 프로그램은 사용자와의 상호작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미
정기 배치 | 일, 주, 월과 같이 정해진 기간에 정기적으로 수행된다. |
이벤트성 배치 | 특정 조건을 설정해두고 조건이 충족될 때만 수행된다. |
On-Demand 배치 | 사용자 요청 시 수행된다. |
필수 요소
대용량 데이터 자동화 견고성 안정성/신뢰성 성능
배치 스케쥴러
- 배치 스케줄러는 일괄 처리(Batch Scheduler) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구입니다.
- 주로 사용되는 배치 스케줄러에는 스프링 배치, Quartz이 있습니다.
패키지 소프트웨어의 개요
- 패키지 소프트웨어는 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어를 의미한다.
패키지 소프트웨어의 특징
패키지 소프트웨어는 요구사항을 분석하여 업무 특성에 맞게 전용으로 개발되는 소프트웨어와 비교하여 안정성, 라이선스, 생산성 등에서 차이가 있다.
변수의 개요
변수(Variable)는 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미한다.
기억 클래스
변수 선언 시 메모리 내에 변수의 값을 저장하기 휘한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용범위가 제한 됩니다. 이러한 기억영역을 결정하는 작업을 기억 클래스(Storage Class)라 한다.
자동 변수(Automatic Variable)
자동 변수는 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수입니다.
함수나 블록이 실행되는 동안에만 존재하며, 이를 벗어나면 자동으로 소멸된다.
초기화하지 않으면 Garbage Value가 저장된다.
외부 변수(External Variable)
외부 변수는 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조하기 위한 변수이다.
외부 변수는 함수 밖에서 선언한다,
초기화하지 않으면 자동으로 0으로 초기화 된다.
다른 파일에서 선언된 변수를 참할 경우 초기화 할 수 없다.
정적 변수(Static Variable)
정적 변수는 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수가 있다.
내부 정적 변수는 선언한 함수나 블록 내에서만 사용할 수 있고, 외부 정적 변수는 모든 함수에서 사용할 수 있다.
두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않는다.
초기화는 변수 선언 시 한번만 할 수 있으며, 초기화를 생략하면 자동으로 0으로 초기화된다.
레지스터 변수(Register Varible)
레지스터 변수는 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당 받는 변수입니다.
자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용한다.
함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸된다.
레지스터의 사용 개수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당된다.
증감 연산자
++ | 증가 연산자 | 전치 : 변수 앞에 증감 연산자가 오는 형태로 먼저 변수의 값을 증감 시킨 후 변수를 연산에 사용 |
-- | 감소 연산자 | 후치 : 변수 뒤에 증감 연산자가 오는 형태로 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킴 |
조건 연산자
조건 ? 수식1 : 수식2; '조건'의 수식이 참이면 '수식1'을, 거짓이면 '수식2'를 실행한다.
객체지향 프로그래밍 언어
- 객체지향 프로그래밍 언어는 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그래밍을 작성할 수 있도록 한 프로그래밍 기법이다.
- 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법으로, 한 프로그램을 다른 프로그램에서 사용 가능하도록 한다.
객체지향 프로그래밍 언어의 장 단점
- 상속을 통한 재사용과 시스템의 확장이 용이하다.
- 코드의 재활용성이 높다
- 자연적인 모델링에 의해 분석과 설계를 쉽고 효율적으로 할 수 있다.
- 사용자와 개발자 사이의 이해를 쉽게 해준다.
- 대형 프로그램의 작성이 용이하다.
- 소프트웨어 개발 및 유지보수가 용이하다.
- 프로그래밍 구현을 지원해 주는 정형화된 분석 및 설계 방법이 없다?
- 구현 시 처리시간이 지연된다.
객체지향 프로그래밍 언어의 구성요소
객체 | - 데이터(속성)와 이를 처리하기 위한 연산(메서드)를 결합시킨 실체이다. 데이터 구조와 그 위에서 수행되는 연산들을 가지고 있는 소프트웨어 모듈이다. - 속성 : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위 별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현한다. - 메서드 : 객체가 메시지를 받아 실행해야 할 때 구체적인 연산을 정의하는 것으로, 객체의 상태를 참조하거나 변경하는 수단이 된다. |
클래스 | - 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 수단이 된다. 즉, 공통된 특성과 행위를 갖는 객체의 집합이라고 할 수 있다. - 객체의 유형 또는 타입을 의미한다. |
메세지 | - 객체들 간에 상호작용을 하는데, 사용되는 수단으로 객체의 메서드를 일으키는 외부의 요구사항이다. - 메세지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환하게 된다. |
라이브러리의 개념
라이브러리는 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 데이터들을 미리 만들어 모아 놓은 집합체입니다.
- 자주 사용하는 함수들의 반복적인 코드 작성을 피하기 위해 미리 만들어 놓은 것으로, 필요할 때는 언제든지 호출하여 사용할 수 있습니다.
- 라이브러리에는 표준 라이브러리와 외부 라이브러리가 있습니다.
예외 처리의 개요
- 프로그램의 정상적인 실행을 방해하는 조건이나 상태를 예외라고 하며, 이를 대비해놓은 처리 루틴을 수행하도록 예외 처리라고 한다.
- 이 루틴을 처리할 때 로그을 작성해서 어떤 로직 단계에서 문제가 발생되었는 지를 확인할 수 있으며, 이를 개선할 방향을 잡아줄 수 있습니다.
프로토타입(Prototype)의 개념
- 프로그래밍 언어에서 프로토타입이란 함수 원형이라는 의미로 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것이다. 프로토타입에 정의된 반환 형식은 함수 정의에 지정된 반환 형식과 반드시 일치해야 된다.
운영체제의 정의
- 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
운영체체의 목적
- 처리 능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축
- 단일 작업 처리 시스템 : MS - DOS
UNIX의 개요 및 특징
- 시분할 시스템을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다.
- 대부분 C 언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다
- 크기가 작고 이해하기 쉽다.
- Multi-User Multi-Tasking
- 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합
- 트리 구조의 파일 시스템
프로세스의 정의
일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업, 태스크라고 합니다.
프로세스 상태 전이 관련 용어
DIspatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정Wake Up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능 향상시키기 위해 입출력할 데이터를 직접 보내지 않고 한꺼번에 저장
스레드
스레드는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상은 멀티 스레드프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 합니다.스레드 기반 시스템에서 스레드는 독립적인 스케쥴링의 최소 단위로서 프로세스의 역할을 담당
스케쥴링의 목적
스케쥴링은 CPU나 자원을 효율적으로 사용하기 위한 정책
이 부분에서 성능 비교
처리율 증가
CPU 이용률 증가
응답시간 최소화
반환시간 최소화
대기 시간 최소화
공정성우선순위 제도오버헤드 최소화균형 있는 자원의 이용무한 연기 회피
인터넷의 개요
TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망
유닉스 운영체제를 기반으로 함
통신망과 컴퓨터가 있는 곳이라면 시간과 장소에 구해받지 않고 정보 교환 가능
다른 네트워크 또는 같은 네트워크를 연결하여 중추적 역할을 하는 네트워크로, 보통 인터넷의 주가 되는 기간망을 일컫는 용어를 백본(backbone)이라고 한다.
IP 주소
IP 주소는 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
숫자로 8 비트씩 4 부분, 총 32비트로 구성
IP 주소는 네트워크 부분의 길이에 따라 다음과 같이 A 클래스에서 E 클래스까지 총 5단계
서브네팅
서브네팅은 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것을 의미
4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크라고 하며, 이를 변경하여 네트워크 주소를 여러 개로 분할하여 하용
서브넷 마스크는 각 클래스마다 다르게 사용
IPv6
현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발
128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 있으며, IPv4에 비해 자료 전송 속도가 빠르다.
인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결 가능
IPv4와 호환성이 뛰어남
주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원
구성
16비트씩 8부분, 총 128비트로 구성
각 부분을 16진수로 표현하고, 콜론(:) 구분
IPv6은 다음과 같이 세 가지 주소 체계로 나누어짐
유니캐스트 : 단일 송신자와 단일 수신자 간의 통신
멀티캐스트 : 단일 송신자와 다중 수신자 간의 통신
애니캐스트 : 단위 송신자와 가장 가까이 있는 단일 수신자 간의 통신
네트워크 관련 장비
네트워크 인터페이스 카드(NIC; Network Interface Card)
네트워크 인터페이스 카드는 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치로, 정보 전송 시 정보가 케이블을 통해 전송될 수 있도록 정보 형태를 변경
이더넷 카드 혹은 네트워크 어댑터
리피터 - 물리계층
전송되는 신호가 전송 선로의 특성 및 외부 충격 등의 요인으로 인해 본 형태와는 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할 수행
브리지
LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹을 연결하는 기능을 수행
데이터 링크 계층 중 MAC 계층에서 사용되므로 MAC 브릿지라고도 함
트래픽 병목 현상 줄일 수 있음
네트워크를 분산적으로 구성할 수 있어 보안성을 높일 수 있음
N(N-1)/2
스위치 - 링크계층
LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
라우터 - 네트워크 계층
브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것
프로토콜의 정의
프로토콜은 서로 다른 기기들 간의 데이터 교환을 원할하게 수행할 수 있도록 표준화시켜 놓은 통신 규약
통신을 제어하기 위한 표준 규칙과 절차의 집합으로 하드웨어와 소프트웨어, 문서를 모두 규정
게이트웨이
전 계층의 프로토콜 구조가 다른 네트워크의 연결을 수행
세션 계층, 표현 계층, 응용 계층 간을 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 등을 수행
프로토콜의 기본 요소
구문(Syntax) : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정
의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
TCP/IP 개요
인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고닥을 수 있도록 하는 표준 프로토콜입니다.
TCP(Transmission Control Protocol) | OSI 7계층의 전송 계층에 해당 신뢰성 있는 연결형 서비스를 제공 스트림 전송 기능 제공 TCP 헤더 Source/Destination Port Number, Sequence Number, Acknowledgment Number, CheckSum 등이 포함 |
IP(Internet Protocol) | OSI 7계층의 네트워크 계층에 해당 데이터그램을 기반으로 하는 비연결형 서비스 제공 패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공 헤더의 길이는 최소 20Byte이다. IP 헤더에는 Version, Length, Header, Total Packet Length, Header Checksum, Source IP Address, Destination IP Address 등이 포함 |
구조
OSI | TCP/IP | 기능 |
응용 계층 표현 계층 세션 계층 |
응용계층 | 응용 프로그램 간의 데이터 송 수신 제공 FTP : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜 SMTP : 전자우편 교환 서비스 TELNET : 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스 SNMP : TCP/IP의 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약 DNS : 도메인 네임을 IP 주소로 매핑(Mapping) HTTP : 월드 와이드 웹에서 HTML 문서를 송수신 하기 위한 표준 프로토콜 |
전송 계층 | 전송계층 | 호스트들 간의 신뢰성 있는 통신 제공 TCP 1. 양방향 연결형 서비스 제공 2. 가상 회선 연결 형태의 서비스를 제공 3. 스트림 위주의 전달(패킷) 4. 신뢰성 있는 경로를 확립하고 메시지 전송 감독 5. 순서제어, 오류제어, 흐름제어기능 6. 패킷분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성 보장 UDP 1. 비연결형 서비스 제공 2. TCP에 비해 상대적으로 단순한 헤더 구조를 가지므로 오버헤드가 적음 3. 빠른 속도, 반복성 가능 4. 실시간 전송에 유리 -> 신뢰성보다 속도 RTCP 1. RTP 패킷 전송 품질을 제어하기 위한 제어 프로토콜 2. 세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송 3. 하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화를 제공 4. 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만을 제공 5. RTCP 패킷은 항상 32비트의 경계로 끝남 |
네트워크 계층 | 인터넷 계층 | 데이터 전송을 위한 주소 지정, 경로 설정을 제공 IP 1. 전송할 데이터에 주소를 지정하고 경로 설정하는 기능이 있다. 2. 비연결형 데이터그램 방식을 사용하는 것으로 신뢰성 보장(x) ICMP IP와 조합하여, 오류 처리와 전송 경로 변경 등 제어 메세지를 관리하는 역할로 88BYTE로 구성 IGMP 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티 캐스트 그룹 유지를 위해 사용 ARP 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC)로 바꾼다. RARP ARP와는 반대로 MAC -> IP로 변경 |
데이터 링크 계층 물리계층 |
네트워크 엑세스 계층 | 실제 데이터를 송수신하는 역할 Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN IEEE 802 : LAN을 위한 표준 프로토콜 HDLC : 비트 위주의 데이터 링크 제어 프로토콜 X.25 : 패킷 교환망을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜 RS-232C : 공중 전화 교환망(PSTN)을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜 |