[정보처리기사 필기] 4과목 키워드 정리
딱지의겨울
·2021. 4. 6. 13:54
4. 프로그래밍 언어 활용
4.1 서버 프로그램 구현
웹 서버
- 클라이언트로부터 직접 요청을 받아 처리하는 서버로 저용량의 정적 파일들을 제공.
- Apache HTTP Server, Microsoft Internet Information Service, Google Web Server
- 기능: HTTP/HTTPS 지원, 통신 기록, 정적 파일 관리, 대역폭 제한, 가상 호스팅, 인증
웹 어플리케이션 서버(WAS)
- 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 하는 서버.
- Apache Tomcat, IBM Websphere, Oracle WebLogic 등
개발 언어 선정 기준
- 적정성: 개발하려는 소프트웨어의 목적에 적합해야 함.
- 효율성: 코드의 작성 및 구현이 효율적이어야 함.
- 이식성: 다양한 시스템 환경에 적용이 가능해야 함.
- 친밀성: 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 함.
- 범용성: 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 함.
서버 개발 프레임워크
- 대표적인 서버 개발 프레임워크
s Spring: Java, 전자정부 표준 프레임워크 기반 기술
s Node.js: Javascript, 실시간 입출력 처리에 유리
s Django: Python, 컴포넌트의 재사용과 플러그인화 강조.
s Codeigniter: PHP, 인터페이스 간편, 서버 자원 적게 사용
s Ruby on Rails: Ruby, 테스트를 위한 웹서버 지원, 신속한 개발.
- 프레임 워크의 특성
s 모듈화(Modularity)
s 재사용성(Reusability)
s 확장성(Extensibility)
s 제어의 역흐름(Inversion of Control): 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴.
소프트웨어 개발 보안
- 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함.
- 정부에서 제공하는 소프트웨어 개발 보안 가이드 참고하여 점검.
- 소프트웨어 개발 보안 점검 항목: 세션 통제, 입력 데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러처리, 코드 오류, 캡슐화, API 오용
API(Application Programming Interface)
- 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스로 효율적인 소프트웨어 구현을 도와줌.
- 종류: Window API, 단일 유닉스 규격, Java API, 웹 API
배치 프로그램(Batch Program)
- 사용자의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것.
- 수행 주기에 따른 구분
s 정기 배치: 일, 주, 월과 같이 정해진 기간에 정기적으로 수행.
s 이벤트성 배치: 특정 조건을 설정해 놓고 조건이 충족될 때만 수행.
s On-Demand 배치: 사용자 요청 시 수행
- 배치 프로그램이 갖추어야 할 필수 요소
s 대용량 데이터: 대용량 데이터 처리 가능해야 함.
s 자동화: 심각한 오류가 발생한 상황을 제외하고는 사용자의 개입 없이 수행되어야 함.
s 견고성: 잘못된 데이터나 데이터의 중복 등의 상황으로 중단되는 일 없이 수행되어야 함
s 안정성/신뢰성: 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함.
s 성능: 다른 응용 프로그램의 수행을 방해하지 않아야 하고 지정됨 시간 내에 처리가 완료 되어야 함.
스프링 배치
- 배치 스케줄러(Job Schedular; 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구) 중 하나.
- 스프링 프레임워크의 특성을 그대로 가져와 스프링이 가지고 있는 모든 기능 사용 가능.
- 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트 제공. 로그관리, 추적, 트랙잭션 관리 등 다양한 기능 제공.
- 구성 요소와 역할
s Job: 수행할 작업 정의
s Job Launcher: 실행을 위한 인터페이스
s Step: Job 처리를 위한 제어 정보
s Job Repository: 작업 실행을 위한 모든 정보 저장
Quartz
- 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리.
- 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공.
- 구성 요소와 역할
s Schedular: 실행 환경 관리
s Job: 수행할 작업 정의
s JobDetail: Job의 상세 정보
s Trigger: Job의 실행 스케줄 정의
패키지 소프트웨어
- 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어.
- 기능 요구사항을 70%이상 충족시키는 패키지 소프트웨어가 있을 때만 사용하는 것이 적합.
4.2 프로그래밍 언어 활용
변수
- 기억 클래스 종류: 자동 변수, 레지스터 변수, 정적변수, 외부 변수
- 자동 변수(auto): 함수나 블록이 실행되는 동안에만 존재하고 초기화하지 않으면 쓰레기값이 저장됨.
- 외부 변수(extern): 함수 밖에서 선언, 초기화하지 않으면 자동으로 0으로 초기화.
- 정적 변수(static): 함수나 블록이 종료된 뒤에도 값이 소멸되지 않으며, 초기화는 변수 선언 시 한 번만 할 수 있으며 초기화를 생략하면 자동으로 0으로 초기화.
- 레지스터 변수(register): 메모리가 아닌 CPU 내부의 레지스터의 기억 영역을 할당받는 변수. 자주 사용되는 변수를 처리 속도를 높이기 위해 사용. 함수나 블록이 실행될 때만 존재. 사용 개수 한정적. 주소 연산자 사용할 수 없음.
연산자
단항 |
! ~ ++ -- sizeof |
< |
산술 |
* / % |
> |
+ - |
||
시프트 |
<< >> |
|
관계 |
< <= >= > |
|
== != |
||
비트 |
! |
|
^ |
||
| |
||
논리 |
&& |
|
|| |
||
조건 |
? : |
|
대입 |
+= -= *= /= %= <<= >>= |
< |
포인터
- 변수의 주소를 저장할 때 사용하는 변수.
- 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수.
- 주소를 저장하기 위해 변수의 주소를 알아낼 때는 번지 연산자 & / 선언할 때는 간접 연산자 *
- int a[5], *b; b = &a[0] b= a / *(a+0) = a[0]
scanf/ printf
- %8.3s : 전체 8자리를 확보하여 변주의 값 중 5자리만 출력
- %-6d : 왼쪽으로 정렬
- %02d: 빈 공간을 0으로 채움.
4.3 응용 SW 기초 기술 활용
운영체제
- 컴퓨터 시스템의 자원들을 효율적으로 관리하고, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임.
- 컴퓨터 사용자와 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어.
- 하드웨어 > 운영체제 > 유틸리티 > 응용 프로그램 > 사용자
- 목적
s 처리 능력(Troughput): 일정 시간 내에 시스템이 처리하는 일의 양
s 반환 시간(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간.
s 사용 가능도(Availability): 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
s 신뢰도(Reliability): 시스템이 주어진 문제를 정확하게 해결하는 정도
- 운영체제의 종류
s 단일 작업 처리 시스템: MS-DOS
s 개인용: Windows, MacOS, MS-DOS / 서버용: Unix, Linux
UNIX
- 특징
s 시분할 시스템을 위해 설계된 대화식 운영체제. 오픈소스 시스템.
s 다중 사용자, 다중 작업 지원.
s 통신망 관리용 운영체제로 적합
s 트리구조의 파일 시스템.
- 커널(Kernel): 주기억장치에 적재된 후 상주하면서 실행. 프로그램과 하드웨어 간의 인터페이스 역할 수행. 프로세스 관리, 기억장치 관리, 파일 관리 등 수행.
- 쉘(Shell)
s 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
s 시스템과 사용자 간의 인터페이스 담당.
s 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리 가능.
s 파이프라인 기능 지원하고 입출력 방향을 변경 가능.
s 공용 쉘이나 사용자가 많은 쉘 사용 가능
- 프로세스 간 통신
s 각 프로세스는 시스템 호출(프로세스가 커널에 접근하기 위한 인터페이스를 제공하는 명령어)을 통해 커널의 기능을 사용하고, 프로세스간 통신은 시그널/파이프/소켓 이용
s 시그널: 간단한 메세지를 이용하여 통신하는 것.
s 파이프: 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신 방식
s 소켓: 프로세스 사이의 대화를 가능하게 하는 쌍방향 통신 방식
배치(Placement) 전략
- 새로 반입되는 프로그램이나 데이터를 주기억 장치의 어디에 위치시킬 것인지를 결정하는 전략
- 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)
페이징 기법/세그멘테이션 기법
- 페이징 기법
s 페이지(프로그램을 일정한 크기로 나눈 단위), 페이지 프레임(페이지 크기로 일정하게 나누어진 주기억장치의 단위)
s 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있음.
s 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요. (비용이 증가, 처리 속도 감소)
- 세그먼테이션 기법
s 프로그램을 논리적 단위로 나눠서 주기억장치에 적재시켜 실행시키는 기법.
s 기억 공간을 절약하기 위해서.
s 주 기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침법할 수 없으며, 이를 위해 기억장치 보호기가 필요.
s 내부 단편화는 발생하지 않으니 외부 단편화 발생할 수 있음.
FIFO(First In First Out)
- 주 기억장치에 적재된 순간을 기억시켜 가장 오래 들어온 페이지 교체하는 기법.
LRU(Least Recently Used)
- 가장 오랫동안 사용하지 않은 페이지 교체하는 방법. 페이지마다 카운터를 둠.
- NUR(Not Used Recently): LRU와 비슷, 시간적인 오버헤드를 줄이기 위해 최근 사용 여부를 확인하기 위해 참조 비트와 변형 비트가 사용 됨. (0, 0 = 첫 번째 교체 우선순위)
Locality
- 시간 구역성(Temporal Locality)
s 하나의 페이지를 일정 시간 동안 집중적으로 엑세스 하는 현상.
s 한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음.
s 기억장소: Loop, Stack, Sub Routine, Counting
- 공간 구역성(Spatial Locality)
s 프로세스 실행시 일정 위치의 페이지를 집중적으로 엑세스하는 현상.
s 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음.
s 기억장소: 배열 순화, 순차적 코드의 실행, 같은 영역에 있는 변수를 참조할 때 사용
Working Set
- 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합
- 자주 참조되는 워킹 셋을 주 기억장치에 상주시킴으로써 페이지 부재 및 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정됨.
- 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 시간에 따라 변경.
프로세스
- PCB(Process Control Block)
s 프로세스에 대한 중요한 정보를 저장해 놓는 곳.
s 프로세스 현재 상태, 포인터, 프로세스 고유 식별자(PID), 스케쥴링 및 프로세스 우선순위, CPU 레지스터 정보, 주 기억장치 관리 정보, 입출력 상태정보, 계정 정보
- 프로세스 상태 전이
스레드
- 프로세스 내의 작업 단위로 경량 프로세스라고도 함.
- 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능.
- 실행 환경을 공유시켜 기억 장소의 낭비가 줄어듬.
- 프로세스들간의 통신 향상.
프로세스 스케쥴링 기법
- 비선점 스케쥴링(Non-Preemptive)
s 이미 할당된 프로세스를 받으면 완료하고 다음 것 실행.
s FCFS, SJF, 우선순위, HRN, 기한부
- 선점 스케쥴링
s 수행 중 우선순위가 더 높은 프로세스가 있으면 강제로 빼앗아 사용할 수 있는 기법.
s RR, SRT, 선점 우선순위, 다단계 큐
IPv6(Internet Protocol version 6)
- 128비트의 긴 주소를 사용하여 주소 부족 문제 해결.
- 인증성, 기밀성, 데이터 무결성의 지원.
- 주소 체계
s 유니 캐스트: 1:1 통신
s 멀티 캐스트: 1:다 통신
s 애니 캐스트: 가장 가까이에 있는 단일 수신자와 1:1 통신
OSI 참조 모델
|
특징 |
장비 |
데이터 단위 |
물리 계층 |
물리적 전성 매체와 전송 신호 방식 정의 |
리피터(신호 증폭), 허브(스위칭 허브) |
비트 |
데이터링크 계층 |
흐름 제어 오류 제어 순서 제어 프레임 동기화 |
랜카드, 브리지( LAN 연결, 트래픽 병목 현상), 스위치 |
프레임 |
네트워크 계층 |
네트워크 연결 관리 데이터 교환 및 중계 기능 |
라우터(최적 경로 선택) |
패킷 |
전송 계층 |
종단 시스템 간의 연결 설정 균일한 데이터 전송 서비스 제공. |
게이트웨이(데이터 변환) |
세그먼트 |
세션 계층 |
대회 제어 데이터 교환 관리 오류가 있는 데이터의 회복을 위해 동기점 체크. |
|
메세지 |
표현 계층 |
코드 변환, 데이터 암호화, 데이터 압축, 구문 검색 기능 |
|
|
응용 계층 |
정보 교환 등 서비스 제공 |
|
프로토콜의 기본 요소
- 구문(Syntax): 전송하고자 하는 데이터 형식, 부호화, 신호 레벨 등을 규정.
- 의미(Semantics): 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 제어 정보를 규정.
- 시간(Timing): 두 기기 간의 통신 속도, 메시지 순서 제어 등을 규정.
TCP/IP
OSI |
TCP/IP |
기능 |
응용 표현 세션 |
응용 계층 |
응용 프로그램 간의 데이터 송 수신 제공 |
전송 |
전송 계층 |
호스트들간의 신뢰성 있는 통신 제공 |
네트워크 |
인터넷 계층 |
데이터 전송을 위한 주소 지정, 경로 설정 |
데이터링크 물리 |
네트워크 엑세스 계층 |
실제 데이터를 송, 수신 |
- 응용 계층의 주요 프로토콜
s FTP(File Transfer): 원격 파일 전송 프로토콜
s SMTP(Simple Mail Transfer): 전자우편
s TELNET: 원격 컴퓨터 서비스. 가상의 터미널 기능 수행.
s SNMP(Simple Network Managemnet): TCP/IP 네트워크 관리 프로토콜. 네트워크 기기의 정보를 네트워크 관리 시스템에 보내는 데 사용.
s DNS(Domain Name System): 도메닝 네임을 IP 주소로 매핑.
s HTTP(HyperText Transfer): WWW에서 HTML 문서를 송 수신하기 위한 표준 프로토콜
- 전송 계층의 주요 프로토콜
TCP (Transmission Control) |
- 양방향 연결형 서비스, 가상 회선 연결 형태의 서비스 - 스트림 위주의 전달 - 신뢰성 있는 경로 확립. - 순서제어, 오류제어, 흐음 제어 기능. |
UDP (User Datagram) |
- 실시간 전송에 유리. 신뢰성 보다는 속도가 중요시 되는 네트워크에서 사용. - 비 연결형 서비스. |
RTCP (Real-Time Control) |
- 전송 품질을 제어하기 위한 프로토콜. - 세션 참여자에게 주기적으로 제어 정보 전송. - 데이터 전송을 모니터링하고 최소한의 제어와 인증만 제공. |
- 인터넷 계층의 주요 프로토콜
s IP: 전송할 데이터에 주소와 경로를 설정하는 기능. 비연결형 데이터그램 방식을 사용하여 신뢰성 보장되지 않음.
s ICMP(Internet Control Message): 통신중에 발생하는 오류 처리 등 제어 메세지를 관리하는 역할.
s IGMP(Internet Group Management): 멀티캐스트를 지원
s ARP(Address Resolution): 호스트의 IP 주소를 물리적 주소로 바꿈.
s RARP(Reverse Address Resoultion): 물리적 주소를 IP 주소로 변환.
'2021 정보처리기사 > 필기 요약' 카테고리의 다른 글
[정보처리기사 필기] 5과목 키워드 정리 (0) | 2021.04.06 |
---|---|
[정보처리기사 필기] 3과목 키워드 정리 (0) | 2021.04.06 |
[정보처리기사 필기] 2과목 키워드 정리 (0) | 2021.04.06 |
[정보처리기사 필기] 1과목 키워드 정리 (3) | 2021.04.06 |