정보처리기사 기출문제 풀이 3
2021년08월14일
소스코드 정적 분석(Static Analysis)에 대한 설명으로 틀린 것은?
- 소스 코드를 실행시키지 않고 분석한다.
- 코드에 있는 오류나 잠재적인 오류를 찾아내기 위한 활동이다.
- 하드웨어적인 방법으로만 코드 분석이 가능하다.
- 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있다.
[문제 해설]
소스코드 정적 분석
- 프로그램을 실행시키지 않고 소스를 분석하는 방법
- 코드 내에 존재하는 보안 취약점, 잠재적 결함, 위험 등을 발견 가능
- 규칙과 흐름에 맞게 코드가 올바르게 작성되어 있는지 점검함
정적 분석 도구
도구 | 설명 | 지원 환경 |
pmd | 소스 코드에 대한 미사용 변수, 최적화되지 않은 결함을 유발할 수 있는 코드 검사 | Linux, Windows |
cppcheck | C/C++ 코드에 대한 메모리 누수, 오버플로 분석 | Windows |
SonarQube | 중복 코드, 복잡도, 코딩 설계 등을 분석 | Cross-Platform |
checkstyle | 자바 코드 표준 검사, 다양한 개발도구에 통합 사용 가능 | Cross-Platform |
ccm | 다양한 언어의 복잡도 분석 | Cross-Platform |
cobertuna | 자바 언어의 소스코드 복잡도 분석 및 테스트 커버리지 측정 | Cross-Platform |
2021년08월14일
다음 트리에 대한 중위 순회 운행 결과는?
- ABDCEF
- ABCDEF
- DBECFA
- DBAECF
[문제 해설]
이진트리의 운행법
- 전위(Preorder) 운행
Root → Left → Right - 중위(Inorder) 운행
Left → Root → Right - 후위(Postorder) 운행
Left → Right → Root
※ Root를 기준으로 왼쪽 뿌리 : Left, 오른쪽 뿌리 : Right
2020년08월22일
다음 트리의 차수(degree)는?
- 2
- 3
- 4
- 5
[문제 해설]
노드의 차수 : 한 노드가 가진 서브트리의 수 (ex. B의 차수 : 3, F의 차수 : 2)
트리의 차수 : 트리 노드의 차수 중 최대 차수
2020년09월26일
UNIX SHELL 환경 변수를 출력하는 명령어가 아닌 것은?
- configenv
- printenv
- env
- setenv
[문제 해설]
환경 변수 관련 UNIX SHELL 명령어
- env : bah에서 환경 변수를 조회하거나 등록하는 명령어로 시스템에 등록된 환경 변수 출력 가능
- printenv : 환경 변수 이름의 값을 표시
- setenv : C-Shell에서 사용되는 명령어로 변수를 설정
2020년09월26일
운영체제에서 커널의 기능이 아닌 것은?
- 프로세스 생성, 종료
- 사용자 인터페이스
- 기억 장치 할당, 회수
- 파일 시스템 관리
[문제 해설]
커널(kernel) : 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분, 소프트웨어와 하드웨어 간의 커뮤니케이션을 관리하는 프로그램
커널의 기능
- 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지 추적
- 프로세스 관리 : 어느 프로세스가 CPU를 언제, 얼마나 사용할지를 결정
- 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할 수행
- 시스템 호출 및 보안 : 프로세스의 서비스 요청 수신
쉘(shell) : 사용자와 운영체제 간에 대화를 가능하게 해 주는 명령어 해석기 역할로 사용자 인터페이스를 담당
사용자 명령 수신 순서
사용자(명령) → 쉘(해석) → 커널(명령 수행 후 결과 전송) → 쉘(해석) → 사용자(결과 확인)
2020년06월06일
은행가 알고리즘(Banker's Algorithm)은 교착상태의 해결 방법 중 어떤 기법에 해당하는가?
- Avoidance
- Detection
- Prevention
- Recovery
[문제 해설]
교착 상태 해결 방법
- Prevention(예방) : 교착 상태를 유발하는 4가지 조건 무력화
- 상호 배제 : 독점적으로 사용할 수 있는 자원을 없앰
- 점유와 대기 : 프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 함
- 비선점 : 모든 자원을 빼앗을 수 있도록 만듦
- 환형 대기 : 프로세스를 한 줄로 길게 늘어트림
- Avoidance(회피) : 교착 상태가 발생하지 않는 수준으로 자원 할당
- Detection(탐지) : 자원 할당 그래프를 이용
- Recovery(복구) : 교착 상태를 검출한 후 해결
은행원 알고리즘: 안전 상태를 유지할 수 있는 요구만을 수락하고, 불안전 상태를 초래할 사용자의 요구는 만족할 수 있을 때까지 거절함
- 안전 상태 : 시스템이 교착 상태를 일으키지 않으면서 각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태로 안전 순서열이 존재하는 상태
- 불안전 상태 : 안전 순서열이 존재하지 않는 상태로 교착 상태이기 위한 필요 조건
2020년08월22일
HRN 방식으로 스케줄링 할 경우, 입력된 작업이 다음과 같을 때 처리되는 작업 순서로 옳은 것은?
- A→B→C→D
- A→C→B→D
- D→B→C→A
- D→A→B→C
[문제 해설]
HRN(Higest Response ratio Next; 비선점 스케줄링) : 짧은 작업에 유리한 SJF의 단점을 개선한 기법으로 각 작업의 우선순위로 서비스하는 스케줄링
HRN 방식의 우선 순위 산정 공식 : (대기 시간 + 서비스 시간) / 서비스 시간
→ 값이 클수록 우선 순위가 높음
2021년08월14일
다음 중 페이지 교체(Page Replacement)알고리즘이 아닌 것은?
- FIFO(First-In-First-Out)
- LUF(Least Used First)
- Optimal
- 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)을 위한 오픈소스 소프트웨어 라이브러리는?
- 타조(Tajo)
- 원 세그(One Seg)
- 포스퀘어(Foursquare)
- 텐서플로(TensorFlow)
[문제 해설]
- 타조(Tajo) : 하둡 기반 데이터웨어하우스 시스템으로 하둡의 빅데이터를 분석할 때 맵리듀스를 이용하지 않고 SQL을 사용하여 하둡 분산 파일 시스템 파일을 바로 읽어내는 기술
- 원 세그(One Seg) : 일본과 브라질 등에서 상용 중인 휴대 이동 방송 기술
- 포스퀘어(Foursquare) : 위치 기반 소셜 네트워크 서비스
- 텐서플로(TensorFlow) : 구글에서 2015년에 오픈 소스로 공개한 기계학습 라이브러리로 python을 활용하여 연산 처리 작성 가능
2020년09월26일
SoftTech사에서 개발된 것으로 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구는?
- SREM
- PSL/PSA
- HIPO
- SADT
[문제 해설]
요구사항 분석을 위한 자동화 도구
- SREM(Software Requirements Enginering Methodology) : TRW사가 우주 국방 시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 것으로 RSL과 REVS를 사용하는 자동화 도구
- RSL(Requirement Statement Language) : 요소, 속성, 관계, 구조를 기술하는 요구사항 기술 언어
- REVS(Requirement Engineering and Validation System) : RSL로 기술된 요구사항들을 자동으로 분석하여 요구사항 분석 명세서를 출력하는 요구사항 분석기
- PSL/PSA : 미시간 대학에서 개발한 것으로 PSL과 PSA를 사용하는 자동화도구
- PSL(Problem Statement Language) : 문제(요구사항) 기술 언어
- PSA(Problem Statement Analyze) : PSL로 기술한 요구사항을 자동으로 분석하여 다양한 보고서를 출력하는 문제 분석기
- HIPO(Hierarchy Input Process output) : 시스템의 분석 및 설계나 문서화 시에 사용되는 기법으로 시스템 실행 과정의 입력, 처리, 출력의 기능을 나타냄, 하향식 소프트웨어 개발을 위한 문서화 도구
- SADT(Structured Analysis and Design Technique) : SoftTech 사에서 개발한 것으로 시스템의 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위해 널리 이용되어 온 구조적 분석 및 설계 도구, 구조적 요구 분석을 위해 블록 다이어그램을 채택