CS/정보처리기사

정보처리기사 기출문제 풀이 3

코딩 펭귄 2022. 2. 20. 16:59

2021년08월14일

소스코드 정적 분석(Static Analysis)에 대한 설명으로 틀린 것은?

  1. 소스 코드를 실행시키지 않고 분석한다.
  2. 코드에 있는 오류나 잠재적인 오류를 찾아내기 위한 활동이다.
  3. 하드웨어적인 방법으로만 코드 분석이 가능하다.
  4. 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있다.

[문제 해설]

소스코드 정적 분석

  • 프로그램을 실행시키지 않고 소스를 분석하는 방법
  • 코드 내에 존재하는 보안 취약점, 잠재적 결함, 위험 등을 발견 가능
  • 규칙과 흐름에 맞게 코드가 올바르게 작성되어 있는지 점검함

정적 분석 도구

도구 설명 지원 환경
pmd 소스 코드에 대한 미사용 변수, 최적화되지 않은 결함을 유발할 수 있는 코드 검사 Linux, Windows
cppcheck C/C++ 코드에 대한 메모리 누수, 오버플로 분석 Windows
SonarQube 중복 코드, 복잡도, 코딩 설계 등을 분석 Cross-Platform
checkstyle 자바 코드 표준 검사, 다양한 개발도구에 통합 사용 가능 Cross-Platform
ccm 다양한 언어의 복잡도 분석 Cross-Platform
cobertuna 자바 언어의 소스코드 복잡도 분석 및 테스트 커버리지 측정 Cross-Platform

 

2021년08월14일

다음 트리에 대한 중위 순회 운행 결과는?

  1. ABDCEF
  2. ABCDEF
  3. DBECFA
  4. DBAECF

[문제 해설]

이진트리의 운행법

  1. 전위(Preorder) 운행
    Root → Left → Right
  2. 중위(Inorder) 운행
    Left → Root → Right
  3. 후위(Postorder) 운행
    Left → Right → Root

※ Root를 기준으로 왼쪽 뿌리 : Left, 오른쪽 뿌리 : Right

 

2020년08월22일

다음 트리의 차수(degree)는?

  1. 2
  2. 3
  3. 4
  4. 5

[문제 해설]

노드의 차수 : 한 노드가 가진 서브트리의 수 (ex. B의 차수 : 3, F의 차수 : 2)

트리의 차수 : 트리 노드의 차수 중 최대 차수 

 

2020년09월26일

UNIX SHELL 환경 변수를 출력하는 명령어가 아닌 것은?

  1. configenv
  2. printenv
  3. env
  4. setenv

[문제 해설]

환경 변수 관련 UNIX SHELL 명령어

  • env : bah에서 환경 변수를 조회하거나 등록하는 명령어로 시스템에 등록된 환경 변수 출력 가능
  • printenv : 환경 변수 이름의 값을 표시
  • setenv : C-Shell에서 사용되는 명령어로 변수를 설정

 

2020년09월26일

운영체제에서 커널의 기능이 아닌 것은?

  1. 프로세스 생성, 종료
  2. 사용자 인터페이스
  3. 기억 장치 할당, 회수
  4. 파일 시스템 관리

[문제 해설]

커널(kernel) : 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분, 소프트웨어와 하드웨어 간의 커뮤니케이션을 관리하는 프로그램

 

커널의 기능

  1. 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지 추적
  2. 프로세스 관리 : 어느 프로세스가 CPU를 언제, 얼마나 사용할지를 결정
  3. 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할 수행
  4. 시스템 호출 및 보안 : 프로세스의 서비스 요청 수신

쉘(shell) : 사용자와 운영체제 간에 대화를 가능하게 해 주는 명령어 해석기 역할로 사용자 인터페이스를 담당

 

사용자 명령 수신 순서

사용자(명령) → 쉘(해석) → 커널(명령 수행 후 결과 전송) → 쉘(해석) → 사용자(결과 확인)

 

2020년06월06일

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

  1. Avoidance
  2. Detection
  3. Prevention
  4. Recovery

[문제 해설]

교착 상태 해결 방법

  • Prevention(예방) : 교착 상태를 유발하는 4가지 조건 무력화
    • 상호 배제 : 독점적으로 사용할 수 있는 자원을 없앰
    • 점유와 대기 : 프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 함
    • 비선점 : 모든 자원을 빼앗을 수 있도록 만듦
    • 환형 대기 : 프로세스를 한 줄로 길게 늘어트림
  • Avoidance(회피) : 교착 상태가 발생하지 않는 수준으로 자원 할당
  • Detection(탐지) : 자원 할당 그래프를 이용
  • Recovery(복구) : 교착 상태를 검출한 후 해결

 

은행원 알고리즘: 안전 상태를 유지할 수 있는 요구만을 수락하고, 불안전 상태를 초래할 사용자의 요구는 만족할 수 있을 때까지 거절함

  • 안전 상태 : 시스템이 교착 상태를 일으키지 않으면서 각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태로 안전 순서열이 존재하는 상태
  • 불안전 상태 : 안전 순서열이 존재하지 않는 상태로 교착 상태이기 위한 필요 조건

 

2020년08월22일

HRN 방식으로 스케줄링 할 경우, 입력된 작업이 다음과 같을 때 처리되는 작업 순서로 옳은 것은?

  1. A→B→C→D
  2. A→C→B→D
  3. D→B→C→A
  4. D→A→B→C

[문제 해설]

HRN(Higest Response ratio Next; 비선점 스케줄링) : 짧은 작업에 유리한 SJF의 단점을 개선한 기법으로 각 작업의 우선순위로 서비스하는 스케줄링

 

HRN 방식의 우선 순위 산정 공식 : (대기 시간 + 서비스 시간) / 서비스 시간

→ 값이 클수록 우선 순위가 높음

 

2021년08월14일

다음 중 페이지 교체(Page Replacement)알고리즘이 아닌 것은?

  1. FIFO(First-In-First-Out)
  2. LUF(Least Used First)
  3. Optimal
  4. LRU(Least Recently Used)

[문제 해설]

페이지 교체 알고리즘 종류

  • OPT(Optimal) : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
  • FIFO(First In First Out) : 가장 처음 들어온 페이지 교체
  • LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지 교체
  • LFU(Least Frequently Used) : 참조 횟수가 가장 적은 페이지 교체
  • MFU(Most Frequently Used) : 참조 횟수가 가장 많은 페이지 교체
  • NUR(Not Used Recently) : 최근에 사용하지 않은 페이지 교체

 

2021년08월14일

구글의 구글 브레인 팀이 제작하여 공개한 기계 학습(Machine Leaming)을 위한 오픈소스 소프트웨어 라이브러리는?

  1. 타조(Tajo)
  2. 원 세그(One Seg)
  3. 포스퀘어(Foursquare)
  4. 텐서플로(TensorFlow)

[문제 해설]

  1. 타조(Tajo) : 하둡 기반 데이터웨어하우스 시스템으로 하둡의 빅데이터를 분석할 때 맵리듀스를 이용하지 않고 SQL을 사용하여 하둡 분산 파일 시스템 파일을 바로 읽어내는 기술 
  2. 원 세그(One Seg) : 일본과 브라질 등에서 상용 중인 휴대 이동 방송 기술
  3. 포스퀘어(Foursquare) : 위치 기반 소셜 네트워크 서비스
  4. 텐서플로(TensorFlow) : 구글에서 2015년에 오픈 소스로 공개한 기계학습 라이브러리로 python을 활용하여 연산 처리 작성 가능

 

2020년09월26일

SoftTech사에서 개발된 것으로 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구는?

  1. SREM
  2. PSL/PSA
  3. HIPO
  4. SADT

[문제 해설]

요구사항 분석을 위한 자동화 도구

  1. SREM(Software Requirements Enginering Methodology) :  TRW사가 우주 국방 시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 것으로 RSL과 REVS를 사용하는 자동화 도구
    • RSL(Requirement Statement Language) : 요소, 속성, 관계, 구조를 기술하는 요구사항 기술 언어
    • REVS(Requirement Engineering and Validation System) : RSL로 기술된 요구사항들을 자동으로 분석하여 요구사항 분석 명세서를 출력하는 요구사항 분석기
  2. PSL/PSA : 미시간 대학에서 개발한 것으로 PSL과 PSA를 사용하는 자동화도구
    • PSL(Problem Statement Language) : 문제(요구사항) 기술 언어
    • PSA(Problem Statement Analyze) : PSL로 기술한 요구사항을 자동으로 분석하여 다양한 보고서를 출력하는 문제 분석기
  3. HIPO(Hierarchy Input Process output) : 시스템의 분석 및 설계나 문서화 시에 사용되는 기법으로 시스템 실행 과정의 입력, 처리, 출력의 기능을 나타냄, 하향식 소프트웨어 개발을 위한 문서화 도구
  4. SADT(Structured Analysis and Design Technique) : SoftTech 사에서 개발한 것으로 시스템의 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위해 널리 이용되어 온 구조적 분석 및 설계 도구, 구조적 요구 분석을 위해 블록 다이어그램을 채택