메모리 접근 횟수가 가장 많은 것은 간접 주소지정 방식이다.
간접 방식은 명령어의 주소부가 가리키는 메모리에서 먼저 유효 주소를 읽고, 그 주소에서 다시 피연산자를 읽으므로 피연산자를 얻는 데 메모리에 2회 접근한다.
- 직접 주소지정 — 주소부가 곧 유효 주소이므로 피연산자 읽기 1회이다.
- 인덱스 주소지정 — 인덱스 레지스터와 주소부를 더해 유효 주소를 계산하므로 1회이다.
- 상대 주소지정 — PC와 주소부를 더해 유효 주소를 계산하므로 1회이다.
옳지 않은 것은 상대적으로 큰 용량의 메모리를 상위 계층에 배치한다는 설명이다.
메모리 계층은 위로 갈수록 빠르고 비싸며 용량이 작고, 아래로 갈수록 느리고 싸며 용량이 크다. 큰 용량의 메모리는 하위 계층에 둔다.
- 빠른 메모리를 상위 계층에 둔다 — 옳다.
- 비트당 가격이 비싼 메모리를 상위 계층에 둔다 — 옳다.
- 하위 계층에는 하드디스크·플래시 등 비휘발성 메모리를 쓴다 — 옳다.
옳지 않은 것은 클라이언트와 서버가 같은 물리적 컴퓨터에 위치할 수 없다는 설명이다.
클라이언트와 서버는 역할(프로세스)로 구분되는 개념이므로 한 컴퓨터에서 함께 실행될 수 있다(예: 로컬에서 웹 서버와 브라우저를 함께 실행).
- 플랫폼과 운영체제가 서로 다를 수 있다 — 옳다.
- 클라이언트는 사용자 인터페이스, 서버는 공유 서비스를 제공한다 — 옳다.
- 분산 환경 정보 시스템의 핵심 기술이다 — 옳다.
옳지 않은 것은 내부 스키마가 여러 외부 스키마를 통합하는 관점의 논리적 데이터베이스라는 설명이다.
여러 외부 스키마를 통합한 조직 전체의 논리적 구조는 개념 스키마이다. 내부 스키마는 레코드 형식·인덱스·저장 방식 등 물리적 저장 구조를 기술한다.
- 스키마는 데이터 구조와 제약 조건의 명세이다 — 옳다.
- 외부 스키마는 개별 사용자·응용 프로그램 관점의 정의이다 — 옳다.
- 개념 스키마는 조직 전체를 통합해 하나만 존재한다 — 옳다.
10101110 + 11100011
연산 결과와 값이 다른 것은 8진수 421이다.
= 174, = 227이므로 합은 401(= )이다.
- 2진수 110010001 = 256+128+16+1 = 401로 같다.
- 8진수 421 = 4×64+2×8+1 = 273으로 다르다. 401은 8진수로 621이다.
- 10진수 401로 같다.
- 16진수 191 = 256+144+1 = 401로 같다.
F = ABC + ABC' + AB'C + AB'C' + A'B'C + A'B'C'
F를 간략화하면 F=A+B'이다.
각 쌍에서 C+C'=1로 C를 소거한다.
F = AB + AB' + A'B'
AB+AB' = A이므로 F = A + A'B' = A + B'이다(흡수 법칙 X+X'Y = X+Y).
- A'+B — A=1, B=0인 항(AB')이 0이 되어 틀렸다.
- A'B — A=1, B=1(ABC 등)에서 0이 되어 원식과 다르다.
- AB' — A=0, B=0(A'B'C 등)에서 0이 되어 원식과 다르다.
최악의 경우 탐색 성능이 가장 좋은 것은 AVL 트리이다.
AVL 트리는 삽입·삭제 때마다 회전으로 높이 균형을 유지하므로 최악의 경우에도 탐색이 O(log n)이다.
- 정렬되지 않은 배열 — 순차 탐색으로 최악 O(n)이다.
- 체인법 해시 테이블 — 평균은 O(1)이지만 모든 키가 한 체인에 몰리면 최악 O(n)이다.
- 이진 탐색 트리 — 한쪽으로 치우치면(편향 트리) 최악 O(n)이다.
#include <stdio.h>
void main()
{
int nums[5] = {11, 22, 33, 44, 55};
int *ptr = nums + 1;
int i;
for (i = 0; i < 4; i++)
printf("%d ", *ptr++);
}출력은 22 33 44 55이다.
ptr = nums + 1은 nums[1]의 주소이다. *ptr++는 후위 증가가 포인터에 적용되어 현재 가리키는 값을 출력한 뒤 다음 원소로 이동한다.
4회 반복하므로 nums[1]~nums[4]인 22, 33, 44, 55가 출력된다.
- 11 22 33 44 — 시작 위치를 nums[0]으로 본 경우이다.
- 22 23 24 25 — *ptr++를 값의 증가로 해석한 경우이다.
ㄱ. NAT(network address translation)
ㄴ. IPv6
ㄷ. DHCP(dynamic host configuration protocol)
ㄹ. ARP(address resolution protocol)
IP 주소 고갈 해결과 관련된 것은 ㄱ, ㄴ, ㄷ이다.
세 기술 모두 공인 주소를 아끼거나 주소 공간을 늘린다.
- NAT — 여러 사설 IP가 하나의 공인 IP를 공유하게 한다.
- IPv6 — 128비트 주소로 주소 공간을 크게 확장한다.
- DHCP — 필요한 동안만 주소를 동적으로 임대해 주소를 재사용한다.
- ARP — IP 주소를 MAC 주소로 변환하는 프로토콜일 뿐 주소 고갈과 무관하다.
| 프로세스 번호 | 도착 시간 | 실행 시간 |
|---|---|---|
| 1 | 0초 | 10초 |
| 2 | 6초 | 18초 |
| 3 | 14초 | 5초 |
| 4 | 15초 | 12초 |
| 5 | 19초 | 1초 |
평균 대기 시간은 12.2초이다.
시간 할당량 10초로 실행 순서를 그리면 다음과 같다.
P1(0~10) → P2(10~20) → P3(20~25) → P4(25~35) → P5(35~36) → P2(36~44) → P4(44~46)
대기 시간 = 종료 시각 − 도착 시간 − 실행 시간
- P1: 10−0−10 = 0
- P2: 44−6−18 = 20
- P3: 25−14−5 = 6
- P4: 46−15−12 = 19
- P5: 36−19−1 = 16
평균 = (0+20+6+19+16) ÷ 5 = 61 ÷ 5 = 12.2초
옳지 않은 것은 MIMD에 대한 설명이다.
명령어를 여러 단계로 나누어 중첩 실행하는 것은 파이프라이닝의 설명이다. MIMD는 여러 프로세서가 각자 다른 명령어로 각자 다른 데이터를 동시에 처리하는 다중 프로세서 구조이다.
- SISD — 제어장치·프로세서가 하나인 단일 프로세서 시스템으로 옳다.
- SIMD — 하나의 제어장치가 여러 프로세서를 제어하는 구조로 옳다.
- MISD — 여러 명령어가 하나의 데이터 스트림을 처리하는 구조로 옳다.
설명하는 공격은 스니핑(sniffing)이다.
스니핑은 네트워크를 흐르는 패킷을 몰래 엿들어 패스워드 등 중요 정보를 도청하는 수동적 공격이다.
- 서비스 거부 공격 — 자원을 고갈시켜 정상 서비스를 방해한다.
- ICMP 스머프 공격 — 브로드캐스트 ICMP 요청으로 피해자에게 응답을 폭주시키는 DoS 공격이다.
- 트로이 목마 — 정상 프로그램으로 위장한 악성 코드이다.
옳지 않은 것은 계층 연결 구조에서 인접 형제 노드 간 통신이 부모 노드를 거치지 않는다는 설명이다.
계층(트리) 연결 구조에서는 형제 노드 사이에 직접 링크가 없으므로 부모 노드를 거쳐야 통신할 수 있다.
- 자원 공유와 분산 처리로 성능을 높일 수 있다 — 옳다.
- 성형은 중앙 노드에 부하가 집중되고 중앙 고장 시 전체가 마비된다 — 옳다.
- 다중 접근 버스형은 한 노드 고장이 다른 노드에 거의 영향을 주지 않는다 — 옳다.
옳은 것은 결합도란 모듈 간에 상호 의존하는 정도라는 설명이다.
좋은 설계는 모듈 간 결합도는 낮고, 모듈 내부 응집도는 높게 하는 것이다.
- 결합도는 높을수록, 응집력은 낮을수록 좋다 — 반대이다.
- 공동 자료 영역을 쓰는 것은 자료 결합이 아니라 공통 결합이다.
- 가장 이상적인 응집은 논리적 응집이 아니라 기능적 응집이다.
옳지 않은 것은 자료의 삽입과 삭제가 같은 쪽에서 이루어진다는 설명이다.
큐는 한쪽(rear)에서 삽입하고 반대쪽(front)에서 삭제하는 선입선출 구조이다. 같은 쪽에서 삽입·삭제하는 것은 스택이다.
- 먼저 들어온 자료를 먼저 처리한다 — 옳다(FIFO).
- 트리의 너비 우선 탐색에 쓰인다 — 옳다.
- 배열이나 연결 리스트로 구현할 수 있다 — 옳다.
옳지 않은 것은 FCFS가 스케줄링 방법 중 가장 성능이 좋다는 설명이다.
FCFS는 요청 순서대로 처리해 공평하지만, 헤드가 디스크를 왔다 갔다 하므로 탐색 거리가 길어 성능은 낮은 편이다.
- SSTF는 현재 헤드에서 가장 가까운 요청을 먼저 처리한다 — 옳다.
- C-SCAN은 한쪽 방향으로 이동할 때만 요청을 처리한다 — 옳다.
- 섹터 큐잉은 고정 헤드 장치에서 회전 지연을 고려한다 — 옳다.
옳지 않은 것은 쿠키가 웹사이트에 저장되는 파일이라는 설명이다.
쿠키는 웹 서버가 생성해 보내지만 사용자(클라이언트) 컴퓨터의 브라우저에 저장되며, 이후 같은 사이트에 접속할 때 서버로 다시 전송된다.
- 웹사이트 접속 시 생성되는 파일이다 — 옳다.
- 웹사이트가 사용자 정보를 저장하는 데 쓴다 — 옳다.
- 저장 내용은 사용 목적에 따라 정해진다 — 옳다.
옳지 않은 것은 무결성이 모든 집단이 데이터를 수정할 수 있도록 허가하는 것이라는 설명이다.
무결성은 인가된 사용자만, 인가된 방법으로 데이터를 수정할 수 있게 하여 데이터가 부당하게 변경되지 않도록 보장하는 것이다.
- 인증 — 사용자 식별자를 검증하는 것으로 옳다.
- 기밀성 — 인가된 자만 읽을 수 있게 하는 것으로 옳다.
- 가용성 — 인가된 자가 필요할 때 자산을 사용할 수 있는 것으로 옳다.
설명하는 형식은 RSS(really simple syndication)이다.
RSS는 뉴스·블로그 등 자주 갱신되는 콘텐츠를 XML 형식으로 배포해 다른 사이트나 구독기가 쉽게 받아 보도록 하는 형식이다.
- XSS — 웹 페이지에 악성 스크립트를 삽입하는 공격이다.
- PICS — 인터넷 콘텐츠의 등급을 표시·선별하는 규격이다.
- XHTML — HTML을 XML 문법에 맞게 재정의한 마크업 언어이다.
ㄱ. a && b ㄴ. a & b
ㄷ. a == b ㄹ. a - b
결과 값이 같은 것은 ㄱ과 ㄷ(둘 다 1)이다.
논리 연산과 관계 연산의 결과는 참이면 1, 거짓이면 0이다.
- ㄱ. a && b — 둘 다 0이 아니므로 참 → 1
- ㄴ. a & b — 비트 AND, 0101 & 0101 = 0101 → 5
- ㄷ. a == b — 같으므로 참 → 1
- ㄹ. a - b — 5−5 → 0