1 |
1
파일 시스템이 복수의 스레드가 단일 파일에 데이터를 쓰도록 제어하는 방법으로서,데이터 쓰기 함수를 호출한 함수 호출 스레드에 대하여, 데이터를 쓸 파일의 파일 정보, 상기 파일을 구성하는 복수의 블록들 중 데이터를 쓰기 시작할 블록 시작점 정보, 및 데이터 길이 정보를 포함하는 스레드 정보를 확인하는 단계,상기 파일 정보를 토대로 동일한 파일에 데이터를 쓰고 있는 이전 스레드가 존재하는지 확인하는 단계,상기 이전 스레드가 존재하면, 상기 함수 호출 스레드의 블록 시작점 정보와 데이터 길이 정보를 토대로, 상기 이전 스레드의 블록들과 중복되는 블록이 있는지 확인하는 단계, 그리고상기 함수 호출 스레드가 상기 이전 스레드의 블록들과 서로 다른 블록에 데이터를 쓰고자 한다면, 상기 파일에 데이터를 쓰도록 상기 함수 호출 스레드를 제어하는 단계를 포함하는 단일 파일 데이터 쓰기 병렬화 방법
|
2 |
2
제1항에 있어서,상기 스레드 정보를 확인하는 단계는,상기 블록 시작점 정보와 데이터 길이 정보를 토대로, 상기 함수 호출 스레드에 대한 노드들 생성하는 단계, 그리고상기 생성한 노드를 상기 이전 스레드에 대한 노드가 삽입되어 있는 인터벌 트리에 삽입하고, 상기 인터벌 트리를 갱신하는 단계를 포함하는 단일 파일 데이터 쓰기 병렬화 방법
|
3 |
3
제2항에 있어서,상기 중복되는 블록이 있는지 확인하는 단계는,상기 이전 스레드의 스레드 정보에 포함된 블록 시작점 정보와 데이터 길이 정보를 토대로 생성된 노드와 상기 함수 호출 스레드의 노드를 토대로, 겹쳐지는 블록 구간이 있는지 확인하는 단일 파일 데이터 쓰기 병렬화 방법
|
4 |
4
상기 중복되는 블록이 있는지 확인하는 단계는,상기 이전 스레드의 블록들 중 일부 또는 전체 블록들과 중복되는 블록이 존재하면, 상기 이전 스레드에 의해 선점된 블록들에 락을 설정하는 단계를 포함하는 단일 파일 데이터 쓰기 병렬화 방법
|
5 |
5
제4항에 있어서,상기 함수 호출 스레드를 제어하는 단계는,상기 함수 호출 스레드의 레퍼런스 카운터를 설정하는 단계를 더 포함하고,상기 레퍼런스 카운터는 동일한 블록에 데이터를 쓰고자 하는 스레드들의 수로 설정되는 단일 파일 데이터 쓰기 병렬화 방법
|
6 |
6
제5항에 있어서,상기 함수 호출 스레드를 제어하는 단계 이후에,상기 동일한 파일에 데이터를 쓰고 있는 복수의 스레드들 중 어느 하나의 스레드가 호출한 언락 함수를 인지하는 단계, 그리고상기 언락 함수를 호출한 스레드에 대응하는 노드를 상기 인터벌 트리로부터 삭제하는 단계를 포함하는 단일 파일 데이터 쓰기 병렬화 방법
|
7 |
7
제6항에 있어서,상기 삭제하는 단계 이후에,상기 인터벌 트리에서 삭제된 스레드에 의해, 데이터 쓰기를 대기하고 있는 스레드가 존재하는지 확인하는 단계, 그리고데이터 쓰기를 대기하는 스레드가 있으면, 상기 대기중인 스레드가 파일에 데이터 쓰기를 실행하도록 제어하는 단계를 포함하는 단일 파일 데이터 쓰기 병렬화 방법
|
8 |
8
파일 시스템으로서,데이터 쓰기 함수를 호출한 복수의 스레드들이 각각 쓰기를 실행한 데이터를 블록 단위로 분할하여 저장하는 파일 시스템 모듈, 그리고 제1 스레드가 상기 데이터 쓰기 함수를 호출하면, 상기 제1 스레드에 대한 스레드 정보를 확인하고, 확인한 스레드 정보를 토대로 상기 제1 스레드가 데이터를 쓸 블록들 중 적어도 하나의 블록이 데이터를 쓰고 있는 제2 스레드에 의해 사용되고 있으면 상기 제2 스레드가 사용하고 있는 블록에 락을 설정하며, 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있지 않으면 상기 제1 스레드가 상기 파일 시스템 모듈에 데이터를 쓰도록 제어하는 제어 모듈을 포함하는 파일 시스템
|
9 |
9
제8항에 있어서,상기 제어 모듈은,상기 제1 스레드로부터 호출된 함수가 상기 데이터 쓰기 함수 또는 언락 함수 중 어느 하나의 함수인지 확인하는 호출 함수 확인 모듈,상기 데이터 쓰기 함수가 호출되면, 상기 제1 스레드가 생성한 상기 스레드 정보를 토대로 인터벌 트리에 삽입할 노드를 생성하는 노드 생성 모듈,상기 인터벌 트리 생성 모듈이 생성한 인터벌 트리를 토대로 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있는지 확인하는 스레드 정보 확인 모듈, 그리고상기 스레드 정보 확인 모듈이 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있는 것으로 확인하면, 상기 제2 스레드가 사용하는 블록들에 락을 설정하는 범위 락 설정 모듈을 포함하는 파일 시스템
|
10 |
10
제9항에 있어서,상기 스레드 정보는 상기 제1 스레드가 데이터를 쓸 파일의 파일 정보, 상기 파일을 구성하는 복수의 블록들 중 데이터를 쓰기 시작할 블록 시작점 정보, 및 데이터 길이 정보를 포함하고,상기 노드 생성 모듈은,상기 블록 시작점 정보와 데이터 길이 정보를 토대로 상기 제1 스레드에 대한 블록 시작점과 블록 끝점을 포함하는 노드를 생성하는 파일 시스템
|
11 |
11
제10항에 있어서,상기 범위 락 설정 모듈은,상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있으면, 상기 제1 스레드의 레퍼런스 카운터를 상기 블록들을 사용할 스레드의 수만큼 설정하는 파일 시스템
|
12 |
12
제10항에 있어서,상기 노드 생성 모듈이 생성한 노드를 상기 인터벌 트리에 삽입하는 인터벌 트리 생성 모듈을 더 포함하는 파일 시스템
|