시스템 카탈로그는 데이터베이스 객체들의 정의 및 속성 정보를 저장하는 시스템 데이터베이스로, 보기 1·2·4는 모두 정확한 설명이다. 보기 3이 옳지 않은 이유는 일반 사용자도 SELECT 등의 질의문으로 카탈로그를 검색할 수 있기 때문이다. 시스템 카탈로그는 자료 사전 역할을 하면서 동시에 사용자에게 공개되어 데이터베이스의 메타데이터를 조회하는 데 활용된다. 무결성 보호는 사용자의 수정·삭제 권한을 제한하는 방식으로 이루어지지, 검색 자체를 막지는 않는다.
테이블, 뷰, 인덱스와 같은 데이터베이스 객체를 제거할 때는 DROP 문을 사용한다. CREATE 문은 객체 생성, ALTER 문은 객체 구조 변경, CLOSE 문은 객체 제거 명령이 아니다.
관계해석은 원하는 정보가 무엇인지만 기술하는 선언적(비절차적) 언어로, 2번이 틀렸다. 관계해석은 "어떻게 유도하는가"라는 절차를 명시하지 않으며, 이는 관계대수의 특징이다. 1번은 맞으며, 관계해석은 관계 데이터의 연산을 표현하는 방법이 맞다. 3번도 맞으며, 변수의 대상에 따라 튜플 관계해석(튜플 변수 사용)과 도메인 관계해석(도메인 변수 사용)으로 나뉜다. 4번도 맞으며, 관계대수와 관계해석은 표현력이 동등해서 상호 변환이 가능하다.
Atomicity(원자성)는 트랜잭션이 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 한다는 "all or nothing" 원칙을 정의하는 특성이다. Consistency는 데이터 무결성 유지, Isolation은 트랜잭션 간 독립성, Durability는 커밋된 데이터의 영구성을 의미하므로 정의와 맞지 않는다.
데이터베이스 3단계 구조에서 외부 스키마는 사용자나 응용프로그래머가 실제로 접근하고 사용할 수 있도록 정의된 데이터베이스의 논리적 구조이다. 개념 스키마는 전체 데이터베이스의 논리적 구조를 정의하는 중간 계층이고, 내부 스키마는 물리적 저장 방식을 정의하는 가장 하위 계층이며, 관계 스키마는 관계형 데이터베이스의 테이블 구조를 나타내는 용어로 3단계 구조와는 다른 개념이다.
응용프로그램의 양은 데이터베이스 논리적 설계나 용량 계획 단계에서 고려되는 요소이며, 인덱스 배치나 테이블 저장 위치 같은 개별 물리적 옵션 선택과는 거리가 있다.
데이터베이스 물리적 설계에서 테이블 분할, 인덱스 생성, 저장소 구조 등의 옵션을 선택할 때 고려하는 주요 요소는 시스템 성능과 자원 효율성이다. 다음 요소들은 물리적 설계 옵션(예: 파티셔닝, 인덱싱)에 직접 영향을 받는다.
- 트랜잭션 처리량: 동시성 처리 능력을 결정한다.
- 공간 활용도: 저장소 효율을 판단한다.
- 응답 시간: 쿼리 성능을 직접 평가하는 핵심 지표다.






pass5의 결과는 6, 14, 15, 27, 32, 38, 21이다.
삽입 정렬은 2번째 원소부터 자신보다 앞쪽의 정렬된 부분에 알맞은 위치를 찾아 삽입하는 방식으로, pass 순서는 원소 하나씩 추가하며 진행된다.
초기 자료: 32, 14, 15, 38, 27, 6, 21
pass1(14 삽입): 14, 32, 15, 38, 27, 6, 21
pass2(15 삽입): 14, 15, 32, 38, 27, 6, 21
pass3(38 삽입, 이미 정렬 위치): 14, 15, 32, 38, 27, 6, 21
pass4(27 삽입): 14, 15, 27, 32, 38, 6, 21
pass5(6 삽입): 6, 14, 15, 27, 32, 38, 21
운영체제의 종류는 정렬 알고리즘 자체의 논리적 성능과 무관하며, 정렬 알고리즘 선택에 직접적인 영향을 주지 않는다.
정렬 알고리즘을 선택할 때는 알고리즘의 성능에 직접 영향을 미치는 요소들을 고려해야 한다.
- 데이터의 양: 시간복잡도에 따라 알고리즘 선택을 결정하는 중요한 요소이다.
- 초기 데이터의 배열상태(이미 정렬된 상태, 역순 등): 각 알고리즘의 최선·평균·최악 경우 성능을 크게 좌우한다.
- 키 값들의 분포상태: 기수정렬 등 특정 알고리즘의 효율성을 판단하는 기준이 된다.

㉠ SELECT DEPT_ID는 중복을 제거하지 않으므로 전체 튜플 수인 6개가 그대로 반환된다. ㉡ SELECT DISTINCT DEPT_ID는 중복값을 제거하므로 D1, D2, D3의 서로 다른 값 3개만 반환된다.

중위식 A * B + C - D / E를 트리로 구성하면 최상위 연산자는 -이고, 좌측 서브트리는 (A*B)+C, 우측 서브트리는 D/E이다. 좌측을 전위 변환하면 + * A B C, 우측은 / D E이므로 전체를 결합하면 - + * A B C / D E가 된다. 이는 보기 1과 정확히 일치한다.

2-Way Merge Sort는 인접한 두 개 원소씩 비교하여 정렬한 후, 그 결과를 다시 인접한 두 그룹씩 병합하는 방식으로 진행된다. 1회전에서는 크기 1인 원소들을 크기 2로 병합하고, 2회전에서는 크기 2인 그룹들을 크기 4로 병합한다.
1회전: 인접 2개씩 비교 정렬 → (71,2)→(2,71), (38,5)→(5,38), (7,61)→(7,61), (11,26)→(11,26), (53,42)→(42,53) → 상태: (2,71,5,38,7,61,11,26,42,53)
2회전: 크기 2 그룹 4개를 크기 4씩 병합 → (2,71)과 (5,38) 병합 시 2,5,38,71 / (7,61)과 (11,26) 병합 시 7,11,26,61 / (42,53)은 1개 그룹으로 남음 → 최종: (2,5,38,71,7,11,26,61,42,53)
정렬 알고리즘의 시간 복잡도를 비교하면, 힙 정렬만이 평균과 최악 모두 O(n log₂ n)을 만족한다.
- 삽입 정렬: 평균 O(n²), 최악 O(n²)
- 버블 정렬: 평균 O(n²), 최악 O(n²)
- 선택 정렬: 평균 O(n²), 최악 O(n²)
힙 정렬은 최소 힙 또는 최대 힙 구조를 이용하여 원소를 재배열할 때 분할 정복 원리에 따라 일정하게 log n 깊이의 비교와 교환을 수행하므로, 데이터 배열 상태에 관계없이 항상 O(n log₂ n)의 성능을 보장한다.

유연성이 있다는 설명은 하드웨어로 고정된 우선순위를 변경할 수 없다는 점에서 유연성이 오히려 낮으므로 틀린 특징이다.
하드웨어 우선순위 인터럽트는 인터럽트 컨트롤러 등 물리적 하드웨어 회로로 우선순위를 고정하여 결정하는 방식이다.
- 가격이 비싸다: 별도의 전용 하드웨어가 필요하기 때문이다.
- 응답속도가 빠르다: 소프트웨어 처리 없이 하드웨어에서 즉각 우선순위를 판단하기 때문이다.
- 하드웨어로 우선순위를 결정한다: 이 방식의 정의다.
데이터를 4배 증가시키려면 2진수를 왼쪽으로 이동시켜야 한다. Shift Left 1회는 2배, 2회는 4배, 3회는 8배 증가를 의미하므로 4배 증가는 Shift Left 2회이다. 검증: 00101001(2) = 41(10)을 Shift Left 2회 수행하면 10100100(2) = 164(10)이 되며, 41 × 4 = 164로 일치한다.
AND 연산을 이용하여 특정 비트를 선택적으로 지우거나 유지하는 기법을 마스킹(masking)이라 하며, 이때 사용되는 패턴을 마스크 비트라 한다. 마스크 비트가 0인 위치는 AND 연산 후 0으로 지워지고, 1인 위치는 원래 비트 값이 유지되므로, AND 연산으로 원하는 비트를 선택적으로 제거할 수 있다. 캐리는 덧셈 결과의 자리올림, 플립플롭은 메모리 소자, 패리티 비트는 오류 검출용이므로 비트 삭제와는 무관하다.
서브 프로그램 호출은 CALL 또는 JSR 명령어로 프로그래머가 의도적으로 실행하는 제어 이전이므로 인터럽트가 아니라 정상적인 프로그램 흐름의 일부이다.
인터럽트는 CPU의 정상 실행 흐름을 중단하고 즉시 처리해야 할 사건을 의미하며, 다음은 모두 인터럽트를 발생시킨다.
- 정전: 전원 공급 중단으로 인한 비정상 상황
- 오버플로우 발생: 연산 결과가 레지스터 범위를 초과하는 예외 상황
- 오퍼레이터의 조작: 콘솔 패널 조작 등 외부 신호
인터럽트를 요청한 여러 장치 중에서 어느 장치가 인터럽트를 요청했는지 CPU가 직접 차례대로 검사하는 방식이 폴링(polling)이다. CPU가 각 장치의 상태 레지스터를 순차적으로 읽으면서 인터럽트 요청 여부를 확인한다. 핸드세이킹은 장치와의 통신 프로토콜, 데이지 체인은 하드웨어 우선순위 방식(신호를 직렬로 전달), 벡터 인터럽트는 장치가 벡터 번호를 제공하는 방식으로 모두 다른 개념이다.
PC(Program Counter)에 X값을 로드하는 것은 프로그램의 실행 흐름을 X 주소로 분기시킨다는 의미다. JMP X는 무조건 분기 명령으로 PC에 X의 값을 저장하여 다음 실행할 명령어 주소를 X로 변경한다. ADD X는 누산기에 X를 더하는 산술 연산, MOV X는 데이터 이동 명령, STA X는 누산기의 값을 X 주소에 저장하는 명령이므로 PC 값을 변경하지 않는다.
2진수를 그레이 코드로 변환하는 방법은 최상위 비트는 그대로 두고, 이후 각 비트는 원래 2진수의 해당 비트와 그 왼쪽 비트를 XOR하는 것이다. 1010(2)에서 첫 번째 비트 1은 그대로, 두 번째 비트는 1⊕0=1, 세 번째 비트는 0⊕1=1, 네 번째 비트는 1⊕0=1이므로 결과는 1111이다.

보조기억장치(오프라인/우선순위 낮은 장치)에 저장된 데이터를 필요 시점에 온라인 또는 우선순위 높은 장치로 옮기거나, 대용량 기억장치의 데이터를 직접 접근 가능한 장치로 옮기는 것을 staging(스테이징)이라 한다. saving은 단순 저장, spooling은 저속 장치와 CPU 간 속도차를 완충하기 위한 임시 저장·처리 기법으로 문제의 설명과 다르다.
필요한 8×2 RAM은 4개이다. 16×4 메모리는 16개 주소에 각 4비트 데이터를 저장해야 하며, 8×2 RAM은 8개 주소에 각 2비트 데이터를 저장한다.
필요한 RAM 개수 = (전체 용량) ÷ (한 칩 용량)
= (16×4) ÷ (8×2)
= 64 ÷ 16 = 4개
또는 주소 확장 관점에서, 16개 주소를 만들려면 2개의 칩이 필요(8×2=16)하고, 4비트 데이터폭을 만들려면 2개의 칩이 필요(2비트×2=4비트)하므로, 행 방향 2개 × 열 방향 2개 = 4개의 칩이 필요하다.
주소공간 64K에서 가상 페이지의 개수는 64K ÷ 512워드 = 128개이고, 기억공간 4K에서 물리 블록의 개수는 4K ÷ 512워드 = 8개입니다. 블록 주소 비트는 8개 블록을 구분하기 위해 가 필요합니다. 따라서 블록은 8개, 3비트입니다.







