CS 공부 - 운영체제와 데이터베이스

bluesky·2022년 7월 14일
2

OS

공유자원과 임계영역.

  • 자원을 공유하는 영역에 접근하는 데, 멀티쓰레드에서 실행순서에 따라 그 결과가 달라질수도 있는 코드영역을 임계영역이라고 한다.
  • 이러한 임계 영역은 뮤텍스, 세마포어, 모니터 등과 같은 방법으로 접근이 관리되어야 한다.
    • 이 방법들 모두 상호 배제, 한정 대기, 융통성 조건을 만족
    • 뮤텍스 : 자원에 대한 접근을 lock, unlock 상태로 관리. 사용전에 lock하고 사용후에 unlock하는 방식.
    • 세마포어 : 일반화된 뮤텍스,
      • 정수값과 두가지 함수(wait, signal)로 공유 자원에 대한 접근을 관리
      • 자원에 대한 접근을 신호를 이용하여 관리. 여러 상태 값을 가질수 있다.
    • 모니터 : 자원에 대한 접근을 추상화하여(접근에 대해 인터페이스만 제공), 쓰레드가 직접 접근할 수 없도록 관리.

교착상태란?

  • 교착 상태란, 프로세스 A와 B가 서로 가 가진 자원을 얻기 위해 계속해서 대기하면서, 더이상 진척이 없는 상태.
    • 이것을 유지 하려면 특정 조건이 필요한데…
      • 비선점
      • 환형상태
      • 상호배제
      • 점유 대기
  • 이런 것들을 해결하기 위한 다양한 방법들
    • 교착상태에 빠지지 않도록 관리(은행원 알고리즘 같은 것을 이용하여 자원할당 가능여부를 파악함.)
    • 혹여나 교착 상태에 빠진 다면, 특정 프로세스를 하나씩 종료 시켜봄.
    • 현대적 OS는 이러한 상태에 빠지면, 사용자에서 프로세스 종료를 맡김.

Database

정규화란?

  • 정규화는 데이터 중복이나, 기타 삽입 수정 삭제 이상을 방지하기위해 사용하는 기법
  • 1, 2, 3, BCNF가 있다.
    • 1형 : 필드의 모든 값이 원자값을 가지는 상태다.(복합값을 가지면 안됨.)
    • 2형 : 기본키 이외의 속성에서 부분함수 종속이 있어서는 안됨.
    • 3형 : 기본키를 제외한 키에서 이행적 함수 종속이 있어서는 안됨(A→B, B→C 일때, A→C가 되버리는 성질.)
    • BCNF : 3형을 만족하면서, 함수 종속 관계에서 모든 결정자가 후보키이여야 함.

조인의 종류는?

  • 조인의 종류는 이너조인, left outer join, right outer join, outer join 이 있다.

조인의 원리는?

  • 조인의 원리는 Nested Loop Join, Sorted merge join, hash join이 있다.
  • 이러한 조인 기법은 dbms가 결정하고, 쿼리에서 힌트를 줄수 있긴 함.
    • Nested Loop join

      • 중첩 포문과 유사한 원리로 선행 테이블에서 만족시키는 행과 후행테이블을 조인하는 방식.
      • 랜덤 접근이 일어남. 대용량 데이터에서 불리.
      • 선행 테이블로 행이 적은 테이블을 선택하는 것이 성능상 유리.
    • Sorted merge join

      • 정렬하고 조인을 하는 원리임.
      • 스캔 방식으로 접근함.
      • 동등조인이 아니여도 수행 가능
      • hash join보다 성능이 안좋음.
      • 인덱스가 존재하지 않아도 사용 가능.
    • Hash join
      - 해쉬함수를 이용하여 조인하는 방법
      - 동등조인의 경우에만 수행이 가능.
      - 메모리에 테이블이 다올라갈수 있다면, 중첩 루프 조인보다 성능이 좋음.
      - 인덱스가 존재하지 않아도 사용 가능.

      참고자료들.

      https://eehoeskrap.tistory.com/84

profile
SMART https://github.com/dongseoki?tab=repositories

0개의 댓글