[2020년 1회 영상]
10. 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는
양식과 규칙의 체계이다. 통신 프로토콜의 기본 요소 3가지를 쓰시오.
→ 구문(Syntax), 의미(Semantic), 타이밍(Timing)
★★★
※ 통신 프로토콜의 기본 요소 3가지
1. 구문(Syntax)
- 데이터의 구조나 형태와 포맷을 정의
2. 의미(Semantic)
- 어떤 데이터를 보낼 것인지, 얼마나 빨리 보낼 것인지를 결정
3. 타이밍(Timing)
- 데이터의 각 부분이 무엇을 뜻하는지 알 수 있게 미리 정해둔 규칙
11. HRN(Highest Response-ratio Next) 우선순위를 결정하는 계산식을 쓰시오.
→ (대기시간 + 서비스시간) / 서비스시간
★★★
※ 프로세스 스케줄링
• 비선점 스케줄링
- 실행 중인 프로세스를 강제로 중단하지 않고, 작업이 끝나야 다음으로 넘어감(구현 단순/응답 시간 느림)
| 종류 | 설명 |
| FCFS (First Come First Service) |
도착 순서대로 실행 - 단점 : 긴 작업이 먼저 오면 뒤가 밀림 (Convoy effect) |
| SJF (Shortest Job First) |
실행 시간이 가장 짧은 작업 먼저 - 단점 : 긴 작업은 계속 밀릴 수 있음 (기아 현상) |
| HRN (Highest Response Ratio Next) |
(대기시간 + 실행시간) / 실행시간 값이 큰 것 먼저 - 장점 : 기아 현상 완화 |
| 기한부 스케줄링 (Deadline) |
정해진 기한(Deadline) 기준으로 우선 처리 |
| 우선순위 스케줄링 | 우선순위 높은 프로세스 먼저 실행 - 단점 : 낮은 우선순위는 기아 발생 가능 |
• 선점 스케줄링
- 실행 중인 프로세스를 강제로 중단하고 다른 작업 실행 가능(응답성 좋음, 문맥 교환 비용 발생)
| 종류 | 설명 |
| SRT (Shortest Remaining Time) |
SJF의 선점형 → 남은 시간이 가장 적은 작업 선택 |
| RR (Round Robin) |
일정 시간(Time Slice)마다 CPU를 순환 할당(공정성 높음) |
| MLQ (Multi-Level Queue) |
프로세스를 여러 큐로 나누고 큐마다 다른 스케줄링 적용(큐 간 이동 없음) |
| MFQ (Multi-Level Feedback Queue) |
프로세스가 큐 사이를 이동하며 우선순위 조정(동적 우선순위/기아 문제 완화) |
★★★★★
12. 다음은 트랜잭션(Transaction)의 주요 특성 4가지이다. 빈칸 ① ~ ②에 알맞은 용어를 쓰시오.
| ( ① ) | 트랜잭션의 가장 기본적인 특성으로 트랜잭션 내의 연산은 반드시 모두 수행되어야 하며 그렇지 못한 경우 모두 수행되지 않아야 함(커밋, 롤백과 연관 有) |
| 일관성 | 트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야 하며, 결과에 모순이 생겨서는 안됨 |
| ( ② ) | 하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근할 수 없고 각각의 트랜잭션은 독립적이어야 함 |
| 영속성 | 지속성이라고도 하며, 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 함 |
→ ① 원자성, ② 독립성 == 격리성
13. OSI 7 참조 모델 중 다음이 설명하는 계층을 쓰시오.
| • 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송 • 통신 단위는 비트이며 이것은 1과 0으로 나타내어지는, 즉 전기적으로 On, Off 상태이다. • 테이터를 전달할 뿐, 데이터가 무엇인지 어떤 에러가 있는지 신경쓰지 않는다. |
→ 물리계층
★★★★★
※ OCI 7 참조 모델

14. 릴리즈 노트 작성 항목 중 문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜,
참고 날짜, 노트 버전 등을 기술하는 작성 항목은 무엇인지 쓰시오.
→ 헤더 / Header
※ 릴리즈 노트 작성 항목
| 항목 | 설 |
| 머리말(Header) | 릴리즈 식별 정보(버전, 날짜, 제품명) |
| 개요 | 이번 릴리즈의 전체적인 변경 사항 요약 |
| 목적 | 이번 업데이트를 진행한 이유 |
| 이슈(문제) 요약 | 해결한 주요 문제 또는 개선 포인트 |
| 재현 항목 | 문제 발생 조건 및 재현 방법 |
| 수정/개선 내용 | 실제로 수정되거나 개선된 사항 |
| 사용자 영향도 | 사용자에게 미치는 영향(기능 변화, UI 등) |
| 지원 영향도 | 운영/고객지원에 미치는 영향 |
| 노트 | 참고사항, 추가 안내 (주의사항 등) |
| 면책조항 | 책임 제한 및 변경 가능성 안내 |
| 연락처 정보 | 문의 및 지원을 위한 연락 채널 |
15. 데이터 마이닝(Data mining)의 개념을 간략히 서술하시오.
→ 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 것
→ 수많은 데이터에서 가치있는 유용한 정보를 찾아내는 것
16. 1990년 R, Rivert가 MD4를 일방향 해시 함수로 개선한 알고리즘으로, 임의의 길이의 값을
입력받아서 128비트 길이의 해시값을 출력하는 알고리즘은 무엇인지 쓰시오.
→ MD5
★★★
※ 암호화 알고리즘
• 대칭키 암호(Symmetric Key)
- 암호화와 복호화에 같은 키 사용
‣ 속도 빠름
‣ 키 관리 어려움
‣ 대표 알고리즘 : AES, DES, ARIA, SEED, IDEA
• 비대칭키 암호(Public Key)
- 공개키(암호화) + 개인키(복호화)를 사용
‣ 보안성 높음
‣ 속도 느림
‣ 대표 알고리즘 : RSA, EIGama
• 해시 함수(Hash)
- 데이터를 고정 길이 값으로 변환 (복호화 불가)
‣ 단방향 함수
‣ 무결성 검증에 사용
‣ 대표 알고리즘 : SHA, SHA-256, MD5(취약)
17. LOC 기법에 의하여 예측된 총 라인 수가 30,000라인일 경우 개발에 투입될
프로그래머의 수가 5명이고, 프로그래머들 평균 생산성이 월당 300라인일 때,
개발에 소요되는 기간을 구하는 계산식과 기간(개월)을 구하여 쓰시오.
→ 30000 / 300 / 5 = 20
18. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오.
int a[] = { 95, 75, 85, 100, 50 };
int i, j, temp;
int n = sizeof(a) / sizeof(int); //
int n = 5;
for(i = 0; i < n - 1; i++) {
for(j = 0; j < 4 - i; j++) {
if(a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
// 해설.
int a[] = { 95, 75, 85, 100, 50 };
int i, j, temp;
int n = sizeof(a) / sizeof(int); // 배열 길이 계산 (5)
int n = 5;
for(i = 0; i < n - 1; i++) { // 총 4번 반복 (버블 정렬 외부 루프)
for(j = 0; j < 4 - i; j++) { // 매 회전마다 비교 범위 감소
if(a[j] > a[j + 1]) { // 앞이 크면 자리 교환 (오름차순 정렬)
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
// 1회전 후: 가장 큰 값이 뒤로 이동
// i=0 → [75, 85, 95, 50, 100]
// i=1 → [75, 85, 50, 95, 100]
// i=2 → [75, 50, 85, 95, 100]
// i=3 → [50, 75, 85, 95, 100]
}
for(i = 0; i < 5; i++) {
printf("%d ", a[i]); // 최종 출력: 50 75 85 95 100
}
→ 50 75 85 95 100(버블정렬 알고리즘)
19. 다음은 JAVA로 작성된 프로그램이다. 이를 실행할 결과를 쓰시오.
public static int[] makeArray(int n) {
int[] t = new int[n];
for(int i = 0; i < n; i++) {
t[i] = i;
}
return t;
}
public static void main(String[] args) {
int[] a = makeArray(4);
for(int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
// 해설.
public static int[] makeArray(int n) {
int[] t = new int[n]; // 길이 n짜리 배열 생성
for(int i = 0; i < n; i++) {
t[i] = i; // 인덱스 값을 그대로 저장 → [0,1,2,...]
}
return t; // 완성된 배열 반환
}
public static void main(String[] args) {
int[] a = makeArray(4);
// makeArray(4) 실행 과정:
// t = [0,1,2,3] 생성 후 반환 → a = [0,1,2,3]
for(int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
// 순서대로 출력 → 0 1 2 3
}
}
→ 0 1 2 3
20. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오.
int i = 3, c = 1;
switch(i) {
case 1: c++ ;
case 2: c += 3;
case 3: c = 0;
case 4: c += 3;
case 5: c -= 10;
default: c-- ;
}
System.out.print(c);
// 해설.
int i = 3, c = 1;
switch(i) {
case 1: c++; // (실행 안됨)
case 2: c += 3; // (실행 안됨)
case 3: c = 0; // i=3이므로 여기부터 실행 시작 → c = 0
case 4: c += 3; // break 없으므로 계속 실행 → c = 3
case 5: c -= 10; // 계속 실행 → c = -7
default: c--; // 계속 실행 → c = -8
}
System.out.print(c); // 최종 출력: -8
→ -8
* 만약 구문 도중, break가 나오면 거기까지의 값을 입력한다.
'자격증 공부 > 정보처리기사 실기' 카테고리의 다른 글
| [흥달쌤] 기출해설특강) IPSec, 리눅스 파일 보안, 시멘틱 웹, REST (0) | 2026.04.25 |
|---|---|
| [흥달쌤] 기출해설특강) 생명주기 모형, 웹서비스 3요소, UI 설계 원칙, 애플리케이션 테스트 유형 분류(블랙박스 테스트) (0) | 2026.04.19 |
| [흥달쌤] 기출해설특강) 보안의 3요소, 서비스 공격 유형의 종류 (DoS, DDoS 등) (0) | 2026.04.19 |
| [흥달쌤] 기출해설특강) 반정규화, 결합도, 응집도 (0) | 2026.04.16 |
| [흥달쌤] 정규화 정리 (0) | 2026.04.16 |