'***'에 해당되는 글 22건

  1. 2016.03.11 08 데이터 저장과 파일
  2. 2016.03.10 07 정규화 II
  3. 2016.03.10 06 정규화 I
  4. 2016.03.09 05 SQL
  5. 2016.03.09 04 관계형 모델
  6. 2016.03.08 03 데이터베이스 모델링
  7. 2016.03.07 02 데이터베이스
  8. 2016.03.06 01 데이터베이스 개요
  9. 2016.03.06 3. 스케줄링 알고리즘
  10. 2016.03.05 2. 프로세스 개요
  • 데이터 저장과 파일

    8.1 물리적 저장장치

    • 물리적 저장장치
      • 물리적 저장장치들은 데이터 접근 속도를 기준으로 다양한 장치로 분류

           

         

    • 기억 지속성 관점에서 분류
      • 휘발성
        • 주기억장치: 레지스터, 캐시, 메인 메모리로 주로 CPU가 이용
      • 비휘발성
        • 보조기억장치: 디스크와 같이 주기억장치보다 하위에 위치하여 주기억장치를 보조
        • 3차 기억장치: 광학 디스크 드라이브, 자기 테이프
      • 캐시
        • 고비용 저장장치로 빠른 데이터 접근 속도를 보장
        • 레지스터를 제외하면 프로세서가 가장 빠르게 접근
      • 메인 메모리
        • 프로그램과 데이터가 적재되는 공간
      • 플래쉬 메모리
        • 메인 메모리와 유사하나 비휘발성 저장장치로 전원이 꺼져도 데이터를 유지
        • 디스크보다 빠른 접근 가능
      • 자기 디스크
        • 주로 데이터베이스 전체가 저장되는 공간으로 데이터를 안정적으로 저장
      • 광학 디스크 드라이브
        • 대표적인 광학 기억장치는 CD
        • DVD의 경우 4.7GB 정도
      • 테이프 저장장치
        • 기록 데이터를 저장하는데 사용
        • 자기 디스크보다 용량이 크고 저렴
        • 데이터를 순차적으로 읽어야 하기 때문에 데이터 접근이 매우 느림

           

    8.2 RAID

    복수의 디스크를 사용

  • 표준 RAID 수준
    • RAID 0 수준: 스트라이핑
      • 스트라이핑: 빠른 데이터 입출력을 위해 데이터를 여러 디스크에 나누어 저장
      • 데이터를 중복 저장하지는 않기 때문에, 디스크 장애 발생시 데이터 손실 발생
    • RAID 1 수준: 미러링
      • 데이터를 중복 저장하기 때문에, 디스크 장애 발생시 데잍어 복구가 가능
      • 용량이 큰 데이터에 대한 병렬적으로 빠른 읽기가 가능
      • 쓰기의 경우 성능이 저하
    • RAID 0+1 수준: 스트라이핑과 미러링
    • RAID 2 수준: 스트라이핑과 에러 검출 및 정정
    • RAID 3 수준: 패리티비트 기반 스트라이핑
    • RAID 4 수준: 패리티비트 기반 개량 스트라이핑
    • RAID 5 수준: 삽입 패리티 기반 개량 스트라이핑

       

  • 신뢰성 향상
    • 데이터를 중복시켜 여러 디스크에 저장하면, 저장한 데이터가 디스크의 장애에 의해서 손실되어도 복구가능
    • 미러링된 디스크들은 각 디스크의 평균 고장시간과 평균 수리시간에 영향
      • 평균 고장시간: 디스크가 고장 나기까지 걸리는 시간
      • 평균 수리 시간: 고장 난 디스크를 교체하고 데이터를 복구하는데 걸리는 시간
      • 평균 데이터 손실 시간: 미러링된 디스크가 데이터를 손실하는데 까지 걸리는 시간

       

  • 성능 향상
    • 미러링: 복수의 디스크에 병렬적인 접근하여 처리함으로써 읽기 속도 향상
    • 스트라이핑: 데이터를 다수의 디스크에 나누어 저장하기 때문에 성능이 향상

         

         

         

    8.3 파일 구성

    • 파일 구성
      • 파일: 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 구조
      • 블록: 파일을 고정적인 길이로 분할하여 생기는 균등한 크기의 데이터 묶음

        =>블록 단위로 분할되어 디스크에 기록

      • 레코드: 블록을 구성하는 요소로, 더 이상 분리 되어 저장되지 않는 최소 데이터 저장단위
    • 고정 길이 레코드
      • 각 레코드에 고정적인 바이트 수를 할당하는 기법

    • 고정 길이 레코드의 문제점
      • 블록의 길이가 레코드 길이로 정확히 나뉘어 떨어지지 않는 경우

        => 블록 내의 남은 공간으로 저장 공간이 낭비됨

      • 레코드 삭제 시
        • 특정 레코드가 삭제되면, 해당 레코드가 저장된 공간이 비기 때문에 낭비가 발생
      • 대처 방법
        • 마지막 레코드로 공백 대체
        • 삭제 레코드 이후에 레코드를 이동
        • 가용 리스트 관리
    • 가변 길이 레코드
      • 블록에 저장되는 레코드의 길이가 서로 다르게 레코드에 가변적인 길이를 할당하는 방법
      • 가변길이 레코드가 쓰이는 경우
        • 한 블록 내에 저장되는 레코드의 유형이 둘 이상
        • 길이가 고정되지 않은 컬럼의 개수가 하나 이상
        • 레코드가 멀티셋을 허용한 컬럼을 가질 때

          *멀티셋: 컬럼값이 여러 개인 컬럼

             

    • 파일 구조화 방법
      • 힙 파일 구조
        • 모든 레코드는 파일 내 임의의 위치에 위치
        • 저장 순서를 고려하지 않음
      • 순차 파일 구조
        • 레코드들이 특정 컬럼에 대한 값을 기준으로 정렬되어 저장
        • 정렬키로 검색키를 사용
      • 해시 파일 구조
        • 레코드를 입력 받아 레코드가 저장될 블록주소를 반환하는 해시 함수를 사용
    • 순차 파일 구조
      • 레코드가 검색키 순서대로 정렬
      • 레코드가 파일에 삽입되는 시점에서 키 값이 부여
      • 장점
        • 검색 키에 대한 정렬 연산이 불필요, 키 값들의 순서로 레코드를 판독하는 연산에 효율적
        • 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블록 접근이 불필요
        • 이진 탐색을 사용하면 더 빠르게 레코드를 검색
      • 단점
        • 레코드 삽입, 삭제에 많은 비용 소요됨
    • 다중 테이블 클러스터링 파일 구조
      • 빈번히 조인되는 테이블을 하나의 파일에 저장하기 위한 구조
      • 필요한 테이블이 미리 조인되어 저장

           

           

    8.4 저장장치 접근

    • 저장장치 접근
      • 파일은 논리적 관점에서의 저장이며, 실제 저장될 때에는 여러 개의 물리적 단위인 블록으로 저장

        일반적으로 2KB, 4KB, 8KB, 16KB, 32KB 사용

        • 블록은 데이터의 전송 단위로 블록 전송을 최소화할수록 입출력 소요 시간이 단축
        • 블록전송 최소화
          • 사용 중인 블록을 지속적으로 메모리에 적재
          • 한정적 공간으로 인하여 필요에 따라 특정 블록할당을 해지
          • 메모리 내부에 버퍼라는 공간에 블록을 저장하고, 이를 관리하기 위한 버퍼 관리자를 사용

               

    • 버퍼 관리자
      • DBMS상의 프로그램들은 필요한 블록이 있을 때 버퍼 관리자들에게 해당 블록을 요청
        • 요청된 블록이 버퍼에 있다면, 버퍼 관리자는 블록이 위치한 메모리 주소를 프로그램에게 전달
        • 요청된 블록이 없는 경우, 버퍼 관리자는 버퍼내의 새로운 공간을 할당하고 해당 블록을 적재
        • 더 이상 적재할 공간이 없다면, 버퍼에 있는 기존 블록을 선택하여 할당을 해지하고 해당 블록을 적재
    • 버퍼 관리자의 기능
      • 버퍼 교체 전략
        • 가용 공간을 확보하기 위해 기존에 적재된 블록의 할당을 특정 기준에 의하여 해지
        • 미래에 가장 적게 사용될 블록을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략
          • LRU(Least Recently Used)

            최근에 참조된 블록은 다시 참조될 가능성이 높다고 판단하여 가장 최근에 적게 참조된 블록을 교체

          • MRU(Most Recently Used)

            최근에 가장 많이 사용된 블록을 선택하여 블록을 교체

      • 고정 블록
        • 장애로 인하여 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
        • 디스크 블록이 교체되는 것을 제한
      • 블록 강제 출력
        • 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 함
        • 버퍼 공간이 필요 없어도 강제로 디스크에 기록

'데이터베이스' 카테고리의 다른 글

10 인덱싱과 해싱 II  (0) 2016.03.14
09 인덱싱과 해싱 I  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
Posted by redcode.
,

07 정규화 II

데이터베이스 2016. 3. 10. 22:53
  1. 정규화

    7.1 기본 정규형

       

  • 제1정규형
    • 릴레이션의 모든 속성이 단일 값으로 구성되어야 하는 조건
    • 정의

      어떤 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태

         

  • 함수적 종속성 판별

       

  • 함수적 종속성 다이어그램
    • 릴레이션 내의 속성간의 종속 관계를 직관적으로 이해하기 쉽게 도식화 한 표현방식
      • 직사각형: 속성 또는 속성 집합
      • 화살표: 함수적 종속성

  • 제2정규형
    • 릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않을 때 제 2정규형이라고 함
    • 정의

      주어진 릴레이션의 인스턴스가 제1정규형을 만족하고 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태

    •    

  • 릴레이션의 무손실 분해
    • 임의분해 시 발행하는 문제점
      • 불필요한 조인이 발생
      • 분해된 릴레이션을 사용하여 원래 릴레이션을 재구성 하지 못하는 경우
    • 무손실 분해
      • 어떤 릴레이션 스키마 𝑅에 함수적 종속성 𝑋→𝑌가 존재하고 𝑋∩𝑌= 이면, 𝑅𝑅−𝑌𝑋𝑌로 분해하는 것을 무손실 분해라고 함
    • 도크관리 릴레이션 무손실 분해
      • {도크번호}{도크관리자}
      • {도크번호}{도크관리자}=

      => 도크관리 - {도크관리자}, {도크번호, 도크관리자}로 분해

         

  • 제3정규형
    • 정의

      릴레이션이 제2 정규형을 만족시키고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태

      이행적 종속성 - 𝑋→𝑌이고 𝑌→Z이면 𝑋→Z이다

         

    •    

      • {도크번호, 입항시간} {목적}
      • {목적}{담당도선사}

        => {도크번호, 입항시간} {담당도선사}

           

         

         

       

       

  • BC정규형
    • 정의

      릴레이션이 제3정규형을 만족하고 릴레이션에서 성립하는 xY형태의 모든 함수적 종속성에 대하여 x가 슈퍼키인 상태

    • 입출항관리 릴레이션의 함수적 종속성
      • {도크번호, 입항시간} {목적}
      • {도크번호, 입항시간} {출항시간}
      • {목적} {도크번호}

   

   

   

   

   

7.2 추가적인 정규형

  • 다중치 종속성
    • 다중치 종속성의 원인은 릴레이션 속성값이 원자값만을 가져야 하는 제1정규화 제약조건
    • 다중값 속성을 허용하지 않으면 한 번만 삽입될 레코드가 다른 속성들의 값과 같이 매번 중복되어 저장하는 문제가 발생 함
    • 릴레이션 R1, R2, R3 사이에 일대다 관계가 존재하면, R1, R2, R3가 한 릴레이션으로 합쳐지면

      다중치 종속성이 발생 함

         

  • 제4정규형
    • 정의

      릴레이션의 스키마 R의 종속성 집합 F에 대한 F+의 모든 자명하지 않은 다중치 종속성 X→→Y에 대하여 X가 P의 슈퍼키인 상태

         

    • 도선사 릴레이션의 다중치 종속성
      • 도선사명 →→ 선박종류
      • 도선사명 →→ 자격증

           

       

  • 조인종속성
    • 릴레이션을 분해하여 생성된 릴레이션과 원래 릴레이션의 관계를 검사하여 얻음
    • 정의

      릴레이션 스키마 R을 R1, R2,…, Rn으로 분해 시 R1 R2 Rn = R을 만족하면

      R1, R2,…, Rn은 R에 대해 조인종속성을 가짐

    • 표기
      • *({도선사명, 선박종류}, {도선사명, 자격증})

        =>분해되기 전의 도선사 릴레이션에 대하여 조인종속성을 가짐

           

  • 제5정규형

       

'데이터베이스' 카테고리의 다른 글

09 인덱싱과 해싱 I  (0) 2016.03.11
08 데이터 저장과 파일  (0) 2016.03.11
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
Posted by redcode.
,

06 정규화 I

데이터베이스 2016. 3. 10. 22:52
  • 정규화

    6.1 좋은 릴레이션과 나쁜 릴레이션

  • 잘못된 데이터베이스 모델링
    • 데이터중복
    • 갱신 이상
      • 삽입 이상: 레코드 추가 시 불필요한 컬럼의 값 없이는 추가하지 못하는 경우
      • 삭제 이상: 삭제 시 의도하지 않았던 다른 데이터가 삭제 되는 경우
      • 수정 이상: 중복 저장된 레코드를 수정 시 모두 반영이 안되어 데이터베이스의 일관성이 깨지는 경우

           

       

    6.2 함수적 종속성

    • 함수적 종속성

      릴레이션 인스턴스를 분석하여 속성들 간의 연관 관계를 표현한 것

    • 정의

      임의의 릴레이션 스키마 R의 인스턴스 r(R )에 포함되는 서로 다른 두 레코드 t1, t2와 속성 집합 X와 Y에 대해

      t1[X] = t2[X]일 때, t1[y] = t2[y] 이면 함수적 종속성 X Y가 성립한다.

         

    • 함수적 종속성 추론 규칙
      • 함수적 종속성은 정규화 실행 여부에 중요한 판단기준이 되지만 릴레이션의 인스턴스만으로는 숨어 있는 함수적 종속성을 찾아내기 어려움
      • 숨어 있는 함수적 종속성을 찾기 위해 추론 규칙을 사용함
      • F의 클로저
        • F: 릴레이션 스키마를 분석하여 찾아낸 함수적 종속성 집합
        • F+: F로 유추할 수 있는 모든 함수적 종속성 집합

             

    • 함수적 종속성
      • 함수적 종속성 추론 규칙
        • 재귀성 규칙 : X Y이면, X Y 이다
        • 부가성 규칙 : XY이면, XZYZ 이다
        • 이행성 규칙 : XY이고, YZ이면, XZ이다
        • 분해 규칙 : XYZ이면, XY이다
        • 합집합 규칙 : XY이고, XZ이면, XYZ이다
        • 의사 이행성 규칙 : XY이고, WYZ이면 WX이다
    • 커버
      • 정의

        함수적 종속성들의 집합 E가 있을 때, E가 F+에 포함되면 E의 모든 함수적 종속성이 F로부터 추론될 수 있다. 이 때 F가 E를 커버한다고 한다

           

    • 카노니컬 커버
      • F의 카노니컬 커버 Fc는 F+에 존재하는 모든 함수적 종속성을 커버할 수 있는 최소한의 함수적 종속성들로만 이루어진 집합임
      • 함수적 종속성 추론 규칙으로 확장한 클로저에는 자명한 종속성과 중복된 종속성이 포함됨, 따라서 불필요한 함수적 종속성을 제거하여 정규화함

           

      • 표준형 조건
        • F의 모든 함수적 종속성의 오른편 속성은 하나임
        • F에서 X A를 X의 진부분집합 Y에 대하여 Y A로 교체했을 때, 그 집합이 F와 동등한 집합일 수 없음
        • F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합일 수 없음

             

    • 카노니컬 커버의 예
      • 릴레이션 R의 스키마(X, Y, Z)

       

       

    6.3 기본 정규형

    • 정규형
      • 정규화 과정에서 사용되는 중복을 최소화하는 릴레이션의 형식
      • 정규형의 분류

           

    • 정규화의 목적
      • 어떠한 릴레이션이라도 데이터베이스 내에서 표현할 수 있도록 함
      • 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성
      • 릴레이션에 바람직하지 않은 삽입, 수정, 삭제 등의 이상이 발생하지 않도록 함
      • 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 줄임

           

'데이터베이스' 카테고리의 다른 글

08 데이터 저장과 파일  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
Posted by redcode.
,

05 SQL

데이터베이스 2016. 3. 9. 22:52
  • SQL

    5.1 SQL 개요

    • SQL 개요
      • SQL(Structured Query Language)은 관계 대수에 기초하여 관계형 DB의 데이터를 관리하기 위해 설계된 언어
      • 1986년 ANSI, 1987년 ISO에서 표준으로 제정
      • 특징

        비절차적 언어, 필요한 데이터만 기술

        인간의 언어와 매우 유사하고 간단, 명료

           

    5.2 데이터 정의

    • 데이터 정의 언어(Data Definition Language; DDL)
      • 데이터(테이블 및 인덱스)의 구조를 생성, 수정, 삭제 하는 등의 정의
      • 데이터가 준수해야 하는 제약조건을 기술
    • 데이터 조작 언어(Data Manipulation Language)
      • 데이터를 추가, 수정 및 삭제 등의 명령 포함
      • 데이터베이스로부터 데이터를 검색

           

         

    • 데이터 타입
      • 컬럼이 가질 수 있는 값의 범위, 즉 도메인 결정
      • 기본 데이터형
        • INTEGER: 부호있는 4바이트 2진 정수
        • SMALLINT: 부호있는 2바이트 2진 정수
        • NUMERIC(p [,g]): 부호있는 10진 p자리 정수, g자리 소수
        • FLOAT: 부동 소수점수
        • CHAR(n): n 크기 고정길이 문자열
        • VARCHAR(n): n 크기 가변길이 문자열
        • DATETIME: 년-월-일 시:분:초 형식의 날짜시간
  • 스키마 정의
    • 테이블 생성
      • 새로운 2차원 형태의 테이블을 생성
      • 구문형식

           

           

    • 테이블 수정
      • 테이블에 새로운 컬럼을 추가, 삭제 및 수정하여 구조를 변경
      • 구문형식

       

    • 테이블 제거
      • 테이블을 데이터베이스에서 제거
      • 구문형식

       

       

    5.3 데이터 조작

    • INSERT문
      • 테이블에 새로운 레코드를 삽입
      • 모든 속성 또는 부분 속성에 대한 속성값을 삽입
      • 구문형식

           

    • UPDATE 문
      • 조건을 만족하는 레코드의 특정 컬럼값을 수정
      • 구문형식

           

    • DELETE 문
      • 조건을 만족하는 레코드를 삭제
      • 구문형식

           

    • 기본 SELECT 질의
      • 테이블에서 조건을 만족하는 전체 또는 특정 레코드를 검색
      • 구문형식

    • 복수의 테이블에 대한 SELECT 질의
      • 하나 이상의 테이블에서 정보를 추출
      • 구문형식

    • 집합 연산이 포함된 SELECT 질의
      • 집합 연산을 주어진 두 릴레이션에 적용
      • 두 릴레이션의 스키마가 반드시 동일
      • 집합 연산(A 연산자 B 형식)
        • UNION(합집합): A 또는 B에 존재하는 모든 레코드의 집합
        • INTERSECT(교집합): A 와 B 양쪽 모두에 존재하는 레코드의 집합
        • EXCEPT(차집합): B 릴레이션에는 없고 A 릴레이션에만 존재하는 레코드의 집합

       

    • 집계 함수를 사용한 SELECT 질의
      • 복수의 레코드에 존재하는 특정 컬럼값에 집계 함수를 통해 다양한 계산을 수행할 수 있는 기능
      • 집계 함수의 종류
        • COUNT: 컬럼에 있는 값들의 개수
        • SUM: 컬럼에 있는 값들의 합
        • AVG: 컬럼에 있는 값들의 평균
        • MAX: 컬럼에서 가장 큰 값
        • MIN: 컬럼에서 가장 작은 값

             

    • 그룹 질의
      • 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
      • 구문형식

        *주의 - 출력되는 컬럼에 그룹의 기준과 집계함수 이외의 컬럼은 포함될 수 없음

           

    • HAVING 절을 사용한 그룹 질의
      • 레코드를 그룹화하고 집계 함수를 적용한 결과에 조건을 기술
      • 구문 형식

        *주의 - WHERE 절은 레코드에 적용되는 조건을 기술

        HAVING 절은 레코드 그룹에 적용되는 조건을 기술

    • 중첩 질의
      • SELECT 문 내부에서 독립적으로 실행 가능한 또다른 SELECT 문이 내포되어 있는 질의
      • FROM 절에서의 중첩 질의 활용
      • 구문형식

    • WHERE 절에서의 중첩 질의 활용
      • WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
        • IN, NOT IN, EXISTS, NOT EXISTS 사용
      • 구문형식

           

      • 하나 이상의 원본 테이블로부터 유도되어 일반 테이블처럼 조작할 수 있는 가상 테이블
      • 물리적으로 저장되지 않음
      • 구문형식

           

'데이터베이스' 카테고리의 다른 글

07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
Posted by redcode.
,
  • 관계형 모델

    4.1 관계형 모델

  • 데이터베이스 모델링 과정
  • 논리적 데이터 모델링
    • 특정 DBMS에서 사용하는 데이터 모델이 맞추어 데이터를 표현하는 과정
    • 데이터 정의 언어로 기술된 논리 스키마 생성
    • 관계형 모델

      1969년 에드가 F 코드에 의해 제안

      술어논리와 집합론을 이론적 배경으로 릴레이션(relation)으로 데이터를 표현하는 모델

      데이터 표현이 단순하고 직관적이기 때문에 현재 대다수 DBMS의 기초

      => Oracle, DB2, PostgreSQL, MySQL, MSSQL 등

         

    • 릴레이션의 특징
      • 레코드의 유일성: 중복된 레코드가 존재하지 않음
      • 레코드의 무순서성: 한 릴레이션에 포함된 레코드의 순서는 정해져 있지 않음
      • 컬럼의 무순서성: 컬럼은 순서가 없고, 이름과 값의 쌍으로 구성
      • 컬럼의 원자성: 모든 값들은 나눌 수 없는, 단 하나의 의미만을 갖는 원자값
    • 관계형 모델의 제약조건
      • 영역 제약조건: 각 컬럼 A의 값이 반드시 A의 영역 dom(A)에 속한 값의 집합에 포함
      • 키 제약조건: 키는 레코드를 고유하게 구별하는 값으로 구성
      • 개체 무결성 제약조건: 어떤 기본키 값도 널(null) 값이 될 수 없음
      • 참조 무결성 제약조건: 두 릴레이션의 레코드 사이에 일관성을 유지에 사용
    • 키의 종류 및 속성
      • 수퍼키: 유일성 만족
      • 후보키: 유일성, 최소성 만족
      • 기본키: 레코드의 구분을 위해 선택된 후보키
      • 외래키: 참조된 다른 릴레이션의 기본키
    • 컬럼의 구분(키 관점에서)
      • 주속성: 릴레이션의 키 중 적어도 한 키에 포함되는 컬럼
      • 비주속성: 주속성이 아닌 나머지 컬럼

       

    4.2 ER 다이어그램 변환

    • 관계형 모델로 변환 방법
      • 단계 1 - 개체 집합을 릴레이션으로 사상(키 지정)
      • 단계 2 - 약한 개체(복합 키 지정)
      • 단계 3 - 1:1 관계 집합 설정(외래키 지정)
      • 단계 4 - 1:N 관계 집합 설정(외래키 지정)
      • 단계 5 - M:N 관계 집합 설정(릴레이션 생성)
      • 단계 6 - 다중값 속성의 정리(릴레이션 생성)
      • 단계 7 - n항 관계 설정(릴렝리션 생성)

           

       

    4.3 관계 대수

    • 관계연산의 개념
      • 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
      • 사용자의 관점에서 필요한 새로운 릴레이션을 정의하는 방법
      • 관계 연산 정의 방법
        • 관계 대수
        • 관계 해석
    • 관계 대수와 관계 해석
      • 관계 대수(relational algebra)

        주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자연산자(, , -, σ, π, x, , ÷, 집계함수 등)으로 구성

        관계 연산의 과정을 표현

      • 관계 해석(relational calculus)

        원하는 릴레이션에 포함되는 레코드의 조건을 정의하는 방식

        관계 연산의 결과를 표현

    • 셀렉트 연산
      • 정의: 주어진 릴레이션에서 조건을 만족하는 레코드 만을 갖는 릴레이션을 추출

        => σ조건(R)

      • 조건 - aΘb 또는 aΘv

a, b

속성이름

v

상수 값

Θ

비교자 {=, , <, >, , }

R

릴레이션

   

  • 조건의 결합 - (and), (or)

       

  • 프로젝트 연산
    • 정의: 기술된 컬럼만 갖는 릴레이션을 추출
    • <컬럼리스트>: A1, A2, …, An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술

         

  • 집합 연산자
    • 수학적 집합 이론에서의 이진 연산
      • 합집합: R S
      • 교집합: R S
      • 차집합: R – S

           

  • 집합 연산자 사용 조건
    • 릴레이션 R과 S의 차수가 같다
    • 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일

   

  • 합집합: R S
    • R과 S의 어느 한쪽이라도 포함되는 레코드로 이루어진 릴레이션

         

  • 카티시언 프로덕트
    • 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 연산자
    • R × S
    • 각각 m개와 n개의 레코드, a개와 b개의 컬럼이 존재하는 R과 S 릴레이션의 경우, R × S는
      • a + b 개의 컬럼
      • m n 개의 레코드

           

  • 조인 연산자
    • 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
    • => σ AθB(R × S)

         

  • 집계 함수 연산
    • 집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
      • x( ): AVG, SUM, MIN, MAX, COUNT등의 집계 함수
      • A: 집계 연산을 적용할 컬럼

           

    • 레코드 그룹화를 위해 집계 함수 연산자 앞에 그룹화 속성을 기술
      • B: 그룹의 기준이 되는 컬럼
      • x(): 집계 함수
      • A: 집계 연산을 적용할 컬럼

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,
  1. 데이터베이스 모델링

    3.1 데이터베이스 모델링 과정

  • 데이터베이스 모델링 과정

   

  • 사용자 요구사항 분석 단계
    • 요구사항 분석
      • 도출된 요구사항의 명확성, 완전성, 모호성 검증
      • 요구사항을 분류하여 통합 또는 분리
      • 불완전한 부분이 존재할 경우 요구사항 도출단계 재수행

    • 요구사항 기록
      • 요구사항 목록 정리 및 관리자의 승인
      • 정리된 요구사항을 형식에 맞춰 문서화
      • 프로젝트 종료 때까지 반영 여부 지속적 관리

   

  • 데이터 모델링

    시스템 대상이 되는 업무를 분석하여 정보 시스템을 구축하는 설계 과정에서

    업무의 내용을 적절한 표기법으로 표현하는 것

       

    • 모델링의 관점
      • 데이터 관점: 업무과 관련된 데이터는 무엇인지, 데이터 간의 관계는 무엇인지 모델링
      • 프로세스 관점: 업무를 통해 어떤 일을 처리하는지 모델링
      • 데이터와 프로세스 상관 관점: 업무 처리를 통해 데이터가 어떻게 영향을 받는지 모델링
    • 개념적 데이터 모델링
      • 요구사항이 잘못 해석되는 오류를 피하기 위해 추상화 기법 사용
      • 현실세계의 데이터들을 개념적으로 일반화시킨 데이터 타입, 속성, 관계, 제약조건을 이끌어내는 과정
    • 논리적 데이터 모델링
      • 특정 DBMS에 맞추어 데이터를 표현하는 과정
      • 데이터 정의 언어로 기술된 논리 스키마 생성
    • 리적 데이터 모델링
      • 데이터베이스 파일의 내부 저장구조, 파일 구성, 인덱스, 접근 경로 등을 결정

           

           

    3.2 ER 모델

    1976년 카네기 멜론 대학의 Perter Chen에 의하여 제안

    개념적 데이터 모델링의 대표적인 기법으로 현실세계의 속성들로 이루어진 개체(Entity)와

    개체 사이의 관계(Relation)를 정형화 시킨 모델

       

    • 구성요소
      • 개체집합
      • 관계집합
      • 속성
      • 제약조건

           

  • 개체 집합
    • 개체(entity)
      • 현실세계에 존재하는 다른 모든 객체와 구별되는 유,무형의 사물로 여러 속성들로 구성
      • 조직 내부의 업무 처리 대상이 되는 데이터
    • 개체 집합(entity set)
      • 같은 속성을 공유하는 개체들의 모임

           

  • 관계 집합
    • 관계
      • 개체와 개체 사이의 연관성을 표현
      • 업무 프로세스와 관련된 개체를 명시
    • 관계 집합
      • 개체 집합 간의 연결 관계

           

  • 속성

    개체를 구체적으로 설명하는 특성

    속성에 포함될 수 있는 값의 특성에 따라 여러 종류로 구분

       

    • 속성의 종류
      • 단순 속성과 복합 속성
      • 단일값 속성과 다중값 속성
      • 유도 속성과 저장 속성
      • 널(null) 속성

           

    • 단순 속성과 복합 속성
      • 단순 속성: 더 이상 작은 구성요소로 나눌 수 없는 속성
      • 복합 속성: 더 작은 구성요소로 나눌 수 있는 속성
    • 단일값 속성과 다중값 속성
      • 단일값 속성: 하나의 개체에 대해 단 하나의 값만을 갖는 속성
      • 다중값 속성: 하나의 개체에 대해 여러 개의 값을 갖는 속성
    • 유도 속성과 저장 속성
      • 유도 속성: 다른 속성의 값으로부터 값이 유추될 수 있는 속성
      • 저장 속성: 유도 속성을 위해 사용되는 속성
    • 널 속성
      • 특정 개체가 일부 속성값을 가지지 못하여 널(null) 값을 갖는 속성
        • 특정 개체가 가지는 속성값을 모르는 경우
        • 특정 개체에 일부 속성이 적용될 수 없는 경우

             

  • 제약 조건

    ER 모델은 관계에 대한 표현을 명확하게 하기 위해 데이터베이스가 항상 준수해야 하는

    제약조건(constraints)을 정의할 수 있는 방법을 제공

    • 제약조건의 종류
      • 사상수
      • 참가 제약조건
      • 키 속성
    • 사상수(mapping cardinality)
      • 관계 집합에 참가한 개체 집합들에 대해 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한 수
      • 일대일, 일대다, 다대다 사상수 표현
    • 참가 제약조건(participation constraints)
      • 전체적 참가: 어떤 개체 집합의 모든 개체가 특정 관계 집합에 참여 하는 조건
      • 부분적 참가: 어떤 개체 집합의 일부 개체가 특정 관계 집합에 참여 하는 조건
    • 키 속성
      • 각 개체를 구별하는데 사용되는 유일한 값을 가지는 속성의 집합
    • 특수 관계
      • 관계 집합의 속성: 두 개체 집합의 관계에서 생성되는 값을 저장
      • 재귀적 관계: 한 개체 집합 자기 자신과 관계 집합을 형성하는 관계
      • 약한 개체 집합
        • 개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체 집합
      • 강한 개체 집합
        • 약한 개체 집합과 연결되는 일반 개체 집합

           

    3.3 ER 모델의 예

       

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
02 데이터베이스  (0) 2016.03.07
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,
  1. 데이터베이스

    2.1 데이터베이스 언어

  • 데이터베이스 언어
    • DBMS는 사용자가 데이터베이스를 쉽게 사용하고 다룰 수 있도록 언어 형태의 인터페이스를 제공
  • 역할
    • 데이터 정의 언어(Data Definition Language, DDL)
    • 데이터 조작 언어(Data Manipulation Language, DML)

         

  • 데이터 정의 언어(DDL)
    • 데이터베이스 스키마를 정의하기 위한 언어

         

    • DDL의 요구조건
      • 데이터 모델에 따라 애플리케이션 프로그램이 요구하는 데이터의 논리적 구성, 특징을 규정
      • 데이터가 기억장치에 저장되도록 데이터의 물리적 구성을 규정
      • 물리적 구성을 논리적 구성으로 변환이 가능하도록 데이터의 물리적 구성과 논리적 구성간의 사상을 규정
    • 제약사항 기술
      • 도메인 제약사항: 속성 값이 도메인 내의 값이어야 함
      • 참조 무결성: 한 릴레이션에 나타난 값이 다른 릴레이션의 값으로 정확하게 연결됨을 보장
      • 검증: 데이터베이스가 항상 만족해야하는 조건
      • 권한: 읽기 권한, 삽입 권한, 수정 권한, 삭제 권한 등

           

  • 데이터 조작 언어(DML)
    • 구조화된 데이터에 사용자가 접근 및 조작할 수 있도록 지원하는 언어(검색, 삽입, 삭제, 수정)
    • DML의 요구조건
      • 데이터 조작 기능이 쉬워야 함
      • 데이터 조작 기능이 정확하고 완전해야 함
      • 사용자의 요청이 시스템 내부에서 효과적으로 처리
    • 종류
      • 절차적 DML : 어떤 순서에 입각하여 처리, 효율성 높음
      • 선언적 DML(비절차적) : 필요한 데이터가 무엇인지만 기술, 내부의 처리과정은 사용자가 기술하지 않음, 효율성 낮음

        Ex) SQL

           

           

    2.2 DMBS의 구성요소

  • 질의 처리기

   

   

  • 저장 관리자와 디스크 저장소

       

       

       

       

    2.3 트랜잭션 관리

    • 트랜잭션은 하나의 논리적인 작업을 처리하기 위한 일련의 데이터베이스 명령의 집합
  • ACID 특성
    • 데이터베이스의 일관성을 위해 반드시 만족해야 하는 조건
      • 원자성(atomicity): 트랜잭션에 포함된 명령어가 일부분만 실행되지 않는다
      • 일관성(consistency): 트랜잭션 수행이 완료되면 데이터베이스는 일관적인 상태가 된다
      • 독립성(isolation): 한 트랜잭션의 실행은 다른 트랜잭션으로부터 방해 받지 않는다
      • 지속성(durability): 정상적으로 종료된 트랜잭션의 결과는 DBMS의 어떠한 오류에도 보존된다.

           

           

    2.4 데이터베이스 시스템 아키텍처

    • 중앙 집중식 방식
      • 단일 서버가 다수의 클라이언트 장치를 대신하여 작동
      • 중앙 컴퓨터의 과부하로 전체적인 성능 저하
    • 분산 시스템 방식
      • 클라이언트 장치의 성능 향상으로 자체적인 처리능력 보유
      • 클라이언트-서버 데이터베이스 시스템
        • 애플리케이션 프로그램의 부하를 분산
        • 소프트웨어의 유지보수 비용을 절감
        • 소프트웨어 이식성이 증가
      • 클라이언트-서버 구조

        => 3계층의 경우 애플리케이션 서버가 존재하므로 앱 프로그램의 유지보수가 간편하며, 가볍다.

       

       

    2.5 데이터베이스 사용자 및 관리자

    • 데이터베이스 사용자와 사용자 인터베이스
      • 일반 사용자: 애플리케이션 프로그램을 사용해 데이터베이스 시스템이 접근하는 비전문 사용자
      • 애플리케이션 프로그래머: 애플리케이션 프로그램을 작성하는 컴퓨터 전문가
      • 전문 사용자: 프로그램 없이 SQL, 데이터 분석 소프트웨어를 사용하여 DBMS를 조작하는 사용자
      • 특수 사용자: 전문 사용자 중 특수한 데이터베이스 애플리케이션을 작성하는 사용자

        => 각 사용자마다 봐야 할 부분이 다르며 이는 뷰가 필요한 이유임

           

    • 데이터베이스 관리자(Database Administrator; DBA)
      • 데이터베이스와 DBMS, 그리고 관련 소프트웨어를 관리, 감독하는 사용자
    • 역할
      • 여러 사용자(애플리케이션 프로그램)가 필요로 하는 정보에 대한 요건을 설정
      • 뷰 제공
      • 사용자와 시스템 분석가, 프로그래머 사이의 중재자 역할을 수행
      • 데이터 처리의 경제적 효율성을 극대화

           

      • 설계
        • 데이터의 논리-물리 사상과 개념-논리 사상을 명시하며 데이터 사전을 구성하고 유지
        • 보안, 예비조치, 회복 절차 등을 마련하여 데이터베이스의 무결성을 유지
      • 관리
        • 사용자 요구에 맞지 않는 부분들을 파악
        • 데이터베이스 관리를 위해 데이터 표현 방법과 시스템 문서화에 대한 기준을 결정
      • 운용 및 통제
        • 변화하는 사용자의 요구에 따른 효율적인 데이터 접근과 처리를 위해

          최적의 물리적 저장구조, 저장매체를 선택하고 성능을 측정

        • 데이터베이스에 대한 접근을 통제
      • 성능측정
        • 데이터베이스의 효율성과 경제적인 효용성을 높이기 위하여 시스템 내의 자원 사용도,

          병목현상, 장치의 성능 등을 파악하여 시스템 성능을 분석

        • 물리적 저장구조를 재구성하여 효율성을 극대화

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,

1.1 데이터베이스 시스템 개요

방대한 양의 데이터를 효과적으로 처리하기 위해 등장

   

1.2 DBMS의 목적

  • 기존 파일 처리 시스템의 문제
    • 데이터 독립성의 문제
      • 논리적 데이터 독립성
      • 물리적 데이터 독립성
    • 데이터 중복성의 문제
      • 일관성: 하나의 데이터는 하나의 값
      • 보안성: 같은 데이터는 같은 수준의 보안 유지
      • 경제성: 중복 저장은 추가적 공간 비용 발생
    • 무결성 보장 문제
      • 데이터의 정확성(규약) 보장
      • 검증 프로그램에 의한 통제 => 많은 기능으로 앱이 비대해짐
    • 동시 액세스 문제
      • 동일 데이터의 다수 사용자 접근 허용

           

  • 데이터베이스 관리 시스템(DBMS)의 사용

       

    => 데이터의 사용과 관리를 완전히 분리시킴

       

    • 용어 정의
      • 데이터(data): 어떠한 사실에 대한 정량적, 정성적 특징을 나타낼 수 있는 값과 설명

        => 값 + 메타데이터(값에 대한 수식항목)

      • 데이터베이스(database): 특정 기관의 애플리케이션 시스템에서 사용되는 데이터의 집합
      • 데이터베이스 관리 시스템(DBMS):

        데이터베이스에 저장된 데이터의 구성, 저장, 관리, 사용을 위한 소프트웨어 패키지

      • 데이터베이스 시스템:

        정보를 데이터베이스에 저장,관리하여 사용자에게 요구된 형태의 정보로 제공하는 컴퓨터 기반 시스템

           

         

         

    1.3 DBMS의 특징

  • 데이터베이스의 특징
    • 데이터베이스 시스템의 자기 기술성(self-describing)
      • 데이터베이스에 포함된 데이터와 더불어 데이터베이스의 정의(스키마)나 설명(메타데이터)를 포함
    • 프로그램과 데이터의 격리 및 추상화
      • 사용자에게 데이터에 대한 개념적인 표현을 제공
      • 데이터베이스에 대한 접근성을 향상
    • 다중 뷰 제공
      • 사용자들의 필요에 따라 서로 다른 관점의 데이터가 필요
      • 각 사용자에게 자신이 관심을 가지는 데이터베이스의 일부만을 표현하는 뷰(view)를 제공
    • 데이터 공유와 다수 사용자 트랜잭션 처리
      • 다수의 데이터 조작 요청에도 트랜잭션을 이용한 동시성제어(concurrency control) 기능을 통해

        데이터의 일관성 보장

           

  • DBMS의 구조

    => 데이터 추상화와 데이터 독립성을 확보하기 위한 구조

       

    • 인스턴스
      • 특정 시점에서 데이터베이스에 저장된 정보 집합을 의미(상태 개념)
      • 시간이 지남에 따라 데이터베이스 인스턴스는 지속적으로 변화
    • 스키마
      • 데이터가 가지는 형식을 결정하는 전반적인 구조를 의미
      • 인스턴스와는 달리 데이터베이스 스키마는 드물게 변경됨

           

    • 개념-논리 사상
      • 논리적 데이터의 독립성을 확보
    • 논리-물리 사상
      • 물리적 데이터의 독립성을 확보

         

    1.4 데이터 모델

    • 사용 가능한 데이터만을 선별하여 구조화된 데이터베이스에 저장,사용할 방법 필요
    • 데이터 모델
      • 의미, 데이터 타입, 연산 및 제약조건을 명시하기 위해 사용할 수 있는 개념들의 집합
      • 관계형 모델, ER 모델, 객체지향적 모델 등
    • 데이터 모델링
      • 현실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정

           

  • ER모델
    • 현실세계 인식에 기초하여 개체(object)를 나타내는 개체(entity)들과 개체들 간의 관계(relationship)로 구성

         

  • 관계형 모델
    • 릴레이션이라고 하는 표 형태의 데이터 구조를 사용하여 데이터를 저장

         

  • 객체지향적 모델
    • 객체들을 기반으로 데이터베이스를 구성
      • 캡슐화를 유지, 프로그램과 데이터 간의 불일치 감소
      • 자유로운 사용자 정의 데이터 타입
    • 빠른 DBMS 접근속도
      • 객체는 유일한 OID로 구별
      • DBMS는 OID를 이용 객체에 직접 접근
    • 다중 상속을 통한 정보 최적화
      • 다른 클래스들로부터 필요한 특징을 다중상속(기존에 제작된 데이터 구조를 재활용 가능)

           

  • 데이터 베이스 모델링

  • '데이터베이스' 카테고리의 다른 글

    06 정규화 I  (0) 2016.03.10
    05 SQL  (0) 2016.03.09
    04 관계형 모델  (0) 2016.03.09
    03 데이터베이스 모델링  (0) 2016.03.08
    02 데이터베이스  (0) 2016.03.07
    Posted by redcode.
    ,

    3.1 스케줄링 성능 평가 기준

       

    • 스케줄링 성능 평가 기준
      • 평균 대기시간
        • 각 프로세스가 수행이 완료될 때까지 준비 큐에서 기다리는 시간의 합의 평균값

       

    • 평균 반환시간
      • 각 프로세스가 생성된 시점부터 수행이 완료된 시점까지의 소요시간의 평균값

           

    -> 각 프로세스들의 대기/반환시간을 알아야….

       

       

    3.2 다양한 스케줄링 알고리즘

       

    • FCFS 스케줄링
      • FCFS(First-Come First-Served) 스케줄링
        • 비선점 스케줄링 알고리즘
        • 준비 큐에 도착한 순서에 따라 디스패치
      • 장점
        • 가장 간단한 스케줄링 기법
      • 단점
        • 짧은 프로세스가 긴 프로세스를 기다리거나, 중요한 프로세스가 나중에 수행될 수 있음
        • 프로세스들의 도착 순서에 따라 평균 반환시간이 크게 변함

             

    • SJF 스케줄링
      • SJF(Shortest Job First) 스케줄링
        • 비선점 스케줄링 알고리즘
        • 준비 큐에서 기다리는 프로세스 중 실행시간이 가장 짧다고 예상된 것을 먼저 디스패치

             

      • 장점
        • 일괄처리 환경에서 구현하기 쉬움
      • 단점
        • 실행 예정시간 길이를 사용자의 추정치에 의존하기 때문에 실제로는 먼저 처리할 작업의

          CPU 시간을 예상할 수 없음

             

    • SRT 스케줄링
      • SRT(Shortest Remaining Time) 스케줄링
        • 선점 스케줄링 알고리즘
        • 실행이 끝날 때까지 남은 시간 추정치가 가장 짧은 프로세스를 먼저 디스패치
      • 장점
        • SJF보다 평균 대기시간이나 평균 반환시간에서 효율적
        • 대화형 운영체제에 유용
      • 단점
        • 각 프로세스의 실행시간 추적, 선점을 위한 문맥 교환 등 SJF보다 오버헤드가 큼

          (문맥교환에도 시간 소요)

             

    • RR 스케줄링
      • RR(Round Robin) 스케줄링
        • 선점 스케줄링 알고리즘
        • 준비 큐에 도착한 순서에 따라 디스패치하지만 정해진 시간 할당량에 의해 실행을 제한
        • 시간 할당량 안에 완료되지 못한 프로세스는 준비 큐의 맨 뒤에 배
      • 장점
        • CPU를 독점하지 않고 공평하게 이용
        • 대화형 운영체제에 유용
      • 단점
        • 시간 할당량이 너무 크면 FCFS 스케줄링과 같아짐
        • 시간 할당량이 너무 작으면 문맥 교환에 따른 오버헤드가 크게 증가

             

    • HRN 스케줄링
      • HRN(Highest Response Ratio Next) 스케줄링
        • 비선점 스케줄링 알고리즘
        • 준비 큐에서 기다리는 프로세스 중 응답비율이 가장 큰 것을 먼저 디스패치
        • 예상 실행시간이 짧을수록, 대기시간이 길수록 응답비율이 커짐

             

          *응답비율 = (대기시간+예상실행시간)/예상실행시간=대기시간/예상실행시간 + 1

      • 장점
        • SJF의 단점을 보완

             

    • 다단계 피드백 큐 스케줄링
      • 다단계 피드백 큐 스케줄링
        • 선점 스케줄링 알고리즘
        • I/O 중심 프로세스와 CPU 중심 프로세스의 특성에 따라 서로 다른 시간 할당량 부여
        • n개의 단계(단계 1~ 단계 n)
        • 각 단계마다 하나씩의 큐 존재
        • 단계가 커질수록 시간 할당량도 커짐

             

             

      • 스케줄링 방법
        • 신규 프로세스는 단계 1의 큐에서 FIFO 순서에 따라 CPU 점유
        • 입출력 같은 이벤트가 발생하면 CPU를 양보하고 대기상태로 갔다가

          다시 준비상태가 될 때에는 현재와 동일한 단계의 큐에 배치

        • 마지막 단계 n에서는 RR 스케줄링 방식으로 동작
        • 단계 k의 큐에 있는 프로세스가 CPU를 할당 받으려면 단계 1부터 단계 k - 1 까지 모든 큐가 비어있어야만 함

           

      • 장점
        • I/O위주의 프로세스(대화형)는 높은 우선권 유지
        • 연산위주의 CPU 중심 프로세스는 낮은 우선권이지만 긴 시간 할당량 가짐

             

      • 적응적 다단계 피드백 큐 스케줄링
        • 시간 할당량을 다 쓰기 전에 CPU를 반납하는 경우 하나 작은 단계의 큐로 이동 배치
        • 연산 위주의 프로세스가 I/O 위주로 바뀐다면 점점 작은 단계로 배치 가능

           

    • 스케줄링 알고리즘 요약

         

         

    '운영체제' 카테고리의 다른 글

    04 병행 프로세스 I  (0) 2016.03.12
    2. 프로세스 개요  (0) 2016.03.05
    1. 운영체제 개요  (0) 2016.03.05
    Posted by redcode.
    ,

    2.1 프로세스

    • 프로세스(process) : 실행 중인 프로그램
      • 프로그램: 동작을 하지 않는 정적,수동적 개체
      • 프로세스: 동작을 하는 능동적 개체

           

    • 운영체제로부터 자원을 할당받아 동작
      • 자원: CPU, 메모리, 입출력장치, 파일 등
      • 동작: CPU가 프로세스의 명령을 실행

           

    • 사용자 및 시스템 프로세스 존재

       

    • 프로세스와 운영체제
      • 프로세스 관리자의 역할
        • 프로세스를 생성 및 삭제
        • 프로세스를 실행(CPU 할당)을 위한 스케줄 결정
        • 프로세스의 상태를 관리하며 상태 전이를 처리

             

    • 프로세스의 상태
      • 5-상태 모델

           

        • 생성: 처음 작업이 주어진 상태, 프로세스를 운영하기 위한 필요자원 파악.
        • 준비: 실행 준비가 되어 CPU할당을 기다리는 상태,
        • 실행: 프로세스가 처리되는 상태
        • 대기: 프로세스가 특정자원을 할당 받을 때까지 또는 I/O작업이 끝날 때까지 작업이 보류되는 상태
        • 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태

           

      • 프로세스의 상태변화
        • 디스패치: 준비상태에 있는 프로세스를 실행상태로 전이시키는 작업을 수행하는 운영체제 내의 모듈
        • 할당시간 만료: 더 우선순위가 높은 프로세스가 들어왔을 때 혹은 지정된 할당시간을 초과했을 때.
        • 이벤트 대기: 다른 자원이나 입출력작업이 필요해 졌을 때.
        • 재개조건 만족

             

    • 프로세스 제어 블록
      • 프로세스 제어 블록(Process Control Block, PBC)

           

        • 프로세스의 관리를 위한 목적
        • 프로세스의 정보를 보관
        • 각 프로세스마다 존재
        • 프로세스가 진행함에 따라 내용 변경

             

    • 프로세스의 생성과 종료
      • 프로세스 생성 작업
        • 프로세스의 이름(번호, PID)결정
        • 준비 큐에 삽입
        • 초기 우선순위 부여
        • 프로세스 제어 블록(PCB) 생성 등
      • 프로세스 생성 방법 : 시스템 호출

       

    • 프로세스 생성 시스템 호출
      • 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성

        Ex) fork()

      • 호출하는 프로세스: 부모 프로세스
      • 생성되는 프로세스: 자식 프로세스
      • 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스가 될 수 있음

       

    • 생성되는 프로세스의 자원
      • 운영체제로부터 직접 얻는 경우
      • 부모 프로세스 자원의 일부를 얻는 경우

           

    • 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
      • 과도한 자식 프로세스 생성에 따른 시스템 과부하 방지

       

    • 프로세스 종료
      • 프로세스의 마지막 명령이 실행을 마치는 경우
      • 프로세스 종료 시스템 호출(ex: exit( ) )을 통하는 경우
      • 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌

           

    • 프로세스 종료 시스템 호출
      • 부모에 의해서만 호출
      • 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더 이상 필요치 않을 때.

           

           

    • 프로세스 간의 관계

      

    독립적 프로세스

    유기적 프로세스

    의미

    다른 프로세스의 영향을

    받지도 않고 주지도 않음

    다른 프로세스와 영향을

    주고받음

    프로세스

    상태

    다른 프로세스와 공유하지 않음

    다른 프로세스와 공유함

    실행

    결정적, 재생 가능

    다른 프로세스와 무관하게

    중단 및 재시작 가능

    비결정적, 재생 불가

    데이터

    다른 프로세스와 공유하지 않음

    다른 프로세스와 공유함

       

     

    2.2 쓰레드

       

    • 프로세스와 쓰레드
      • 전통적인 프로세스
        • 처리의 기본 단위
        • 자원 소유의 단위(하나의 주소공간) 및 디스패칭의 단위(하나의 제어흐름)
        • 단일 프로세스 내에서 동시처리 불가능 -> 쓰레드 등장

             

      • 쓰레드(Thread)
        • 프로세스 내에서의 다중처리를 위해 제안된 개념
        • 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
        • 하나의 쓰레드 내에서는 하나의 실행점만 존재(디스패칭의 단위)
        • 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유

          * <--- 실행점(프로그램 카운터)

             

          ->전통적인 프로세스에서는 프로세스 하나가 자원 소유의 단위이자 디스패칭의 단위였지만

          쓰레드 개념의 도입으로 디스패칭의 단위는 쓰레드 단계로 내려감

             

             

      • 다중 쓰레드의 장점
        • 멀티CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
        • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능

             

             

             

             

    2.3 스케줄링

    • 스케줄링 단계

       

       

    • 상위단계 스케줄링
      • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달
      • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
      • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택

           

    • 하위단계 스케줄링
      • 사용가능한 CPU를 준비상태의 어느 프로세스에세 배당할지를 결정
      • CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
      • 수행 주체는 디스패처(dispatcher)

           

    • 중간단계 스케줄링
      • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
      • 시스템에 대한 단기적인 부하를 조절

       

       

    • 스케줄링 정책
      • 스케줄링 기본 목표
        • 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
        • 균형: 시스템의 자원들이 충분히 활용될 수 있게 함

             

           

           

      • 선점(Preemptive) 스케줄링 정책
        • 진행중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
        • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
        • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
        • 문맥 교환에 따른 오버헤드 발생

             

          *문맥

          CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

          *문맥교환

          CPU가 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

             

      • 비선점(Nonpreemptive) 스케줄링 정책
        • 프로세스가 CPU를 할당받아 실행이 시작되면

          작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨

        • 모든 프로세스가 공정하게 순서에 따라 실행됨(응답시간 예측 가능)
        • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음

    '운영체제' 카테고리의 다른 글

    04 병행 프로세스 I  (0) 2016.03.12
    3. 스케줄링 알고리즘  (0) 2016.03.06
    1. 운영체제 개요  (0) 2016.03.05
    Posted by redcode.
    ,