Post

병렬, 충돌, 교착, 페이징, 응집도, 결합도, c 언어 연산자, SSH, 접근제어 모델, 암호화 방식

병렬, 충돌, 교착, 페이징, 응집도, 결합도, c 언어 연산자, SSH, 접근제어 모델, 암호화 방식

병렬 데이터베이스

수평 분할

  • range, hash, list, composite, round robin

수평적 부분집합

  • SELECT σ시그마
  • PROJECT π파이
  • JOIN ▷◁ 나비넥타이
  • DIVISION ÷나누기

병행제어 기법

: 동시에 여러 개의 트랜잭션을 병행수행할 때, DB의 일관성을 파괴하지 않고 제어하는 것

  • 로킹 기법, 타임 스탬프 기법, 다중 버전 기법, 최적 병행 수행 기법 (검증, 확인, 낙관적 기법)

로킹(Locking) 단위

  • 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기이다.
  • 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
  • 로킹 단위가 크면 : 병행수준 낮음, 데이터베이스 공유도 저하
  • 로킹 단위가 작으면 : 오버헤드 증가, 병행성 수준 높음, 데이터베이스 공유도 증가

충돌

  • CSMA/CA(Carrier-sense multiple access with collision avoidance) : “충돌 방지”
    무선 랜에서 데이터 전공 시, 매체가 비어있음을 확인한 후 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방식. 네트워크에 데이터의 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비해 확인 신호를 전송한다.

  • CSMA/CD( Carrier-sense multiple access with collision detection) : “충돌 감지”
    이더넷에서 각 단말이 전송 공유 매체에 규칙있게 접근하기 위한 매체 엑세스 제어 방식

  • Collision Domain : “충돌 도메인”
    충돌 발생을 검출할 수 있는 브리지 간 혹은 다른 계층 장치 간의 이더넷 세그먼트 범위

교착상태 해결 방법

  • Detection(탐지) : 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결 (ex 자원할당 그래프)
  • Avoidance (회피) : 교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법 (ex 은행원 알고리즘)
  • Recovery (복구) : 교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 (ex 선점, 프로세스 중지(희생자 선택)
  • Prevention(예방) : 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법 (ex 환형대기, 비선점, 점유와 대기, 상호배제 4가지 부정)

페이징

페이징 기법 : 컴퓨터가 메인 메모리에서 사용하기 위해 데이터를 저장하고 검색하는 메모리 관리 기법
페이징기법을 통해 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없음
페이징기법을 통해 비연속적 메모리를 연속적메모리처럼 만들 수 있음

  • 페이지 크기가 작은 경우 더 많은 페이징 사상테이블 필요 내부 단편화 감소 페이지의 집합을 효율적으로 운영가능 기억장치의 효율이 좋음 총 입출력 시간 증가

  • 페이지 크기가 큰 경우 주기억 장치 공간 절약 참조되는 정보와 무관한 양의 정보가 주기억 장치에 남게 됨 테이블이 복잡하지 않아 관리 용이

응집도(Cohesion)와 결합도(Coupling)

소프트웨어 설계에서 응집도(Cohesion)결합도(Coupling)는 모듈화(Modularity)의 중요한 개념입니다.

  • 응집도: 모듈 내부의 요소들이 얼마나 강하게 연관되어 있는지
  • 결합도: 모듈 간의 의존성이 얼마나 높은지

응집도(Cohesion) : 높을수록 좋음!

응집도가 높을수록 모듈 내부의 기능이 논리적으로 밀접하게 연결되어 있어 유지보수성이 증가합니다.

✅ 응집도의 종류 (높은 순 → 낮은 순)

순위응집도 유형설명
1기능적 응집 (Functional Cohesion)모듈이 하나의 기능만 수행
2순차적 응집 (Sequential Cohesion)한 기능의 출력이 다음 기능의 입력으로 사용됨
3교환적 응집 (Communicational Cohesion)같은 데이터나 구조를 공유
4절차적 응집 (Procedural Cohesion)특정 순서대로 실행되는 기능을 포함
5시간적 응집 (Temporal Cohesion)특정 시점(초기화, 종료 등)에 실행되는 기능 포함
6논리적 응집 (Logical Cohesion)유사한 유형의 작업을 수행하지만, 매개변수에 따라 다르게 동작
7우연적 응집 (Coincidental Cohesion)서로 관련 없는 기능들이 임의로 묶여 있음

➡ 높은 응집도(기능적 응집, 순차적 응집)가 유지보수성과 가독성을 향상시킴!
➡ 낮은 응집도(우연적 응집, 논리적 응집)는 유지보수가 어렵고 버그 발생 가능성이 높음!


결합도(Coupling) - 낮을수록 좋음!

결합도가 낮을수록 모듈 간의 의존성이 적어 독립성이 증가하며 유지보수와 확장이 쉬워집니다.

✅ 결합도의 종류 (낮은 순 → 높은 순)

순위결합도 유형설명
1자료 결합 (Data Coupling)모듈 간에 단순한 데이터(변수)만 전달
2스탬프 결합 (Stamp Coupling)구조체나 객체를 전달하지만, 일부 데이터만 사용
3제어 결합 (Control Coupling)제어 신호(Flag, Boolean)로 흐름을 제어
4외부 결합 (External Coupling)외부 시스템, 파일, DB 등과 결합
5공통 결합 (Common Coupling)전역 변수(Global Variable) 공유
6내용 결합 (Content Coupling)한 모듈이 다른 모듈의 내부 구현을 직접 참조

➡ 낮은 결합도(자료 결합, 스탬프 결합)가 유지보수성과 모듈 독립성을 높임!
➡ 높은 결합도(공통 결합, 내용 결합)는 버그 발생 가능성을 높이고 수정이 어렵게 만듦!

C 언어 연산자 우선순위

증감 연산자( ++ – ) → 산술 연산자( * / % ) → 산술 연산자( + - ) → 시프트 연산자( « » ) → 관계 연산자(=< => < > ) → 관계 연산자( == != ) → 비트 연산자( & ^ | ) → 논리 연산자( && ||) → 조건연산자(?:) → 대입연산자(= += *= /= %= «= »=) → 순서 연산자( , )

참고 : (순서에 따라 y <- x++ : y에 x대입하고 x 값 증가, z <- –x 빼고 대입)

SSH(Secure Shell)

  • 기본 네트워크 포트는 22번
  • 전송되는 데이터는 암호화
  • 키를 통한 인증은 클라이언트의 공개키를 서버에 등록
  • 서로 연결되어 있는 컴퓨터 간 원격 명령실행이나 셀 서비스 등을 수행

접근 제어 모델

접근 제어 모델설명적용 예시
DAC (임의 접근 제어)소유자가 자원에 대한 접근 권한을 직접 제어Windows, Linux 파일 시스템
MAC (강제 접근 제어)보안 등급에 따라 중앙에서 접근 통제군사, 정부 시스템
RBAC (역할 기반 접근 제어)역할(Role)에 따라 접근 권한을 부여기업 시스템, 데이터베이스
ABAC (속성 기반 접근 제어)사용자의 속성(Attribute) 기반 제어클라우드 서비스, IoT

Bell-Lapadula Model(BLP) 기밀성 모델: 정보의 불법적인 파괴나 변조보다는 불법적인 비밀 유출 방지에 중점 - 레벨처럼 권한을 기밀성에 따라

Clark-Wilson Integrity 무결성 모델: 비밀 노출 방지보다 자료의 변조 방지가 더 중요함(금융, 회계관련 데이터, 기업 재무재표 등)

Chinese Wall: 충돌을 야기시키는 어떠한 정보의 흐름도 없어야 한다. 이익의 충돌 금지, 최근 일을 한 적 있는 파트너는 동일 영역에 있는 다른 회사 자료에 접근해서는 안된다.

암호화 방식

1. 단방향 : One-way function

1-1. 해시(Hash)

  • 종류 : SHA, MD5, N-NASH, SNEFRU, HAVAL 등

  • 특징 : 임의의 길이의 입력 데이터나 메시지를 고정 길이의 값이나 키로 변환
    암호화, 무결성 검증을 위하여 사용

2. 양방향

2-1. 개인키 (암호화, 복호화 시 동일한 개인키를 이용)

  • 종류 : Stream 방식 (평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화) : LFSR, RC4
    Block 방식 (한 번에 하나의 데이터 블록을 암호화) : DES, SEED, AES, ARIA

  • 특징 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순, 공개키 암호 기법보다 파일 크기가 작음 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다

2-2. 공개키 (암호화 시 사용자에게 공개되는 공개키 사용, 복호화 시 비밀키 사용, 비대칭 암호 기법이라고도 함)

종류 : RSA(소인수분해)

특징 : 키의 분배가 용이하고, 관리해야 할 키 수가 적음
암호화/복호화 속도가 느리며 알고리즘이 복잡, 개인키 암호화 방법보다 파일의 크기가 크다.

This post is licensed under CC BY 4.0 by the author.