ㄱ. 응용 소프트웨어가 데이터베이스에 관한 세부 사항에 자세히 관련할 필요가 없어져서 응용 소프트웨어 설계가 단순화될 수 있다.
ㄴ. 데이터베이스에 대한 접근 제어가 용이해진다.
ㄷ. 데이터 독립성을 제거할 수 있다.
ㄹ. 응용 소프트웨어가 데이터베이스를 직접 조작하게 된다.
이점은 ㄱ과 ㄴ이다.
DBMS가 데이터 저장·접근의 세부 사항을 대신 처리하므로 응용 소프트웨어 설계가 단순해지고, 사용자별 권한 관리 등 접근 제어가 쉬워진다.
- ㄷ — DBMS는 데이터 독립성을 제거하는 것이 아니라 제공한다.
- ㄹ — 응용 소프트웨어는 데이터베이스를 직접 조작하지 않고 DBMS를 통해 접근한다.
- ( ㉠ )에 저장된 바이오스(BIOS)가 실행되어 컴퓨터에 장착된 하드웨어 장치들의 상태를 점검한다.
- ( ㉡ )에 저장되어 있는 운영체제가 ( ㉢ )로/으로 로드(load)된다.
- 운영체제의 실행이 시작된다.
㉠ ROM, ㉡ 보조기억장치, ㉢ 주기억장치이다.
BIOS는 전원이 꺼져도 지워지지 않는 ROM(플래시 메모리)에 저장되어 부팅 시 가장 먼저 실행된다. 이후 하드 디스크 등 보조기억장치에 있는 운영체제를 주기억장치로 적재해 실행한다.
- ㉠을 보조기억장치로 보는 짝 — BIOS는 하드웨어 점검과 운영체제 적재를 맡으므로 보조기억장치가 아닌 ROM에 있어야 한다.
- ㉢을 ROM으로 보는 짝 — ROM은 읽기 전용이라 운영체제를 적재할 곳이 될 수 없다.
나머지와 다른 함수는 F = A+A'B이다.
F = A+A'B는 흡수 법칙(X+X'Y = X+Y)에 의해 A+B가 되고, 나머지 셋은 모두 A로 간략화된다.
- A(A+B) = A+AB = A
- AB'+A = A(B'+1) = A
- (A+B)(A+B') = A+BB' = A
해당 단계는 정의(defined) 단계이다.
CMMI 단계식 성숙도는 초기 → 관리 → 정의 → 정량적 관리 → 최적화의 5단계이며, 정의 단계는 조직 표준 프로세스가 수립되어 프로젝트에 적용되지만 아직 정량적 측정·통제는 이루어지지 않는 수준이다.
- 초기 단계 — 프로세스가 정의되지 않아 개인 역량에 의존한다.
- 관리 단계 — 프로젝트 단위로 기본 관리가 이루어지나 조직 표준 프로세스는 없다.
- 최적화 단계 — 정량적 관리를 넘어 프로세스를 지속적으로 개선한다.
- 컴퓨서브사에서 이미지 파일 전송 시간을 줄이기 위해 개발한 이미지 파일 압축 형식이다.
- RLE(Run Length Encoding) 방식을 응용한 압축 방법을 사용한다.
- 사용 가능한 색이 256색으로 제한된다.
설명하는 형식은 GIF이다.
GIF는 컴퓨서브(CompuServe)사가 개발한 무손실 압축 이미지 형식으로, 색상 수가 최대 256색으로 제한되어 아이콘·로고·간단한 애니메이션에 주로 쓰인다.
- JPEG — 손실 압축 방식으로 수많은 색을 표현하는 사진용 형식이다.
- MPEG — 동영상 압축 표준이다.
- TIFF — 고품질 인쇄·출판용 이미지 형식으로 256색 제한이 없다.
옳지 않은 것은 시스템 테스트에 대한 설명이다.
넓이 우선·깊이 우선 방식은 하향식 통합 테스트에서 모듈을 결합하는 순서이다. 시스템 테스트는 통합된 시스템 전체가 기능·성능·보안 등 요구 사항을 만족하는지 검사한다.
- 단위 테스트는 개별 모듈을 대상으로 드라이버와 스텁을 사용할 수 있다 — 옳다.
- 통합 테스트는 빅뱅·하향식·상향식 기법을 쓴다 — 옳다.
- 인수 테스트는 인수 전에 사용자 요구 만족 여부를 확인한다 — 옳다.
#include <stdio.h>
int func(int n);
int main(void) {
int num;
printf("%d \n", func(5));
return 0;
}
int func(int n) {
if (n < 2)
return n;
else {
int i, tmp, current=1, last=0;
for(i=2; i<=n; i++) {
tmp = current;
current += last;
last = tmp;
}
return current;
}
}출력 값은 5이다.
func는 current와 last를 이용해 피보나치 수를 반복문으로 구한다(current=1, last=0에서 시작).
- i=2: tmp=1, current=1+0=1, last=1
- i=3: tmp=1, current=1+1=2, last=1
- i=4: tmp=2, current=2+1=3, last=2
- i=5: tmp=3, current=3+2=5, last=3
따라서 func(5) = 5이다. 8은 반복을 한 번 더 했을 때의 값이다.

가장 마지막에 선택되는 간선은 (1, 6)이다.
프림 알고리즘은 이미 선택한 노드 집합에서 밖으로 나가는 간선 중 비용이 가장 작은 것을 하나씩 추가한다.
- {0}: (0, 5) 10 선택
- {0, 5}: (5, 4) 25 선택(0-1 28보다 작음)
- {0, 5, 4}: (4, 3) 22 선택
- {…, 3}: (3, 2) 12 선택
- {…, 2}: (2, 1) 16 선택(3-6 18보다 작음)
- {…, 1}: (1, 6) 14 선택 → 모든 노드 연결
- (1, 2) — 다섯 번째로 선택된다.
- (4, 5) — 두 번째로 선택된다.
- (4, 6) — 4와 6이 다른 경로로 이미 연결되어 끝내 선택되지 않는다.
옳지 않은 것은 세그먼트가 2의 거듭제곱 크기를 가져야 한다는 설명이다.
세그멘테이션은 프로그램을 코드·데이터·스택 등 논리적 단위로 나누므로 세그먼트 크기가 제각각이다. 일정한 크기로 나누는 것은 페이징이다.
- 페이지 크기가 바이트이면 오프셋은 k비트이다 — 옳다.
- 페이징은 고정 크기 프레임을 쓰므로 외부 단편화가 없다 — 옳다.
- 세그멘테이션은 가변 크기라 외부 단편화가 생길 수 있다 — 옳다.
캐시 일관성과 관련이 없는 것은 우선순위 상속 프로토콜이다.
우선순위 상속은 실시간 스케줄링에서 낮은 우선순위 프로세스가 자원을 쥐고 있어 높은 우선순위 프로세스가 막히는 우선순위 역전 문제를 해결하는 기법이다.
- 스누핑 프로토콜 — 각 캐시가 버스를 감시해 다른 캐시의 변경을 반영한다.
- MESI 프로토콜 — 캐시 블록을 Modified·Exclusive·Shared·Invalid 상태로 관리한다.
- 디렉토리 기반 프로토콜 — 블록의 공유 상태를 디렉토리에 기록해 관리한다.
ㄱ. 네트워크 계층(network layer)
ㄴ. 데이터 링크 계층(data link layer)
ㄷ. 물리 계층(physical layer)
라우터, 브리지, 리피터 순으로 ㄱ, ㄴ, ㄷ이다.
각 장치는 사용하는 주소·신호의 수준에 따라 계층이 정해진다.
- 라우터 — IP 주소로 경로를 정하므로 네트워크 계층(ㄱ)이다.
- 브리지 — MAC 주소로 프레임을 중계·필터링하므로 데이터 링크 계층(ㄴ)이다.
- 리피터 — 신호를 증폭·재생하므로 물리 계층(ㄷ)이다.
옳지 않은 것은 비선점 조건을 자원을 강제로 빼앗을 수 있는 것으로 설명한 것이다.
비선점 조건은 반대로 프로세스가 점유한 자원을 강제로 빼앗을 수 없고, 그 프로세스가 스스로 반납할 때까지 기다려야 한다는 조건이다.
- 상호 배제 — 점유된 자원을 다른 프로세스가 쓸 수 없다는 설명이 옳다.
- 점유와 대기 — 자원을 가진 채 다른 자원을 기다린다는 설명이 옳다.
- 순환 대기 — 프로세스들이 원형으로 서로의 자원을 기다린다는 설명이 옳다.
옳지 않은 것은 기수 정렬에 대한 설명이다.
기수 정렬은 키를 비교·교환하지 않고 자릿수별로 버킷에 분배했다가 모으는 과정을 반복한다. 가장 큰 값을 찾아 맨 오른쪽과 교환하는 것은 선택 정렬 방식이다.
- 큐는 선입 선출이며 삽입과 삭제가 다른 끝에서 일어난다 — 옳다.
- 연결 그래프는 모든 노드 사이에 경로가 있다 — 옳다.
- AVL 트리는 회전으로 균형을 복원한다 — 옳다.
단일 종류로 모든 조합논리 회로를 구현할 수 있는 것은 NOR 게이트이다.
NOR와 NAND는 범용 게이트(universal gate)로, 이것만으로 NOT·AND·OR를 모두 만들 수 있다. 예를 들어 입력을 묶은 NOR는 NOT이 된다.
- AND 게이트 — NOT을 만들 수 없어 단독으로는 부족하다.
- OR 게이트 — NOT을 만들 수 없어 단독으로는 부족하다.
- 인버터 — 입력이 하나라 AND·OR를 만들 수 없다.
옳지 않은 것은 세 데이터 모델이 개념적 데이터 모델이라는 설명이다.
계층·관계·네트워크 데이터 모델은 DBMS가 데이터를 표현하는 구조를 정하는 논리적 데이터 모델이다. 대표적인 개념적 데이터 모델은 E-R 모델이다.
- 계층 데이터 모델은 트리 구조이다 — 옳다.
- 관계 데이터 모델은 테이블로 나타낸다 — 옳다.
- 네트워크 데이터 모델은 그래프 구조이다 — 옳다.
ㄱ. 데이터 해저드(data hazard) - 데이터 전방전달(data forwarding)
ㄴ. 구조적 해저드(structural hazard) - 부족한 자원의 추가
ㄷ. 제어 해저드(control hazard) - 분기 예측(branch prediction)
바르게 짝지은 것은 ㄱ, ㄴ, ㄷ 모두이다.
파이프라인 해저드는 원인에 따라 세 종류로 나뉘며, 각각 원인을 제거하는 방법으로 대응한다.
- 데이터 해저드 — 앞 명령어의 결과가 아직 기록되지 않아 생기므로, 결과를 다음 단계로 바로 넘기는 전방전달로 해결한다.
- 구조적 해저드 — 여러 명령어가 같은 자원을 동시에 쓰려 해 생기므로, 자원을 추가(예: 메모리 분리)해 해결한다.
- 제어 해저드 — 분기 결과를 모르는 상태에서 생기므로, 분기 예측으로 해결한다.
옳지 않은 것은 노매딕 컴퓨팅이 현실 세계와 가상 화면을 결합해 보여주는 기술이라는 설명이다.
노매딕 컴퓨팅은 사용자가 장소에 구애받지 않고 이동하면서 어디서나 컴퓨터와 네트워크를 이용하게 하는 기술이다. 현실과 가상 화면을 결합하는 것은 증강현실이다.
- 감지 컴퓨팅 — 센서로 사용자 행위·환경을 인식한다는 설명이 옳다.
- 퍼베이시브 컴퓨팅 — 컴퓨터가 도처에 스며들게 한다는 설명이 옳다.
- 웨어러블 컴퓨팅 — 착용해 몸의 일부처럼 쓴다는 설명이 옳다.
#include <stdio.h>
int main() {
int a[ ] = {1, 2, 4, 8 };
int *p = a;
p[1] = 3;
a[1] = 4;
p[2] = 5;
printf("%d, %d \n", a[1]+p[1],
a[2]+p[2]);
return 0;
}출력 값은 8, 10이다.
p = a이므로 p[i]와 a[i]는 같은 메모리를 가리킨다.
- p[1] = 3 → a[1] = 3, 이어서 a[1] = 4로 덮어씀 → a[1] = p[1] = 4
- p[2] = 5 → a[2] = p[2] = 5
a[1]+p[1] = 4+4 = 8, a[2]+p[2] = 5+5 = 10이다.
- 7, 9 — p와 a를 별개의 배열로 보아 4+3, 4+5로 계산한 값이다.
- 5, 9 — a[1]의 덮어쓰기와 공유를 모두 무시한 값으로 맞지 않는다.
- 6, 9 — 둘째 값이 9가 되려면 a[2]가 4로 남아야 하지만 p[2]=5가 a[2]를 바꾸므로 맞지 않는다.
옳지 않은 것은 TELNET, SNMP, TFTP가 모두 TCP 서비스를 이용한다는 설명이다.
TELNET은 TCP를 쓰지만, SNMP와 TFTP는 UDP를 이용한다.
- TCP와 UDP는 전송 계층 프로토콜이다 — 옳다.
- UDP는 중복 전달과 전송 오류를 바로잡지 않는다 — 옳다.
- TCP는 신뢰성 있는 연결형 프로토콜이다 — 옳다.
ㄱ. OSPF ㄴ. BGP ㄷ. RIP
자율시스템 내부 경로배정용은 ㄱ(OSPF)과 ㄷ(RIP)이다.
AS 내부에서 쓰는 프로토콜을 IGP, AS 사이에서 쓰는 프로토콜을 EGP라 한다.
- OSPF — 링크 상태 방식의 IGP이다.
- RIP — 홉 수 기반 거리 벡터 방식의 IGP이다.
- BGP — 서로 다른 AS 사이의 경로를 교환하는 EGP이므로 제외된다.