ACID 특성이 아닌 것은 병행성(concurrency)이다.
ACID는 원자성(Atomicity)·일관성(Consistency)·고립성(Isolation)·지속성(Durability)의 머리글자이다. 병행성은 여러 트랜잭션을 동시에 실행하는 DBMS의 처리 방식이지 트랜잭션이 갖춰야 할 특성이 아니다.
- 원자성 — 전부 실행되거나 전혀 실행되지 않아야 한다.
- 고립성 — 동시 실행 트랜잭션이 서로 간섭하지 않아야 한다.
- 지속성 — 완료된 결과는 영구히 보존되어야 한다.
ㄱ. 운영체제는 중앙처리장치, 주기억장치, 보조기억장치, 주변장치 등의 컴퓨터 자원을 할당 및 관리하는 시스템 소프트웨어이다.
ㄴ. 스풀링(spooling)은 CPU와 입출력 장치의 속도 차이를 줄이기 위해 주기억장치의 일부분을 버퍼처럼 사용하는 것이다.
ㄷ. 비선점(non-preemptive) 방식의 CPU 스케줄링 기법은 CPU를 사용하고 있는 현재의 프로세스가 종료된 후 다른 프로세스에 CPU를 할당하는데 대표적으로 RR(Round Robin) 스케줄링 기법이 있다.
ㄹ. 가상메모리(virtual memory)는 디스크와 같은 보조기억장치에 가상의 공간을 만들어 기억장치처럼 활용하도록 하여 실제 주기억장치의 물리적 공간보다 큰 주소 공간을 제공한다.
옳은 것은 ㄱ과 ㄹ이다.
운영체제는 컴퓨터 자원을 할당·관리하는 시스템 소프트웨어이고, 가상메모리는 보조기억장치를 활용해 물리 메모리보다 큰 주소 공간을 제공한다.
- ㄴ — 스풀링은 주기억장치가 아니라 디스크를 버퍼처럼 쓴다. 주기억장치 일부를 버퍼로 쓰는 것은 버퍼링이다.
- ㄷ — RR(라운드 로빈)은 시간 할당량이 끝나면 CPU를 빼앗는 선점 방식이다.
ㄱ. 가상(virtual) 메모리
ㄴ. L1 캐시(Level 1 cache) 메모리
ㄷ. L2 캐시(Level 2 cache) 메모리
ㄹ. 임의 접근 메모리(RAM)
빠른 순서는 ㄴ-ㄷ-ㄹ-ㄱ이다.
메모리 계층은 CPU에 가까울수록 빠르다: L1 캐시 → L2 캐시 → 주기억장치(RAM) → 가상 메모리.
- L1 캐시 — CPU 코어 안에 있어 가장 빠르다.
- L2 캐시 — L1보다 크고 조금 느리다.
- RAM — 캐시보다 느린 주기억장치이다.
- 가상 메모리 — 디스크 등 보조기억장치를 활용하므로 가장 느리다.
(56.13)을 16진수로 바꾸면 (2E.2C)이다.
8진수 한 자리를 2진수 3비트로 풀고, 소수점 기준으로 4비트씩 다시 묶는다.
(56.13) = 101 110 . 001
- 정수부: 101110 → 0010 1110 → 2E
- 소수부: 001011 → 0010 1100(오른쪽에 0 채움) → 2C
- 소수부 오른쪽에 0을 채우지 않고 왼쪽을 채우면 0B가 되는 오류가 생긴다.
설명하는 계층은 전송 계층(transport layer)이다.
전송 계층은 종단 간(end-to-end) 데이터 전송을 담당하며 연결 관리, 오류 제어, 흐름 제어를 수행한다(TCP, UDP).
- 링크 계층 — 인접 노드 간 프레임 전송을 다룬다.
- 네트워크 계층 — 패킷의 경로 설정을 다룬다.
- 세션 계층 — 응용 간 대화 설정과 동기화를 다룬다.
설명하는 방식은 ARQ(Automatic Repeat reQuest)이다.
ARQ는 오류 검출용 부가 정보만 붙여 보내고, 수신측이 오류를 발견하면 재전송을 요청하는 후진 오류 수정 방식이다.
- FEC — 수신측이 재전송 요청 없이 스스로 오류를 정정하는 전진 오류 수정 방식이다.
- 순회 부호 — 오류 검출에 쓰는 부호 체계(CRC 등)이다.
- 해밍 부호 — 오류 정정이 가능한 부호로 FEC에 쓰인다.
요청된 페이지 번호의 순서 :
2, 3, 1, 2, 1, 2, 4, 2, 1, 3, 2
페이지 부재는 5회 발생한다.
LFU는 참조 횟수가 가장 적은 페이지를 교체한다.
- 2, 3, 1 — 빈 프레임에 적재, 부재 3회
- 2, 1, 2 — 적중(참조 횟수 2:3, 3:1, 1:2)
- 4 — 부재, 참조 횟수가 가장 적은 3을 교체 → 프레임 2, 1, 4
- 2, 1 — 적중(2:4, 1:3, 4:1)
- 3 — 부재, 참조 횟수가 가장 적은 4를 교체 → 프레임 2, 1, 3
- 2 — 적중
따라서 부재는 3 + 1 + 1 = 5회이다.
옳지 않은 것은 CHECK절은 반드시 UPDATE 키워드와 함께 사용한다는 설명이다.
CHECK절은 칼럼 값이 만족해야 할 조건식을 지정하는 무결성 제약 조건으로, UPDATE 키워드와 함께 써야 한다는 규칙은 없다.
- 테이블 이름과 칼럼 이름·데이터 타입을 명시한다 — 옳다.
- PRIMARY KEY절로 기본키를 지정한다 — 옳다.
- FOREIGN KEY절에 NO ACTION, CASCADE, SET NULL, SET DEFAULT 옵션을 쓸 수 있다 — 옳다.
설명하는 방식은 비동기식 전송 방식이다.
비동기식 전송은 한 문자 단위로 앞에 시작 비트, 뒤에 정지 비트를 붙여 수신측이 문자마다 동기를 맞추게 한다.
- 동기식 전송 — 여러 문자를 블록(프레임)으로 묶어 동기 문자나 플래그로 동기를 맞춘다.
- 아날로그 전송 — 신호 형태에 따른 구분으로 시작·정지 비트와 무관하다.
- 병렬 전송 — 여러 비트를 여러 선으로 동시에 보내는 방식이다.
#include<stdio.h>
void func(int *a, int b, int *c)
{
int x;
x = *a;
*a = x++;
x = b;
b = ++x;
--(*c);
}
int main()
{
int a, b, c[1];
a = 20;
b = 20;
c[0] = 20;
func(&a, b, c);
printf("a = %db = %dc = %d\5Cn", a, b, *c);
return 0;
}출력은 a = 20 b = 20 c = 19이다.
a는 포인터로 전달되지만 *a = x++는 후위 증가라 증가 전 값 20이 대입되므로 a는 20 그대로이다.
- b — 값으로 전달되어 함수 안의 b(매개변수)만 21이 되고 main의 b는 20이다.
- c — 배열 이름은 주소이므로 --(*c)가 main의 c[0]을 19로 바꾼다.
- a = 21로 보는 경우 — x++를 전위 증가처럼 계산한 것이다.
- b = 21로 보는 경우 — 값에 의한 전달을 참조로 착각한 것이다.
시간 복잡도가 다른 것은 기수 정렬(radix sort)이다.
기수 정렬은 비교 없이 자릿수별로 분배하므로 자릿수 d에 대해 O(dn), 즉 선형 시간에 정렬한다.
- 버블 정렬 — 평균·최악 O()이다.
- 선택 정렬 — 항상 O()이다.
- 삽입 정렬 — 평균·최악 O()이다.
에러 검출 방식이 아닌 것은 BCD 부호 방식이다.
BCD(2진화 10진수)는 10진수 한 자리를 4비트로 표현하는 수치 표현 코드일 뿐 오류 검출 기능이 없다.
- 패리티 검사 — 1의 개수가 짝수·홀수인지로 오류를 검출한다.
- 검사합 — 데이터의 합을 함께 보내 비교한다.
- CRC — 다항식 나눗셈의 나머지로 오류를 검출한다.
+ * A B / C D
중위 표기 수식은 A * B + C / D이다.
전위 표기는 연산자가 뒤따르는 두 피연산자 앞에 온다. 오른쪽부터 묶으면 다음과 같다.
- / C D → C / D
- * A B → A * B
- + (A * B) (C / D) → A * B + C / D
- A + B * C / D — 전위식으로 바꾸면 + A / * B C D가 되어 다르다.
- A + B / C * D — 전위식으로 바꾸면 + A * / B C D가 되어 다르다.
- A * B / C + D — 전위식으로 바꾸면 + / * A B C D가 되어 다르다.
설명하는 테스트는 블랙 박스 테스트이다.
블랙 박스 테스트는 내부 구조를 보지 않고 요구사항 명세에 따른 입력과 출력만으로 기능을 검사한다(동등 분할, 경계값 분석 등).
- 화이트 박스 테스트 — 내부 구조와 논리를 보고 검사한다.
- 구조 테스트 — 화이트 박스 테스트의 다른 이름이다.
- 경로 테스트 — 프로그램의 실행 경로를 검사하는 화이트 박스 기법이다.
설명하는 것은 오버라이딩(overriding)이다.
오버라이딩은 부모 클래스에 정의된 메서드를 자식 클래스에서 같은 원형(이름·매개변수·반환형)으로 다시 정의하는 것이다.
- 추상 클래스 — 추상 메서드를 가져 직접 객체를 만들 수 없는 클래스이다.
- 인터페이스 — 구현 없이 메서드 원형만 선언한 규약이다.
- 오버로딩 — 같은 이름에 매개변수 구성을 달리해 여러 메서드를 정의하는 것이다.
옳지 않은 것은 웹 캐시에 대한 설명이다.
웹 서버가 사용자 컴퓨터에 저장해 사용자 식별·맞춤 정보에 쓰는 작은 파일은 쿠키이다. 웹 캐시는 자주 보는 웹 페이지·이미지를 가까운 곳에 임시 저장해 다시 요청할 때 빠르게 보여 주는 기술이다.
- POP3, IMAP, SMTP는 전자우편 프로토콜이다 — 옳다.
- RSS는 XML 기반 콘텐츠 교환 기술이다 — 옳다.
- CGI는 웹 서버에서 외부 프로그램을 실행하는 기술이다 — 옳다.
옳은 것은 C-LOOK에 대한 설명이다.
C-LOOK은 진행 방향에 요청이 더 없으면 마지막 트랙까지 가지 않고 반대쪽 끝의 첫 요청 위치로 바로 돌아가 같은 방향으로 다시 처리한다.
- 탐색 시간이 가장 짧은 요구를 먼저 처리하는 것은 FCFS가 아니라 SSTF이다.
- N-Step-SCAN은 대기 큐를 N개씩 묶어 그 묶음 안에서 SCAN을 하는 기법이다.
- SSTF는 먼 요청이 계속 밀리는 기아 현상이 생길 수 있어 공평하지 않다.
옳지 않은 것은 RLE가 손실 압축 기법이라는 설명이다.
RLE는 같은 값이 연속되는 열을 (값, 반복 횟수)로 바꿔 표현하는 방식으로, 원래 데이터를 그대로 복원할 수 있는 무손실 압축이다.
- 멀티미디어는 여러 형태의 정보를 통합·처리·표현하는 개념이다 — 옳다.
- RTP는 UDP 위에서 실시간 트래픽을 처리하는 프로토콜이다 — 옳다.
- JPEG은 컬러 사진 압축 표준이다 — 옳다.
abstract class A {
public abstract void disp();
}
abstract class B extends A {
}
class C extends B {
public void disp() { }
}
public class D {
public static void main(String[] args) {
}
}에러가 발생하지 않는 명령어는 A cp = new C();이다.
추상 클래스는 new로 객체를 생성할 수 없다. A와 B는 abstract로 선언되어 있고, C는 추상 메서드 disp()를 구현한 일반 클래스이므로 객체를 만들 수 있다. 부모 타입 A 참조 변수로 자식 C 객체를 가리키는 것은 허용된다(업캐스팅).
- A ap = new A(); — 추상 클래스 A를 생성하므로 컴파일 에러이다.
- A bp = new B(); — 추상 클래스 B를 생성하므로 컴파일 에러이다.
- B dp = new B(); — 역시 추상 클래스 B를 생성하므로 컴파일 에러이다.
옳지 않은 것은 텔레매틱스에 대한 설명이다.
텔레매틱스는 통신(telecommunication)과 정보과학(informatics)의 합성어로, 자동차 등에 무선 통신과 GPS를 결합해 위치·교통·안전 정보 서비스를 제공하는 기술이다. 실세계 위에 가상 정보를 겹쳐 보여 주는 것은 증강현실이다.
- RFID 시스템은 태그·안테나·리더기·서버로 구성된다 — 옳다.
- 스마트 카드는 마이크로프로세서·운영체제·보안 모듈·메모리를 갖춘 IC 칩 카드이다 — 옳다.
- 웨어러블 컴퓨팅은 컴퓨터를 옷·안경처럼 착용하게 하는 기술이다 — 옳다.