Coffee Chat Brewing AI Knowledge

eng kor

데이터베이스 3: 이상, 함수적 종속과 정규화

이상 (Anomaly)

DB 내 데이터가 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 현상.

  • 삽입 이상 (Insertion Anomaly): 데이터 삽입 시 의도치 않은 값들로 인해 삽입할 수 없게 되는 현상.
  • 삭제 이상 (Deletion Anomaly): 튜플 삭제 시 의도치 않은 값들도 삭제되는 현상 (연쇄 삭제).
  • 갱신 이상 (Update Anomaly): 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되는 현상. 불일치성(Inconsistency) 발생.

함수적 종속 (Functional Dependency)

테이블 $R$의 속성 집합의 부분 집합 $X$와 $Y$에 대해, $X$의 값 각각에 대해 항상 $Y$의 값이 오직 하나만 연관되어 있을 때 ‘$Y$는 $X$에 함수적 종속’ 또는 ‘$X$가 $Y$를 함수적으로 결정한다’고 표현함.

  • 기호: $X\rightarrow Y$

  • 완전 함수적 종속 (Full Functional Dependency): $Y$가 $X$에 대해 함수적 종속이면서 $X$의 어떤 진부분 집합 $Z (X \sup Z)$에도 함수적 종속이 아닐 때 ‘$Y$는 $X$에 완전 함수적 종속’이라고 함.
  • 부분 함수적 종속 (Partial Functional Dependency): $Y$가 $X$에 대해 함수적 종속이면서 $X$의 임의의 진부분 집합 $Z$에 대해 함수적 종속일 때 ‘$Y$는 $X$에 부분 함수적 종속’이라고 함.
  • 이행적 함수적 종속 (Transitive Functional Dependency): $X\rightarrow Y$이고 $Y\rightarrow Z$일 때 $X\rightarrow Z$인 관계.

정규화 (Normalization)

테이블을 무손실 분해하는 과정. 속성들이 상호 종속적인 관계를 갖는 특성을 이용.

  • 목적: 중복을 가능한 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것.
  • 정규형: 제 1정규형(1NF) → 제 2정규형(2NF) → 제 3정규형(3NF) → BCNF → 제 4정규형(4NF) → 제 5정규형(5NF)

정규화 과정

erd

반정규화 (Denormalization)

정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위.

  • 시스템의 성능 향상, 개발 및 운영의 편의성 등을 향상시킬 수 있음.
  • 과도한 반정규화는 오히려 성능을 저하시킴.

중복 테이블 추가

작업의 효율성을 위해 테이블을 추가하는 것.

  • 집계 테이블 추가: 집계 데이터를 위한 테이블 생성, 원본 테이블에 트리거를 설정하여 사용.
  • 진행 테이블 추가: 이력 관리 등의 목적으로 테이블 추가.
  • 특정부분만을 포함하는 테이블 추가: 데이터가 많은 테이블에서 특정 부분만을 사용하는 경우 해당 부분으로 새로운 테이블 형성.

데이터베이스 2: 릴레이션과 키, 관계 대수

관계형 데이터베이스와 릴레이션

관계형 데이터베이스 (Relational DataBase)

데이터를 테이블 형태로 저장하고 관리하는 DB 시스템.

  • 각 테이블은 데이터 구조와 데이터 저장 방식에 대해 정의된 고정된 스키마를 따름.
  • SQL(Structured Query Language)을 사용하여 데이터의 삽입, 수정, 삭제, 조회 등의 작업을 수행.

릴레이션 (Relation)

관계형 데이터베이스에서 사용하는 기본 구조로, 흔히 테이블(table)이라고 함.

  • 행과 열로 구성되며, 각 행은 하나의 데이터 항목(tuple, record)을, 각 열은 데이터 속성(attribute, field)을 나타냄.
  • 수학적 개념의 관계(relation)에서 유래하며, 집합론에서의 관계와 비슷한 개념.

릴레이션의 구조

erd

  • 릴레이션 스키마 (Relation Schema): 릴레이션의 구조.
  • 릴레이션 인스턴스 (Relation Instance): 속성의 데이터 타입에 맞게 구체적인 데이터 값을 가진 데이터 개체.
  • 튜플 (Tuple): 릴레이션을 구성하는 각각의 행. 속성의 모임.
    • 카디널리티 (Cardinality; 기수, 대응수): 튜플의 수.
  • 속성 (Attribute): DB를 구성하는 가장 작은 논리적 단위. 개체의 특성을 기술.
    • 데이터 항목 또는 데이터 필드에 해당함.
    • 디그리 (Degree; 차수): 속성의 수.
  • 도메인 (Domain): 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합.
    • 시스템이 속성값의 합법 여부를 검사하는 데 사용. (e.g. ‘Gender’의 도메인은 ‘Male’, ‘Female’로 그 외 값은 입력할 수 없다.)


키 (Key)

DB에서 조건에 맞는 튜플을 찾거나 정렬할 때 기준이 되는 속성.

유일성과 최소성

  • 유일성 (Unique): 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있는 성질.
  • 최소성 (Minimality): 튜플을 식별하는 데 필요한 최소한의 속성으로 구성된 것.

키의 종류

  • 후보키 (Candidate Key): 속성 중 튜플을 유일하게 식별하기 위해 사용되는 속성의 집합.
    • 기본키의 후보가 되는 속성.
    • 조건: 유일성과 최소성을 모두 만족함.
  • 기본키 (Primary Key; 주키 (Main Key)): 후보키 중 특별히 선정된 키.
    • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성.
    • 조건: 중복된 값을 가질 수 없음, NULL값을 가질 수 없음.
    • 외래키로 참조될 수 있음.
  • 대체키 (Alternate Key; 보조키): 기본키를 제외한 나머지 후보키.
  • 슈퍼키 (Super Key): 속성의 집합으로 구성된 키.
    • 릴레이션 내 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음.
    • 조건: 유일성은 만족, 최소성은 만족하지 않음.
  • 외래키 (Foreign Key): 다른 릴레이션으 기본키를 참조하는 속성 또는 속성의 집합.
    • 조건: 참조 릴레이션의 기본키에 없는 값은 외래키가 될 수 없음.

무결성 (Integrity)

DB에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성.

  • 개체 무결성: 기본키를 구성하는 어떤 속성도 NULL이나 중복값을 가질 수 없다는 규정.
  • 참조 무결성: 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정. 외래키의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함.

인덱스 (Index)

데이터 레코드(튜플)에 빠르게 접근하기 위해 <키, 포인터> 쌍으로 구성된 데이터 구조.

  • 레코드가 저장된 물리적 구조에 접근하는 방법을 제공. 빠른 액세스 가능.
  • 기본키 인덱스: 기본키를 위한 인덱스. 대부분의 관계형 DBMS에서는 모든 기본키에 대해 기본키 인덱스를 자동 생성함.
  • 트리 기반, 함수 기반, 비트맵, 비트맵 조인 인덱스 등이 있음.


관계 대수와 관계 해석

관계 대수 (Relational Algebra)

관계형 DB에서 원하는 정보와 그것을 어떻게 유도하는지를 기술하는 절차적 언어. 릴레이션 조작을 위한 연산의 집합.

  • 릴레이션 처리를 위한 연산자와 연산 규칙을 제공. 피연산자와 연산 결과가 모두 릴레이션.
  • 해를 구하기 위한 연산의 순서를 명시.

순수 관계 연산자

  • Select: 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산.
    • 튜플을 구하는 것이므로 ‘수평 연산자’라고도 함.
    • 기호: $\sigma$
  • Project: 속성 리스트(Attribute list)에 제시된 속성만을 추출해 새로운 릴레이션을 만드는 연산.
    • 속성을 추출하는 것이므로 ‘수직 연산자’라고도 함.
    • 기호: $\pi$
  • Join: 공통 속성을 중심으로 두 릴레이션을 합쳐 새로운 릴레이션을 만드는 연산.
    • Cartesian Product(교차곱) → Select 수행과 결과가 같음.
    • 기호: $\Join$
  • Division: $X\supset Y$인 두 릴레이션 $R(X)$와 $S(Y)$가 있을 때, S의 속성값을 모두 가진 R의 속성에서 S의 속성을 제외한 속성만 반환하는 연산.
    • 기호: $\div$

    erd

일반 집합 연산자

  • Union: 두 릴레이션 내 튜플의 합집함을 구하되, 중복되는 튜플은 제거하는 연산.
    • 합집합의 카디널리티는 두 릴레이션의 카디널리티 합보다 작거나 같다.
    • 기호: $\cup$
  • Intersection: 두 릴레이션 내 튜플의 교집합을 구하는 연산.
    • 교집합의 카디널리티는 두 릴레이션의 카디널리티 중 작은 값보다 크지 않다.
    • 기호: $\cap$
  • Difference: 두 릴레이션 내 튜플의 차집합을 구하는 연산 ($R-S$).
    • 차집합의 카디널리티는 $R$의 카디널리티보다 크지 않다.
    • 기호: $-$
  • Cartesian Product: 두 릴레이션 내 튜플의 순서쌍을 구하는 연산.
    • 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같다.
    • 교차곱의 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.
    • 기호: $\time$

관계 해석 (Relational Calculus)

관계 데이터의 연산을 표현하는 방법. 관계 데이터 모델을 제안한 E. F. Codd가 수학의 술어 해석(Predicate Caculus)에 기반을 두고 관계 DB를 위해 제안함.

  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 가지며, 원하는 정보를 정의할 때는 수식을 사용함.
  • 튜플 관계 해석과 도메인 관계 해석으로 구분됨.


데이터베이스 1: 데이터베이스 설계

DBMS와 스키마

DBMS (DataBase Management System)

사용자와 데이터베이스(DB) 사이에서 사용자의 요구에 따라 정보를 생성하고 DB를 관리하는 소프트웨어.

  • DBMS 관련 요구사항 식별 시 고려사항: 가용성, 성능, 기술지원, 상호호환성, 구축비용

DBMS 필수 기능

  • 정의 (Definition): 데이터 형(type)과 구조 정의. 이용 방식, 제약 조건 명시.
  • 조작 (Manipulation): 데이터 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 제공.
  • 제어 (Control): 데이터의 무결성/보안/권한 검사, 병행 제어 제공.

스키마 (Schema)

DB의 구조와 제약 조건에 고간한 명세를 기술한 것

스키마의 종류

  • 외부 스키마: 사용자나 응용 프로그래머 등 각 개인의 입장에서 필요한 DB의 논리적 구조.
  • 개념 스키마: DB 전체의 논리적 구조. 모든 사용자나 응용 프로그램이 필요로 하는 데이터 조직 전체의 DB로 하나만 존재함.
  • 내부 스키마: 저장장치 입장에서의 DB 구조. 실제 저장될 레코드의 형식, 표현, 물리적 순서 등을 나타냄.

데이터 모델

현실 세계의 정보를 컴퓨터에 표현하기 위해 단순화/추상화하여 체계적으로 표현한 개념적 모형.

데이터 모델의 요소

  • 구조 (Structure): 논리적으로 표현된 개체 타입 간 관계. 데이터 구조 및 정적 성질 표현.
  • 연산 (Operation): 실제 데이터를 처리하는 작업에 대한 명세. DB를 조작하는 기본 도구.
  • 제약 조건 (Constraint): 데이터가 DB에 저장되기 위한 논리적인 제약 조건.

시스템 카탈로그 (System Catalog)

시스템과 관련된 다양한 객체에 관한 정보를 포함하는 시스템 DB.

  • 시스템 카탈로그 내 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세 정보를 유지 관리하는 시스템 테이블.
  • 데이터 사전 (Data Dictionary)에 카탈로그가 저장되므로, 좁은 의미로는 카탈로그를 데이터 사전이라고도 함.


데이터베이스 설계 순서

  1. 요구 조건 분석:
    • 요구 조건 명세서 작성
  2. 개념적 설계 (정보 모델링, 개념화): 현실 세계를 추상적 개념으로 표현하는 과정.
    • 개념 스키마 모델링 및 트랜잭션 모델링을 병행 수행.
    • 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성.
  3. 논리적 설계 (데이터 모델링): 현실 세계의 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환(mapping)하는 과정.
    • 개념적 데이터를 논리적 데이터로 모델링: 데이터 타입(필드)과 데이터 타입 간 관계로 표현.
    • 개념 스키마를 정제하여 DBMS에 따라 다른 논리적 스키마를 설계.
  4. 물리적 설계 (데이터 구조화): 논리적 구조의 데이터를 특정 DBMS가 지원하는 물리적 구조의 데이터로 변환하는 과정.
    • 다양한 DB에 응용 가능하도록 DB 파일의 저장 구조 및 액세스 경로를 결정.
    • 저장 레코드의 형식, 순서, 접근 경로, 조회 집중 레코드 등의 정보를 사용해 데이터가 저장되는 방법을 묘사.
  5. 구현: 목표 DBMS의 DDL로 DB 생성 및 트랜잭션 작성.

E-R 다이어그램 (Entity-Relationship Diagram)

데이터베이스의 논리적 구조를 시각적으로 표현하여 개체 (Entity), 엔티티 간의 관계 (Relationship), 속성 (Attribute)을 나타내는 다이어그램.

erd erd


[정처기 요점정리] 응용 소프트웨어 기술 1

운영체제 (OS; Operating System)

컴퓨터 시스템의 자원을 효율적으로 관리하고, 컴퓨터 사용을 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 프로그램의 모임

  • 컴퓨터 사용자와 하드웨어 간 인터페이스로 동작하는 시스템 소프트웨어의 일종
  • 컴퓨터 자원 관리: 프로세서, 기억장치 , 입출력장치, 파일, 정보 등
  • 운영체제의 목적:
    • 처리 능력 (Throughput): 일정 시간 내 처리하는 일의 양
    • 반환 시간 (Turn Around Time): 작업 의뢰부터 처리 완료까지 걸린 시간
    • 사용 가능도 (Availability): 필요할 때 즉시 사용 가능한 정도
    • 신뢰도 (Reliability): 문제를 정확하게 해결하는 정도

UNIX

1960년대, AT&T 벨 연구소, MIT, General Eletric이 공동 개발한 운영체제

  • 시분할 시스템 (Time sharing system)을 위해 설계됨. 대화식 운영체제
  • 대부분 C로 작성: 이식성 및 장치/프로세스 간 호환성 높음
  • 트리 구조의 파일 시스템
  • 시스템 구성:
    • 커널 (Kernel): 핵심 부분. 하드웨어 보호 및 프로그램과 하드웨어 간 인터페이스 역할.
      • 여러가지 기능 수행: CPU 스케줄링, 기억장치, 파일, 입출력 등 관리 및 프로세스 간 통신, 데이터 전송
    • 쉘 (Shell): 명령어 해석기. 사용자 명령을 인식하고 수행. 시스템과 사용자 간 인터페이스 역할.

LINUX

1991년 리누스 토발즈 (Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제

  • 소스 코드가 무료로 공개됨
  • 대부분의 특징이 UNIX와 동일

Andriod

구글에서 개발한 LINUX 커널 기반의 개방형 모바일 운영체제

  • 모든 코드가 공개된 개방형 소프트웨어
  • Java와 Cotlin으로 애플리케이션 작성

기억장치 관리

반입 (Fetch)

보조기억장치에 보관 중인 프로그램/데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

  • 요구 반입 (Demand fetch): 실행 중인 프로그램이 특정 프로그램/데이터의 참조를 요구할 때 적재하는 방법
  • 예상 반입 (Anticipatory fetch): 실행 중인 프로그램에 의해 참조될 프로그램/데이터를 예상하여 적재하는 방법

배치 (Placement)

새로 반입되는 프로그램/데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략

  • 최초 적합 (First fit): 적합한 크기의 빈 영역 중 첫 번째 분할 영역에 배치하는 방법
  • 최적 적합 (Best fit): 적합한 크기의 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치하는 방법
  • 최악 적합 (Worst fit): 적합한 크기의 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치하는 방법

가상기억장치 (Virtual Memory)

보조기억장치의 일부를 주기억장치처럼 사용하는 것. 주기억장치는 용량이 작은데, 마치 큰 용량인 것처럼 사용하는 기법.

  • 원리: 프로그램을 블록으로 나누어서 가상기억장치에 보관, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리함.

구현 방법

  • 페이징 (Paging): 가상기억장치 내 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치에 적재시키는 방법
    • 페이지 (Page): 프로그램을 일정한 크기로 나눈 단위
    • 페이지 프레임 (Page frame): 페이지 크기로 일정하게 나눠진 주기억장치의 단위
  • 세그멘테이션 (Segmentation): 가상기억장치 내 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시키는 방법
    • 세그먼트 (Segment): 프로그램을 논리적 크기 (배열, 함수 등)로 나눈 단위. 각 세그먼트는 고유한 이름과 크기를 가짐.

페이지 교체 알고리즘

페이지 부재 (Page fault) 발생 시 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 기법: 페이지 부재가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 주기억장치의 모든 페이지 프레임이 사용 중인 경우가 있다.

  • OPTimal replacment (OPT; 최적 교체): 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법.
    • Belady가 제안했음. 페이지 부재가 가장 적게 발생하는 효율적 방법.
  • FIFO (First In First Out): 가장 오래 있었던 페이지를 교체하는 기법.
    • 각 페이지가 주기억장치에 적재된 시각을 기억해야 함.
  • LRU (Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법.
  • LFU (Least Frequently Used): 사용빈도가 가장 적은 페이지를 교체하는 기법.

구역성 (Locality)

프로세스가 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론. 스레싱 (Thrashing) 방지를 위한 워킹 셋 (Working set) 이론의 기반이 되었음.

  • 시간 구역성 (Temporla locality): 프로세스가 한 페이지를 일정 시간 동안 집중적으로 액세스하는 현상.
  • 공간 구역성 (Spatial locality): 프로세스가 일정 위치의 페이지를 집중적으로 액세스하는 현상.

워킹 셋 (Working Set)

프로세스가 일정 시간 동안 자주 참조하는 페이지의 집합. 자주 참조되는 워킹 셋을 주기억장치에 상주시키면 페이지 부재 및 페이지 교체 수가 줄어들어 프로세스의 기억장치 사용이 안정됨.

스래싱 (Thrashing)

프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상.

  • 다중 프로그래밍 시스템이나 가상기억장치 사용 시스템에서 프로세스 하나를 수행하는 중 페이지 부재가 자주 발생함. 이것으로 시스템 성능이 저하됨.


프로세스 (Process)

“실행 중인 프로그램”. 다양한 정의:

  • 프로시저가 활동 중인 것.
  • 프로세서에 의해 처리되는 프로그램. 프로세서가 할당되는 실체. 디스패치(dispatch)가 가능한 단위.
  • 실기억장치에 저장된 프로그램.
  • 비동기적 행위를 일으키는 주체.
  • 운영체제가 관리하는 실행 단위. PCB를 가진 프로그램.
    • PCB (Process control block; 프로세스 제어 블록): 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
    • PCB에 저장된 정보: 프로세스의 현 상태, 포인터, 프로세스 고유 식별자, CPU 레지스터 정보, 주기억장치 관리 정보, 입출력 상태, 계정 정보

프로세스 상태 전이

프로세스가 시스템 내 존재하는 동안 상태가 변하는 것.

state

  • 디스패치 (Dispatch): 준비 (Ready) 상태인 프로세스가 프로세서를 할당받아 실행 (Run) 상태로 전이되는 과정 (Ready → Run)
  • Wake Up: 입출력이 완료되어 대기 (Wait/Block) 상태인 프로세스가 준비 (Ready) 상태로 전이되는 과정 (Wait/Block → Ready)
  • 스풀링 (Spooling): 입출력할 데이터를 직접 입출력 장치에 보내지 않고 이후 한 번에 입출력하기 위해 디스크에 저장하는 과정
    • 효과: 입출력장치 공유, 입출력 속도 보완, 다중 프로그래밍 시스템 성능 향상

스레드 (Thread)

시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위. 프로세스 내에서의 작업 단위. 프로세스의 일부 특성을 갖고 있어 경량 프로세스 (Light weight process)라고도 함.

스케줄링 (Scheduling)

프로세스가 생성되어 실행될 때 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업.

비선점 (Non-preemptive) 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 뺏을 수 없는 스케줄링 기법. 일괄 처리 방식에 적합.

  • FCFS (First Come First Service; 선입 선출=FIFO): 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법.
  • SJF (Shortest Job First; 단기 작업 우선): 준비 상태 큐 내 프로세스 중 실행시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 기법.
    • 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘.
  • HRN (Highest Response-ratio Next): 대기 시간과 서비스(실행) 시간을 통해 우선순위를 계산하여, 우선순위가 높은 것부터 스케줄링하는 기법.
    • 우선순위 = (대기 시간 + 서비스 시간) / 서비스 시간

선점 (Preemptive) 스케줄링

우선순위가 높은 프로세스가 이미 할당된 CPU를 빼앗아 사용할 수 있는 스케줄링 기법. 빠른 응답시간이 요구되는 대화식 시분할 시스템에 적합.

  • 종류: RR, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
  • RR (Round Robin): 각 프로세스를 시간 할당량 (time slice, quantum) 동안만 실행한 후, 실행이 완료되지 않으면 다음 프로세스에 CPU를 넘겨주는 기법.
    • 시분할 시스템 (time sharing system)을 위해 고안된 방식. 할당 시간이 작으면 작은 프로세스에게 유리.
    • 할당 시간이 큰 경우 FCFS와 같아지고, 할당 시간이 작으면 문맥 교환 및 오버헤드가 자주 발생하여 신속한 작업 처리가 불가함.
  • SRT (Shortest Remaining Time): 현재 실행 중인 프로세스의 남은 시간과 준비 상태 큐에 새로 도착한 프로세스의 실행 시간을 ㅣㅂ교하여, 가장 짧은 시간을 요구하는 프로세스에게 CPU를 넘기는 기법.
    • (+) 시분할 시스템에 유용. (-) 준비 상태 큐 내 프로세스의 실행 시간을 추적 보유해야 하므로 오버헤드가 증가함.


환경 변수와 OS 명령어

환경 변수 (Environment Variable)

시스템 소프트웨어의 동작에 영향을 미치는 동적인 값의 모임. 변수명과 값으로 구성됨.

  • Windows의 set, UNIX/LINUX의 set, env, printenv, setenv 를 입력하면 모든 환경변수와 값을 출력함.

Windows 기본 명령어

  • dir 현재 디렉터리 파일 목록 표시 / cd 동일 드라이브 내에서 디렉터리의 위치를 변경 / md 디렉터리 생성
  • copy 파일 복사 / del 파일 삭제 / ren 파일 이름 변경 / type 파일 내용 표시 / move 파일 이동
  • cls 화면 내용 삭제
  • attrib 파일 속성 변경 / find 파일에서 문자열을 찾음
  • chkdsk 디스크 상태 점검 / format 디스크 표면을 트랙과 섹터로 나누어 초기화

UNIX/LINUX 기본 명령어

  • cat 파일 내용 표시
파일 내용 표시 cat type

MRI Quality Assessment 및 Control 관련 네 개 논문 요약

다음은 MRI 품질 평가(quality assessment) 및 관리(quality control)와 관련된 네 편의 논문 요약입니다:

Paper list

  • Liao, Lufan, et al. “Joint image quality assessment and brain extraction of fetal MRI using deep learning.” Medical Image Computing and Computer Assisted Intervention–MICCAI 2020: 23rd International Conference, Lima, Peru, October 4–8, 2020, Proceedings, Part VI 23. Springer International Publishing, 2020.
  • Giganti, Francesco, et al. “Prostate Imaging Quality (PI-QUAL): a new quality control scoring system for multiparametric magnetic resonance imaging of the prostate from the PRECISION trial.” European urology oncology 3.5 (2020): 615-619.
  • Esses, Steven J., et al. “Automated image quality evaluation of T2‐weighted liver MRI utilizing deep learning architecture.” Journal of Magnetic Resonance Imaging 47.3 (2018): 723-728.
  • Monereo-Sánchez, Jennifer, et al. “Quality control strategies for brain MRI segmentation and parcellation: Practical approaches and recommendations-insights from the Maastricht study.” Neuroimage 237 (2021): 118174.


Joint Image Quality Assessment and Brain Extraction of Fetal MRI Using Deep Learning (2020)

Background

  • Quality Assessment (QA): MRI 이미지의 분석 적합성을 평가한다.
  • Brain Extraction (BE): MRI 이미지에서 뇌 영역을 식별하고 분리한다.

지금까지 QA와 BE는 독립적으로 수행되어 왔으나, 이 연구에서는 두 작업 모두 이미지 내 뇌 영역에 집중하므로 동시에 최적화하면 성능을 향상시킬 수 있다고 주장한다. QA와 BE를 결합한 deep learning (DL) 모델을 제안한다. 또한 태아의 뇌는 영상 내 다양한 위치와 각도로 나타나고, 태아가 성장함에 따라 그 형태가 변하므로, 태아 뇌 영상을 다루는 것은 난이도가 높다. 이것을 해결하기 위해 deformable convolution method를 도입한다.

Contributions

  1. Joint optimization: QA와 BE를 결합하여, 모델에 shared feature를 학습시키고, overfitting 위험을 줄인다.
  2. Multi-stage deep learning (DL) model:
    • Brain detector: MRI 스캔 내에서 뇌 영역을 찾는 detector를 사용한다. 이것으로 후속 작업에서 관련한 이미지 영역에 집중하도록 돕는다.
    • Deformable convolution: 태아 뇌는 크기와 형태가 다양하므로 이에 맞게 receptive field를 조정한다.
    • Task-specific module: 앞의 두 단계를 거친 후 모델이 QA와 BE를 동시에 수행하도록 한다.
  3. Multi-step training strategy: 모델을 점진적으로 학습시켜 모델 학습을 강화한다.

Evaluation

  • Dataset: 태아 MRI 이미지, 2D 슬라이스 품질 평가.
  • Metrics:
    • Dice Similarity Coefficient (DSC): BE 정확도를 평가하는 주요 지표.
    • Quality Scores: 이미지 품질 분류 정확도.
  • Results:
    • 0.89의 DSC score를 달성하여 높은 BE 정확도를 보였다.
    • 85% accuracy의 이미지 품질 분류 성능을 보였다.

Conclusion

이 연구는 태아 MRI 스캔에서 QA와 BE를 동시에 처리하는 DL 모델을 제안했다. Deformable convolution을 사용해 뇌 이미지의 변동성을 처리하고, multi-step training과 다양한 dataset을 통한 검증으로 모델의 성능을 입증했다.


Prostate Imaging Quality (PI-QUAL): A New Quality Control Scoring System for Multiparametric Magnetic Resonance Imaging of the Prostate from the PRECISION trial (2020)

Background

PRECISION trial은 다기관 무작위 연구로, 다매개자기공명영상(multiparametric magnetic resonance imaging; mpMRI)을 타겟으로 하는 생검(biopsy)이 표준 경직장 초음파 유도(transrectal ultrasound-guided) biopsy보다 전립선암 진단에 우수하다는 것을 입증했다. 한편 mpMRI-targeted biopsy의 성공은 mpMRI 스캔 품질에 크게 의존하는데, 이 품질을 평가할 시스템이 기존에 존재하지 않았다.

Prostate Imaging Quality (PI-QUAL)

이 문제를 해결하기 위해 Prostate Imaging Quality (PI-QUAL)이라는 새로운 평가 시스템을 도입했다. PI-QUAL은 1에서 5까지의 Likert scale이다.

  • 1: mpMRI 시퀀스 품질이 진단에 적합하지 않음
  • 5: 각각의 시퀀스가 독립적으로 진단에 최적화된 품질을 가짐

Method

  1. MRI 스캔 선택: PRECISION trial에서 252개의 mpMRI 스캔 중 58개(23%)가 랜덤으로 선택된다. 이 스캔은 trial에 참여한 22개 센터에서 가져왔다.
  2. Radiologist의 평가: 숙련된 방사선 전문의가 각자 독립적으로, pathology를 모르는 상태로 MRI 스캔을 평가했다.
  3. Metrics
    • Overall quality: 스캔의 전체 진단 품질 평가
    • 특정 시퀀스 quality: T2WI, DWI, DCE와 같은 개별 시퀀스의 품질 별도 평가
  4. Statistical Analysis
    • 충분한 진단 품질을 가진 스캔의 비율(PI-QUAL 점수 ≥3)을 계산했다.
    • 좋은 또는 최적의 진단 품질을 가진 스캔의 비율(PI-QUAL 점수 ≥4)을 결정했다.
    • 특정 영상 시퀀스의 진단 품질을 분석했다.

Results

  • 전체 진단 품질: 58개 스캔 중 55개(95%)가 충분한 진단 품질(PI-QUAL 점수 ≥3)을, 35개(60%)가 좋은 또는 최적의 진단 품질(PI-QUAL 점수 ≥4)을 보였다.
  • 시퀀스 별 품질: T2WI 스캔의 95%, DWI 스캔의 79%, DCE 스캔의 66%가 진단 품질을 보였다.

Conclusion

PI-QUAL 점수의 도입은 mpMRI 스캔의 품질을 평가하는 표준화된 방법을 제공한다. 다만 다양한 임상 환경에서 이 점수 시스템의 효과를 보장하기 위해 추가 검증이 권장된다.


Automated image quality evaluation of T2-weighted liver MRI utilizing deep learning architecture (2018)

Background

간 T2WI MRI 스캔 검토는 진단을 효과적으로 하기 위해 정확해야 하는데, 방사선 전문의가 manual하게 평가하게 되면 시간이 많이 걸리고 의사마다 진단의 차이가 있다. DL, 특히 convolutional neural network (CNN)를 사용하는 자동화된 방법은 일관적이고 효율적인 이미지 품질 평가를 위한 솔루션을 제공한다. 이 연구는 CNN 기반 모델을 개발해 non-diagnostic 이미지를 식별하고, 모델의 결과를 전문의의 평가와 비교하고자 한다.

Method

  • Data collection: 2024.11 ~ 2016.05 간 1.5T 및 3T에서 수행된 522개 간 MRI 검사를 사용했다.
  • CNN architecture: CNN 모델은 input layer, convolutional layer, fully connected layer 및 output layer 등 여러 층으로 구성된다.
  • Training data: 351개 T2WI 이미지를 익명화하고, 병변(lesion)이 탐지되는지, 간 형태(morphology)가 보이는지 등에 따라 diagnostic/non-diagnostic으로 레이블링했다.
  • Validation data: 172개 T2WI 이미지를 테스트에 사용했다. 두 명의 방사선 전문의가 이미지를 평가해 위 두 개로 레이블링했다.
  • Comparison: 모델의 이미지 품질 관련 출력을 두 전문의의 판단과 비교했다.

Results

  • 모델의 예측은 전문의 1과 79%, 전문의 2와 73% 일치했다.
  • Non-diagnostic 이미지를 식별하는 데 있어 CNN의 sensitivity와 specificity는
    • Sensitivity: 전문의 1과 67%, 전문의 2와 47%,
    • Specificity: 전문의 1과 81%, 전문의 2와 80% 일치했다.
  • Negative 예측값은 전문의 1과 94%, 전문의 2와 86% 일치했다.

Conclusion

이 연구는 T2WI 이미지 품질 평가 자동화를 위해 DL, 특히 CNN 모델을 사용하는 가능성을 보여주었다. 모델의 성능을 방사선 전문의와 비교하였고, 결과적으로 모델이 높은 음성 예측값을 보여 diagnostic 이미지 식별에 있어 신뢰할 수 있음을 입증했다. 자동화된 품질 평가는 임상 시 전문의가 MRI 스캔의 품질을 신속 정확하게 결정하는 데 도움을 줄 수 있다.


Quality control strategies for brain MRI segmentation and parcellation: Practical approaches and recommendations - insights from the Maastricht study (2021)

Background

뇌 MRI segmentation에서 품질 관리(quality control; QC)는 데이터의 정확성을 보장하는 데 중요하다. Manual QC는 gold standard로 간주되지만, dataset 규모가 클 경우 현실적이지 않다. 자동화된 방법은 빠르고 효율적인 대안이지만 이것이 최선의 방법인지에 대해 합의가 부족하다. 이 연구는 manual하게 segmentation을 편집하는 것(manual editing)이 갖는 영향을 밝히고, 다양한 QC 전략을 비교해 측정 오류를 효과적으로 줄이고자 한다.

Method

  • Data: Maastricht Study 참여자 259명의 structural brain MRI
  • Segmentation Tool: FreeSurfer 6.0을 사용해 형태학적(morphological) 추정치를 자동으로 추출
  • Manual Editing: 부정확한 segmentation을 manual하게 편집하고, 편집 전후의 morphological estimate를 비교
  • Quality Control Strategies:
    • Manual Strategy: 이미지를 제외하거나 편집하기 위해 일일이 눈으로 검사
    • Automated Strategy: MRIQC, Qoala-T 등의 도구를 사용해 이상치를 제외, morphological global measures, Euler numbers, Contrast-to-Noise ratio 등의 수치를 측정
    • Semi-automated Strategy: 도구와 지표로 감지된 이상치를 제외하지 않고 검사하여 manual editing
  • Evaluation: 각 전략을 적용한 후 전체 분산에 비해 설명되지 않는 분산의 비율을 측정

Results

  • Manual QC: subcortical brain 용적에서 유의한 변화가 있었고, cortical surface, thickness 및 hippocampal 용적에서 어느 정도의 변화가 있었다.
  • Strategy performance: 관점이 된 morphological measure에 따라 달라진다.
    • Manual Strategy: 설명할 수 없는 분산이 제일 적었다.
    • Automated Alternative: Euler numbers와 MRIQC 점수 기반
    • Global Morphological Measure: 이상치를 제외하면 설명할 수 없는 분산이 증가한다.

Conclusion

이 연구는 뇌 MRI segmentation에서 QC의 중요성을 강조한다. 대규모 dataset에서는 실질적으로 불가능한 manual method 대신 Euler 수 및 MRIQC를 사용하는 자동화 방법이 효과적이고, global estimate를 기반으로 이상치를 제외하는 방식은 오류가 증가한다는 것을 지적했다. 이로서 실질적인 QC strategy 구현에 관한 권장 사항을 제공한다.