병렬, 충돌, 교착, 페이징, 응집도, 결합도, 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(소인수분해)
특징 : 키의 분배가 용이하고, 관리해야 할 키 수가 적음
암호화/복호화 속도가 느리며 알고리즘이 복잡, 개인키 암호화 방법보다 파일의 크기가 크다.