옳지 않은 것은 SRAM이 비휘발성이라는 설명이다. DRAM과 SRAM은 모두 전원이 끊기면 내용이 사라지는 휘발성 메모리이다.
DRAM은 축전기 전하로 비트를 저장해 주기적인 재충전(refresh)이 필요하고, SRAM은 플립플롭으로 저장해 재충전이 필요 없고 더 빠르다.
- DRAM이 축전기의 충전 상태로 비트를 저장한다는 설명은 옳다.
- SRAM이 주로 캐시 메모리로 쓰인다는 설명은 옳다.
- SRAM의 접근 속도가 DRAM보다 빠르다는 설명은 옳다.
최악의 경우 시간복잡도가 다른 것은 힙 정렬로, 최악에도 이다.
힙 구성 후 루트 삭제와 재구성(높이 )을 n번 반복하므로 입력 순서와 무관하게 이 보장된다.
- 삽입 정렬은 역순 입력에서 최악 이다.
- 쉘 정렬은 일반적인 간격 수열에서 최악 로 분류된다.
- 버블 정렬은 최악 이다.
옳은 것은 비지도 학습은 정답(레이블)이 없는 데이터에서 유용한 패턴을 추출한다는 설명이다.
지도 학습은 정답이 붙은 데이터로 분류·회귀를 학습하고, 행동에 대한 보상으로 학습하는 것은 강화 학습이다.
- 군집화는 지도 학습이 아니라 비지도 학습의 대표 기법이다.
- 분류와 회귀분석은 비지도 학습이 아니라 지도 학습 기법이다.
- 행동에 대해 보상을 받는 방식은 지도 학습이 아니라 강화 학습이다.
설명에 해당하는 것은 RFID(Radio Frequency IDentification)이다.
RFID는 반도체 칩과 안테나가 내장된 태그와 이를 무선주파수로 읽는 리더기로 구성되어 비접촉으로 대상을 식별한다.
- WAN은 넓은 지역을 연결하는 광역 통신망으로 인식 시스템이 아니다.
- Bluetooth는 근거리 기기 간 무선 데이터 통신 규격이다.
- ZigBee는 저전력 근거리 무선 센서 네트워크 규격이다.
옳지 않은 것은 IaaS로 소프트웨어 설치·유지보수 비용을 절감한다는 설명이다. 이는 SaaS의 특징이다.
IaaS는 서버·스토리지·네트워크 같은 인프라만 제공하므로, 운영체제와 소프트웨어의 설치·관리는 여전히 사용자가 맡는다.
- 클라우드가 IT 요구를 경제적이고 신뢰성 있게 충족하는 수단이라는 설명은 옳다.
- 서비스 모델로 IaaS, PaaS, SaaS가 있다는 설명은 옳다.
- 배치 방식으로 사설·공용·하이브리드 클라우드가 있다는 설명은 옳다.
int get_average(int score[], int n) {
int i, sum;
for(i = 0; i < n; i++)
sum += score[i];
return sum / n;
}
void main(void) {
int score[3] = { 1, 2, 5 };
printf("%d\n", get_average(score, 3));
}배열 score를 넘기면 배열의 시작 주소가 전달되므로, get_average()의 매개변수 score가 값에 의한 호출로 처리된다는 설명이 옳지 않다.
C에서 배열 이름은 첫 원소의 주소로 바뀌어 전달되므로 함수 안의 score[i]는 main의 배열 원소를 그대로 가리킨다. 값을 복사해 넘기는 것이 아니라 주소를 넘겨 원본에 접근하는 참조에 의한 호출 방식으로 동작한다.
- 전달할 데이터 양이 많을 때 참조에 의한 호출이 효율적이라는 설명 — 데이터 전체 대신 주소만 넘기므로 옳다.
- 값에 의한 호출로 전달된 데이터는 호출된 함수에서 바꿔도 상위 함수에 반영되지 않는다는 설명 — 복사본을 바꾸는 것이므로 옳다.
- 값에 의한 호출은 호출 시 데이터 복사가 발생한다는 설명 — 실인수 값이 형식 매개변수로 복사되므로 옳다.
#include <stdio.h>
int main()
{
int ary[5] = {10, 11, 12, 13, 14};
int *ap;
ap = ary;
printf("%d", ary[1]);
return 0;
}ㄱ. printf("%d", ary+1);
ㄴ. printf("%d", *ap+1);
ㄷ. printf("%d", *ary+1);
ㄹ. printf("%d", *ap++);밑줄 친 코드는 ary[1] 즉 11을 출력하며, 같은 값을 출력하는 것은 *ap+1과 *ary+1이다.
ap=ary 이므로 *ap와 *ary는 모두 ary[0]=10이다. 단항 *가 +보다 우선순위가 높아 (*ap)+1, (*ary)+1로 계산되어 10+1=11이 된다.
- printf("%d", ary+1) — ary+1은 ary[1]의 값이 아니라 그 주소이므로 11을 출력하지 않는다.
- printf("%d", *ap++) — 후위 증가라 ap가 가리키던 ary[0]=10을 먼저 출력하고 ap만 다음 원소로 옮겨진다.
통신하는 두 DTE가 시간적으로 교대로 데이터를 교환하는 방식의 통신으로, 한 DTE가 명령을 전송하면 다른 DTE가 이를 처리하여 그에 대한 응답을 전송하는 트랜잭션(Transaction) 처리 시스템에서 볼 수 있다.
두 DTE가 시간적으로 교대로 데이터를 주고받는 방식은 반이중 통신이다.
반이중 통신은 양방향 전송이 가능하지만 한순간에는 한쪽만 송신할 수 있어, 명령 전송과 처리 후 응답이 번갈아 오가는 트랜잭션 처리 시스템이 대표적인 예이다.
- 단방향 통신 — 한쪽은 송신만, 다른 쪽은 수신만 하므로 응답을 돌려보낼 수 없다.
- 전이중 통신 — 양쪽이 동시에 송수신하므로 교대로 주고받는 방식이 아니다.
- 원거리 통신 — 전송 거리에 따른 구분일 뿐 자료 흐름 방향·동시성에 따른 분류가 아니다.
| 목적지 네트워크 | 서브넷마스크 | 인터페이스 |
|---|---|---|
| 128.50.30.0 | 255.255.254.0 | R1 |
| 128.50.28.0 | 255.255.255.0 | R2 |
| Default | R3 |
128.50.30.92와 128.50.31.92는 모두 128.50.30.0/23 네트워크에 속해 같은 인터페이스 R1로 전달되므로, 서로 다른 인터페이스로 전달된다는 설명이 옳지 않다.
255.255.254.0은 셋째 옥텟이 11111110이라 셋째 옥텟의 최하위 비트를 무시한다. 30(00011110)과 31(00011111)은 이 비트만 다르므로 AND 결과가 모두 128.50.30.0이 되어 첫 번째 항목과 일치한다.
- 128.50.28.0 네트워크의 브로드캐스트 주소가 128.50.28.255라는 설명 — 마스크가 255.255.255.0이므로 호스트 부분 8비트를 모두 1로 채운 값이 맞다.
- 255.255.254.0이 /23으로 표현된다는 설명 — 1인 비트가 8+8+7=23개이므로 맞다.
- 128.50.28.9를 R2로 전달한다는 설명 — /23 마스크를 적용하면 128.50.28.0이 되어 첫 항목과 맞지 않고, /24 마스크를 적용하면 128.50.28.0으로 두 번째 항목과 일치해 R2로 간다.
- ㄱ. 데이터베이스를 운영하는 기관에 소속되어 있는 모든 응용시스템 또는 사용자들이 필요로 하는 데이터를 통합하여 정의한 조직 전체 데이터베이스의 논리 구조를 말한다.
- ㄴ. 개념 스키마와 외부 스키마 사이에는 논리적 데이터 독립성이 있어야 한다.
- ㄷ. 데이터베이스 내에는 하나의 개념 스키마만 존재한다.
- ㄹ. 데이터에 대한 접근권한, 제약조건 등에 대한 정의도 포함한다.
제시된 네 설명이 모두 개념 스키마에 대한 옳은 설명이다.
개념 스키마는 조직 전체 관점에서 모든 응용·사용자가 필요로 하는 데이터를 통합한 논리 구조로, 데이터베이스당 하나만 존재하며 개체·관계뿐 아니라 접근 권한·무결성 제약조건의 정의도 포함한다.
- 조직 전체 데이터베이스의 논리 구조라는 설명 — 개념 스키마의 정의 그대로이다.
- 개념 스키마와 외부 스키마 사이의 논리적 데이터 독립성 — 개념 스키마가 바뀌어도 외부 스키마와 응용 프로그램이 영향을 받지 않아야 한다는 3단계 구조의 목표이다.
- 하나의 개념 스키마만 존재한다는 설명 — 외부 스키마는 여럿일 수 있지만 개념 스키마는 하나이다.
- 접근 권한·제약조건 정의를 포함한다는 설명 — 개념 스키마에 보안·무결성 규칙이 함께 기술된다.
TCP 기반이 아닌 것은 SNMP로, UDP(포트 161·162) 위에서 동작한다.
네트워크 관리용 SNMP는 가벼운 요청·응답 교환이 중심이라 연결 설정이 없는 UDP를 사용한다.
- Telnet은 TCP 포트 23을 쓰는 원격 접속 프로토콜이다.
- FTP는 TCP 포트 20·21을 쓰는 파일 전송 프로토콜이다.
- SMTP는 TCP 포트 25를 쓰는 메일 전송 프로토콜이다.
프로세스 제어블록(PCB)의 포함 요소로 옳지 않은 것은 인터럽트 정보이다.
PCB는 운영체제가 프로세스마다 하나씩 두는 자료구조로, 프로세스 식별자·상태·우선순위·프로그램 카운터·CPU 레지스터·메모리 관리 정보·입출력 상태·계정 정보 등을 담는다. 인터럽트 종류와 처리 루틴 위치 같은 인터럽트 정보는 개별 프로세스가 아니라 인터럽트 벡터 등 시스템 차원에서 관리된다.
- 프로세스 식별자는 각 프로세스를 구별하는 PCB의 기본 항목이다.
- 프로세스의 우선순위는 CPU 스케줄링에 쓰이는 PCB 항목이다.
- 프로세스의 상태(준비·실행·대기 등)는 PCB에 기록된다.
옳지 않은 것은 기계적 장치를 사용해 빠르다는 설명이다. SSD는 기계적 구동부가 없어서 하드디스크보다 빠르다.
하드디스크는 플래터 회전과 헤드 이동(탐색 시간·회전 지연)이 필요하지만, SSD는 플래시 메모리에 전자적으로 접근한다.
- 반도체 기억장치 칩으로 구성된 저장장치라는 설명은 옳다.
- 하드디스크보다 저장용량 대비 가격이 비싸다는 설명은 옳다.
- 하드디스크를 대체하려고 개발되었고 플래시 메모리로 구성된다는 설명은 옳다.
3 1 4 1 - * +
후위식 3 1 4 1 - * +를 전위식으로 바꾸면 + 3 * 1 - 4 1이다.
왼쪽부터 스택으로 읽으면 4 1 -는 (4-1), 이어서 1과 (4-1)에 *를 적용해 1*(4-1), 마지막으로 3과 +를 적용해 3+(1*(4-1))이 된다. 이 식을 연산자→왼쪽 피연산자→오른쪽 피연산자 순으로 쓰면 전위식이 된다.
- 3 + 1 * 4 - 1 — 연산자를 피연산자 사이에 둔 중위 표기이며 괄호도 없어 원식과 다른 값이 된다.
- 4 - 1 * 1 + 3 — 역시 중위 표기이고 피연산자 순서도 바뀌었다.
- + 3 - 4 1 * 1 — 3+((4-1)*1)을 뜻해 곱셈의 피연산자 순서가 원식 1*(4-1)과 다르므로 정확한 변환이 아니다.
옳지 않은 것은 세마포어 연산이 수행 중에 인터럽트될 수 있다는 설명이다. P(wait)·V(signal) 연산은 원자적(atomic)으로 수행되어야 한다.
연산 도중 끼어들기가 허용되면 두 프로세스가 동시에 값을 바꿔 상호배제가 깨지므로, 검사와 증감은 분리 불가능한 하나의 동작으로 실행된다.
- 프로세스 간 상호배제를 보장하는 데 쓰인다는 설명은 옳다.
- 여러 프로세스가 동시에 그 값을 수정하지 못한다는 설명은 옳다.
- 변수와 그 변수를 검사·증감하는 연산들로 정의된다는 설명은 옳다.
프로세스 품질 표준은 ISO/IEC 12207(소프트웨어 생명주기 프로세스)이다.
12207은 획득·공급·개발·운영·유지보수 등 소프트웨어 생명주기 프로세스를 정의하는 반면, 나머지는 제품 품질에 관한 표준이다.
- ISO/IEC 12119는 소프트웨어 패키지 제품의 품질 요구사항과 시험에 관한 표준이다.
- ISO/IEC 14598은 소프트웨어 제품 평가 절차에 관한 표준이다.
- ISO/IEC 25010은 소프트웨어 제품 품질 모델(SQuaRE)에 관한 표준이다.
옳지 않은 것은 중앙 서버를 통해 블록이 전파되고 다시 중앙 서버로 전송된다는 설명이다.
블록체인은 중앙 서버 없이 P2P 분산 네트워크의 노드들이 블록을 전파·검증하고 각자 원장을 보관하는 구조이다.
- 블록에 트랜잭션이 저장된다는 설명은 옳다.
- 스마트 컨트랙트가 계약을 블록체인에서 자동 이행하게 하는 기술이라는 설명은 옳다.
- 공개 범위에 따라 Public과 Private 블록체인으로 나눈다는 설명은 옳다.
<고객 릴레이션>
| 고객아이디 | 이름 | 나이 | 등급 | 직업 |
|---|---|---|---|---|
| hohoho | 이순신 | 29 | gold | 교사 |
| grace | 홍길동 | 24 | gold | 학생 |
| mango | 삼돌이 | 27 | silver | 학생 |
| juce | 갑순이 | 31 | gold | 공무원 |
| orange | 강감찬 | 23 | silver | 군인 |
| 고객아이디 | 이름 | 나이 | 등급 | 직업 |
|---|---|---|---|---|
| hohoho | 이순신 | 29 | gold | 교사 |
| juce | 갑순이 | 31 | gold | 공무원 |




선택 연산 σ의 아래첨자에 조건을, 괄호 안에 릴레이션을 쓴 σ(등급='gold' ∧ 나이≥25)(고객)이 옳다.
검색결과는 모든 속성을 유지한 채 조건을 만족하는 튜플(hohoho, juce)만 고른 것이므로 행을 거르는 셀렉트(σ) 연산이며, 형식은 σ(조건)(릴레이션)이다. grace는 gold이지만 나이가 24라 제외된다.
- σ(고객)(등급='gold' ∧ 나이≥25) — 조건과 릴레이션의 자리가 뒤바뀌어 형식이 틀렸다.
- π(고객)(등급='gold' ∧ 나이≥25) — π는 속성(열)을 고르는 프로젝트 연산이며 자리도 뒤바뀌었다.
- π(등급='gold' ∧ 나이≥25)(고객) — π의 아래첨자에는 조건이 아니라 속성 목록이 와야 하므로 튜플을 고를 수 없다.
(가)는 명령어가 피연산자의 주소를 가지고 있는 레지스터를 지정한다. 즉, 선택된 레지스터는 피연산자 그 자체가 아니라 피연산자의 주소이다. 일반적으로 이 모드를 사용할 때에 프로그래머는 이전의 명령어에서 레지스터가 피연산자의 주소를 가졌는지를 확인해 보아야 한다.
명령어가 지정한 레지스터에 피연산자 값이 아니라 피연산자의 주소가 들어 있는 방식은 레지스터 간접 모드이다.
유효 주소가 곧 레지스터 내용이므로 실제 피연산자는 그 주소의 메모리에서 읽는다. 그래서 이전 명령어에서 해당 레지스터에 올바른 주소를 적재했는지 확인해야 한다.
- 레지스터 모드 — 레지스터에 피연산자 자체가 들어 있다.
- 간접 주소 모드 — 명령어의 주소 필드가 가리키는 메모리 위치에 유효 주소가 있어 레지스터가 아닌 메모리를 한 번 더 거친다.
- 인덱스 어드레싱 모드 — 인덱스 레지스터 값과 명령어의 주소 필드를 더해 유효 주소를 만든다.
큐: 80, 20, 100, 30, 70, 130, 40
SSTF로 처리하면 총 헤드 이동 거리는 140이다.
현재 위치 50에서 매번 가장 가까운 요청을 고르면 50→40→30→20→70→80→100→130 순이 된다.
이동 거리: 10+10+10+50+10+20+30=140
50에서는 40(거리 10)이 70(거리 20)보다 가까워 아래쪽을 먼저 처리하고, 20에서 가장 가까운 70으로 한 번 방향을 바꿔 위쪽 요청을 차례로 처리한다.