옳지 않은 것은 하나의 명령어는 항상 하나의 마이크로 연산으로 실행된다는 설명이다.
하나의 명령어는 인출·간접·실행 사이클 등을 거치며 여러 개의 마이크로 연산이 순서대로 수행되어 완료된다.
- 마이크로 연산은 한 개의 클럭 펄스 동안 레지스터 간에 실행되는 기본 동작이다.
- 마이크로 연산 하나의 수행 시간을 마이크로 사이클 타임이라 하며 CPU 속도의 척도로 쓰인다.
- 시프트, 로드, 클리어, 증가 등이 대표적인 마이크로 연산이다.
배치 결과는 순서대로 M1, M2, M4이다.
13KB를 담을 수 있는 공간은 M1(16KB), M2(14KB), M4(30KB)이고 M3(5KB)는 너무 작아 제외된다.
- 최초적합: 앞에서부터 처음 들어가는 공간인 M1에 배치한다.
- 최적적합: 남는 공간(단편화)이 가장 작은 M2에 배치한다(1KB 남음).
- 최악적합: 남는 공간이 가장 큰 M4에 배치한다(17KB 남음).
성격이 다른 것은 Javascript로, 웹 브라우저에서 실행되는 클라이언트 측 스크립트 언어이다.
나머지는 모두 웹 서버에서 실행되어 결과 HTML을 만들어 보내는 서버 측 스크립트 기술이다.
- JSP: 자바 기반의 서버 측 스크립트 기술이다.
- ASP: 마이크로소프트 IIS에서 동작하는 서버 측 스크립트 기술이다.
- PHP: 웹 서버에서 해석·실행되는 서버 측 스크립트 언어이다.
111, 112, 113, 220, 221, 222
11로 나눈 나머지가 같아 충돌하는 데이터는 112와 222이다.
각 키를 11로 나눈 나머지는 111→1, 112→2, 113→3, 220→0, 221→1, 222→2 이다. 나머지 2가 겹치는 112와 222가 같은 주소로 들어가 충돌하며, 나머지 1이 겹치는 111과 221도 충돌 쌍이다.
- 111, 112: 해시 값이 1과 2로 서로 다르다.
- 113, 221: 해시 값이 3과 1로 서로 다르다.
- 220, 222: 해시 값이 0과 2로 서로 다르다.
211.168.83.34가 속한 서브넷의 브로드캐스트 주소는 211.168.83.63이다.
서브넷 마스크 255.255.255.224에서 서브넷 하나의 크기는 이다.
따라서 마지막 옥텟이 0~31, 32~63, 64~95 … 단위로 나뉜다.
34는 32~63 구간에 속하므로 네트워크 주소는 211.168.83.32, 브로드캐스트 주소는 구간의 마지막 주소인 211.168.83.63이 된다.
- 211.168.83.15는 0~31 구간 안의 주소로, 해당 구간의 브로드캐스트 주소도 아니다.
- 211.168.83.47은 32~63 구간의 중간 주소일 뿐이다.
- 211.168.83.255는 서브넷을 나누지 않은 전체 C클래스 네트워크의 브로드캐스트 주소이다.
정규화와 가장 관련이 없는 것은 릴레이션 내 투플들 간의 관계를 고려한다는 내용이다.
정규화는 속성들 사이의 함수적 종속을 분석해 릴레이션을 분해하는 과정이며, 개별 투플(행) 간의 관계를 따지지 않는다.
- 불필요한 데이터 중복을 제거해 이상(anomaly)을 방지하는 것이 정규화의 목적이다.
- 부분·이행 종속처럼 원하지 않는 종속을 제거하는 것이 정규화의 핵심 절차이다.
- 정규화는 한 릴레이션 안 속성들 간의 관계(종속성)를 기준으로 진행된다.
옳지 않은 것은 네트워크 프린터는 기본 프린터로 설정할 수 없다는 설명이다.
Windows XP에서는 로컬 프린터뿐 아니라 네트워크 프린터도 기본 프린터로 지정할 수 있다.
- 기본 프린터는 한 시점에 한 대만 지정된다.
- 한 대의 프린터를 공유하면 네트워크상의 여러 컴퓨터에서 사용할 수 있다.
- 네트워크 설정 마법사로 파일 및 프린터 공유를 설정할 수 있다.
분류 근거로 가장 알맞은 것은 응답 시간과 데이터 입력 방식이다.
일괄처리는 데이터를 모아 한꺼번에 처리하고, 대화식은 사용자와 즉시 주고받으며, 실시간은 정해진 시간 제약 안에 응답해야 한다는 점에서 구분된다.
- 고급 프로그래밍 언어의 사용 여부는 운영체제 처리 방식과 무관하다.
- 버퍼링은 입출력 속도 차이를 줄이는 기법으로 어느 방식에서나 쓰일 수 있다.
- 데이터 보호의 필요성은 모든 시스템에 공통된 요구로, 분류 기준이 되지 않는다.

BFS는 A-B-F-C-D-E, DFS는 A-B-C-D-E-F 순서로 방문한다.
그래프의 간선은 A-B, A-F, B-C, B-F, C-D, C-F, D-E, D-F, E-F 이다. BFS는 A의 이웃 B, F를 먼저 방문하고, 이어서 B의 이웃 C, F의 이웃 D, E를 알파벳 순으로 방문한다.
DFS는 A에서 B, B에서 C, C에서 D, D에서 E로 계속 깊이 들어간 뒤 E의 미방문 이웃 F를 마지막에 방문한다.
- BFS를 A-B-F-C-E-D로 둔 배열: F의 이웃 중 D가 E보다 알파벳 순으로 앞서므로 D를 먼저 방문한다.
- BFS를 A-B-C-D-E-F로 둔 배열: 너비 우선이면 A와 인접한 F가 C·D·E보다 먼저 방문된다.
- DFS를 A-B-C-D-F-E로 둔 배열: D의 미방문 이웃 E, F 중 알파벳 순으로 E를 먼저 방문한다.
SQL의 내장 집계함수가 아닌 것은 TOTAL이다.
표준 SQL의 집계함수는 COUNT, SUM, AVG, MAX, MIN 등이며, 합계는 TOTAL이 아니라 SUM으로 구한다.
- COUNT: 행(값)의 개수를 구한다.
- SUM: 값의 합계를 구한다.
- MAX: 값 중 최댓값을 구한다.
class Adder {
public int add(int a, int b) { return a+b}
public double add(double a, double b) {
return a+b}
}
class Computer extends Adder {
private int x;
public int calc(int a, int b, int c) { if (a ==
1) return add(b, c)
else return x;}
Computer() { x = 0}
}
public class Adder_Main {
public static void main(String args[]) {
Computer c = new Computer()
System.out.println("100 + 200 = " +
c.calc(1, 100, 200))
System.out.println("5.7 + 9.8 = " +
c.add(5.7, 9.8))
}
}이 프로그램에 쓰이지 않은 기법은 오버라이딩(Overriding)이다.
오버라이딩은 하위 클래스가 상위 클래스의 메서드를 같은 시그니처로 재정의하는 것인데, Computer 클래스는 calc라는 새 메서드만 추가하고 Adder의 add를 다시 정의하지 않는다.
- 캡슐화: Computer의 필드 x를 private으로 숨기고 메서드를 통해서만 값을 쓴다.
- 상속: Computer가 extends Adder로 Adder의 add 메서드를 물려받아 사용한다.
- 오버로딩: Adder에 매개변수 자료형이 다른 add(int, int)와 add(double, double)가 함께 정의되어 있다.
명령어를 주기억장치에서 중앙처리장치의 명령레지스터로 가져와 해독하는 것을 ( ㉠ )단계라 하고, 이 단계는 마이크로 연산(operation) ( ㉡ )로 시작한다.
명령어를 가져와 해독하는 단계는 인출(fetch)이고, 첫 마이크로 연산은 MAR ← PC이다.
인출 사이클은 다음 명령어의 주소가 든 PC 값을 MAR로 옮기는 것으로 시작하고, 그 주소의 내용을 MBR로 읽어 온 뒤 명령레지스터(IR)로 옮겨 해독한다.
- 인출과 MAR ← MBR(AD)의 짝: 명령어의 주소부를 MAR로 옮기는 연산은 오퍼랜드를 가져오는 간접·실행 단계의 동작이다.
- 실행과 MAR ← PC의 짝: 명령어를 가져와 해독하는 과정은 실행 단계가 아니라 인출 단계이다.
- 실행과 MAR ← MBR(AD)의 짝: 단계 이름과 시작 연산이 모두 인출 사이클과 맞지 않는다.
| A | B | C | D | E | |
| 1 | 사원 | 수주량 | 비율 | 판매금액 | 비율 |
| 2 | 김철수 | 78 | 8,000,000 | ||
| 3 | 홍길동 | 56 | 7,500,000 | ||
| 4 | 김민호 | 93 | 13,000,000 | ||
| 5 | 나영철 | 34 | 10,000,000 | ||
| 6 | 최건 | 80 | 8,000,000 | ||
| 7 | 합계 | 341 | 46,500,000 |
C2셀에 입력할 수식은 =B2/B$7*100이다.
아래 행으로 복사할 때 합계 행 7은 고정되어야 하고, C열에서 E열로 복사할 때는 B열이 D열로 바뀌어야 한다. 따라서 열은 상대 참조, 행만 절대 참조인 혼합 참조 B$7을 쓴다.
- =B2/B7*100: 아래로 복사하면 분모가 B8, B9…로 밀려 합계를 벗어난다.
- =$B$2/B7*100: 분자가 B2에 고정되고 분모는 밀려 나가 행마다 다른 비율을 구할 수 없다.
- =B2/$B$7*100: 행 복사는 맞지만 E열로 복사하면 분모가 B7에 고정되어 판매금액 합계 D7을 참조하지 못한다.
4 5 + 2 3 * -
스택 탑의 값은 차례로 4, 5, 9, 2, 3, 6, 3이 된다.
피연산자는 push하고, 연산자를 만나면 두 값을 pop해 계산한 결과를 다시 push한다. 4, 5를 넣은 뒤 +로 9, 2와 3을 넣은 뒤 *로 6, 마지막 -는 먼저 꺼낸 6을 오른쪽에 두어 9 - 6 = 3이다.
- 2, 3, 6, -1, 3으로 이어지는 나열: + 연산 뒤의 탑 값 9가 빠져 있다.
- 마지막이 -3인 나열: 뺄셈은 나중에 들어간 값을 빼는 9 - 6이므로 음수가 아니다.
- 18, 3, 16이 들어간 나열: 2와 3을 곱하면 6이며 9와 곱하는 연산은 없다.
- ㄱ. 2진수 0001101의 2의 보수(complement)는 1110011이다.
- ㄴ. 부호화 2의 보수 표현방법은 영(0)이 하나만 존재한다.
- ㄷ. 패리티(parity) 비트로 오류를 수정할 수 있다.
- ㄹ. 해밍(Hamming) 코드로 오류를 검출할 수 있다.
옳은 설명은 2의 보수 계산, 2의 보수의 영 표현, 해밍 코드의 오류 검출이다.
0001101의 각 비트를 반전하면 1110010이고 여기에 1을 더하면 1110011이 된다. 부호화 2의 보수는 +0과 -0의 구분이 없어 0이 하나뿐이며, 해밍 코드는 오류를 검출하고 정정까지 할 수 있다.
- 패리티 비트로 오류를 수정한다는 설명: 패리티 비트는 홀수 개 비트 오류를 검출만 할 뿐 어느 비트가 틀렸는지 알 수 없어 정정하지 못한다.
옳지 않은 것은 Ajax가 특정한 단일 기술을 의미한다는 설명이다.
Ajax는 JavaScript, XMLHttpRequest, XML/JSON, HTML·CSS, DOM 등을 조합해 쓰는 기술의 묶음(개발 기법)이다.
- 페이지 전체를 새로 고치지 않고 일부만 갱신하므로 대화식 웹 애플리케이션 개발에 쓰인다.
- 서버 응답을 기다리지 않고 비동기 요청을 보낼 수 있다.
- Prototype, jQuery, Google Web Toolkit은 대표적인 Ajax 프레임워크(라이브러리)이다.
#define VALUE1 1
#define VALUE2 2
main()
{
float i;
int j,k,m;
i = 100/300;
j = VALUE1 & VALUE2;
k = VALUE1 | VALUE2;
if (j && k || i) m = i + j;
else m = j + k;
printf("i = %.1f j = %d k = %d m = %03d\n", i,j,k,m)
}
실행 결과는 i = 0.0 j = 0 k = 3 m = 003이다.
100/300은 정수끼리의 나눗셈이라 0이 되어 i에는 0.0이 들어간다. 비트 연산 1 & 2 는 0, 1 | 2 는 3이므로 j = 0, k = 3 이다.
조건 (j && k || i)에서 j가 0이라 앞부분이 거짓이고 i도 0.0이라 전체가 거짓이므로 else의 m = j + k = 3 이 실행되고, %03d 서식으로 003이 출력된다.
- i = 0.3 j = 0 k = 3 m = 000: 정수 나눗셈 결과 0이 float로 저장되어 i는 0.0이고, m도 j + k = 3이므로 003이다.
- i = 0.0 j = 1 k = 1 m = 001: &와 |는 비트 연산이라 1 & 2 는 0, 1 | 2 는 3이다.
- i = 0.3 j = 1 k = 1 m = 001: i의 소수부와 j, k의 비트 연산 결과가 모두 틀렸다.
필요한 통신 대역폭은 약 60Mbps이다.
대역폭 = 프레임당 화소 수 × 화소당 비트 수 × 초당 프레임 수
따라서 가장 가까운 값은 약 60Mbps이다.
- 약 10Mbps는 계산값의 6분의 1 수준으로 크게 부족하다.
- 약 20Mbps는 계산값의 3분의 1 수준으로 부족하다.
- 약 30Mbps는 계산값의 절반 수준으로, 초당 15프레임 정도에 해당한다.
알맞지 않은 규칙은 조인 연산을 가능한 한 일찍 수행한다는 것이다.
조인은 중간 결과를 크게 늘리는 비용이 큰 연산이므로, 선택·추출로 데이터를 먼저 줄인 뒤 가능한 한 늦게 수행하는 것이 경험적 규칙이다.
- 추출(project) 연산을 일찍 수행해 불필요한 속성을 줄인다.
- 선택(select) 연산을 가능한 한 일찍 수행해 처리할 투플 수를 줄인다.
- 중간 결과를 적게 만들면서 빠르게 결과를 내는 것이 최적화의 목표이다.
알맞지 않은 것은 응답 시간을 작업이 도착해서 완료되어 출력이 제출될 때까지로 정의한 설명이다.
도착부터 완료·출력까지의 전체 시간은 반환 시간(turnaround time)이고, 응답 시간은 요청 후 첫 응답이 나올 때까지의 시간이다.
- 처리량은 안정 상태에서 단위 시간당 처리되는 작업 수로 측정한다.
- 병목 현상은 자원이 용량이나 처리량의 최대 한계에 도달할 때 발생한다.
- 자원 이용도는 전체 시간 중 자원이 실제 사용된 시간의 백분율이다.