Certificate/정보처리기사 실기

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

웨일파도 2024. 4. 15. 10:38
반응형

1. 디지털 포렌식(Digital Forensics)

 

디지털 포렌식은 범죄 수사, 민사 소송, 또는 조사를 목적으로 디지털 기기에서 데이터를 수집하고 분석하는 과정입니다. 컴퓨터, 스마트폰, 서버 등의 디지털 저장 장치에서 정보를 복구하고, 그 정보가 어떻게 생성되고 변조되었는지를 확인하는 것을 포함합니다.

디지털 포렌식의 주요 단계는 다음과 같습니다:

  1. 수집: 데이터를 안전하고 정확하게 수집하기 위해, 기기의 물리적 및 논리적 이미징을 수행합니다.
  2. 보존: 수집된 데이터를 변형되지 않게 보호하며 보존하는 과정을 거칩니다. 이는 종종 데이터의 해시값을 계산하여 원본성을 확인하는 작업을 포함합니다.
  3. 분석: 수집된 데이터를 검토하고 의미 있는 정보를 찾기 위해 다양한 분석 도구와 기법을 사용합니다.
  4. 보고: 분석 결과를 명확하고 이해하기 쉬운 형태로 정리하여 법원, 조사 기관 또는 고객에게 보고합니다.

이 분야는 기술의 빠른 변화에 발맞춰 계속해서 발전하고 있으며, 법적인 증거를 제공하는 데 중요한 역할을 합니다. 디지털 포렌식 전문가들은 보안 사고의 원인을 밝혀내고, 범죄자를 추적하며, 데이터 유출 사고를 조사하는 등 다양한 상황에서 활약합니다.

 

 

2. 루트킷

 

루트킷은 컴퓨터 시스템에서 권한을 획득하거나 유지하기 위해 설계된 소프트웨어의 일종으로, 대개 악성 목적을 가지고 있습니다. 이러한 소프트웨어는 사용자나 시스템 관리자의 눈에 띄지 않게 자신을 숨기면서 시스템을 조작하거나 모니터링할 수 있는 깊은 수준의 접근 권한을 확보합니다.

 

 

3. 온프레미스(On-Premise)

 

"On-Premise"라는 용어는 주로 소프트웨어와 IT 인프라스트럭처의 배치 및 관리 방식을 설명할 때 사용됩니다. 이는 조직이 자체의 물리적 장소에 데이터 센터를 갖추고 그곳에서 서버, 스토리지 및 네트워킹 장비를 직접 운영하고 관리하는 방식을 의미합니다. 클라우드 기반 서비스가 제공하는 가상화 및 원격 접근과는 대조적으로, 온-프레미스 환경은 조직이 직접 하드웨어와 소프트웨어의 전체적인 관리와 유지보수 책임을 집니다.

온-프레미스 모델의 주요 특징은 다음과 같습니다:

  1. 제어와 보안: 조직이 IT 자산을 완전히 제어할 수 있어, 특히 민감한 데이터를 다루는 기업에게 중요한 보안 이점을 제공합니다. 데이터와 시스템이 외부 클라우드 서비스 제공업체가 아닌 자체 위치에 보관되므로 보안을 더욱 강화할 수 있습니다.
  2. 커스터마이제이션: 기업은 자신의 특정 요구에 맞게 시스템을 맞춤 설정할 수 있으며, 필요에 따라 하드웨어와 소프트웨어를 자유롭게 선택하고 조정할 수 있습니다.
  3. 일회성 비용: 온-프레미스 소프트웨어는 대개 일회성 구매 비용이 발생하며, 추가적인 라이선스 비용 없이 사용할 수 있습니다. 그러나 유지관리, 업데이트, 에너지 비용 등이 추가로 발생할 수 있습니다.
  4. 인터넷 의존성 감소: 온-프레미스 시스템은 인터넷 연결 없이도 작동할 수 있어, 인터넷 접속이 불안정하거나 사용할 수 없는 지역에서 유리할 수 있습니다.

온-프레미스 솔루션은 큰 초기 투자가 필요하고, 자체적으로 전문 기술 인력을 보유하고 있어야 하는 등의 단점도 있습니다. 따라서 조직의 규모, 예산, IT 운영에 대한 내부 능력, 그리고 보안 요구 사항을 고려하여 온-프레미스, 클라우드, 또는 둘의 혼합 형태인 하이브리드 접근 방식 중에서 선택해야 합니다.

 

 

4. 분석 자동화 도구

 

분석 자동화 도구 유형 중에서 "하위 CASE"와 "상위 CASE"는 컴퓨터 지원 소프트웨어 공학(CASE) 도구의 범주에 속합니다. 이들 도구는 소프트웨어 개발 과정을 효율화하고 표준화하는 데 사용됩니다. "상위 CASE"와 "하위 CASE"는 소프트웨어 개발의 다른 단계에 초점을 맞추며, 각각은 개발 프로세스의 특정 부분을 자동화하는 데 도움을 줍니다.

상위 CASE (Upper CASE)

상위 CASE 도구는 소프트웨어 개발의 초기 단계, 즉 요구 사항 수집과 분석, 시스템 설계에 중점을 둡니다. 이 도구들은 주로 다음과 같은 기능을 제공합니다:

  • 요구 사항 분석: 프로젝트의 요구 사항을 정의하고 문서화하는 데 도움을 줍니다.
  • 시스템 모델링: 다이어그램 및 모델을 사용하여 소프트웨어의 구조와 동작을 시각적으로 표현합니다. 예를 들어, UML(Unified Modeling Language) 다이어그램을 생성할 수 있습니다.
  • 설계 검증: 설계가 요구 사항을 충족하는지 확인하는 도구를 제공합니다.

상위 CASE 도구는 프로젝트의 설계와 계획 단계에서 중요한 역할을 하며, 이러한 초기 작업이 후속 개발 작업의 기반을 형성합니다.

하위 CASE (Lower CASE)

하위 CASE 도구는 소프트웨어 개발의 후반 단계에 초점을 맞추며, 코드 작성, 테스트 및 유지보수를 지원합니다. 이러한 도구는 다음과 같은 기능을 제공합니다:

  • 코드 생성: 설계 모델로부터 자동으로 코드를 생성할 수 있습니다. 이는 개발 시간을 줄이고 일관성을 유지하는 데 도움이 됩니다.
  • 테스트 자동화: 테스트 케이스 생성 및 실행을 자동화하여 버그를 찾고 수정하는 과정을 가속화합니다.
  • 유지보수 지원: 소프트웨어의 변경 및 업데이트를 관리하고 문서화하는 도구를 제공합니다.

하위 CASE 도구는 실제 개발 작업과 밀접하게 연결되어 있으며, 효율적인 코드 작성과 품질 관리에 중요한 역할을 합니다.

상위 CASE와 하위 CASE 도구를 함께 사용함으로써, 소프트웨어 개발 프로세스 전체를 통해 일관성과 효율성을 높일 수 있으며, 개발 과정에서의 오류를 줄이고 전반적인 프로젝트 관리를 강화할 수 있습니다. 이러한 도구들은 팀 간의 커뮤니케이션을 개선하고 프로젝트 문서를 일관되게 유지하는 데도 도움을 줍니다.

 

 

5. SQL문

'급여' 테이블에서 부서의 급여합계가 6000 이상인 부서, 급여합계를 출력하는 SQL문 작성

급여 정보를 저장하는 테이블과 그 테이블에서 급여합계가 6000 이상인 부서의 급여합계를 출력하는 SQL 쿼리를 작성하려면, 다음과 같이 GROUP BYHAVING 절을 사용할 수 있습니다. 여기서는 '급여' 테이블의 구조가 department 열과 salary 열을 포함하고 있다고 가정합니다.

SELECT department, SUM(salary) AS TotalSalary
FROM 급여
GROUP BY department
HAVING SUM(salary) >= 6000;

이 쿼리는 다음 단계로 동작합니다:

  1. FROM 급여: '급여' 테이블에서 데이터를 선택합니다.
  2. GROUP BY department: 결과를 부서별로 그룹화합니다.
  3. SUM(salary) AS TotalSalary: 각 부서의 급여합계를 계산하고, 이를 TotalSalary라는 이름의 열로 표시합니다.
  4. HAVING SUM(salary) >= 6000: 급여합계가 6000 이상인 그룹만을 결과에 포함시킵니다.

이 쿼리를 사용하면 각 부서의 급여합계 중에서 6000 이상인 것들만 선택하여 출력할 수 있습니다. 데이터베이스의 정확한 구조나 필요에 따라 쿼리를 조정할 수 있습니다.

 

 

6. 자바 코드

 

 

7. 사이트간 요청 위조(CSRF; Cross-Site Request Forgery)

사이트간 요청 위조(Cross-Site Request Forgery, CSRF)는 웹 보안 취약점의 일종으로, 공격자가 사용자의 브라우저를 이용하여 사용자가 의도하지 않은 행위를 수행하게 만드는 공격을 말합니다. 이 취약점은 사용자가 이미 어떤 웹 사이트(예: 온라인 뱅킹, 소셜 미디어 플랫폼 등)에 로그인한 상태에서 이루어질 수 있습니다.

CSRF 공격의 동작 방식

  1. 사용자 로그인: 사용자가 웹 사이트에 로그인하고, 로그인 세션을 유지합니다.
  2. 악성 링크 생성: 공격자는 악의적인 행동을 수행하는 요청을 내장한 이메일, 메시지 또는 웹페이지를 생성합니다.
  3. 요청 전송: 사용자가 그 링크를 클릭하면, 사용자의 브라우저는 공격자가 설정한 악의적인 행동(예: 비밀번호 변경, 자금 이체 등)을 요청합니다.
  4. 서버 실행: 웹 사이트 서버는 이 요청을 사용자의 유효한 요청으로 인식하고 실행합니다.

CSRF 공격의 특징

  • 사용자 무지의 이용: 사용자는 자신이 공격을 돕고 있음을 전혀 모르는 상태에서 공격이 이루어집니다.
  • 세션 하이재킹: 공격자는 사용자의 세션 쿠키를 직접 훔치지 않고도 요청을 위조할 수 있습니다.

CSRF 방어 기술

  • 토큰 사용: 서버는 양식이나 요청에 대한 CSRF 토큰을 생성하여 보낸 다음, 추후 요청 시 토큰의 유효성을 검사합니다. 유효한 토큰이 없는 요청은 거부됩니다.
  • SameSite 쿠키 속성: 쿠키에 SameSite 속성을 설정하여, 쿠키가 같은 사이트의 요청에서만 전송되도록 할 수 있습니다.
  • 리퍼러 검증: HTTP 리퍼러 헤더를 확인하여 요청이 신뢰할 수 있는 도메인에서 발생했는지 검증합니다.

CSRF는 웹 애플리케이션에서 매우 심각한 보안 위협 중 하나로 여겨지며, 충분한 보안 조치가 없는 경우 사용자의 데이터와 작업에 큰 피해를 줄 수 있습니다. 따라서 웹 개발자는 이러한 공격을 방지하기 위해 다양한 보안 방법을 적절히 구현해야 합니다.

 

 

8. IPv6(Internet Protocol version 6)

Pv6(Internet Protocol version 6)는 인터넷 네트워킹의 주소 지정 및 라우팅에 사용되는 통신 프로토콜의 최신 버전입니다. 이전 버전인 IPv4가 제공하는 주소 공간의 부족 문제를 해결하기 위해 개발되었습니다. IPv6는 훨씬 더 많은 수의 장치를 직접적으로 인터넷에 연결할 수 있게 하는 충분한 주소 공간을 제공합니다.

IPv6의 주요 특징

  1. 확장된 주소 공간: IPv6 주소는 128비트로 구성되어 있어, 이론적으로 약 3.4×1038개의 고유 주소를 생성할 수 있습니다. 이는 지구상의 거의 모든 장치에 고유한 주소를 할당할 수 있을 정도로 방대한 수치입니다.
  2. 단순화된 헤더 구조: IPv6의 헤더 구조는 효율적인 라우팅과 처리를 위해 단순화되었습니다. 필수 필드만을 포함하며, 선택적 필드는 확장 헤더로 처리됩니다.
  3. 자동 구성: IPv6에는 주소 자동 구성(Auto-configuration) 기능이 내장되어 있어, 장치가 네트워크에 연결되면 자동으로 IP 주소를 생성하고 네트워크에 등록할 수 있습니다.
  4. 보안 향상: IPv6는 IPsec을 기본적으로 지원하여, 네트워크 계층에서 데이터의 기밀성과 무결성을 보장합니다.
  5. 멀티캐스팅: IPv6는 멀티캐스팅을 기본적으로 지원합니다. 이는 데이터를 특정 다수의 목적지에 효율적으로 전송할 수 있게 해주어 네트워크 자원의 사용을 최적화합니다.
  6. 모빌리티: IPv6는 모바일 IPv6를 통해 장치가 위치를 변경해도 동일한 IP 주소를 유지할 수 있도록 지원합니다. 이는 장치가 네트워크 간을 이동할 때 발생할 수 있는 세션 중단 문제를 감소시킵니다.

IPv6 도입의 중요성

IPv6의 도입은 인터넷의 지속적인 성장과 IoT(Internet of Things) 장치의 증가에 따라 필수적입니다. IPv4 주소는 이미 거의 소진되었기 때문에, 새로운 장치와 서비스를 지원하기 위해서는 IPv6로의 전환을 가속화할 필요가 있습니다. IPv6는 또한 더 효율적인 데이터 흐름과 더 나은 서비스 품질을 가능하게 하여 향후 인터넷 사용자와 서비스 제공자 모두에게 이득을 제공합니다.

 

 

9. SQL문

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];

 

 

10. C언어 코드

 

 

11. 라우팅 프로토콜

 

라우팅 프로토콜은 네트워크에서 데이터 패킷이 출발지부터 목적지까지 효율적으로 전달될 수 있도록 경로를 결정하고 유지하는 데 사용되는 규약입니다. 라우팅 프로토콜은 네트워크의 구조를 파악하고, 최적의 데이터 전송 경로를 찾아내며, 네트워크 변경 사항에 대응하여 라우팅 정보를 동적으로 갱신합니다.

주요 라우팅 프로토콜의 유형

라우팅 프로토콜은 크게 두 가지 범주로 나눌 수 있습니다: 내부 라우팅 프로토콜(IGP)과 외부 라우팅 프로토콜(EGP).

  1. 내부 라우팅 프로토콜(Interior Gateway Protocols, IGP): 하나의 자율 시스템(AS) 내부에서 사용되는 프로토콜입니다. 주로 다음 두 가지로 분류됩니다.
    • 거리 벡터 라우팅 프로토콜: 각 라우터가 인접 라우터에게 자신의 라우팅 테이블을 주기적으로 전송합니다. 대표적인 예로는 RIP(Routing Information Protocol)이 있습니다.
    • 링크 상태 라우팅 프로토콜: 각 라우터가 네트워크의 전체적인 상태를 파악하고, 이를 바탕으로 최적의 경로를 계산합니다. OSPF(Open Shortest Path First)와 IS-IS(Intermediate System to Intermediate System)가 여기에 해당합니다.
  2. 외부 라우팅 프로토콜(Exterior Gateway Protocols, EGP): 서로 다른 자율 시스템들 간에 라우팅 정보를 교환하는 데 사용됩니다. BGP(Border Gateway Protocol)는 가장 널리 사용되는 EGP로, 인터넷의 기본 라우팅 프로토콜입니다.

라우팅 프로토콜의 주요 기능

  • 경로 발견: 네트워크 내 모든 가능한 경로를 찾아내는 과정입니다.
  • 경로 선택: 여러 가능한 경로 중에서 최적의 경로를 선택하는 과정입니다. 이는 일반적으로 경로 비용(예: 홉 수, 대역폭, 지연 시간 등)을 기반으로 합니다.
  • 신뢰성 및 안정성: 네트워크의 변경 사항이 발생했을 때, 라우팅 테이블을 빠르게 갱신하여 데이터 전송의 연속성을 유지합니다.
  • 라우팅 정보 교환: 라우터 간에 라우팅 정보를 주기적으로 교환하여, 각 라우터가 네트워크의 현재 상태를 정확하게 파악할 수 있도록 합니다.

라우팅 프로토콜은 네트워크의 효율성을 높이고 데이터 전송을 최적화하는 데 중요한 역할을 합니다. 이는 특히 대규모 네트워크 또는 빠르게 변화하는 네트워크 환경에서 더욱 중요합니다.

 

 

12. 체크 포인트 기법

체크 포인트 기법은 컴퓨팅에서 시스템이나 프로그램의 특정 시점의 상태를 저장하여, 오류 발생 시 그 시점으로 복원할 수 있게 하는 복구 기술입니다. 이 기법은 특히 장애 발생 시 빠르고 효율적으로 시스템을 이전의 안정된 상태로 되돌릴 수 있도록 도와주며, 데이터베이스 관리, 분산 시스템, 임베디드 시스템 등 다양한 분야에서 중요하게 활용됩니다.

 

 

13. C언어 코드

 

 

14. DAO

 

DAO(Data Access Object), VO(Value Object), DTO(Data Transfer Object)는 소프트웨어 개발, 특히 객체 지향 프로그래밍에서 자주 사용되는 디자인 패턴 및 객체 유형입니다. 이들은 데이터 처리와 애플리케이션의 비즈니스 로직 분리를 돕고, 코드의 유지보수성 및 확장성을 향상시키기 위해 사용됩니다.

1. DAO (Data Access Object)

DAO는 데이터베이스에 접근하는 작업을 캡슐화하여 데이터베이스와 비즈니스 로직을 분리하는 객체입니다. DAO는 데이터베이스의 CRUD(Create, Read, Update, Delete) 연산을 수행하는 메소드를 제공함으로써, 애플리케이션 나머지 부분이 데이터베이스와의 상호작용 방식을 몰라도 데이터를 조작할 수 있게 합니다.

  • 장점: 데이터 액세스 로직과 비즈니스 로직의 분리로 코드의 가독성과 유지보수가 용이해집니다.
  • 사용 예: 사용자 정보 조회, 업데이트, 삭제 등의 데이터베이스 연산을 처리합니다.

2. VO (Value Object)

VO는 데이터를 표현하기 위해 사용되는 객체로, 여러 데이터 필드를 하나의 객체로 묶어서 사용합니다. 이 객체는 주로 읽기 전용의 특성을 가지며, 데이터가 변경되지 않는 경우에 사용됩니다. VO는 데이터베이스 테이블의 레코드를 객체 형태로 표현할 때 사용될 수 있습니다.

  • 장점: 간단한 데이터 전달을 위한 객체로, 데이터 무결성을 유지하면서 사용할 수 있습니다.
  • 사용 예: 사용자의 이름, 주소 등이 포함된 프로필 정보를 표현할 때 사용됩니다.

3. DTO (Data Transfer Object)

DTO는 계층 간 데이터 교환을 위해 사용되는 객체로, VO와 비슷하지만 변경 가능성을 가지며 더 넓은 범위의 데이터를 다룰 수 있습니다. 일반적으로 DTO는 여러 계층(예: 클라이언트, 서버) 간의 데이터 전송에 최적화되어 있으며, 네트워크를 통해 데이터를 효율적으로 전송하는 데 중점을 둡니다.

  • 장점: 다양한 종류의 데이터와 복잡한 구조의 데이터를 효과적으로 전달할 수 있습니다.
  • 사용 예: 클라이언트 측과 서버 측 사이에 사용자의 요청 데이터를 전송할 때 사용됩니다.

이러한 패턴과 객체들은 소프트웨어의 다양한 계층 간의 역할을 명확하게 분리하여, 개발 과정에서 각각의 부분이 독립적으로 개발 및 테스트될 수 있도록 지원합니다. 이는 전체 애플리케이션의 구조를 깔끔하게 유지하고 확장성을 높이는 데 기여합니다.

 

 

15. TCL

TCL(Transaction Control Language)은 데이터베이스 관리 시스템(DBMS)에서 사용하는 특수한 프로그래밍 언어의 한 부분으로, 데이터베이스 트랜잭션을 관리하는 데 사용됩니다. 트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 작업 단위로, 여러 개의 연산을 포함할 수 있으며, 모든 연산은 완전히 수행되거나 전혀 수행되지 않아야 합니다(원자성). TCL은 이러한 트랜잭션을 효과적으로 제어하여 데이터의 일관성과 무결성을 보장합니다.

주요 TCL 명령어

  1. COMMIT: 이 명령은 트랜잭션에 의해 수행된 모든 변경사항을 데이터베이스에 영구적으로 저장합니다. COMMIT 명령이 실행되면, 트랜잭션은 성공적으로 완료된 것으로 간주되며, 이후에는 이러한 변경사항을 되돌릴 수 없습니다.
  2. ROLLBACK: 이 명령은 트랜잭션의 시작 이후 수행된 모든 변경사항을 취소하고, 데이터를 트랜잭션 시작 시점의 상태로 되돌립니다. 오류가 발생했거나 다른 이유로 트랜잭션을 중단해야 할 경우에 사용됩니다.

 

16. CoAP (Constrained Application Protocol)

CoAP(Constrained Application Protocol)은 제한된(저전력, 저용량) 환경을 위해 설계된 웹 전송 프로토콜입니다. 이 프로토콜은 특히 사물 인터넷(IoT) 장치와 같이 제한된 리소스를 가진 장비에서 사용하기 적합합니다. CoAP은 HTTP와 유사한 인터페이스를 제공하지만, UDP(User Datagram Protocol)를 기반으로 하여 더 가벼워 HTTP보다 훨씬 적은 데이터와 전력을 사용합니다.

CoAP의 주요 특징

  1. UDP 기반: CoAP은 TCP 대신 UDP를 사용하여 낮은 대역폭과 높은 전송 지연이 있는 네트워크에서도 효율적으로 작동합니다. UDP를 사용함으로써, 오버헤드를 최소화하고 빠른 데이터 교환을 가능하게 합니다.
  2. 요청/응답 상호작용 모델: CoAP은 HTTP와 유사하게 요청/응답 모델을 사용합니다. 이를 통해 웹 기반 API와 유사한 방식으로 장치를 쉽게 통합할 수 있습니다.
  3. 지원 메시지 형식: CoAP은 GET, POST, PUT, DELETE 등의 메서드를 지원하여, 리소스를 조회하거나 업데이트하는 등의 작업을 할 수 있습니다.
  4. 멀티캐스트 지원: CoAP은 네트워크 내의 여러 장치에 동시에 메시지를 보낼 수 있는 멀티캐스트를 지원합니다. 이는 효율적인 네트워크 통신을 가능하게 하여 IoT 환경에서의 장치 관리와 데이터 수집을 간소화합니다.
  5. 보안: CoAP은 DTLS(Datagram Transport Layer Security)을 통한 보안 통신을 지원합니다. DTLS은 UDP 통신을 위한 TLS(Transport Layer Security)의 버전으로, 데이터의 기밀성과 무결성을 보장합니다.
  6. 리소스 발견: CoAP은 웹 링킹 기능을 통해 장치가 자신의 리소스를 네트워크에 알릴 수 있도록 합니다. 이를 통해 다른 장치가 해당 리소스를 쉽게 찾고 사용할 수 있습니다.

CoAP의 응용

CoAP은 특히 IoT 장치에서 센서 데이터를 수집하거나, 액추에이터를 제어하는 데 널리 사용됩니다. 홈 자동화, 도시 인프라 관리, 환경 모니터링과 같은 분야에서 저전력, 저비용의 네트워크 통신이 요구되는 경우에 적합한 프로토콜입니다. 이 프로토콜은 IoT 장치들이 인터넷과 효율적으로 통합되도록 지원하며, 다양한 서비스와 애플리케이션의 개발을 가능하게 합니다.

 

 

17. 외부 메모리 단편화 해결 기법

메모리 단편화는 주로 두 가지 유형으로 나뉩니다: 내부 단편화와 외부 단편화. 여기서는 외부 단편화와 그 해결 방법인 버디 메모리 할당 시스템, 메모리 통합, 메모리 압축에 대해 설명하겠습니다.

1. 외부 단편화

외부 단편화는 프로세스들이 메모리를 요구하고 해제하는 과정에서 발생합니다. 프로세스들이 메모리를 할당받고 해제할 때, 해제된 메모리 공간들이 작은 조각들로 나뉘어져 있고, 이 조각들 사이의 공간이 충분히 커서 사용 가능하나 연속적이지 않아 새로운 프로세스가 메모리를 할당받기 어려운 상태를 말합니다. 이로 인해 메모리는 충분히 남아 있음에도 불구하고 사용할 수 없는 상태가 될 수 있습니다.

2. 버디 메모리 할당 시스템 (Buddy Memory Allocation)

버디 시스템은 외부 단편화를 줄이는 효율적인 메모리 할당 방법 중 하나입니다. 이 시스템에서는 메모리가 2의 거듭제곱 크기의 블록으로 분할됩니다. 할당 요청이 들어오면, 시스템은 요구 크기와 가장 가까운 2의 거듭제곱 크기의 블록을 할당합니다. 메모리를 해제할 때, 해당 블록의 "버디"(같은 크기이고 메모리 주소가 연속적인 블록)가 사용 중이지 않다면, 두 버디 블록은 하나의 큰 블록으로 통합됩니다. 이러한 방식으로 메모리를 관리함으로써 외부 단편화를 상당히 줄일 수 있습니다.

3. 메모리 통합 (Coalescing)

메모리 통합은 여러 개의 작은 메모리 조각들을 하나의 큰 블록으로 통합하는 과정입니다. 프로세스들이 메모리를 해제할 때 발생하는 작은 메모리 공간들을 통합함으로써, 이후의 메모리 할당 요청을 충족시킬 수 있는 더 큰 메모리 블록을 만들 수 있습니다. 이 방법은 메모리 관리자가 자동으로 수행하며, 외부 단편화를 줄이는 데 도움이 됩니다.

4. 메모리 압축 (Compaction)

메모리 압축은 시스템의 모든 메모리를 재구성하여, 모든 사용 중인 메모리를 한 쪽으로 모으고, 사용되지 않는 메모리를 다른 한 쪽으로 모으는 과정입니다. 이 과정은 메모리 내의 모든 자유 공간을 하나의 큰 연속적인 블록으로 만들어 새로운 프로세스의 큰 메모리 요구를 수용할 수 있도록 합니다. 하지만 이 방법은 시스템 성능에 부담을 줄 수 있으며, 실행 중인 프로세스의 메모리 주소를 변경해야 하므로 복잡할 수 있습니다.

 

 

18. HIPO(Hierarchy Input Process Output) CART의 종류

가시적 도표(Visual Table of Contents)

총체적 도표(Overview Diagram)

세부적 도표(Detail Diagram)

 

 

19. 데이버베이스의 무결성의 종류

데이터베이스에서 무결성은 데이터의 정확성, 일관성, 그리고 신뢰성을 보장하는 규칙이나 제약 조건을 의미합니다. 무결성은 데이터베이스 설계와 관리에서 중요한 요소이며, 데이터가 사실에 부합하고 법적으로 타당하며 시스템에 의해 올바르게 처리되도록 보장합니다. 데이터베이스의 무결성은 크게 네 가지 주요 유형으로 구분됩니다:

1. 개체 무결성(Entity Integrity)

개체 무결성은 데이터베이스의 각 행(또는 레코드)가 고유하게 식별될 수 있도록 보장하는 무결성입니다. 이는 주로 기본 키(primary key)를 사용하여 각 행이 유일하게 식별되도록 함으로써 달성됩니다. 기본 키는 중복되거나 NULL 값이 될 수 없습니다.

2. 참조 무결성(Referential Integrity)

참조 무결성은 외래 키(foreign key)를 사용하여 다른 테이블의 행을 참조할 때 그 참조의 유효성을 보장합니다. 외래 키는 참조하고 있는 테이블의 기본 키와 일치해야 하며, 참조하는 행이 삭제되거나 변경될 때 그에 따라 적절히 처리되어야 합니다(예: 삭제, 업데이트 등).

3. 도메인 무결성(Domain Integrity)

도메인 무결성은 테이블의 필드에 저장되는 데이터가 정의된 도메인(데이터 유형, 가능한 값의 범위, NULL 허용 여부 등)에 부합해야 한다는 규칙을 설정합니다. 이를 통해 데이터의 유형, 형식, 범위가 허용된 규칙에 일치하는지 확인합니다.

4. 사용자 정의 무결성(User-Defined Integrity)

사용자 정의 무결성은 특정 비즈니스 규칙이나 조건에 따라 데이터가 유지되어야 함을 의미합니다. 이는 해당 조직의 특정 요구 사항에 맞춰 설정되며, 특정 필드 값의 유효성을 검증하거나 특정 조건을 충족시키는 데이터만 시스템에 입력되도록 하는 규칙을 포함할 수 있습니다.

이러한 무결성 규칙은 데이터베이스 관리 시스템(DBMS)에서 제공하는 다양한 제약 조건 및 트리거를 통해 구현됩니다. 무결성 유지는 데이터의 품질을 보장하고, 시스템의 신뢰성을 유지하는 데 필수적인 요소입니다.

 

 

20. 파이썬 코드

 

반응형