알고리즘은 단계의 실행 순서가 명확히 정해져 있어야 하므로, 단계들에 순서가 정해져 있지 않다는 설명이 옳지 않다.
알고리즘의 조건은 입력·출력·명확성·유한성·효과성이며, 순서가 정해지지 않으면 같은 입력에도 결과가 달라져 명확성이 깨진다.
- 각 명령어의 의미가 모호하지 않아야 한다는 것은 명확성 조건이다.
- 한정된 단계 후 반드시 종료되어야 한다는 것은 유한성 조건이다.
- 각 명령어가 실행 가능한 연산이어야 한다는 것은 효과성 조건이다.
빅데이터는 대용량의 데이터 집합으로부터 가치 있는 정보를 효율적으로 추출하고 결과를 분석하는 기술이다.
빅데이터의 3대 특징은 규모(Volume)·다양성(Variety)·속도(Velocity), 즉 3V이므로 센서로 정보를 획득한다는 sensor는 3대 특징이 아니다.
센싱 기술로 사물·환경 정보를 수집하는 것은 사물인터넷(IoT)의 데이터 수집 수단에 가깝고, 빅데이터 자체의 특성으로 분류되지 않는다.
- 방대한 양의 데이터 처리(volume): 데이터의 규모를 뜻하는 3V의 하나이다.
- 정형·비정형 등 다양한 유형의 데이터(variety): 데이터 형태의 다양성을 뜻하는 3V의 하나이다.
- 실시간 생산·빠른 수집과 분석(velocity): 데이터 생성·처리 속도를 뜻하는 3V의 하나이다.
| 3 | 1 | 4 | 2 | 9 | 5 |
삽입 정렬 과정에서 3 1 5 2 4 9는 나올 수 없다. 삽입 정렬은 앞쪽부터 정렬된 구간을 넓혀 가므로 첫 두 원소 3, 1이 가장 먼저 1 3으로 정렬되기 때문이다.
단계별로 추적하면 1 3 4 2 9 5 → 1 3 4 2 9 5 → 1 2 3 4 9 5 → 1 2 3 4 9 5 → 1 2 3 4 5 9가 된다.
- 1 3 4 2 9 5: 1과 4를 삽입한 직후의 상태로 나타난다.
- 1 2 3 4 9 5: 2를 삽입한 뒤, 그리고 9를 삽입한 뒤의 상태로 나타난다.
- 1 2 3 4 5 9: 마지막으로 5를 삽입해 정렬이 끝난 상태이다.
내부 경로를 보지 않고 기능·성능만 시험하는 것은 블랙박스 테스트이므로, 이를 화이트박스 테스트의 설명으로 든 것이 옳지 않다.
화이트박스 테스트는 소스 코드의 내부 논리 구조와 경로를 들여다보며 검증하는 기법이다.
- 내부가 보이는 상자라는 뜻에서 글래스 박스 테스트라고도 부른다.
- 문장·분기·조건 커버리지 등 코드 구조 기반의 검증 기준을 사용한다.
- 모듈의 논리 구조를 체계적으로 점검하므로 구조적 테스트라고도 한다.
16진수 210을 8진수로 바꾸면 1020이 된다.
먼저 16진수 각 자리를 4비트로 풀면 2 → 0010, 1 → 0001, 0 → 0000 이므로 001000010000이다.
이를 오른쪽부터 3비트씩 묶으면 001 / 000 / 010 / 000 이고, 각각 1, 0, 2, 0 이다.
검산: , 로 값이 같다.
은행원 알고리즘은 교착상태를 회피(avoidance)하는 방법이다.
자원 요청이 들어올 때마다 할당 후에도 시스템이 안전 상태를 유지하는지 검사해, 불안전 상태가 되면 할당을 미루는 방식이다.
- 예방은 상호배제·점유대기·비선점·환형대기 중 하나를 원천적으로 제거하는 방식으로, 안전 상태 검사와는 다르다.
- 검출은 교착상태 발생을 허용한 뒤 자원 할당 그래프 등으로 찾아내는 방식이다.
- 회복은 이미 발생한 교착상태를 프로세스 종료나 자원 선점으로 해소하는 방식이다.
- ㄱ. 리피터(Repeater)
- ㄴ. 더미허브(Dummy Hub)
- ㄷ. 라우터(Router)
- ㄹ. 게이트웨이(Gateway)
- ㅁ. 브릿지(Bridge)
물리 계층 장치는 리피터와 더미허브이다. 두 장치 모두 주소를 해석하지 않고 전기 신호를 증폭·재전송만 한다.
주소를 보고 전달 경로를 판단하는 장치는 상위 계층에 속한다.
- 라우터: IP 주소로 경로를 결정하는 네트워크 계층 장치이다.
- 게이트웨이: 서로 다른 프로토콜을 변환하는 장치로, 주로 상위 계층(전송 계층 이상)에서 동작한다.
- 브릿지: MAC 주소로 프레임을 전달하는 데이터 링크 계층 장치이다.
CMYK 방식의 C는 Cyan(청록)을 의미하므로 이 설명이 옳다.
CMYK는 Cyan·Magenta·Yellow·Black(K)을 섞는 감산 혼합 모델로 인쇄에 쓰이고, RGB는 빛을 더하는 가산 혼합 모델로 모니터 등 화면 표시에 쓰인다.
- CMYK는 가산 혼합이 아니라 감산 혼합이며, 빛이 없을 때 검은색이 되는 것은 RGB의 특성이다.
- 컬러 프린터·인쇄·페인팅에 주로 쓰이는 것은 RGB가 아니라 CMYK이다.
- RGB의 B는 Black이 아니라 Blue를 의미한다.
- 1: <T1, start>
- 2: <T1, A, 7800>
- 3: <T1, B, 3500>
- 4: <T1, commit>
- 5: <T2, start>
- 6: <T2, C, 9820>
- —— (가) ——
- 7: <T2, D, 5200>
- 8: <T2, commit>
(가) 시점에 이미 commit이 기록된 T1에는 redo(T1)를 실행하고, commit 전인 T2에는 별다른 조치를 하지 않는다.
지연 갱신 기법은 commit 전까지 데이터베이스에 변경을 반영하지 않으므로, 미완료 트랜잭션은 undo가 필요 없고 완료된 트랜잭션만 redo로 반영을 보장한다.
- 두 트랜잭션 모두 무조치: commit된 T1의 갱신이 반영됐다는 보장이 없어 redo가 필요하다.
- T1의 로그를 무시하고 버림: 로그를 버리는 처리는 commit되지 않은 T2에 해당한다.
- T2에 redo 실행: T2는 장애 시점까지 commit이 없어 redo 대상이 아니다.
- 요구사항 개발
- 조직 차원의 프로세스 정립
- 기술적 솔루션
- 조직 차원의 교육훈련
- 제품 통합
- 통합 프로젝트 관리
- 검증
- 위험관리
- 확인
- 의사 결정 분석 및 해결
- 조직 차원의 프로세스 개선
제시된 프로세스 영역은 CMMI 3단계(정의된 단계, Defined)에 해당한다.
3단계는 조직 표준 프로세스를 정립해 프로젝트에 맞게 적용하는 단계로, 요구사항 개발·기술적 솔루션·제품 통합·검증·확인·위험관리·의사 결정 분석 및 해결 등이 이 단계의 프로세스 영역이다.
- 2단계(관리된 단계): 요구사항 관리·프로젝트 계획·형상 관리 등 프로젝트 단위의 기본 관리가 중심이다.
- 4단계(정량적 관리 단계): 조직 프로세스 성과·정량적 프로젝트 관리가 중심이다.
- 5단계(최적화 단계): 조직 성과 관리·원인 분석 및 해결을 통한 지속적 개선이 중심이다.
| CP | J | K | 다음상태 Q |
|---|---|---|---|
| ↑ | 0 | 0 | (가) |
| ↑ | 0 | 1 | (나) |
| ↑ | 1 | 0 | (다) |
| ↑ | 1 | 1 | (라) |
| (가) | (나) | (다) | (라) | |
|---|---|---|---|---|
| ① | Q | 1 | 0 | Q' |
| ② | Q' | 1 | 0 | Q |
| ③ | Q | 0 | 1 | Q' |
| ④ | Q' | 0 | 1 | Q |
JK 플립플롭의 다음 상태는 (가) Q, (나) 0, (다) 1, (라) Q'이다.
J=K=0이면 현재 상태를 유지하고, J=0·K=1이면 리셋(0), J=1·K=0이면 셋(1), J=K=1이면 현재 값을 반전(토글)한다.
- (가) Q', (나) 1, (다) 0, (라) Q: 유지·토글이 서로 바뀌고 셋·리셋도 뒤바뀌었다.
- (가) Q, (나) 1, (다) 0, (라) Q': 유지·토글은 맞지만 J=0·K=1은 리셋(0), J=1·K=0은 셋(1)이다.
- (가) Q', (나) 0, (다) 1, (라) Q: 셋·리셋은 맞지만 J=K=0은 유지, J=K=1은 토글이다.
CREATE TABLE Book (ISBN CHAR(17) PRIMARY KEY, TITLE VARCHAR(30) NOT NULL, PRICE INT NOT NULL, PUBDATE DATE, AUTHOR VARCHAR(30));
열 목록에 PRICE를 빼고 ISBN·TITLE·AUTHOR만 넣는 INSERT 문이 올바르게 동작하지 않는다. PRICE는 NOT NULL 제약이 있어 값을 생략하면 NULL이 들어가 제약을 위반한다.
값을 반드시 넣어야 하는 열은 기본키인 ISBN과 TITLE·PRICE이고, PUBDATE와 AUTHOR는 NULL을 허용한다.
- ISBN·TITLE·PRICE·AUTHOR 지정: PUBDATE만 빠졌는데 PUBDATE는 NULL 허용이라 정상 동작한다.
- 열 목록 없이 다섯 값 전부 입력: 테이블 정의 순서(ISBN, TITLE, PRICE, PUBDATE, AUTHOR)대로 값이 맞아 정상 동작한다.
- ISBN·TITLE·PRICE 지정: NOT NULL 열을 모두 채웠으므로 정상 동작한다.
패킷 교환 네트워크는 회선을 공유하므로 동시에 여러 쌍의 통신이 가능하며, 2쌍 이상의 통신이 불가능하다는 설명이 옳지 않다.
데이터를 패킷으로 나누어 링크를 통계적으로 다중화하므로, 여러 송·수신 쌍의 패킷이 같은 링크를 번갈아 사용한다.
- 패킷 크기는 8비트 단위인 옥텟으로 표현한다.
- 전송되는 데이터는 송·수신지 주소 정보를 담은 헤더를 가진 패킷들로 구성된다.
- 접속 방식에 따라 경로를 미리 설정하는 가상회선 방식과 패킷마다 독립적으로 전달하는 데이터그램 방식으로 나뉜다.
컴퓨터는 인터럽트를 항상 승인하지 않으며, 인터럽트 마스크나 우선순위에 따라 요청을 무시·보류할 수 있으므로 이 설명이 옳지 않다.
더 중요한 처리 중이거나 임계 구간을 실행할 때는 인터럽트를 금지(disable)해 두었다가 나중에 처리한다.
- 내부 인터럽트(트랩)는 0으로 나누기·오버플로처럼 실행 중인 프로그램의 오류로 발생해, 그 프로그램을 정상적으로 이어 실행할 수 없는 상황을 가리킨다.
- 인터럽트 요구가 오면 복귀를 위해 현재 프로그램의 주소(PC 값)를 스택이나 메모리의 특정 장소에 저장한다.
- 인터럽트 서비스 루틴은 요청된 작업을 처리하는 프로그램이므로 실행되려면 기억장치에 적재되어 있어야 한다.
#include <stdio.h>
int main()
{
int ary[4];
int sum = 0;
int i;
for (i = 0; i < 4; i++) {
printf("%d번 째 값을 입력하시오 : ", i + 1);
scanf("%d", &ary[i]);
}
for (i = 3; i > 0; i--)
sum += ary[i];
printf("%d \n", sum);
return 0;
}
출력 결과는 9이다. 두 번째 반복문이 i=3부터 1까지만 돌아 ary[0]은 합산되지 않는다.
입력 후 배열은 ary[0]=1, ary[1]=2, ary[2]=3, ary[3]=4이다.
i=3: sum=0+4=4
i=2: sum=4+3=7
i=1: sum=7+2=9
i=0에서 조건 i > 0이 거짓이 되어 반복이 끝난다.
- 3: ary[0]과 ary[1]만 더한 값 등으로, 추적 결과와 맞지 않는다.
- 6: ary[0]~ary[2]를 더한 값으로, 반복 범위를 잘못 본 경우이다.
- 10: 네 원소를 모두 더한 값으로, ary[0]까지 포함한 경우이다.

Time-out이 발생하면 TCP Tahoe는 임곗값을 현재 혼잡 윈도우의 절반인 9로 낮추고, 혼잡 윈도우를 1로 줄여 느린 출발부터 다시 시작한다.
임곗값 = 18 ÷ 2 = 9
혼잡 윈도우 = 1 MSS
- 임곗값 유지·윈도우 1로 감소: 손실이 감지되면 임곗값도 현재 윈도우의 절반으로 갱신된다.
- 임곗값 9·윈도우 절반으로 감소: 윈도우를 절반으로 줄이는 것은 3중복 ACK에 대한 TCP Reno의 빠른 회복 방식이며, Time-out에서는 혼잡 윈도우를 1로 줄인다.
- 임곗값 유지·윈도우 절반으로 감소: 임곗값 갱신과 윈도우 감소 방식이 모두 Tahoe와 다르다.
가변분할 메모리 할당은 내부 단편화는 없지만 외부 단편화가 발생하므로, 단편화 문제가 발생하지 않는다는 설명이 옳지 않다.
프로세스가 적재·해제를 반복하면 사이사이에 작은 빈 공간이 흩어져 생기며, 이를 해결하려고 압축(compaction)이나 통합을 사용한다.
- 가변분할의 배치 전략으로 최초 적합·최적 적합·최악 적합이 있다.
- 고정분할은 프로세스 크기와 관계없이 메모리를 미리 정해진 크기로 나누는 방식이다.
- 고정분할에서는 분할 영역보다 작은 프로세스가 들어가 남는 공간, 즉 내부 단편화로 메모리가 낭비될 수 있다.
UMA는 모든 프로세서가 하나의 메모리를 공유하는 강결합형이고 NORMA는 원격 메모리에 직접 접근할 수 없는 약결합형이므로, 결합 유형을 반대로 짝지은 설명이 옳지 않다.
공유 메모리를 쓰는 UMA·NUMA는 강결합형, 각 프로세서가 독립 메모리를 갖고 메시지로 통신하는 NORMA는 약결합형으로 분류한다.
- 프로세스 수준 병렬성은 여러 프로세서로 독립적인 프로그램 여러 개를 동시에 수행하는 것이다.
- 클러스터는 근거리 네트워크로 연결된 컴퓨터들이 하나의 대형 멀티프로세서처럼 동작하는 시스템이다.
- 공유 메모리 프로세서는 모든 프로세서가 단일 실제 주소 공간을 공유하는 병렬 프로세서이다.
#include <stdio.h>
int star = 10;
void printStar() {
printf("%d \n", star);
}
int main()
{
int star = 5;
printStar();
printf("%d \n", star);
return 0;
}




실행 결과는 10이 출력된 뒤 5가 출력된다. printStar()는 전역 변수를, main()은 자신의 지역 변수를 참조하기 때문이다.
main()의 지역 변수 star=5는 main() 안에서만 유효하므로, printStar() 안의 star는 전역 변수 star=10을 가리킨다.
- 5와 5: printStar()가 main()의 지역 변수를 볼 수 있다고 착각한 결과이다.
- 5와 10: 두 출력의 참조 대상을 서로 뒤바꾼 결과이다.
- 10과 10: main()에서 지역 변수가 전역 변수를 가린다는 점을 놓친 결과이다.
| 프로세스 | 실행시간 |
|---|---|
| P1 | 5 |
| P2 | 6 |
| P3 | 4 |
| P4 | 9 |
| 평균 반환시간 | 평균 대기시간 | |
|---|---|---|
| ① | 6 | 6 |
| ② | 6 | 7 |
| ③ | 13 | 6 |
| ④ | 13 | 7 |
SJF로 스케줄링하면 평균 반환시간은 13, 평균 대기시간은 7이다.
실행시간이 짧은 순서인 P3(4) → P1(5) → P2(6) → P4(9)로 실행된다.
종료 시각: P3=4, P1=9, P2=15, P4=24
평균 반환시간 = (4+9+15+24) ÷ 4 = 52 ÷ 4 = 13
대기시간: P3=0, P1=4, P2=9, P4=15
평균 대기시간 = (0+4+9+15) ÷ 4 = 28 ÷ 4 = 7
- 반환시간 6·대기시간 6: 두 값 모두 계산 결과와 다르다.
- 반환시간 6·대기시간 7: 대기시간은 맞지만 반환시간은 13이다.
- 반환시간 13·대기시간 6: 반환시간은 맞지만 대기시간은 7이다.