[정보처리기사 필기] 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 주소로 변환.