Certificate/정보처리기사 실기

정처기 실기 모의고사 7회 정리

웨일파도 2024. 4. 16. 11:07
반응형

1. 오픈스택

오픈스택(OpenStack)은 클라우드 컴퓨팅을 위한 오픈소스 소프트웨어 플랫폼입니다. 다양한 가상화 기술을 지원하며, 대규모 클라우드 환경에서 서버, 스토리지, 네트워킹 등의 자원을 관리할 수 있도록 도와줍니다. 주로 인프라로서의 서비스(IaaS)를 제공하는 데 사용되며, 사용자는 이 플랫폼을 사용하여 자신만의 가상 머신을 생성하고 관리할 수 있습니다.

 

2. 소프트웨어 아키텍처 4+1 뷰

유스케이스 뷰

논리 뷰

프로세스 뷰

구현 뷰

배포 뷰

 

3. 해시 함수(Hash Function)

해시 함수는 임의의 길이의 데이터(입력)를 고정된 길이의 비트열(해시 값)로 매핑하는 함수입니다. 해시 함수는 데이터 저장 및 검색에서 효율을 높이기 위해 주로 사용되며, 컴퓨터 과학의 여러 영역에서 중요한 역할을 합니다. 특히, 데이터베이스, 암호학, 네트워킹 등에서 널리 사용됩니다.

해시 함수의 주요 특징

  1. 결정성(Deterministic): 동일한 입력에 대해서 항상 같은 해시 값을 반환합니다.
  2. 효율성(Efficient): 해시 값을 계산하는 과정이 빠르고 효율적이어야 합니다.
  3. 충돌 최소화(Minimal Collisions): 서로 다른 입력값이 같은 해시 값을 갖는 경우를 충돌이라고 하는데, 좋은 해시 함수는 이러한 충돌의 확률을 최소화해야 합니다.
  4. 일방향성(Pre-image Resistance): 해시 값으로부터 원본 데이터를 찾아내는 것이 계산상으로 불가능해야 합니다. 이는 특히 암호학적 해시 함수에서 중요한 특성입니다.
  5. 데이터 민감성(Sensitivity to Input): 입력 데이터에 아주 작은 변화가 발생해도 해시 값에는 큰 변화가 나타나야 합니다(avalanche effect).

해시 함수의 주요 용도

  1. 데이터 검색: 해시 테이블 구현에 사용되어 빠른 데이터 검색, 삽입, 삭제를 가능하게 합니다.
  2. 데이터 무결성 검사: 소프트웨어 또는 파일이 원본 그대로인지 확인하는 데 사용됩니다. 예를 들어, 다운로드한 파일이 원본 파일과 동일한지 확인하기 위해 사용될 수 있습니다.
  3. 보안: 암호화된 통신에서 데이터의 무결성과 인증을 보장하기 위해 사용됩니다. 예를 들어, 디지털 서명, 메시지 인증 코드(MAC) 생성에 필수적입니다.
  4. 난수 생성: 일정한 패턴 없이 보이는 난수를 생성하는 데 해시 함수가 활용될 수 있습니다.

암호학적 해시 함수의 예

  • MD5: 128비트 해시 값을 생성하지만, 보안상의 취약점으로 인해 현재는 권장되지 않습니다.
  • SHA-1: 160비트 해시 값을 생성하며, MD5와 마찬가지로 취약점이 발견되어 보안 용도로는 권장되지 않습니다.
  • SHA-256: SHA-2 패밀리의 일부로, 256비트 해시 값을 생성하며 현재 널리 사용되고 있습니다.
  • SHA-3: 최신 해시 알고리즘으로, 다양한 길이의 출력을 지원합니다.

해시 함수는 이러한 다양한 형태와 용도로 컴퓨터 과학 전반에 걸쳐 중요한 역할을 합니다.

 

4. 문장 커버리지(=구문 커버리지)

프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지 테스트

 

5. SQL문

# LIKE 문법
컬럼 LIKE 패턴

 

6. 파이썬 코드

 

7. IPSec

데이터 암호화 전송을 위한 주요 기술 중 하나로,

IP계층에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 보안 서비스를 제공하는 터널링 프로토콜

 

8. 쿼츠 CRON 표현식

[초분시일 월요연]

초 / 분 / 시간 / 일 / 월 / 요일 / 연도

 

9. 데이터베이스의 고립화 수준(Isolation Level)

다른 트랜잭션이 현재 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도

 

10. C언어 코드

 

11. SQL문

 

12. 대칭 키 암호화 방식

대칭 키 암호화 방식은 암호화와 복호화에 같은 키를 사용하는 암호화 방식입니다. 이 방식은 통신하는 양쪽 모두가 동일한 비밀 키를 공유하고 있어야 하며, 이 키를 안전하게 교환하고 관리하는 것이 매우 중요합니다.

대칭 키 암호화의 주요 특징

  1. 효율성: 대칭 키 암호화는 비대칭 키 암호화 방식보다 계산이 빠르고 효율적입니다. 따라서 대량의 데이터를 빠르게 암호화하고 복호화해야 할 때 자주 사용됩니다.
  2. 키 관리: 동일한 키를 사용하기 때문에 키 관리가 간단할 수 있지만, 키의 안전한 분배와 저장이 중요한 과제입니다. 키가 유출되면 암호화된 데이터가 노출될 위험이 있습니다.
  3. 보안성: 사용하는 알고리즘의 강도와 키 길이에 따라 보안성이 결정됩니다. 충분히 긴 키와 강력한 알고리즘을 사용하면 매우 안전할 수 있습니다.

대칭 키 암호화 알고리즘의 예

  • AES (Advanced Encryption Standard): 현재 가장 널리 사용되는 대칭 키 암호화 표준으로, 128, 192, 256비트의 키 길이를 지원합니다. 강력한 보안성 때문에 정부 기관과 금융 기관 등에서 많이 사용됩니다.
  • DES (Data Encryption Standard): 1970년대에 개발된 알고리즘으로, 56비트 키를 사용합니다. 현재는 취약한 보안성 때문에 사용이 권장되지 않습니다.
  • 3DES (Triple DES): DES의 보안성 문제를 보완하기 위해 데이터를 세 번 암호화하는 방식입니다. DES보다는 안전하지만, AES에 비해 느리고 보안성이 낮아 점차 사용이 감소하고 있습니다.
  • RC4: 스트림 암호 중 하나로, 네트워크에서 데이터를 실시간으로 암호화하는 데 유용합니다. 과거에는 SSL/TLS에서 사용되었지만, 취약점이 발견되어 현재는 사용을 권장하지 않습니다.

사용 사례

  • 네트워크 통신: VPN 터널과 같은 보안 통신에서 데이터를 보호하기 위해 대칭 키 암호화가 사용됩니다.
  • 파일 암호화: 디스크 암호화 또는 파일 시스템 암호화에도 널리 사용됩니다.
  • 모바일 및 무선 통신: 모바일 기기와 무선 네트워크에서 데이터 보호를 위해 사용됩니다.

대칭 키 암호화 방식은 그 실행 속도와 효율성 때문에 널리 사용되며, 키의 안전한 관리가 중요한 보안 요소로 남아 있습니다.

 

13. 자바 코드

 

14. SQL문

 

15. DBMS특징

무결성 / 일관성 / 회복성/ 보안성 / 효율성

 

16. UML 다이어그램 - 구조적(정적) 다이어그램

클래스 / 객체 / 컴포넌트 / 배치 / 복합체 구조 / 패키지

 

17. TCP 흐름 제어 기법 & 정기-대기 기법

 

18. 비선점형 스케줄링 알고리즘 유형

비선점형 스케줄링 알고리즘은 일단 프로세스에 CPU를 할당하면, 그 프로세스가 CPU를 사용을 완료하거나 입출력 요청과 같은 대기 상태로 전환될 때까지 CPU 사용을 방해받지 않는 스케줄링 방식입니다. 이러한 방식은 프로세스가 중간에 중단되지 않으므로 컨텍스트 스위칭의 비용이 줄어들며, 구현이 상대적으로 단순합니다. 주로 간단하거나 시간에 민감하지 않은 작업에 적합합니다.

비선점형 스케줄링 알고리즘의 주요 유형

  1. 퍼스트 컴 퍼스트 서브드 (FCFS, First Come First Served)
    • 가장 간단한 스케줄링 알고리즘으로, 먼저 요청을 한 프로세스에게 먼저 CPU를 할당합니다.
    • 프로세스가 준비 큐에 도착한 순서대로 처리됩니다.
    • 처리 시간이 긴 프로세스가 먼저 도착하면 짧은 프로세스가 긴 대기 시간을 갖게 되는 "컨보이 효과(Convoy Effect)"를 경험할 수 있습니다.
  2. 최단 작업 우선 (SJF, Shortest Job First)
    • 각 프로세스의 다음 CPU 버스트 시간을 예측하여 가장 짧은 것부터 처리하는 방식입니다.
    • 평균 대기 시간을 최소화하는 데 효과적이지만, 실제로 다음 CPU 사용 시간을 정확히 예측하기 어렵다는 단점이 있습니다.
    • 매우 짧은 작업이 계속해서 들어오면 긴 작업은 기아 현상(Starvation)을 겪을 수 있습니다.
  3. 우선순위 기반 (Priority Scheduling)
    • 각 프로세스에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 CPU를 할당합니다.
    • 우선순위는 프로세스의 중요도나 요구 사항에 따라 결정될 수 있습니다.
    • 낮은 우선순위의 프로세스는 높은 우선순위의 프로세스가 계속 들어올 경우 기아 현상에 빠질 수 있습니다.
  4. HRN(Highest Response Ratio Next) 스케줄링은 CPU 스케줄링 알고리즘의 일종으로, 각 프로세스의 대기 시간과 실행 시간을 고려하여 우선순위를 계산합니다. 이 알고리즘은 기아 현상을 방지하고 공평성을 높이는 것을 목표로 합니다.HRN 스케줄링에서는 프로세스가 CPU를 할당받을 때, 다음과 같은 우선순위 비율을 계산하여 가장 높은 비율을 가진 프로세스에게 CPU를 할당합니다:여기서:
    • 대기 시간(Waiting Time): 프로세스가 준비 큐에서 대기하고 있는 시간입니다.
    • 실행 시간(Burst Time): 프로세스가 CPU를 사용하여 실행을 완료하는 데 필요한 예상 시간입니다.
    예시 설명
    • A의 응답 비율: 1+04=1
    • B의 응답 비율: 1+51=6
    이 경우, B의 응답 비율이 더 높으므로 B에게 먼저 CPU가 할당됩니다.장점:
    • 공평성: 실행 시간이 긴 프로세스와 짧은 프로세스 모두를 고려하여, 대기 시간이 길어질수록 우선순위가 높아집니다. 이로 인해 짧은 프로세스에게 유리한 최단 작업 우선(SJF) 스케줄링의 단점을 일부 해결할 수 있습니다.
    • 기아 방지: 대기 시간이 길어지는 프로세스의 우선순위가 자동으로 증가하므로, 기아 현상을 방지할 수 있습니다.
    단점:
    • 계산 복잡성: 각 프로세스마다 응답 비율을 계산해야 하므로, 계산 비용이 높고 스케줄링 시 오버헤드가 증가할 수 있습니다.
    HRN 스케줄링은 공평성과 효율성을 동시에 고려하는 스케줄링 방법으로, 다양한 시스템에서 균형 잡힌 리소스 할당을 가능하게 합니다

19. 응집도 유형

우논시절 통순기

응집도(Cohesion)는 소프트웨어 공학에서 모듈 내부의 요소들이 얼마나 잘 결합되어 있는지를 나타내는 지표입니다. 응집도가 높을수록 모듈의 각 부분이 서로 밀접하게 관련되어 있어 모듈이 단일한 목적이나 기능을 잘 수행할 수 있습니다. 반대로 응집도가 낮은 모듈은 그 구성 요소들이 느슨하게 연결되어 있어 관리와 수정이 어렵습니다.

응집도는 일반적으로 다음과 같은 일곱 가지 유형으로 분류됩니다. 이들은 낮은 응집도에서 높은 응집도 순으로 배열됩니다.

  1. 우연적 응집도 (Coincidental Cohesion): 모듈 내의 구성 요소들이 논리적인 연관성이 거의 없이 우연히 묶여 있는 경우입니다. 이것은 모듈화의 가장 낮은 수준을 나타내며, 유지보수가 매우 어렵습니다.
  2. 논리적 응집도 (Logical Cohesion): 모듈이 비슷한 유형의 작업을 수행하지만 각 작업이 서로 다른 데이터를 사용하고 다른 시간에 실행될 수 있는 작업들을 그룹화할 때 발생합니다. 예를 들어, 다양한 종류의 보고서를 출력하는 기능을 한 모듈에서 처리하는 경우입니다.
  3. 시간적 응집도 (Temporal Cohesion): 모듈 내의 작업들이 특정 시간에 실행되어야 하는 관련 작업들을 그룹화할 때 나타납니다. 예를 들어, 프로그램 시작 시 로그인, 초기 설정 등을 수행하는 모듈이 이에 해당합니다.
  4. 절차적 응집도 (Procedural Cohesion): 모듈 내의 요소들이 특정 순서나 절차에 따라 실행되어야 할 때 나타나는 응집도입니다. 요소들이 특정 태스크를 수행하는 데 필요한 순서대로 배열됩니다.
  5. 통신적 응집도 (Communicational Cohesion): 모듈 내의 구성 요소들이 같은 데이터나 입력을 사용하여 작업을 수행할 때 나타납니다. 예를 들어, 같은 입력 데이터를 사용해 다양한 처리를 하는 함수들을 포함한 모듈이 이에 해당됩니다.
  6. 순차적 응집도 (Sequential Cohesion): 모듈 내의 한 요소의 출력이 다른 요소의 입력으로 사용될 때 나타나는 응집도입니다. 이는 강력한 응집도 유형으로, 모듈의 각 부분이 연속적으로 데이터를 처리합니다.
  7. 기능적 응집도 (Functional Cohesion): 모듈 내의 모든 요소들이 단일 명확한 기능을 수행하는 데 관련되어 있을 때 발생합니다. 이는 응집도의 가장 높은 수준으로, 모듈이 하나의 작업만을 전담하여 수행하므로 유지보수와 이해하기에 가장 이상적입니다.

응집도가 높을수록 모듈은 더 독립적이고 재사용 가능하며, 유지보수가 쉬워집니다. 소프트웨어 설계 시 가능한 한 높은 수준의 응집도를 달성하는 것이 목표가 됩니다.

 

20. 보안 암호화 관련 용어

SET

반응형