자격증 요약/정보처리기사

[23년 1회 4과목] 정보처리기사 필기 문제 풀이

문성 2026. 1. 30. 12:27

제4과목: 프로그래밍 언어 활용 (61~80번)

정보처리기사 필기 기출문제
24년 3회 1과목 2과목 3과목 4과목 5과목
24년 2회 1과목 2과목 3과목 4과목 5과목
24년 1회 1과목 2과목 3과목 4과목 5과목
23년 3회 1과목 2과목 3과목 4과목 5과목
23년 2회 1과목 2과목 3과목 4과목 5과목
23년 1회 1과목 2과목 3과목 4과목 5과목

61. 한 개의 통신 회선에 여러 대의 단말장치가 연결되어 있는 형태를 가진 네트워크 토폴로지는 어떤 형인가?

① 그물형

② 십자형

③ 버스형

④ 링형

네트워크 설치구조
성형 (Star, 중앙 집중형)
 - 중앙에 중앙 컴퓨터가 있고 이를 중심으로 단말장치들이 연결되는 중앙 집중식의 네트워크 구성 형태
 - 포인트 투 포인트(Point-to-Point) 방식으로 회선을 연결함

링형 (Ring, 루프형)
 - 컴퓨터와 단말장치들을 서로 이웃하는 것끼리 포인트 투 포인트(Point-to-Point) 방식으로 연결된 형태
 - 분산 및 집중 제어 모두 가능함
 - 데이터는 단방향 또는 양방향으로 전송할 수 있으며, 단방향 링의 경우 컴퓨터, 단말장치, 통신 회선 중 어느 하나라도 고장나면 전체 통신에 영향을 미침

버스형 (Bus)
 - 하나의 통신 선로에 여러 대의 단말장치가 연결되어 있는 형태
 - 물리적 구조가 간단하고 단말장치의 추가와 제거가 용이함
 - 단말장치가 고장 나더라도 통신망 전체에 영향을 주지 않기 때문에 신뢰성을 높일 수 있음


계층형 (Tree, 분산형)
 - 중앙 컴퓨터와 일정 지역의 단말장치까지는 하나의 통신선으로 연결시키고, 이웃하는 단말장치는 일정 지역 내에서 독립적으로 단말장치로부터 다시 연결시키는 형태

망형 (Mesh)
 - 모든 지점의 컴퓨터와 단말장치를 서로 연결한 형태로, 노드의 연결성이 높음
 - 많은 단말장치로부터 많은 양의 통신을 필요로 하는 경우에 유리함
 - 보통 중요한 데이터 통신망에서 사용되며, 통신 신뢰성이 높음
 - 모든 노드를 망형으로 연결하려면 노드의 수가 n개일 때, n(n-1)/2개의 회선이 필요함

답: 3번

 

62. C언어에서 산술 연산자가 아닌 것은?

① %

② *

③ <<

④ /

산술 연산자
 - 일반 연산자 : + (덧셈), - (뺄셈), * (곱셉), / (나눗셈), % (나머지)
 - 증감 연산자 : ++ (증가 연산자), -- (감소 연산자)

관계 연산자 : == (같다), != (같지 않다), > (크다), >= (크거나 같다), < (작다), <= (작거나 같다)

비트 연산자 :
& (and, 모든 비트가 1일때만 1)
^ (xor, 모든 비트가 같으면 0, 하나라도 다르면 1)
| (or, 모든 비트 중 한 비트라도 1이면 1)
~ (not, 각 비트의 부정, 0이면 1, 1이면 0
<< (왼쪽 시프트, 비트를 왼쪽으로 이동)
>> (오른쪽 시프트, 비트를 오른쪽으로 이동)

논리 연산자
! (not, 부정)
&& (and, 모두 참이면 참)
|| (or, 하나라도 참이면 참)

답: 3번

 

63. IPv6에 대한 설명으로 틀린 것은?

① 128비트의 주소 공간을 제공한다.

② 인증 및 보안 기능을 포함하고 있다.

③ 패킷 크기가 64Kbyte로 고정되어 있다.

④ IPv6 확장 헤더를 통해 네트워크 기능 확장이 용이하다.

IPv6 (Internet Protocol version 6)
 - 현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발
 - 128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 잇으며, IPv4에 비해 자료 전송 속도가 빠르다.
 - 인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결할 수 있다.
 - IPv4와 호환성이 뛰어나다.
 - 주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원한다.
 - 패킷 크기를 확장할 수 있으므로 패킷 크기에 제한이 없다.

IPv6 의 구성
 - 16비트씩 8부분, 총 128비트로 구성
 - 각 부분을 16진수로 표현하고, 콜론(;)으로 구분한다.

IPv6의 주소 체계
 - 유니캐스트 : 단일 송신자와 단일 수신자 간의 통신(1대1통신에 사용)
 - 멀티캐스트 : 단일 송신자와 다중 수신자 간의 통신(1대다 통신에 사용)
 - 애니캐스트 : 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신(1대1통신에 사용)

답: 3번
패킷 크기를 확장할 수 잇으므로 64Kbyte로 고정되어있다는 틀린 설명
※ 128비트', 'IPsec 내장', '유니캐스트/애니캐스트/멀티캐스트 주소 체계'  → IPv6
※ IPv6에는 브로드캐스트가 없다

 

64. 다음 설명의 ( ) 안에 들어갈 내용으로 옳은 것은?

- 가상기억장치의 일반적인 구현 방법에는 프로그램을 고정된 크기의 일정한 블록으로 나누는 (      ) 기법과 가변적인 크기의 블록으로 나누는 (      ) 기법이 있다.

① Paging, Segmentation

② Segmentation, Allocation 

③ Segmentation, Compaction

④ Paging, Linking

페이징(Paging) 기법
 - 핵심 키워드: 고정 크기, 물리적 단위, 내부 단편화 발생
 - 프로그램을 똑같은 크기(Fixed Size)로 나눈 블록을 '페이지(Page)'라고 부르고, 이 페이지를 물리 메모리의 '프레임(Frame)'에 배치하는 방식
 - 논리적으로 프로그램을 나누는 것이 아니라 단순히 크기로만 자르기 때문에 관리가 용이
 - 페이지 크기보다 프로세스의 마지막 조각이 작을 경우 공간이 남는 내부 단편화(Internal Fragmentation)가 발생할 수 있음.
 - 주소 변환을 위해 페이지 맵 테이블(Page Map Table)이 필요합니다.

세그먼테이션(Segmentation) 기법
 - 핵심 키워드: 가변 크기, 논리적 단위, 외부 단편화 발생
 - 프로그램을 배열, 함수, 모듈 등 논리적 의미를 가진 단위(Variable Size)로 나누는 방식. 이 단위를 '세그먼트(Segment)'라고 함.
 - 기억공간을 효율적으로 사용할 수 있고 공유 및 보호가 쉽습니다.
 - 세그먼트들의 크기가 서로 다르기 때문에 메모리에 적재되고 비워지는 과정에서 중간중간 못 쓰는 공간이 생기는 외부 단편화(External Fragmentation)가 발생할 수 있습니다.
 - 주소 변환을 위해 세그먼트 맵 테이블(Segment Map Table)이 필요

답: 1번
※ 고정 크기 = 페이징 (고페)
※ 가변 크기 / 논리적 단위 = 세그먼테이션 (가세)
※ 내부 단편화 발생 = 페이징
※ 외부 단편화 발생 = 세그먼테이션

 

65. JAVA에서 변수와 자료형에 대한 설명으로 틀린 것은?

① 변수는 어떤 값을 주기억장치에 기억하기 위해서 사용하는 공간이다.

② char 자료형은 한 개의 문자를 저장하고자 할 때 사용한다.

③ 실수형 자료형에는 float, short, byte가 있다.

④ boolean 자료형은 조건이 참인지 거짓인지 판단하고자 할 때 사용한다.



답: 3번
short, byte 는 정수형

 

66. 프로세스 적재 정책과 관련한 설명으로 틀린 것은?

① 반복, 스택, 부프로그램은 시간 지역성(Temporal Locality)과 관련이 있다.

② 공간 지역성(Spatial Locality)은 프로세스가 어떤 페이지를 참조했다면 이후 가상주소 공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음을 의미한다.

③ 일반적으로 페이지 교환에 보내는 시간보다 프로세스 수행에 보내는 시간이 더 크면 스레싱(Thrashing)이 발생한다.

④ 스레싱(Thrashing) 현상을 방지하기 위해서는 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 한다.

Locality (국부성/지역성)
 - 프로세스가 실행될 때 특정 부분의 프로그램 코드나 데이터를 집중적으로 참조하는 현상입니다.
 - 시간 구역성(최근 쓴 거 또 씀)과 공간 구역성(근처에 있는 거 씀)이 있습니다. 워킹 셋은 이 Locality 이론을 바탕으로 만들어진 개념입니다.

시간 구역성 (Temporal Locality) : 최근에 참조된 기억 장소가 가까운 미래에 다시 참조될 가능성이 높은 특성입니다.
 - 루프(Loop): for, while 문처럼 같은 코드를 반복 실행.
 - 서브루틴(Subroutine): 호출된 함수를 다시 호출.
 - 스택(Stack): 가장 최근에 넣은 데이터를 다시 꺼내 쓰는 구조.
 - 집계(Counting)용 변수: i = i + 1처럼 계속 재사용되는 변수.

공간 구역성 (Spatial Locality) : 하나의 기억 장소가 참조되면 그 부근의 장소가 계속 참조될 가능성이 높은 특성입니다.
 - 배열 순회: A[0], A[1], A[2] 순차적 접근.
 - 순차적 코드 실행: 명령어가 위에서 아래로 차례대로 실행됨.
 - 관련 변수들의 집중: 비슷한 위치에 선언된 변수들.

Thrashing (스레싱) 
 - 페이지 부재가 너무 자주 발생하여, CPU가 실제 일을 하는 시간보다 페이지를 교체하는 데 보내는 시간이 더 많아지는 현상입니다. (시스템 성능이 급격히 저하됨)
 - 워킹 셋을 유지하거나 페이지 부재 빈도(PFF)를 조절, 프레임 제공으로 방지할 수 있습니다.

답: 3번
'페이지 교환 시간'이 '프로세스 수행 시간'보다 더 커질 때 스레싱이 발생한다. 보기는 반대로 되어있다.

 

67. 다음 C언어 프로그램이 실행되었을 때의 결과는?

#include <stdio.h> 
int main(void) { 
     int n = 4; 
     int *pt = NULL; 
     pt = &n; 
     printf("%d", &n + *pt - *&pt + n); 
     return 0; 
}

① 0

② 4

③ 8

④ 12

     int n = 4; 
→ n의 초기값 4

     int *pt = NULL; 
→ *pt가 가리키는 값 NULL

     pt = &n; 
→ pt 는 n의 주소를 가진다.

     printf("%d", &n + *pt - *&pt + n); 
→ &n + *pt - *&pt + n
주소 + pt가 가리키는 - pt가 가진 주소 + n의
※ 주소는 주소끼리, 값은 값끼리
= 주소 - 주소 + 4 + 4
= 8

     return 0; 
→ 종료

※ & (주소 연산자): 변수가 저장된 메모리의 주소값을 가져옵니다.
※ * (참조 연산자): 포인터 변수가 가리키는 주소에 저장된 실제 값을 가져옵니다.
※ &와 &*의 관계: 이 둘은 서로 상쇄되는 관계입니다.
※ *&n : n의 주소에 가서 값을 가져와라 → 결국 n 그 자체입니다.

답: 3번

 

68. 은행가 알고리즘(Banker's Algorithm)은 교착상태의 해결 방법 중 어떤 기법에 해당하는가?

① Avoidance

② Detection

③ Prevention

④ Recovery

교착상태 : 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미

교착상태 발생의 필요 충분 조건
상호 배제 (Mutual Exclusion)
 - 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함

점유와 대기 (Hold and Wait)
 - 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함

비선점 (Non-Preemption)
 - 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함

환형 대기 (Circular Wait)
 - 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함

교착상태의 해결 방법
예방 기법 (Prevention)
 - 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착상태 발생의 네 가지 조건 중에서 어느 하나를 제거(부정)함으로써 수행됨
 - 자원의 낭비가 가장 심한 기법

회피 기법 (Aviodance)
 - 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘(Banker's Algorihm)이 사용됨
 - 은행원 알고리즘(Banker's Algorihm) : E. J. Dijkstra가 제안한 것으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래한 기법

발견 기법 (Detection)
 - 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것을 의미
 - 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용할 수 있음

회복 기법 (Recovery)
 - 교착상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것을 의미함

답: 1번

 

69. 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3 일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?

① 1, 2, 0

② 2, 4, 3

③ 1, 4, 2

④ 4, 1, 3

페이지 교체 알고리즘
OPT (OPTimal replacement, 최적 교체)
 - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
 - 벨레이디(Belady)가 제안한 것으로, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

FIFO (First In First Out)
 - 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
 - 이해하기 쉽고, 프로그래밍 및 설계가 간단함

※ 가장 먼저 들어온 1이 없어지고 4가 들어간다.

LRU (Least Recently Used)
 - 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
 - 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체함

LFU (Least Frequently Used)
 - 사용 빈도가 가장 적은 페이지를 교체하는 기법
 -활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용됨

SCR (Second Chance Replacement, 2차 기회 교체)
 - 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로, FIFO 기법의 단점을 보완하는 기법

NUR (Not Used Recently)
 - LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법
 - 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있음
 - 최근의 사용 여부를 확인하기 위해서 각 페이지마다 두 개의 비트, 즉 참조 비트와 변형 비트가 사용됨

답: 4번

 

70. TCP/IP 프로토콜에서 TCP가 해당하는 계층은?

① 데이터 링크 계층

② 네트워크 계층

③ 트랜스포트 계층

④ 세션 계층

OSI 7계층
물리 계층 (Physical) - Bit
 - 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의
 - 장비/프로토콜 : 리피터, 허브, 케이블

데이터 링크 계층 (Data Link) - Frame(프레임)
 - 두 개의 인접한 개방 시스템(노드와 노드)들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정과 유지 및 종료를 담당함
 - 송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능을 함
 - 프레임의 시작과 끝을 구분하기 위한 프레임의 동기화 기능을 함
 - 오류의 검출과 회복을 위한 오류 제어 기능을 함
 - 장비/프로토콜 : 브리지, 스위치, MAC 주소

네트워크 계층 (Network) : 경로 선택, 논리적 주소(IP) 관리 - Packet(패킷)
 - 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 함
 - 네트워크 연결을 설정, 유지, 해제하는 기능을 함
 - 경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행
 - 장비/프로토콜 : 라우터, IP, ICMP, ARP

전송 계층 (Transport)  Segment
 - 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템(End-to-End) 간에 투명한 데이터 전송을 가능하게 함
 - 종단 시스템(End-to-End) 간의 전송 연결 설정, 데이터 전송, 연결 해제 기능을 함
 - 주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어를 수행함
 - 장비/프로토콜 : TCP, UDP, 게이트웨이

세션 계층 (Session) - Message / Data
 - 송수신 측 간의 관련성을 유지하고 대화 제어를 담당함
 - 대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능을 함
 - 장비/프로토콜 : 체크포인트(동기점)

표현 계층 (Presentation) - Message / Data
 - 응용 계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 함
 - 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층
 - 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포캣) 변환, 문맥 관리 기능을 함
 - 장비/프로토콜 : 암호화, 압축 형식

응용 계층 (Application) - Message / Data
 - 사용자(응용 프로그램)가 OSI 환경에 접근할 수 있도록 서비스를 제공함
 - 장비/프로토콜 : HTTP, FTP, SMTP, SNMP

답: 3번

 

71. 다음 C언어 프로그램의 결과로 옳은 것은?

#include <stdio.h> 
main() { 
     int a = 3, b = 4, c = 5; 
     int r1, r2, r3; 
     r1 = a < 4 && b <= 4; 
     r2 = a > 3 || b <= 5; 
     r3 = !c; 
     printf("%d", r1 - r2 + r3); 
}

① 0

② 1

③ 2

④ 3

    int a=3, b=4, c=2;
    int r1, r2, r3;
→ 초기값 정의 (r1, r2, r3은 빈값)

    r1 = a < 4 && b <= 4;
→ a < 4 인지 확인. 3 < 4 이므로 참. 1값 반환
→ && (and) 이므로 다음도 확인한다. (뒤에 값이 거짓이면 거짓이되니까)
→ b <= 4 인지 확인. 4 <= 4 이므로 참. 1값 반환
→ r1 = 1값 대입

|| (or) 이므로, c는 확인할 필요 없다. (뒤에 값이 거짓이어도 참이니까)


    r2 = (a > 3) || (b <= 5);
→ a > 3 인지 확인. a > 3 이므로 거짓. 0값 반환
|| (or) 이므로,  다음도 확인한다. (뒤에 값이 참이면 참이되니까)
→ b <= 5 인지 확인. 4 <= 5 이므로 참. 1값 반환
→ r2 = 1값 대입

    r3 = !c;
→ !c 인지 확인. c = 5 참이므로 ! 해서 0값 1값 반환
(c언어에서 0이 아닌 모든 값은 참으로 간주)

    printf("%d", r1 - r2 + r3);
→ r1 - r2 + r3 = 1 - 1 + 0
 = 0

    return 0;
→ 종료

답: 1번

 

72. UNIX 시스템에서 파일의 권한 모드 설정에 관한 명령어는?

① cp

② chmod

③ cat

④ ls

UNIX / LUNUS 기본 명령어
cat : 파일 내용 출력
ls : 디렉터리 목록
cp : 파일 복사
rm : 파일 삭제
find : 파일 검색
chdir(cd) : 디렉터리 이동

chmod : 파일 권한(permission) 변경
chown : 파일 소유자 변경
umask : 기본 권한 마스크

fork : 프로세스 복제, 자식 프로세스 생성
exec : 현재 프로세스를 새 프로그램으로 대체
wait : 자식 프로세스 종료 대기
fsck : 파일 시스템 검사 및 복구

mount : 파일 시스템 연결
umount : 파일 시스템 해제
uname : 시스템 정보 출력

답: 2번

 

73. UNIX에 대한 설명으로 틀린 것은?

① 상당 부분 C 언어를 사용하여 작성되었으며, 이식성이 우수하다.

② 사용자는 하나 이상의 작업을 백그라운드에서 수행할 수 있어 여러 개의 작업을 병행 처리할 수 있다.

③ 쉘(Shell)은 프로세스 관리, 기억장치 관리, 입출력 관리 등의 기능을 수행한다.

④ 두 사람 이상의 사용자가 동시에 시스템을 사용할 수 있어 정보와 유틸리티들을 공유하는 편리한 작업 환경을 제공한다.

UNIX
 - 1960년대 AT&T 벨(Bell) 연구소, MIT, General Electric이 공동 개발한 운영체제
 - 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템(Open System)
 - 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
 - 크기가 작고 이해하기가 쉽다.
 - 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원한다.
 - 많은 네트워킹 기능을 제공하므로 통신망(Network) 관리용 운영체제로 적합하다.
 - 트리 구조의 파일 시스템을 갖는다.
 - 전문적인 프로그램 개발에 용이하다.
 - 다양한 유틸리티 프로그램들이 존재한다.

UNIX 시스템의 구성
커널(Kernel)
 - UNIX의 가장 핵심적인 부분
 - 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행
 - 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.
 - 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행

쉘(Shell)
 - 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
 - 시스템과 사용자 간의 인터페이스를 담당한다.
 - DOS의 COMMAND.COM과 같은 기능을 수행한다.
 - 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가 가능하다.
 - 파이프라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있다.
 - 공용 Shell(Bourne Shell, C Shell, Korn Shell)이나 사용자 자신이 만든 Shell을 사용할 수 있다.

Utility Profram (유틸리티 프로그램)
 - 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용한다.
 - DOS에서의 외부 명령어에 해당된다.
 - 유틸리티 프로그램에는 에디터, 컴파일러, 인터프리터, 디버거 등이 있다.

답: 3번

 

74. 빈 기억공간의 크기가 20KB, 16KB, 8KB, 40KB 일 때 기억장치 배치 전략으로 "Best Fit"을 사용하여 17KB의 프로그램을 적재할 경우 내부 단편화의 크기는 얼마인가?

① 3KB

② 23KB

③ 64KB

④ 67KB

내부 단편화 : 공간에 프로그램을 넣고 남아서 버려지는 빈칸을 말합니다.
※ 계산: 선택된 공간(20KB) - 프로그램 크기(17KB) = 3KB

기억장치 관리 - 배치(Placement) 전략
최초 적합 (First Fit) : 프로그램 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 적합 (Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치시키는 방법
최악 적합 (Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

답: 1번

 

75. 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 4개의 Subnet으로 나누고 IP Subnet-zero를 적용했다. 이 때 Subnetting된 네트워크 중 4번째 네트워크의 4번째 사용 가능한 IP는 무엇인가?

① 192.168.1.192

② 192.168.1.196

③ 192.168.1.195

④ 192.168.1.198

단위 구하기: 256을 나눌 개수(4)로 나눕니다.
 - 256 / 4 = 64

시작점 찾기: 4번째 네트워크는 앞의 3개(64개씩 3번)를 건너뛰고 시작합니다.
 - 64 x 3 = 192

네트워크 주소: 192입니다.

n번째 사용 가능한 IP: 네트워크 주소 + n을 합니다.
 - 192 + 4 = 196

답: 3번

 

76. 다음 C언어 프로그램에서 밑줄 친 부분(la && lb)과 동일한 의미를 가지는 것은 어떤 것인가?

#include <stdio.h>
main( ) {
     int a, b;
     for (a = 0; a < 2; a++)
          for (b = 0; b < 2; b++)
               printf("%d", !a && !b);
}

① !a || !b

② !(a || b)

③ a && b

④ a || b

!a && !b

※ 법칙 1: !A && !B  !(A || B)
※ 법칙 2: !A || !B → !(A && B)

답: 2번
법칙을 몰라도 대입해보면 풀 수 있다.

 

77. UNIX에서 새로운 프로세스를 생성하는 명령어는?

① ls

② cat

③ fork

④ chmod

UNIX / LUNUS 기본 명령어
cat : 파일 내용 출력
ls : 디렉터리 목록
cp : 파일 복사
rm : 파일 삭제
find : 파일 검색
chdir(cd) : 디렉터리 이동

chmod : 파일 권한(permission) 변경
chown : 파일 소유자 변경
umask : 기본 권한 마스크

fork : 프로세스 복제, 자식 프로세스 생성
exec : 현재 프로세스를 새 프로그램으로 대체
wait : 자식 프로세스 종료 대기
fsck : 파일 시스템 검사 및 복구

mount : 파일 시스템 연결
umount : 파일 시스템 해제
uname : 시스템 정보 출력

답: 3번

 

78. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는? 

#include <stdio.h> 
struct st { 
     int a; 
     int c[10]; 
}; 
int main(int argc, char *argv[]) { 
     int i = 0; 
     struct st ob1; 
     struct st ob2; 
     ob1.a = 0; 
     ob2.a = 0; 
     for (i = 0; i < 10; i++) {
          ob1.c[i] = i; 
          ob2.c[i] = ob1.c[i] + i; 
     }
     for (i = 0; i < 10; i = i + 2) { 
          ob1.a = ob1.a + ob1.c[i]; 
          ob2.a = ob2.a + ob2.c[i]; 
     } 
     printf("%d", ob1.a + ob2.a); 
     return 0; 
}

① 30

② 60

③ 80

④ 120

struct st { 
     int a; 
     int c[10]; 
}; 
→ 초기값 설정

int main(int argc, char *argv[]) { 
     int i = 0; 
     struct st ob1; 
     struct st ob2; 
     ob1.a = 0; 
     ob2.a = 0; 
→ 초기값 설정

     for (i = 0; i < 10; i++) {
          ob1.c[i] = i; 
          ob2.c[i] = ob1.c[i] + i; 
     }
 

※ ob1.c[i] = i 는 i값을' ob1.c[i]'에 대입한다고 생각

     for (i = 0; i < 10; i = i + 2) { 
          ob1.a = ob1.a + ob1.c[i]; 
          ob2.a = ob2.a + ob2.c[i]; 
     } 
→  i = i + 2 : 짝수 인덱스 값만 가져온다.
→ ob1.a = 0 + 2 + 4 + 6 + 8 = 20
→ ob2.a = 0 + 4 + 8 +12 + 16 = 40

     printf("%d", ob1.a + ob2.a); 
→ 20 + 40 = 60

답: 2번

 

79. 개발 환경 구성을 위한 빌드(Build) 도구에 해당하지 않는 것은?

① Ant

② Kerberos

③ Maven

④ Gradle

하드웨어 환경
클라이언트 (Client): 사용자가 사용하는 PC, 스마트폰 등 (요청을 보내는 기기)
웹 서버 (Web Server): 클라이언트의 요청을 받아 정적 콘텐츠(HTML, 이미지 등)를 제공합니다. (예: Apache, Nginx)
WAS (Web Application Server): 동적인 데이터를 처리하고 로직을 수행합니다. 미들웨어 역할을 하며 DB와 연결됩니다. (예: Tomcat, Jeus)
데이터베이스 서버 (DB Server): 데이터를 저장하고 관리하는 서버입니다. (예: Oracle, MySQL 설치 장비)
파일 서버 (File Server): 대용량 하드 디스크를 장착하여 공유 파일을 저장하는 서버입니다.

소프트웨어(SW) 환경
운영체제(OS): 하드웨어와 소프트웨어 자원을 효율적으로 관리하는 기본 소프트웨어입니다. (예: Windows, Linux, UNIX)
미들웨어(Middleware): 운영체제와 애플리케이션 사이에서 매개 역할을 하는 소프트웨어입니다. (예: WAS도 미들웨어의 일종)
DBMS: 데이터베이스를 관리하는 소프트웨어 시스템입니다. (예: Oracle, MySQL 소프트웨어 자체)
개발 도구: 개발자가 직접 사용하는 도구들입니다.
 - IDE(통합 개발 환경): 코드 작성, 컴파일, 디버깅을 한 번에 하는 도구 (예: Eclipse, VS Code, IntelliJ)
 - 빌드 도구: 작성한 코드를 배포 가능한 형태로 변환하는 도구 (예: Ant, Maven, Gradle)
 - 형상 관리 도구: 버전 관리를 위한 도구 (예: Git, SVN)

답: 2번

 

80. 다음 Python 프로그램이 실행되었을 때, 실행 결과는? 

a = 100 
list_data = ['a', 'b', 'c'] 
dict_data = {'a': 90, 'b': 95} 
print(list_data[0]) 
print(dict_data['a'])

a = 100
→ a의 초기값 100

list_data = ['a', 'b', 'c']
→ data 의 문자 리스트

※ 'a' : a라는 문자. 위의 a값과는 다른 값이다

dict_data = {'a': 90, 'b': 95}
※ 딕셔너리(Key:Value) : 키 값으로 값을 호출할 수 있다.
→ 'a' 라는 키 값을 넣으면, 90이라는 값을 호출할 수 있다.
→ 'b' 라는 키 값을 넣으면, 95이라는 값을 호출할 수 있다.

print(list_data[0])
→ 0인덱스에 들어있는 a 문자값 호출
= a

print(dict_data['a'])
→ 'a' 키 값을 넣었고, 그에 맞는 90이라는 값이 호출 됨
= 90

답: 1번

정보처리기사 필기 기출문제
24년 3회 1과목 2과목 3과목 4과목 5과목
24년 2회 1과목 2과목 3과목 4과목 5과목
24년 1회 1과목 2과목 3과목 4과목 5과목
23년 3회 1과목 2과목 3과목 4과목 5과목
23년 2회 1과목 2과목 3과목 4과목 5과목
23년 1회 1과목 2과목 3과목 4과목 5과목