ASHD Dev_Blog

4 DATABASE [OS-study]

메모리의 종류 및 동작 과정

이재룡
이재룡 Jul 2, 2025

[ 1. RDB vs NoSQL ]

  • RDB : record - table - database
  • NoSQL : document - collection - database
 
 

[ 2. 관계 ]

관계 화살표

Callout icon'
A ────O─ B
- 의미: A ↔ B 가 0 또는 1 관계 (최대 1개)
A ────O<─ B :
- 의미: A ↔ B 가 0..N 관계 (선택적 다수 관계)
 

 
  • 기본키 (Primary key) : 유일성 + 최소성
  • 외래키 (Foreign key) : 기본키 참조 - 유일X
  • 후보키 (Candidate key) : 기본키 후보 (유일성 + 최소성)
  • 대체키 (Alternate key) : (Candidate - Primary)
       
  • 우선순위 (SJF에 가중치 부여)
    • ⇒ 시행 시간이 짧은거 먼저 실행하되, 오래된 작업에 우선순위를 높게 설정

Callout icon'
심화 질문 1 : 몇몇 우선순위 알고리즘은 시행 시간에 영향을 받는다. 하지만 실제 운영체제에서는 실행 이전에 시행시간을 알 수 없다. 현대의 알고리즘 방식에서는 어떻게 이를 해결하는지 설명하시오
Callout icon'

예측 데이터 이용 (like EMA)
τ[n] = α * T[n-1] + (1 - α) * τ[n-1]

  • τ[n] : 이번에 예측한 실행 시간
  • T[n-1] : 직전에 실제로 측정된 실행 시간
  • τ[n-1] : 직전에 예측했던 실행 시간
  • α : 새 데이터에 얼마나 민감하게 반응할지 결정하는 가중치(0~1)
 
 

[ 3. 트랜잭션과 무결성 ]

트랜잭션의 특징 : ACID

  • Atomicity(원자성) : 모두 수행 또는 수행되지 않음 ⇒ 0/1

⇒ 하나의 트랜잭션 단위에서는 외부 호출이 일어나서는 안되고, 만약 피할 수 없다면, 롤백과정을 설계 해야함

Callout icon'
@Transcatonal 의 의미
- 트랜잭션 전파 : 트랜잭션은 커넥션 단위로 수행하기 때문에 커넥션 객체를 매번 넘기는 방식으로 행햐하는데 이와 관련된 메소드 호출을 하나로 묶어서 해결하는 방법
Spring Annotation Transcational은 해당 어노테이션이 붙은 쿼리 작업 메소드들을 하나의 트렌잭션으로 처리 (Spring AOP가 자동적으로 처리)
 
  • Consistency(일관성) : 허용된 방식만
  • Isolation(격리성) : 서로 다른 트랜잭션 간의 격리 단계
    • 격리 수준

      1. SERIALIZABLE : 무조건 순차적
      1. REPEATABLE READ : 이미 수정한 행을 다른 트랜잭션이 수정 불가 (행 자체의 추가는 가능)
      1. READ COMMITTED : 완료된 커밋에 대해서는 모든 접근 허용
      1. READ UNCOMMITTED : 커밋 이전에도 다른 트랜잭션에 노출 ⇒ “대략적” 집계

  • Durability(지속성) : 성공한 트랜잭션은 영원히 반영 (롤백 가능
    • 체크섬 : 중복검사를 통한 오류정정
    • 저널링 : 커밋하기전에 로깅
    •  

      현상

      1. 팬텀리드 : 트랜잭션 내에서 동일한 쿼리가 다른 결과 (아예 다른 Row를 조회)
      1. 반복 불가능 조회 : 트랜잭션 내에서 같은 행을 여러변 조회시 다른 데이터 (Row의 값이 다름)
      1. 더티리드 : 커밋되지 않아도 변경 내역이 조회
 

무결성

  • 개체 : 기본키는 notNull
  • 참조 : 서로 참조 관계일 경우 일관된 값
  • 고유 : 특정 속성에 대해 고유성
  • Null : notNull 제약 조건
    • ⇒ 각 프로세스에 동일한 시간 할당 / 끝

      (N-1) * q 시간이 지나면, 다시 자기 차례

 
  • SRF (Shortest Remaining Time First)
    ⇒ SJF 과정 중 더 짧은 실행 시간을 가지는 작업이 들어오면 스위칭
    •  
  • 다단계 큐
    • ⇒ 우선 순위에 따라 준비 큐를 여러개 사용하고, 각 큐마다 스케줄링 알고리즘 적용

       
      Callout icon'
      심화 질문 2 : P1, P2, P3, P4를 실행함에 있어 SJF알고리즘과 SRF알고리즘을 사용하였을때, 프로세스들의 평균 대기 시간을 연산하시오
      (단, SRF에서의 ContextSwitching에 소모되는 시간은 고려하지 않는다.)
      • BurstTime : 작업때 까지 걸리는 시간
      • WastingTime = 대기시간
       

      Ex) P1 → P2 (SJF)의 대기시간은

      • 0초 : P1 arrive & P1 start (대기시간 0)
      • 2초~7초 : P1 작업 중 & 2초부터 P2 대기 (대기시간 5초)
        ⇒ 예시 일 뿐 실제 과정은 다를 수 있음

      Callout icon'

      SJF ⇒ P1 → P3 → p2 → p4

      P1 대기시간 : 0

      P2 대기시간 : 2~(7+1) = (P1 & P3) = 6

      P3 대기시간 : 4~7 = 3

      P4 대기시간 : 5~(7+1+4) = (P1 & P3 & P2) = 7

       

      평균 대기시간 (SJF) (0+6+3+7)/4 = 4

       

      SRF

      0초 ~2초 p1(7-2, w=0)

      2초 ~ 4초 p2(4-2, w=0) , p1(5, w=2)

      4초 ~ 5초 P3(1-1, w=0), P2(2, w=1), P1(5, w=3)

      5초 ~ 7초 P2(2-2, w=1), P1(5, w=5), P4(4, w=2)

      7초~ 11초 P4(4-4, w=2), P1(5, w=9)

      11초 ~ 16초 P1(5-5, w=9)

       

      평균 대기시간 (SㄲF) (9+1+0+2)/4 = 3

 
 

추천 글

BlogPro logo