자연어 처리

  • 목표: 컴퓨터가 인간의 언어를 ‘이해’하고, 그를 통해 유용한 작업을 수행하는 것
  • 정의: 텍스트 또는 음성과 같은 인간의 언어 형식의 데이터를 컴퓨터가 처리하도록 하는 연구 분야

 

데이터 형식 가공 단계 순서

  1. 일반 데이터 (Raw Data): 가공되지 않은 원시적인 형태의 텍스트, 음성 데이터
  2. 정보 (Information): 일반 데이터에서 특정 키워드나 문장을 추출한 유의미한 정보
  3. 지식 (Knowledge): 정보를 연결 분류 구조화 하여 더 깊은 의미나 패턴을 발견하는 과정 핵심 주제나 트렌드 파악이 예시

 

자연어 처리 분야

  • Information Abstraction/Summarization/Visualization: 큰 데이터나 긴 텍스트를 축약하거나 요약하여 핵심 정보만을 제공하는 연구 분야 ex: Text Analytics

  • Document Clustering: 유사한 주제나 내용을 가진 문서들을 자동으로 그룹화하는 기법

  • Topic Extraction: LDA (Latent Dirichlet Allocation)주요 주체 찾기, 대량의 텍스트에서 주요 주제나 키워드 파악하는 연구 분야
  • Document Categorizatoin/Classification: 주어진 내용이 문서에 들어가 있다면 해당 문서를 이미 정의된 카테고리로 분류하는 연구 분야 ex: 스팸 메일 필터링

  • Improve forecasting accuray combined with structured data: 구조화된 데이터와 결합하여 예측 정확도를 향상시키는 연구 분야 ex: 구조화된 주식 주가 정보 + 비구조화된 뉴스, 칼럼 데이터 = 모델 정확도 향상

  • Question Answering: 사용자의 질문에 대한 답변을 자동으로 생성하거나 추출하는 기능을 하는 질의응답 시스템 ex: IBM Watson, 장학 퀴즈
    • 추출형 (한계가 많이 있다): 문서에서 답을 찾아 사용자에게 반환
    • 생성형 (연구가 많이 됨): 학습된 정보를 바탕으로 답을 생성하여 반환

설계패턴

  • GoF 4명의 저자가 기술한 지금까지 소프트웨어의 중복되는 문제를 재사용 가능한 해결책으로 해결하기 위한 방법
  • 해결 방법은 특정 언어로 종속되어서는 안되기에 언어와 관계 없는 내용으로 기술 할 필요성이 있음
  • 그렇기에 UML을 통해 학습하는 것이 좋은 방법

UML: 모델링 기술 랭귀지 → 해결책 기술

  • class Diagram(구조적 측면)
  • sequence Diagram(동적인 측면)

'CS > Software Engineering' 카테고리의 다른 글

유스케이스 시나리오 작성법  (0) 2023.04.23
Modeling  (0) 2023.04.17
소트프웨어 개발 모델  (0) 2023.03.16
좋은 객체 지향 설계의 5가지 원칙(SOLID)  (1) 2023.03.12

1. MySQL 다운로드 설치

중요!: 여기서 설정해둔 비밀번호는 따로 메모해두거나 꼭 암기해 두어야 한다.

 

2. MySQL Workbench 실행 후 연결 객체 생성

+버튼을 통해 새 연결 객체 생성

여기서 Username과 설정한 Password를 SpringBoot에서 연결 작업에 필요하기 때문에 따로 메모해두거나 꼭 암기해 두어야 한다.

Test Connection 버튼을 통해 연결이 잘 되는지 확인!

Ok 버튼을 통해 생성

3. 사용할 DB Schema 생성

'CS > DataBase' 카테고리의 다른 글

오라클에서의 트랜잭션  (0) 2023.06.05
장애와 복구  (0) 2023.05.31
직렬 가능한 스케줄이 되도록 하는 방법  (0) 2023.05.31
동시성 제어  (0) 2023.05.22
트랜잭션  (0) 2023.05.19

인터럽트 지연시간

  • 인터럽트가 발생한 시점부터 해당 인터럽트에 대한 처리가 시작되는 시점까지의 시간
  • 실시간 시스템은 특정 작업을 정해진 시간 내에 완료하는 것이 중요하기 때문에, 인터럽트 처리에 대한 지연은 시스템의 전반적인 성능에 큰 영향을 미칠 수 있습니다. 따라서 실시간 운영체제는 인터럽트 지연시간을 최소화하는 것이 중요합니다.
  • 커널 자료구조를 갱신하는 동안 인터럽트가 불능케 되는 시간은 뭐야?
    • 인터럽트 지연시간의 한 부분으로, 이는 커널이 중요한 자료구조를 안전하게 변경하거나 업데이트할 수 있도록 보장하는 시간
    • 커널은 이러한 자료구조를 갱신하는 동안 인터럽트를 비활성화하거나, 또는 락(lock) 같은 동기화 메커니즘을 사용하여 동시 액세스를 방지합니다. 이렇게 인터럽트가 비활성화되거나 락이 걸린 시간 동안 인터럽트는 처리되지 않으므로, 이 시간은 인터럽트 지연시간에 포함됩니다.

페이징

  • 페이징(Paging)은 가상 메모리 시스템에서 사용되는 기법으로, 물리 메모리를 일정한 크기의 페이지로 나누고, 이 페이지들을 가상 주소와 매핑하여 메모리를 관리하는 방식입니다. 이를 통해 프로세스가 필요한 메모리를 비연속적인 물리 메모리 공간에서도 연속적으로 사용할 수 있게 해줍니다.

역 페이지 테이블

  • 역 페이지 테이블(Inverted Page Table, IPT)은 가상 메모리 시스템에서 사용되는 데이터 구조 중 하나입니다. 일반적인 페이지 테이블은 가상 주소를 물리 주소로 매핑하는데 사용되지만, 역 페이지 테이블은 이와 반대로 물리 주소를 가상 주소로 매핑합니다.
  • 장점:

전통적인 페이지 테이블에서는 각 가상 페이지마다 항목이 있어야 하므로, 가상 주소 공간이 크면 페이지 테이블도 매우 커집니다. 이는 메모리를 많이 사용하게 되는 문제를 야기합니다.

반면, 역 페이지 테이블에서는 물리 메모리의 각 페이지마다 항목이 있습니다. 따라서, 물리 메모리 크기에 비례하는 공간만 사용하게 되므로 메모리 사용량을 크게 줄일 수 있습니다.

  • 단점:

그러나 역 페이지 테이블은 주소 변환 과정이 복잡해지며, 이로 인해 주소 변환 시간이 더 오래 걸릴 수 있습니다. 이는 역 페이지 테이블에서는 가상 주소를 찾기 위해 전체 테이블을 검색해야 하기 때문입니다. 이 문제를 해결하기 위해 보통 연관 메모리(Associative Memory) 또는 해시 기법 등을 사용하여 검색 성능을 향상시킵니다.

커널 메모리

  • 운영체제의 커널은 시스템의 핵심적인 부분으로, 항상 메모리에 존재해야 하며 빠르게 접근할 수 있어야 합니다. 따라서 커널 코드나 데이터는 페이징 시스템의 영향을 받지 않고, 물리 메모리의 특정 영역에 항상 로드되어 있습니다. 이를 통해 커널 코드나 데이터에 대한 접근 속도를 높이고, 시스템의 안정성을 유지합니다. 이러한 영역은 보통 '커널 공간' 또는 '커널 메모리'라고 부릅니다.

페이지 폴트

  • 컴퓨터 시스템에서 가상 메모리를 사용할 때 발생하는 특정 유형의 인터럽트입니다.
  • 프로세스가 실행되면서 메모리에 접근하려고 할 때, 해당 메모리 주소가 물리 메모리에 실제로 로드되어 있지 않은 경우에 페이지 폴트가 발생합니다. 이는 가상 메모리 시스템에서 프로세스가 접근하려는 페이지가 현재 물리 메모리에 존재하지 않는 상황을 가리킵니다. 이런 상황은 "페이지 미스(page miss)"라고도 부릅니다.
  • 페이지 폴트가 발생하면 운영체제는 해당 페이지를 디스크에서 찾아 물리 메모리로 로드하고, 프로세스가 계속 실행될 수 있도록 합니다. 이 과정은 페이지 폴트 핸들러에 의해 처리되며, 이는 운영체제의 일부입니다.
  • 페이지 폴트는 가상 메모리 시스템의 핵심적인 부분이지만, 너무 많은 페이지 폴트가 발생하면 시스템의 성능을 저하시킬 수 있습니다. 이는 각 페이지 폴트마다 디스크 I/O가 필요하기 때문이며, 디스크 I/O는 CPU 연산에 비해 상당히 느린 작업입니다. 이런 현상을 스레싱(thrashing)이라고 부릅니다.

페이지 수와 페이지 폴트의 관계

  • 페이지 프레임의 수를 늘리면 프로세스가 메모리에 더 많은 페이지를 유지할 수 있습니다. 이는 프로세스가 자주 사용하는 페이지가 메모리에 더 잘 유지되도록 하여 페이지 폴트율을 줄일 수 있습니다. 즉, 프로세스가 필요한 페이지를 메모리에서 바로 찾을 가능성이 높아지므로, 디스크에서 페이지를 불러오는 비용이 줄어듭니다.
  • 반면에 페이지 프레임의 수를 줄이면 메모리에 유지할 수 있는 페이지의 수가 줄어듭니다. 이는 프로세스가 필요로 하는 페이지가 메모리에 없을 가능성이 높아지므로, 페이지 폴트율이 증가할 수 있습니다. 즉, 프로세스가 필요로 하는 페이지를 디스크에서 불러와야 하는 경우가 더 많아집니다.

페이지의 크기와 성능 관계

  1. 페이지 테이블의 크기:
    • 페이지의 크기가 작을수록 페이지 테이블의 크기는 증가합니다. 페이지 테이블은 주소 공간의 크기에 따라 결정되므로, 작은 페이지 크기로 세분화된 주소 공간은 더 많은 페이지 테이블 엔트리를 필요로 합니다.
  2. 메모리 사용 효율:
    • 페이지의 크기가 작을수록 메모리 사용 효율이 향상됩니다. 작은 페이지 크기는 작은 단위로 메모리를 할당하므로 내부 단편화가 적어집니다. 따라서, 더 많은 페이지를 메모리에 로드하여 메모리 공간을 효율적으로 사용할 수 있습니다.
  3. 디스크 입출력 시간:
    • 페이지의 크기가 작을수록 디스크 입출력 시간이 증가할 수 있습니다. 작은 페이지 크기는 한 번의 페이지 폴트에도 많은 페이지를 디스크에서 읽어와야 하므로 입출력 작업이 더 많이 발생할 수 있습니다.
  4. 지역성과 직결된 입출력:
    • 페이지의 크기가 작을수록 지역성과 직결된 입출력이 증가합니다. 작은 페이지 크기는 프로세스가 한 번에 사용하는 데이터 양을 줄여 지역성을 높일 수 있으며, 이는 캐시 히트율을 향상시키고 입출력 작업을 줄일 수 있습니다.
  5. 페이지 폴트 발생 횟수:
    • 페이지의 크기와 페이지 폴트 발생 횟수는 복잡한 상호작용을 가지며, 일반적으로 페이지의 크기가 작을수록 페이지 폴트 발생 횟수는 증가합니다. 작은 페이지 크기는 한 번에 로드되는 데이터 양이 적기 때문에 더 자주 페이지 폴트가 발생할 수 있습니다.

요구 페이징

일반적으로 프로세스는 모든 코드와 데이터를 메모리에 올려놓고 실행됩니다. 하지만 이렇게 모든 페이지를 미리 메모리에 올려놓는 것은 비효율적일 수 있습니다. 왜냐하면 프로세스의 일부분만이 실제로 실행되기 때문에 모든 페이지를 메모리에 올려놓는 것은 낭비일 수 있기 때문입니다.

요구 페이징은 이러한 낭비를 줄이기 위해 필요한 페이지들만 메모리에 동적으로 로드합니다. 프로세스가 실행될 때 해당 페이지에 접근하면, 운영체제는 해당 페이지를 디스크에서 메모리로 로드합니다. 이로 인해 필요한 페이지만 메모리에 올라가므로, 메모리 사용이 효율적으로 이루어지고 여유 공간을 더 많이 확보할 수 있습니다.

모바일 운영체제

  • 모바일 운영체제에서는 일반적으로 스와핑을 지원하지 않습니다.
    • 스와핑: 메모리에 적재된 프로세스나 데이터를 하드 디스크로 이동시키는 것을 말합니다
    • 이는 모바일 기기의 제한된 메모리 용량과 전력 소모 등의 이유로 인해 결정된 것입니다. 스와핑은 디스크로의 많은 I/O 작업을 필요로 하며, 이는 모바일 기기의 성능과 배터리 수명에 부정적인 영향을 미칠 수 있기 때문입니다.
  • 요구 페이징은 파일 시스템에서 필요한 페이지를 로드하여 메모리에 올리기 때문에 스와핑이 필요하지 않습니다. 따라서 메모리 부족 상황에서는 요구 페이징을 통해 필요한 페이지들을 로드하고, 필요하지 않은 페이지를 디스크로 내보내어 메모리를 효율적으로 관리합니다.
  • 모바일 운영체제는 메모리가 부족하게 되면 응용에서 코드와 같은 읽기 전용 페이지를 방출합니다. 이것은 메모리를 확보하기 위한 방법 중 하나입니다. 운영체제는 응용에서 방출된 페이지가 필요하면 다시 메모리에 로드합니다.

클러스트 테이블 페이지

  • 데이터베이스에서 사용되는 페이지 구조 중 하나입니다. 주로 클러스터형 인덱스(Clustered Index)를 기반으로 데이터를 저장하는 테이블에서 사용됩니다.
    • 클러스터형 인덱스는 테이블의 주요 정렬 기준을 기반으로 데이터를 물리적으로 정렬하는 인덱스입니다. 이렇게 데이터를 물리적으로 정렬하는 것은 효율적인 데이터 접근과 쿼리 성능 향상을 목적으로 합니다. 클러스터형 인덱스를 사용하는 테이블은 클러스터 테이블이라고도 부릅니다.
  • 클러스터 테이블은 테이블의 데이터를 물리적으로 연속적인 블록에 저장하기 때문에, 클러스터 테이블 페이지는 일반적으로 연속적인 블록으로 구성됩니다. 즉, 한 페이지에 여러 개의 행이나 레코드가 저장될 수 있습니다.
  • 해시 테이블과 유사하지만 각 항목이 하나 이상의 여러 페이지를 가리킨다 특히 드문드문한 주소 공간을 나타내는 데 유용하다(메모리 참조는 연속적이지 않고 여기저기 흩어지게 된다)

디렉토리 구조로 사용 되는 해시 테이블

  • 디렉토리 구조에서 해시 테이블은 파일 시스템의 디렉토리 구조를 표현하는 데 사용됩니다. 디렉토리는 파일의 이름과 해당 파일의 위치 또는 메타 데이터를 매핑하는 역할을 합니다. 이를 위해 해시 테이블은 파일 이름을 해시 함수에 적용하여 버킷에 매핑하고, 각 버킷에는 파일 이름과 해당 파일의 위치 또는 메타 데이터에 대한 참조가 저장됩니다.
  • 해시 테이블은 **데이터의 삽입, 검색, 삭제에 대해 상수 시간(O(1))**에 수행할 수 있으므로, 많은 파일이 있는 디렉토리에서도 효율적인 파일 검색이 가능합니다. 또한, 해시 테이블은 빠른 액세스 속도를 제공하기 위해 해시 버킷의 개수를 조정할 수 있으며, 충돌을 해결하기 위한 다양한 충돌 해결 기법을 적용할 수 있습니다.
  • 하지만 디렉토리 구조로 사용되는 해시 테이블크기가 고정되어 있고, 작은 크기의 해시 테이블은 충돌이 자주 발생할 수 있습니다. 또한, 해시 테이블의 크기에 따라 해시 기능의 제약이 있을 수 있습니다. 이러한 한계를 극복하기 위해서는 적절한 해시 함수 선택, 충돌 해결 기법의 적용, 동적 크기 조정 등을 고려하여 디렉토리 구조의 해시 테이블을 설계해야 합니다.

비순환 그래프 디렉토리

  • 비순환 그래프 디렉토리 구조는 파일 시스템에서 사용되는 특정한 디렉토리 구조입니다. 이 구조는 그래프 형태를 가지며, 디렉토리와 파일 간의 공유에 유연성을 제공합니다. 일반적인 트리 구조와 달리, 비순환 그래프 디렉토리 구조는 디렉토리가 여러 개의 부모 디렉토리를 가질 수 있습니다.
  • 비순환 그래프 디렉토리 구조는 파일 시스템의 유연성을 향상시키기 위해 사용됩니다. 이 구조에서는 디렉토리와 파일 간의 공유가 가능하므로, 동일한 파일을 여러 디렉토리에서 참조하거나, 디렉토리 간에 공통된 하위 디렉토리를 가질 수 있습니다. 이를 통해 파일과 디렉토리의 구조를 더욱 유연하게 조직할 수 있습니다.
  • 비순환 그래프 디렉토리 구조의 장점은 파일과 디렉토리 간의 공유가 자유롭다는 것입니다. 한 파일이 여러 디렉토리에 속할 수 있으므로 파일을 논리적인 그룹에 속하게 할 수 있습니다. 또한, 하나의 디렉토리가 다른 디렉토리의 하위 디렉토리로 동시에 속할 수 있어 디렉토리 간의 관계를 유연하게 설정할 수 있습니다
  • 하지만 비순환 그래프 디렉토리 구조는 사용되지 않는 디스크 공간을 회수하기 위해 쓰레기 수집(garbage collection)이 필요하다는 단점이 있습니다. 쓰레기 수집은 사용되지 않는 파일이나 디렉토리를 식별하고 삭제하여 디스크 공간을 확보하는 작업입니다. 이 작업은 파일 시스템의 성능에 영향을 미칠 수 있으므로 효율적인 쓰레기 수집 알고리즘을 사용해야 합니다.

디스크 메타데이터 갱신에 대한 로그

  • 디스크 파일 시스템에서 발생하는 메타데이터 변경 작업을 기록하는 로그입니다. 메타데이터는 파일 시스템에서 파일 및 디렉토리의 속성, 위치, 크기 등을 관리하는 정보입니다. 디스크 메타데이터 갱신 로그는 이러한 메타데이터 변경 작업을 추적하고 기록하여 파일 시스템의 일관성과 내구성을 유지하는 데 도움을 줍니다.
  • 디스크 메타데이터 갱신 로그는 보통 트랜잭션 로그(transaction log) 또는 저널 로그(journal log)라고도 불립니다. 이 로그는 파일 시스템의 일관성을 유지하기 위해 사용되는 트랜잭션 기법을 적용하여 메타데이터 변경 작업을 기록합니다. 예를 들어, 파일 생성, 삭제, 이동, 속성 변경 등의 작업이 수행될 때 해당 작업을 로그에 기록합니다.
  • 디스크 메타데이터 갱신 로그는 장애나 시스템 충돌 등의 예기치 않은 상황에서 파일 시스템의 일관성을 복구하는 데 사용됩니다. 로그에는 메타데이터 변경 작업이 순서대로 기록되므로, 시스템이 다시 시작되거나 복구 과정에서 로그를 검사하여 변경 작업을 재실행하고 파일 시스템을 이전 상태로 복원할 수 있습니다. 이를 통해 파일 시스템의 데이터 손실을 방지하고 일관성을 유지할 수 있습니다.
  • 디스크 메타데이터 갱신 로그는 파일 시스템의 성능에도 영향을 줍니다. 로그는 디스크에 지속적으로 기록되어야 하므로 디스크 I/O 작업이 추가로 필요하게 됩니다. 따라서 로그 기록에 따른 성능 저하를 최소화하기 위해 효율적인 로깅 방법과 로그 관리 전략이 필요합니다.
  • 요약하면, 디스크 메타데이터 갱신에 대한 로그는 파일 시스템에서 발생하는 메타데이터 변경 작업을 기록하는 로그로, 파일 시스템의 일관성과 내구성을 유지하기 위해 사용됩니다. 로그는 예기치 않은 상황에서 파일 시스템을 복구하는 데 도움을 주며, 성능 저하와 관련된 고려사항도 있습니다.

CPU 스케줄링 기법

  • Rate-Monotonic 스케줄링 기법(Rate-Monotonic Scheduling)은 주기적인 작업을 처리하는 데 사용되는 스케줄링 알고리즘입니다. 각 작업에는 주기(Period)가 할당되며, 주기가 짧을수록 우선순위가 높아집니다.
  • Earliest Deadline First(EDF)는 마감 시간이 가장 빠른 작업을 우선적으로 처리하는 스케줄링 알고리즘입니다.
  • 차이점
    • Rate-Monotonic은 주기가 짧은 작업에 더 높은 우선순위를 부여하므로 주기가 짧은 작업이 먼저 수행됩니다. 따라서, 마감 시간을 준수하기 위해서는 주기 내에 수행을 완료해야 합니다.
    • EDF는 마감 시간이 가장 빠른 작업을 우선적으로 처리하므로 마감 시간을 가장 빠르게 준수할 수 있습니다. 주기에 상관없이 마감 시간을 준수하도록 작업이 스케줄링됩니다.

프로세스 스케줄링

  • 결정론적 모델링 방법은 확률적 요소를 고려하지 않고, 예측 가능한 정확한 모델을 사용하여 시스템을 모델링하는 방법을 말합니다. 예를 들어, 각 프로세스의 도착 시간과 CPU 버스트 시간이 정확히 주어졌을 때, 이를 바탕으로 알고리즘의 성능을 분석하고 평가하는 것이 결정론적 모델링 방법입니다.

페이지 교체 기법

  • FIFO (First-In-First-Out) 페이지 교체 기법: 페이지 참조열을 순서대로 처리하면서 가장 오래된 페이지를 교체합니다.
  • Optimal 페이지 교체 기법: 미래에 참조될 페이지 중에서 어떤 페이지가 가장 오랫동안 사용되지 않을지를 미리 예측하여 교체합니다. (이 기법은 실제로 구현하기 어려움)
  • LRU (Least Recently Used) 페이지 교체 기법: 가장 오랫동안 참조되지 않은 페이지를 교체합니다.
    • LRU 페이지 교체 기법을 구현하는 방법은 두 가지가 있습니다.
      • 카운터로 구현 모든 페이지 항목은 카운터를 가진다; 페이지가 참조될 때마다 클록을 이 카운터로 복사한다. 페이지를 교체해야 하는 경우, 가장 작은 카운터 값을 가진 페이지를 찾는다.
      • 스택으로 구현 이중 연결 리스트를 사용하여 페이지 번호의 스택을 구현 페이지가 참조되면: top으로 이동 6개의 포인터를 변경해야 함 그러나 각 갱신의 경우에는 비용이 더 듬 교체를 위한 검색은 필요하지 않음
      • LRU와 OPT는 Belady’s Anomaly가 없는 stack algorithms

디스크 스케줄링

  • SSD에는 해당되지 않음
  • 시작점: 53 예시(큐): 67, 65, 124, 14, 122, 37, 183, 98
  • 실린더의 범위는 0~199로 가
  1. FCFS (First-Come, First-Served): 이것은 가장 단순한 스케줄링 알고리즘이며, 첫 번째로 요청이 들어온 순서대로 처리합니다.
    1. 53->67->65->124->14->122->37->183->98
  2. SSTF (Shortest Seek Time First): SSTF 알고리즘은 현재 디스크 헤드 위치에서 가장 가까운 요청을 먼저 처리합니다. 이 방법은 평균적으로 가장 짧은 시간 동안 요청을 처리하는데, 하지만 특정 요청이 계속 지연될 수 있는 '기아' 현상이 발생할 수 있습니다.
    1. 53->65->67->37->14->98->122->124->183
  3. SCAN (Elevator Algorithm): SCAN 알고리즘은 엘리베이터가 한 방향으로 이동하면서 각 층에서 승객을 태우는 방식과 유사합니다. 디스크 헤드는 한 방향으로 움직이면서 그 방향에 있는 모든 요청을 처리하고, 끝에 도달하면 반대 방향으로 움직이면서 또 다시 모든 요청을 처리합니다. 이 방법은 모든 요청이 공정하게 처리될 수 있도록 합니다.
    1. 53->37->14->0->65->67->98->122->124->183
  4. C-SCAN (Circular SCAN): SCAN 알고리즘의 변형으로, 디스크 헤드는 한 방향으로만 움직이면서 요청을 처리하고, 끝에 도달하면 바로 반대편으로 빠르게 돌아가서 다시 요청을 처리하는 방식입니다. 이 방법은 더 고른 응답 시간을 제공할 수 있습니다.
    1. 53->65->67->98->122->124->183->199->0->14->37
  5. LOOK and C-LOOK: 이들은 SCAN과 C-SCAN의 변형으로, LOOK은 요청이 더 이상 없는 곳까지가 아니라 마지막 요청까지만 이동하고 방향을 바꾸며, C-LOOK 역시 마찬가지로 요청이 있는 곳까지만 이동하고 반대 방향 끝으로 빠르게 돌아갑니다.
    1. SCAN-LOOK: 53->37->14->65->67->98->122->124->183
    2. CSCAN-LOOK: 53->65->67->98->122->124->183->0->14->37

'CS > OS' 카테고리의 다른 글

가용 공간 관리  (0) 2023.06.06
제목: ZFS: 아키텍처, 개념, 주요 기능, 장단점  (0) 2023.06.05
파일 시스템  (0) 2023.05.31
파일, 디스크, 디렉터  (0) 2023.05.29
대용량 저장장치 시스템 1  (0) 2023.05.23

가용 공간 관리

  • 그룹핑(Grouping): 가용 공간을 특정 기준에 따라 여러 그룹으로 분류하는 것
    • 디스크 공간: 파일 시스템, 디렉토리, 파일 유형
  • 카운팅(Counting): 각 그룹에 속하는 공간의 양을 세는 것
    • 특정 디렉토리에 속하는 파일들이 차지하는 디스크 공간의 총량을 계산
  • 효율성(Efficiency):
    • 디스크 할당 방법: 연속 할당, 연결 할당
    • 파일의 디렉터리 항목에 유지되는 데이터의 유형
    • 메타데이터 구조의 선-할당 또는 필요시 할당
    • 고정 또는 가변 크기 자료구조
  • 성능:
    • 데이터와 메타데이터를 가깝게 유지
    • 자주 사용하는 블록을 위한 별도의 메인 메모리 영역 버퍼 캐시의 히트율
    • 동기적, 비동기적
    • 사용 후 반환(Free-behind): 사용한 데이터를 바로 반환 하는 것
    • 미리 읽기(read-ahead): 다음 블록을 사용할 것이라 예상하고 미리 읽는 것
    • 페이지 캐쉬와 버퍼 캐쉬를 합쳐서 통합 버퍼 캐쉬를 사용

Bit map or Bit vector

  • 각각의 비트가 특정 자원을 나타내는 1차원 배열
  • 디스크 공간 관리에서 각 비트는 디스크의 특정 블록을 나타낸다.
  • 비트가 1이면 해당 블록이 사용 중임을 나타내고, 0이면 블록이 사용 가능함을 나타낸다.
  • 크기가 작을 때 유리하며 파일 사이즈가 커지면 감당하기 힘들다.

연결 리스트

  • 공간의 낭비가 없고 전체 순회 할 필요가 없다.

ZFS

  • 장치 공간을 metaslab 단위로 나누고 metaslab을 관리
  • 특정 볼륨은 수백 개의 metaslab을 포함한다.
  • 각 metaslab은 연관된 공간 맵을 가진다.
  • 모든 블록 관련 행동을 로그 파일로 기록
  • 트랜잭션 기반 연산

NFS

NFS는 "Network File System"의 약자로
다른 컴퓨터 시스템의 파일들을 내 컴퓨터 파일 시스템에 마운트 하여 사용 할 수 있게 하는 개념
일반적으로 UNIX와 같은 네트워크 운영 체제에서 사용되며, 파일과 디렉토리를 공유하고 원격 파일을 로컬 컴퓨터에서 사용하는 것처럼 엑세스 할 수 있다.이를 통해 사용자는 자신의 시스템에서 직접적으로 파일을 수정, 이동, 또는 삭제 하는 것이 가능해 진다.
  • 서버와 클라이언트 개념으로 논리적 연결을 통해 작동한다.
  • 마운트 연산은 마운트 할 원격 디렉토리의 이름과 이를 저장하는 서버 시스템의 이름을 필요로 한다.
  • 마운트 연산은 사용자의 관점만 변경하며 서버 측에는 영향을 미치지 않는다.
  • NFS 서버는 상태가 없다. 각 요청은 모든 인자를 가지고 있어야 한다.

'CS > OS' 카테고리의 다른 글

운영체제 기말고사 교안  (2) 2023.06.12
제목: ZFS: 아키텍처, 개념, 주요 기능, 장단점  (0) 2023.06.05
파일 시스템  (0) 2023.05.31
파일, 디스크, 디렉터  (0) 2023.05.29
대용량 저장장치 시스템 1  (0) 2023.05.23

DDL, DCL

  • CREATE, ALTER, DROP, GRANT, REVOKE, COMMIT, ROLLBACK
  • 자동 완료, 자동 복귀
    • 트랜잭션의 성공 실패 여부에 따라 자동으로 커밋, 롤백 되는 것
  • DDL, DCL이 성공적으로 실행된 경우 복구 불가능

DML

  • SELECT, INSERT, DELETE, UPDATE
  • commit: 트랜잭션 종료
  • rollback: 가장 최근 commit 시점까지 복귀
  • set autocommit on: DML이 자동으로 commit 됨

오라클에서 자동 완료가 되는 경우

  • SQL*Plus가 정상적으로 종료하는 경우
  • DDL, DCL 명령을 실행하는 경우
  • set autocommit on 명령을 실행하고 개별 DML 명령어를 사용하는 경우

저장점

  • 트랜잭션을 여러 개로 분할하여 일부만을 복귀시키고자 할 때 사용
  • 지정점 지정: savepoint <라벨>
  • 지정된 지점으로 복귀: rollback to <라벨>

제목: ZFS: 아키텍처, 개념, 주요 기능, 장단점

1. ZFS 개론

ZFS(Zettabyte File System)는 Sun Microsystems가 원래 개발하고 현재는 Oracle이 유지 보수하는 고급 파일 시스템입니다. 이것은 2005년 Solaris 운영 체제의 일부로 처음 선보였습니다. ZFS의 독특한 특징 중 하나는 볼륨 관리자와 파일 시스템을 결합하여 일반적인 파일 시스템의 편리함과 볼륨 관리자의 유연성을 모두 가지고 있다는 것입니다. 즉, ZFS는 파일을 저장하는 것뿐만 아니라 하드 드라이브와 다른 저장 장치를 관리하며, 데이터를 안전하게 보호하는 역할을 합니다.

2. ZFS의 아키텍처와 개념

ZFS는 기본적으로 볼륨 관리자와 파일 시스템의 통합이라고 볼 수 있습니다. 이는 파일 데이터 및 메타데이터에 대한 블록 스토리지 풀, 즉 'zpool'을 관리하고, 이 풀에서 하나 이상의 파일시스템을 생성합니다. 이런 구조를 통해 ZFS는 저장 공간을 효과적으로 관리하고 확장성을 제공합니다.

3. ZFS의 주요 기능과 장점

  • 데이터 무결성 보장: ZFS는 체크섬 및 자가 수리 기능을 사용하여 데이터 무결성을 보장합니다. ZFS는 모든 파일 블록에 대한 체크섬을 생성하며, 이는 읽을 때마다 확인됩니다. 문제가 발생하면 가능한 경우 ZFS는 자동으로 이를 수정하려고 시도합니다.

  • RAID-Z: ZFS는 RAID-Z를 통해 데이터의 블록 수준 복제 및 패리티를 제공합니다. 이는 전통적인 RAID 5/6보다 효율적이며, 'write hole' 문제를 방지합니다. 이는 데이터를 보호하면서 동시에 데이터 저장 공간을 효율적으로 사용하는 방법입니다.

  • 스냅샷 및 클론: ZFS는 파일 시스템의 스냅샷을 빠르고 쉽게 생성할 수 있습니다. 이는 기존 데이터에 영향을 미치지 않고 특정 시점의 데이터 상태를 기록하는 방법입니다. 더 나아가, 이러한 스냅샷은 클론 파일 시스템으로 전환할 수 있습니다. 즉, 원본 데이터의 복사본

을 생성하고 이를 독립적으로 사용할 수 있습니다.

  • 쓰기 중심(copy-on-write) 방식: ZFS는 쓰기 중심 방식을 사용하여 데이터를 관리합니다. 이는 데이터를 새로운 위치에 쓰고 이전 데이터를 유지하는 방식입니다. 이 방식은 데이터 무결성을 보장하고, 시스템 오류나 손상으로부터 데이터를 보호하는 데 도움이 됩니다.

4. ZFS의 단점

  • 리소스 사용량: ZFS는 메모리 사용이 높습니다. 이는 ZFS가 데이터 무결성 및 성능을 위해 메모리 캐시를 사용하기 때문입니다. 이로 인해 ZFS는 큰 시스템에서 작동시키려면 상당한 양의 메모리가 필요합니다.

  • 리눅스 호환성: ZFS는 원래 Solaris를 위해 개발되었으며, 이로 인해 리눅스와의 호환성에 문제가 있습니다. 라이선스 문제로 인해 ZFS는 리눅스 커널에 직접 포함되지 않았으며, 별도로 설치해야 합니다.

  • 복잡성: ZFS는 많은 기능과 유연성을 제공하지만, 이러한 기능을 완전히 활용하려면 상당한 시간과 노력이 필요합니다. 따라서, ZFS를 처음 접하는 사람들에게는 이해하기 어렵고 복잡하게 느껴질 수 있습니다.

ZFS는 데이터 저장 및 관리에 대한 고급 솔루션을 제공하며, 특히 큰 스토리지 시스템에 대한 많은 효율적인 기능을 제공합니다. 그러나 이러한 효과를 최대한 활용하려면 사용자는 이를 이해하고 올바르게 관리하는 데 필요한 시간과 노력을 기울여야 합니다.

'CS > OS' 카테고리의 다른 글

운영체제 기말고사 교안  (2) 2023.06.12
가용 공간 관리  (0) 2023.06.06
파일 시스템  (0) 2023.05.31
파일, 디스크, 디렉터  (0) 2023.05.29
대용량 저장장치 시스템 1  (0) 2023.05.23

파일 시스템

  • 컴퓨터의 디스크에서 데이터를 저장, 검색, 공유하는 방식을 정의하는 것
  • 파일 구조: 관련된 정보의 묶음, 논리적 저장장치 단위
  • SSD에 상주하며 논리 장치를 물리 장치로 변환하여 저장장치에 대한 사용자 인터페이스를 제공한다.
  • 디스크에 대한 효율적이고 편리한 접근을 제공한다.
  • 디스크는 즉성에서 다시 쓰는 것이 가능하고 임의 접근을 제공한다.
  • File control block: 파일에 관한 정보로 구성된 저장장치 구조
  • 계층(트리) 구조를 이룬다.

inodes

  • index + node 합친 것
  • 유닉스에서만 쓰는 용어
  • 파일 컨트롤 블록
  • 권한, 만든 사람, 만든 시간
  • 가지고 있는 데이터 블록들의 번호 13개를 가지고 있음
  • inode가 가지고 있는 번호 10개는 실제 데이터가 있는 번호 3개는 실제 데이터가 있는 곳에 대한 인덱스 정보 
    • 1024*10 보다 큰 파일 이라면 간접 인덱싱 기법을 사용하여 표시
    • 하드디스크에 있는 데이터 블록 번호를 가르킴

파일 시스템 계층

  • 장치 드라이버(I/O control) 입출력 제어 층에서 입출력 장치를 관리
  • 기본 파일 시스템(basic file system)은 물리적 블록 번호를 장치 드라이버에게 전달 한다.
    • 버퍼는 전송 중인 데이터를 유지한다.
    • 캐시는 자주 사용되는 데이터를 유지한다.
  • 파일 구성 모듈(file-organization module)은 파일, 논리 주소, 및 물리 주소를 변환한다.
  • logical file system은 파일 제어 블록(unix의 inodes)를 유지하여 파일 이름을 파일 번호, 파일 핸들, 위치로 변환한다.

파일 시스템 주요 구성 요소 

  • API 수준에서 시스템 콜이 있만 해당 기능을 어떻게 구현하는가?
    • 디스크 및 메모리에 존재하는 구조로 구현됨
  • 부팅 제어 블록(Boot control block): 해당 볼륨에서 OS를 부팅하는데 필요한 정보가 포환된 블록
    • 구조: 부트 블럭(0), 슈퍼 블럭(1), inode 블럭(2 ~ n개)
    • 문제: 16개의 inode 블록이 있을 때 125번 데이터 블록은 몇번 inode에 존재하는가?
    • 풀이: 125/16 = 7..13 → inode 시작 번호는 2 따라서 9번 inode에 데이터 블록이 존재한다.
  • 볼륨 제어 블록(Volume control block): superblock, 마스터 파일이라 불리우며 볼륨 세부 정보가 포함된 블록
  • 파일 제어 블록: 파일 생성 날짜, 파일 주인 그룹 권한, 파일 사이즈, 파일 데이터 블록 위치 등이 기록된 해당 파일을 제어하는데 필요한 정보가 기록된 블록 
  • 마운트 테이블: 파일 시스템 마운트, 마운트 포인트, 파일 시스템 유형을 저장하는 공간 

메모리 내 파일 시스템 구조

가상 파일 시스템

  • 가상 파일 시스템 (VFS): Unix에서 파일 시스템을 구현하는 객체 지향 방식
  • 구현 객체 방식
    • inode: 파일 시스템 내의 각 파일이나 디렉토리를 고유하게 식별하는 정보를 가진 구조체
    • file: 프로세스가 파일을 열 때마다 생성되는 파일 구조체
    • superblock: 파일 시스템의 전반적인 정보를 저장하는 구조체
    • dentry: 파일 시스템 내의 파일이나 디렉토리 이름을 inode와 연결하는 역할을 가진 구조
  • 지원하는 객체 연산 집합
    • int open(): 파일을 열고 해당 파일에 대한 파일 디스크립터를 반환합니다.
    • int close(): 열려 있는 파일을 닫습니다.
    • ssize t read(): 열려 있는 파일에서 데이터를 읽습니다.
    • sszie t write(): 열려 있는 파일에 데이터를 씁니다.
    • int mmap(): 파일이나 장치를 메모리에 매핑합니다. 이를 통해 파일이나 장치의 일부 또는 전체를 직접 메모리에 액세스할 수 있게 해줍니다.

'CS > OS' 카테고리의 다른 글

가용 공간 관리  (0) 2023.06.06
제목: ZFS: 아키텍처, 개념, 주요 기능, 장단점  (0) 2023.06.05
파일, 디스크, 디렉터  (0) 2023.05.29
대용량 저장장치 시스템 1  (0) 2023.05.23
메모리 관리 기법  (0) 2023.05.22

+ Recent posts