KR20220076969A - 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치 - Google Patents

무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치 Download PDF

Info

Publication number
KR20220076969A
KR20220076969A KR1020200165992A KR20200165992A KR20220076969A KR 20220076969 A KR20220076969 A KR 20220076969A KR 1020200165992 A KR1020200165992 A KR 1020200165992A KR 20200165992 A KR20200165992 A KR 20200165992A KR 20220076969 A KR20220076969 A KR 20220076969A
Authority
KR
South Korea
Prior art keywords
node
area
file
stored
electronic device
Prior art date
Application number
KR1020200165992A
Other languages
English (en)
Inventor
염준범
길영진
서성종
이우중
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200165992A priority Critical patent/KR20220076969A/ko
Priority to PCT/KR2021/012301 priority patent/WO2022119085A1/ko
Publication of KR20220076969A publication Critical patent/KR20220076969A/ko
Priority to US18/203,441 priority patent/US20230305999A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 다양한 실시예에 따른 전자 장치는, 로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치, 주기억 장치, 및 상기 보조 기억 장치 및 상기 주기억 장치와 작동적으로 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 보조 기억 장치의 메타 데이터를 검사하고, 상기 메타 데이터에서 파일의 노드의 위치를 확인하고, 상기 노드의 정보를 읽고, 상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하고, 상기 정렬된 노드의 정보를 상기 주기억 장치에 저장하고, 및 상기 주기억 장치에 저장된 노드의 정보를 검사할 수 있다.

Description

무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치 {METHOD FOR PERFORMING CONSISTENCY CHECK IN FILE SYSTEM AND ELECTRONIC DEVICE USING THE SAME}
본 개시는 로그 구조 파일 시스템에서 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치에 관한 것이다.
운영 체제에서 보조 저장 장치와 그 안에 저장되는 파일을 관리하는 시스템을 통틀어 파일 시스템이라 칭한다. 운영 체제가 다양해지고 저장 장치의 용량이 커짐에 따라 파일 시스템의 종류도 다양해지고 있다.
파일 시스템에서 오류를 검사하기 위해 전체 영역을 탐색해야 하는 경우 성능이 과도하게 저하될 수 있다. 모바일 전자 장치에서 저장 장치가 대용량이 되고, 검사해야 하는 파일의 개수가 늘어남에 따라 무결성 검사를 수행하는데 시간이 오래 걸릴 수 있다. 그 이유 중 하나는 무결성 검사를 위해 파일을 읽는데 순차 읽기가 아닌 임의 읽기가 수행되기 때문일 수 있다. 무결성 검사가 오래 걸리는 경우, 사용자는 시스템이 멈춘 것으로 인지할 수 있다.
본 개시의 다양한 실시예들은 로그 구조 파일 시스템에서 무결성 검사를 수행하는데 걸리는 시간을 단축하는 방법을 제공함에 그 목적이 있다.
본 개시의 다양한 실시예에 따른 전자 장치는, 로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치, 주기억 장치, 및 상기 보조 기억 장치 및 상기 주기억 장치와 작동적으로 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 보조 기억 장치의 메타 데이터를 검사하고, 상기 메타 데이터에서 파일의 노드의 위치를 확인하고, 상기 노드의 정보를 읽고, 상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하고, 상기 정렬된 노드의 정보를 상기 주기억 장치에 저장하고, 및 상기 주기억 장치에 저장된 노드의 정보를 검사할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치는, 로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치, 및 상기 보조 기억 장치와 작동적으로 연결된 프로세서를 포함하고, 상기 프로세서는 상기 보조 기억 장치에서 가비지 컬렉션(garbage collection) 영역을 선정하고, 상기 보조 기억 장치에 저장된 디렉토리의 구조를 판단하고, 상기 보조 기억 장치에서 가비지 컬렉션 영역을 선정하고, 상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 로그 구조 파일 시스템의 무결성을 검사하는 방법은 보조 기억 장치의 메타 데이터를 검사하는 동작, 상기 메타 데이터에서 파일의 노드의 위치를 확인하는 동작, 상기 위치가 확인된 노드의 정보를 읽는 동작, 상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하는 동작, 상기 정렬된 노드의 정보를 주기억 장치에 저장하는 동작, 상기 주기억 장치에 저장된 노드의 정보를 검사하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템에서 가비지 컬렉션(garbage collection)을 수행하는 방법은 보조 기억 장치에서 가비지 컬렉션 영역을 선정하는 동작, 상기 보조 기억 장치에 저장된 디렉토리의 구조를 판단하는 동작, 상기 보조 기억 장치에서 가비지 컬렉션 영역을 선정하는 동작, 및 상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따르면, 로그 구조 파일 시스템에서 오류를 검사하는 무결성 검사를 수행하는데 걸리는 시간을 단축할 수 있다.
도 1은 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는 로그 구조 파일 시스템의 구조도이다.
도 3a는 변형된 로그 구조 파일 시스템의 구조도이다.
도 3b는 변형된 로그 구조 파일 시스템이 파일을 저장하는 일 예이다.
도 4는 변형된 로그 구조 파일 시스템이 새로운 파일을 추가하는 흐름도이다.
도 5는 파일 시스템의 무결성 검사의 흐름도의 일 예이다.
도 6은 로그 구조 파일 시스템이 파일을 저장한 일 예이다.
도 7a는 다양한 실시예에 따라 로그 구조 파일 시스템이 새로운 파일을 추가하는 흐름도이다.
도 7b는 도 7a의 실시예에 따라 노드 영역에 새로운 노드를 할당하는 흐름도이다.
도 8a는 다양한 실시예에 따른 로그 구조 파일 시스템이 파일을 저장하는 일 예이다.
도 8b는 도 8a에 따라 파일의 노드가 저장된 위치의 일 예이다.
도 9는 다양한 실시예에 따른 GC의 흐름도이고,
도 10은 도 9에 따른 가비지 컬렉션을 설명하기 위한 도면이다.
도 11은 다양한 실시예에 따른 파일 시스템의 무결성 검사의 흐름도의 일 예이다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 모듈(150), 음향 출력 모듈(155), 디스플레이 모듈(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서 모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 모듈(150)은, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 모듈(150)은, 예를 들면, 마이크, 마우스, 키보드, 키(예: 버튼), 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 모듈(155)은 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 모듈(155)은, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있다. 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
디스플레이 모듈(160)은 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 디스플레이 모듈(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 디스플레이 모듈(160)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(170)은, 입력 모듈(150)을 통해 소리를 획득하거나, 음향 출력 모듈(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰)를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일실시예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일실시예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성요소에 전력을 공급할 수 있다. 일실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108)) 간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제 1 네트워크(198)(예: 블루투스, WiFi(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제 2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일실시예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일실시예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제 1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제 2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))을 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일실시예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 외부의 전자 장치(102, 또는 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부의 전자 장치들(102, 104, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일실시예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제 2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
다양한 실시예에 따르면, 파일 시스템은 보조 저장 장치(예: 도 1의 비휘발성 메모리(134))에 저장된 파일을 관리할 수 있다. 파일 시스템은 블록(block) 단위로 데이터를 전송하여 I/O(input/output)의 효율성을 향상시킬 수 있다. 블록은 하나 이상의 섹터로 구성될 수 있으며, 섹터의 크기는 32 B(byte)에서 4 KB일 수 있다. 파일 시스템은 보조 저장 장치에 대한 효율적이고 편리한 접근을 제공할 수 있다. 파일 시스템의 종류로는 FAT, FAT32, ext2, F2FS(flash-friendly file system), APFS(apple file system), 로그 구조 파일 시스템(log-structured file system, LFS)이 있다.
도 2는 로그 구조 파일 시스템의 구조도를 나타낸 것이다.
다양한 실시예에 따르면, 로그 구조 파일 시스템(200)은 파일 시스템에 대한 각 업데이트를 트랜잭션(transaction)으로 저장할 수 있다. 파일 시스템이 수정되면 해당 트랜잭션은 로그에서 삭제될 수 있다.
도 2를 참조하면, 로그 구조 파일 시스템(200)은 메타 데이터 영역(210)과 노드 및 데이터 영역(220)을 포함할 수 있다.
다양한 실시예에 따르면, 메타 데이터 영역(210)에는 파일 시스템의 관리 데이터가 저장될 수 있다. 예를 들어, 레이블, 식별자, 버전과 같은 정보가 메타 데이터 영역(210)에 저장될 수 있다. 메타 데이터 영역(210)은 파일 시스템이 포맷(format)될 때 보조 저장 장치의 크기에 비례하여 메타 데이터 영역(210)의 크기와 위치가 결정될 수 있다.
다양한 실시예에 따르면, 노드 및 데이터 영역(220)에는 파일이 저장될 수 있다. 파일은 노드와 데이터로 구성될 수 있다. 노드에는 파일에 관한 정보(예: 파일의 소유 권한, 크기, 데이터 블록 정보)가 포함될 수 있고, 데이터에는 콘텐츠가 포함될 수 있다. 로그 구조 파일 시스템(200)은 노드가 메타 데이터이지만 별도의 영역에 저장하지 않고 노드 및 데이터 영역(220)에 데이터와 함께 저장할 수 있다.
다양한 실시예에 따르면, 도 2는 로그 구조 파일 시스템(200)에서 3개의 파일(파일 A, 파일 B, 파일 C)이 저장된 예를 나타낸다. 파일 A의 노드(230), 파일 A의 데이터(235), 파일 B의 노드(240), 파일 B의 데이터(245), 파일 C의 노드(250), 파일 C의 데이터(255)가 노드 및 데이터 영역(220)에 순서대로 저장될 수 있다. 노드 및 데이터 영역(220)에서 파일 A, 파일 B, 파일 C가 저장된 영역을 제외한 영역은 파일이 저장되지 않은 빈 영역(260)일 수 있다.
도 3a는 변형된 로그 구조 파일 시스템의 구조도이다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은 파일의 노드와 데이터를 효율적으로 저장하기 위해 노드와 데이터를 구분하여 저장할 수 있다. 도 3a를 참조하면, 로그 구조 파일 시스템은 도 2의 노드 및 데이터 영역(220)을 노드 영역(310)과 데이터 영역(320)으로 나눌 수 있다. 노드 영역(310)에는 파일의 노드가 일정 방향(330)으로 순서대로 저장될 수 있고, 데이터 영역(320)에는 파일의 데이터가 일정 방향(340)으로 순서대로 저장될 수 있다. 노드 영역(310)에서 파일의 노드가 저장되지 않은 영역은 빈 영역(335)일 수 있다. 데이터 영역(320)에서 파일의 데이터가 저장되지 않은 영역도 빈 영역(345)일 수 있다.
다양한 실시예에 따르면, 변형된 로그 구조 파일 시스템도 보조 저장 장치의 용량이 작거나 저장된 파일이 많다면 노드 영역(310)에 데이터가 저장될 수 있고, 데이터 영역(320)에 노드가 저장될 수 있다. 이에 대해 도 3b에서 자세히 설명한다.
도 3b는 변형된 로그 구조 파일 시스템이 파일을 저장하는 일 예를 나타낸 것이다.
다양한 실시예에 따르면, 파일이 추가 및 삭제됨에 따라 노드 영역(310)의 일부분에는 노드가 저장될 수 있으나, 다른 부분은 노드가 저장되지 않은 빈 영역일 수 있다. 데이터 영역(320)도 일부분에는 데이터가 저장될 수 있고, 다른 부분은 데이터가 저장되지 않은 빈 영역일 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은 마지막 파일의 노드와 데이터가 저장된 위치를 저장할 수 있다. 도 3b를 참조하면, 마지막으로 저장된 파일의 노드의 위치(예: 파일 시스템에서 관리되는 노드의 논리적 블록 번호)는 노드 영역(310)의 마지막(350)일 수 있다. 이후, 새로운 파일이 저장되는 경우 파일의 노드는 노드 생성 방향(예: 도 3a의 330)으로 탐색된 빈 영역(355)에 저장될 수 있다. 같은 방식으로, 마지막으로 저장된 파일의 데이터의 위치가 데이터 영역(320)의 마지막(360)일 수 있다. 이후, 새로운 파일이 저장되는 경우 파일의 데이터는 데이터 생성 방향(예: 도 3a의 340)으로 빈 영역에 저장될 수 있다. 데이터 생성 방향(예: 도 3a의 340)으로 빈 영역이 없는 경우, 노드 영역(310)에서 탐색된 빈 영역(365)에 새로운 파일의 데이터가 저장될 수 있다.
다양한 실시예에 따르면, 파일의 추가와 삭제가 반복되면 노드 영역(310)에 데이터가 저장될 수 있고, 데이터 영역(320)에 노드가 저장될 수 있어 노드와 데이터가 영역의 구분없이 저장될 수 있다.
도 4는 변형된 로그 구조 파일 시스템이 새로운 파일을 추가하는 흐름도이다.
도 4를 참조하면, 로그 구조 파일 시스템은 새로운 파일을 추가하기 위해, 동작 410에서, 마지막에 할당된 노드의 위치가 노드 영역(예: 도 3a의 노드 영역(310))의 마지막 부분인지 판단할 수 있다.
본 문서의 다양한 실시예들에서 사용된 용어 "판단"은 "결정"과 같은 용어와 상호 호환적으로 사용될 수 있다. 예를 들어, 로그 구조 파일 시스템은 새로운 파일을 추가하기 위해, 동작 410에서, 마지막에 할당된 노드의 위치가 노드 영역(예: 도 3a의 노드 영역(310))의 마지막 부분인지 결정(판단)할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 415에서, 마지막에 할당된 노드의 위치가 노드 영역의 마지막 부분이 아니면, 추가할 새로운 파일의 노드를 노드 영역(310)의 빈 영역에 할당(또는, 저장)할 수 있다. 로그 구조 파일 시스템은 노드 생성 방향(예: 도 3a의 330)으로 노드 영역(310)의 빈 영역을 탐색할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 420에서, 마지막에 할당된 노드의 위치가 노드 영역의 마지막 부분이면, 데이터 영역(예: 도 3a의 데이터 영역(320))에 빈 영역이 있는지 판단할 수 있다. 로그 구조 파일 시스템은 데이터 영역(320)의 처음 부분부터 빈 영역이 있는지 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 425에서, 데이터 영역(320)에 빈 영역이 있으면, 추가할 새로운 파일의 노드를 데이터 영역(320)의 빈 영역에 할당할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 430에서, 데이터 영역(320)에 빈 영역이 없으면, 노드 영역(310)의 처음 부분부터 빈 영역이 있는지 판단할 수 있다. 다양한 실시예에 따르면, 노드 생성 방향(330)은 양 방향이 아닌 일 방향이기 때문에 동작 415에서 탐색되지 않은 노드 영역(310)일 수 있다. 로그 구조 파일 시스템은, 노드 영역(310)의 처음부터 빈 영역이 있는지 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 435에서, 노드 영역(310)에 빈 영역이 있으면, 추가할 새로운 파일의 노드를 노드 영역(310)의 빈 영역에 할당할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 440에서, 노드 영역(310)에 빈 영역이 없으면, 추가할 새로운 파일의 노드를 할당하지 못 할 수 있다. 노드 영역(310) 및 데이터 영역(320)에 빈 영역이 없을 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 445에서, 새로운 파일의 데이터를 저장하기 위해 마지막에 할당된 데이터의 위치가 데이터 영역(320)의 마지막 부분인지 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 450에서, 마지막에 할당된 데이터의 위치가 데이터 영역의 마지막 부분이 아니면, 추가할 새로운 파일의 데이터를 데이터 영역(320)의 빈 영역에 할당(또는, 저장)할 수 있다. 로그 구조 파일 시스템은 데이터 생성 방향(예: 도 3a의 340)으로 데이터 영역(320)의 빈 영역을 탐색할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 455에서, 마지막에 할당된 데이터의 위치가 데이터 영역의 마지막 부분이면, 노드 영역(310)에 빈 영역이 있는지 판단할 수 있다. 로그 구조 파일 시스템은 노드 영역(310)의 처음 부분부터 빈 영역이 있는지 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 460에서, 노드 영역(310)에 빈 영역이 있으면, 추가할 새로운 파일의 데이터를 노드 영역(310)의 빈 영역에 할당할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 465에서, 노드 영역(310)에 빈 영역이 없으면, 데이터 영역(320)의 처음 부분부터 빈 영역이 있는지 판단할 수 있다. 다양한 실시예에 따르면, 데이터 생성 방향(340)은 양 방향이 아닌 일 방향이기 때문에 동작 450에서 탐색되지 않은 데이터 영역(320)일 수 있다. 로그 구조 파일 시스템은, 데이터 영역(320)의 처음부터 빈 영역이 있는지 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 470에서, 데이터 영역(320)에 빈 영역이 있으면, 추가할 새로운 파일의 데이터를 데이터 영역(320)의 빈 영역에 할당할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 475에서, 데이터 영역(320)에 빈 영역이 없으면, 추가할 새로운 파일의 데이터를 할당하지 못 할 수 있다. 노드 영역(310) 및 데이터 영역(320)에 빈 영역이 없을 수 있다.
다양한 실시예에 따르면, 파일 시스템에 오류가 발생할 수 있다. 파일 시스템의 무결성 검사 도구(file system consistency check, fsck)는 파일 시스템에 오류가 발생한 경우 이를 수정하고 복구할 수 있다. 파일 시스템의 무결성 검사 도구는 부팅시 수행될 수 있다. 또는, 사용자의 요청에 의해 파일 시스템의 무결성 검사 도구는 수행될 수 있다.
도 5는 파일 시스템의 무결성 검사의 흐름도의 일 예이다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 510에서, 메타 데이터 영역(예: 도 2의 메타 데이터 영역(210))을 검사할 수 있다. 메타 데이터 영역에 대한 검사는 고정된 위치의 연속된 영역에 대해 수행되기 때문에 순차 읽기(sequential read)일 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 515에서, 메타 데이터 영역(210)에서 오류가 발견(또는 검출)되는지 판단할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 520에서, 메타 데이터 영역(210)에서 오류가 발견되지 않으면 파일 시스템의 전체 영역에 대해 무결성 검사 요청이 발생한 것인지 판단할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는 파일 시스템의 전체 영역에 대해 무결성 검사 요청이 발생한 것이 아니면 문제가 없는 것으로 판단하고 검사를 종료할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 525에서, 메타 데이터 영역(210)에서 오류가 발견되거나 파일 시스템의 전체 영역에 대해 무결성 검사 요청이 발생한 것으로 판단되면 파일(구체적으로, 파일의 노드)을 탐색 및/또는 검사할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 최상위 디렉토리(root)부터 깊이 우선 탐색(depth first search) 방식으로 모든 파일을 탐색하고 파일의 노드에 대한 정합성 검사를 수행할 수 있다. 파일의 노드는 파이 시스템의 노드 및 데이터 영역(예: 도 2의 노드 및 데이터 영역(220))에 흩어져 있기 때문에 파일의 노드를 탐색하기 위해 임의 읽기/쓰기(random read/write)가 수행될 수 있다. 파일(파일의 노드)의 탐색 및/또는 검사에 대한 구체적인 설명은 이하의 도 6에서 자세히 설명한다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 535에서, 파일(또는, 파일의 노드)에 오류가 발생한 것인지 판단할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 530에서, 파일(또는, 파일의 노드)에 오류가 발생한 것으로 판단되면 오류를 수정 및 복구할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 540에서, 파일(또는, 파일의 노드)에 오류가 발생하지 않은 것으로 판단되면 파일 시스템 내의 모든 파일을 검사한 것인지 판단하여 파일 시스템의 무결성 검사를 종료할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는 파일 시스템 내의 모든 파일을 검사하지 않은 것으로 판단되면 동작 525부터 다시 수행할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 545에서, 파일 시스템 내의 모든 파일을 검사한 것으로 판단되면 메타 데이터의 수정이 필요한 지 판단할 수 있다. 파일 시스템의 무결성 검사 도구는 파일의 노드에 대한 오류가 메타 데이터와 관련된 것인지 판단하여 메타 데이터의 수정이 필요한 지 판단할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는 메타 데이터의 수정이 필요하지 않은 것으로 판단되면 파일 시스템의 무결성 검사를 종료할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 550에서, 메타 데이터의 수정이 필요한 것으로 판단되면 수정된 메타 데이터를 기록할 수 있다. 파일 시스템의 무결성 검사 도구는 수정된 메타 데이터를 기록하고, 파일 시스템의 무결성 검사를 종료할 수 있다.
도 6은 로그 구조 파일 시스템이 파일을 저장한 일 예이다.
다양한 실시예에 따르면, 파일(파일의 노드)의 탐색 및/또는 검사에 대해 설명하기 위해 도 6의 (a)는 디렉토리 및 파일 구조의 일 예를 나타낸 것이고, 도 6의 (b)는 파일의 노드가 저장된 위치의 일 예를 나타낸 것이다.
도 6의 (a)를 참조하면, 로그 구조 파일 시스템은 총 9개의 파일을 포함할 수 있다. 최상위 디렉토리(/)는 3개의 파일 a, e, f를 포함할 수 있다. 파일 a(예: 디렉토리)는 3개의 파일 b, c, d를 포함할 수 있고, 파일 f(예: 디렉토리)는 2개의 파일 g, h를 포함할 수 있다.
도 6의 (b)는 이해를 돕기 위해 각각의 파일의 노드가 서로 다른 블록에 저장된 것으로 나타낸 것이나, 하나의 블록에 복수의 파일의 노드가 저장될 수 있다. 도 6의 (b)를 참조하면, 최상위 디렉토리(/)의 노드는 블록 #9(660)에 저장되고, 파일 a의 노드는 블록 #8(650)에 저장될 수 있다. 파일 b의 노드는 블록 #5(640)에, 파일 c의 노드는 블록 #15(690)에, 파일 d의 노드는 블록 #14(680)에, 파일 e의 노드는 블록 #0(610)에, 파일 f의 노드는 블록 #4(630)에, 파일 g의 노드는 블록 #11(670)에, 파일 h의 노드는 블록 #3(620)에 저장될 수 있다.
다양한 실시예에 따르면, 깊이 우선 탐색 방식은 자료의 검색, 트리나 그래프를 탐색하는 하나의 방식으로, 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색하고 끝까지 탐색하면 다시 위로 와서 다음 탐색을 수행하는 방식이다. 로그 구조 파일 시스템이 깊이 우선 탐색 방식으로 파일(또는 파일의 노드)을 탐색 또는 검사하는 경우 파일(또는 파일의 노드)의 검사 순서는 /→a→b→c→d→e→f→g→h 이 될 수 있다. 파일의 검사 순서를 블록의 번호로 나타내면 #9(660)→#8(650)→#5(640)→#15(690)→#14(680)→#0(610)→#4(630)→#11(670)→#3(620) 순이 될 수 있어 임의 읽기가 수행될 수 있다.
도 7a는 다양한 실시예에 따라 로그 구조 파일 시스템이 새로운 파일을 추가하는 흐름도이다.
도 7을 참조하면, 로그 구조 파일 시스템은 새로운 파일을 추가하기 위해, 동작 710에서, 노드 영역과 데이터 영역의 할당 정보를 확인할 수 있다. 노드 영역과 데이터 영역은 시스템 관리자에 의해 설정될 수 있다. 노드 영역과 데이터 영역은 전체 파일 시스템의 일정 부분(예: 전체 파일 시스템의 %, 용량)을 할당하도록 자동 설정될 수 있다. 로그 구조 파일 시스템은 마지막에 할당된 노드의 위치와 데이터의 위치를 확인할 수 있다.
일 실시예에 따르면, 노드 영역의 크기는 데이터 영역의 크기보다 작을 수 있다. 예를 들어, 노드 영역의 크기는 데이터 영역의 크기의 일정 비율(예: 1%)로 설정될 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 720에서, 새로운 파일의 노드를 노드 영역에 할당할 수 있다. 로그 구조 파일 시스템은 마지막에 할당된 노드의 위치가 노드 영역의 마지막이면 데이터 영역의 빈 영역이 아닌 노드 영역의 빈 영역을 탐색할 수 있다. 로그 구조 파일 시스템은 빈 영역을 검출하기 위해 노드 영역을 일정 방향으로 탐색하기 때문에 마지막에 할당된 노드의 위치보다 이전의 영역은 탐색된 영역이 아닐 수 있어 노드 영역의 처음부터 탐색할 수 있다. 로그 구조 파일 시스템에서 새로운 파일을 추가하는 방법에 대한 구체적인 설명은 이하의 도 8a에서 자세히 설명한다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 730에서, 새로운 파일의 데이터를 데이터 영역에 할당할 수 있다. 로그 구조 파일 시스템은 마지막에 할당된 데이터의 위치가 데이터 영역의 마지막이면 노드 영역의 빈 영역이 아닌 데이터 영역의 빈 영역을 탐색할 수 있다. 로그 구조 파일 시스템은 빈 영역을 검출하기 위해 데이터 영역을 일정 방향으로 탐색하기 때문에 마지막에 할당된 데이터의 위치보다 이전의 영역은 탐색된 영역이 아닐 수 있어 데이터 영역의 처음부터 탐색할 수 있다.
도 7b는 도 7a의 실시예에 따라 노드 영역에 새로운 노드를 할당하는 흐름도이다.
일 실시예에 따르면, 도 7a의 동작 720은 도 7b의 순서로 진행될 수 있다. 도 7b를 참조하면, 로그 구조 파일 시스템은 동작 721에서 새로운 파일의 노드를 노드 영역에 할당하기 위해 현재 블록의 다음 블록을 탐색할 수 있다. 현재 블록은 로그 구조 파일 시스템이 마지막으로 저장한 블록일 수 있다.
로그 구조 파일 시스템은, 동작 722에서, 탐색한 다음 블록이 설정된 노드 영역인지 확인할 수 있다. 로그 구조 파일 시스템은, 탐색한 다음 블록이 설정된 노드 영역이 아니면 동작 723에서 노드 영역의 첫 번째 블록으로 이동할 수 있다.
로그 구조 파일 시스템은, 탐색한 다음 블록이 설정된 노드 영역이면 동작 724에서 모든 노드 영역을 탐색하였는지 확인할 수 있다. 로그 구조 파일 시스템은 모든 노드 영역을 탐색한 것으로 확인되면 동작 725에서 노드 영역을 확장할 수 있는지 확인할 수 있다. 로그 구조 파일 시스템은 노드 영역을 확장할 수 있는 것으로 확인되면 동작 726에서 노드 영역을 확장할 수 있고, 노드 영역을 확장할 수 없는 것으로 확인되면 동작 727에서 노드 영역의 할당을 실패로 판단할 수 있다.
로그 구조 파일 시스템은 동작 728에서 모든 노드 영역을 탐색하지 않은 것으로 확인되면 탐색된 블록이 빈 공간인지 확인할 수 있다. 로그 구조 파일 시스템은 탐색된 블록이 빈 공간이 아니면 동작 721에서 다음 블록을 탐색할 수 있고, 탐색된 블록이 빈 공간이면 동작 729에서 블록을 할당할 수 있다.
도 8a는 다양한 실시예에 따른 로그 구조 파일 시스템이 파일을 저장하는 일 예를 나타낸 것이다.
도 3b와 마찬가지로, 파일이 추가 및 삭제됨에 따라 노드 영역(310)의 일부분에는 노드가 저장될 수 있으나, 다른 부분은 노드가 저장되지 않은 빈 영역일 수 있다. 데이터 영역(320)도 일부분에는 데이터가 저장될 수 있고, 다른 부분은 데이터가 저장되지 않은 빈 영역일 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은 마지막 파일의 노드와 데이터가 저장된 위치를 저장할 수 있다. 도 8a를 참조하면, 마지막으로 저장된 파일의 노드의 위치는 노드 영역(310)의 마지막(810)일 수 있다. 이후, 새로운 파일이 저장되는 경우 파일의 노드는 노드 영역(310)을 처음부터 탐색하여 검출된 빈 영역(830)에 저장될 수 있다. 같은 방식으로, 마지막으로 저장된 파일의 데이터의 위치가 데이터 영역(320)의 마지막(820)일 수 있다. 이후, 새로운 파일이 저장되는 경우 파일의 데이터는 데이터 영역(320)을 처음부터 탐색하여 검출된 빈 영역(840)에 저장될 수 있다.
도 8b는 도 8a에 따라 파일의 노드가 저장된 위치의 일 예를 나타낸 것이다. 도 8b를 참조하면, 노드 영역(310)에만 파일의 노드가 저장되며 데이터 영역(320)에는 파일의 데이터가 저장되고 파일의 노드는 저장되지 않을 수 있다. 예를 들어, 노드 영역(310)은 블록 #0부터 블록 #9를 포함할 수 있고, 데이터 영역(320)은 블록 #10부터 블록 #19를 포함할 수 있다. 노드 영역(310)에는 파일 e의 노드가 블록 #0(610)에, 파일 c의 노드가 블록 #1(850)에, 파일 d의 노드가 블록 #2(860)에, 파일 h의 노드가 블록 #3(620)에, 파일 f의 노드가 블록 #4(630)에, 파일 b의 노드가 블록 #5(640)에, 파일 g의 노드가 블록 #6(870)에, 파일 a의 노드가 블록 #8(650)에, 최상위 디렉토리(/)의 노드가 블록 #9(660)에 저장될 수 있다.
다양한 실시예에 따르면, 도 8b와 같이 파일의 노드가 저장되는 경우, 파일 시스템은 무결성 검사시 노드 영역만을 검사하고 종료할 수 있다.
도 9는 다양한 실시예에 따른 가비지 컬렉션의 흐름도이고, 도 10은 도 9에 따른 가비지 컬렉션을 설명하기 위한 도면이다.
다양한 실시예에 따르면, 저장 장치는 일정 단위로 할당(allocation)/해제(release)가 수행될 수 있다. 일정 단위로 할당과 해제가 반복되면서 해제된 영역이 저장 장치에 여러 부분에 존재할 수 있다. 가비지 컬렉션(garbage collection, GC)는 저장된 파일을 이동시켜 해제된 영역을 모으는 동작일 수 있다. 저장 장치에 해제된 영역이 충분하지 못해 하나의 파일이 나누어 저장되는 경우 파일 시스템은 여러 영역을 액세스해야 해 처리 속도가 느려질 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은 가비지 컬렉션을 수행할 수 있다. 로그 구조 파일 시스템은 구조적 특성 상 빈 영역을 확보해야 할 필요가 있다. 로그 구조 파일 시스템은 저장 장치에 빈 영역이 일정 영역보다 부족하고 전자 장치의 시스템이 아이들(idle) 상태이면 가비지 컬렉션을 수행할 수 있다. 로그 구조 파일 시스템은 파일 시스템 무결성 검사에서 노드를 탐색하는 방식을 고려해 이동할 노드와 노드의 위치를 결정할 수 있다.
도 9를 참조하면, 로그 구조 파일 시스템은 가비지 컬렉션을 수행하기 위해, 동작 910에서, 가비지 컬렉션 영역을 선정할 수 있다. 다양한 실시예에 따르면, 도 10의 (a)와 도 10의 (b)는 이해를 돕기 위해 도 6(a)와 도 6의 (b)와 동일할 수 있다. 여기서는 도 10의 (a)와 도 10의 (b)에 대한 설명은 도 6(a)와 도 6의 (b)에 대한 설명과 동일할 수 있어 생략할 수 있다. 다양한 실시예에 따르면, 로그 구조 파일 시스템은 도 10의 (b)에서 가비지 컬렉션 영역으로 블록 #0 ~ #19을 선정할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 920에서, 디렉토리 캐시를 분석할 수 있다. 로그 구조 파일 시스템은 디렉토리 캐시를 분석하여 디렉토리 구조를 파악할 수 있다. 로그 구조 파일 시스템은 도 10의 (a)와 같이 디렉토리 구조를 판단할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 930에서, 노드 이동 영역을 선정할 수 있다. 로그 구조 파일 시스템은 깊이 우선 탐색에 적합하도록 노드의 위치를 재구성할 수 있다. 로그 구조 파일 시스템은 동작 920에서 선정된 가비지 컬렉션 영역을 기초로 도 10의 (b)에서 블록 #0 내지 #19를 이동할 노드로 선정할 수 있다.
다양한 실시예에 따르면, 로그 구조 파일 시스템은, 동작 940에서, 노드를 이동할 수 있다. 로그 구조 파일 시스템은 가비지 컬렉션 영역(#0 ~ #19)에 저장된 노드를 가비지 컬렉션 영역으로 설정되지 않은 영역(#20 ~ #39)에 저장할 수 있다. 로그 구조 파일 시스템은 가비지 컬렉션 영역(#0 ~ #19)에 저장된 노드를 깊이 우선 탐색을 고려하여 가비지 컬렉션 영역으로 설정되지 않은 영역(#20 ~ #39)에 저장할 수 있다. 로그 구조 파일 시스템은 깊이 우선 탐색 방식에 기초해 최상위 디렉토리(/)의 노드를 블록 #20(1010), 파일 a의 노드를 블록 #21(1020), 파일 b의 노드를 블록 #22(1030), 파일 c의 노드를 블록 #23(1040), 파일 d의 노드를 블록 #24(1050), 파일 e의 노드를 블록 #25(1060), 파일 f의 노드를 블록 #26(1070), 파일 g의 노드를 블록 #27(1080) 및 파일 h의 노드를 블록 #28(1090)에 할당할 수 있다. 로그 구조 파일 시스템은 가비지 컬렉션 영역으로 설정되지 않은 영역(#20 ~ #39)에 깊이 우선 탐색 방식에 기초해 순차적으로 노드를 할당할 수 있다.
도 11은 다양한 실시예에 따른 파일 시스템의 무결성 검사의 흐름도의 일 예이다.
다양한 실시예에 따르면, 전자 장치(예: 도 1의 전자 장치(101))는 주기억 장치(예: 도 1의 휘발성 메모리(132))와 보조 기억 장치(예: 도 1의 비휘발성 메모리(134))를 포함할 수 있다. 전자 장치의 프로세서(예: 도 1의 프로세서(120))는 보조 기억 장치(134)의 데이터를 읽어 주기억 장치(132)에 저장하고 데이터를 처리할 수 있다. 보조 기억 장치(134)는 처리 속도가 느리지만 비휘발성이며 HDD(hard disk drive), SSD(solid state drive), eMMC(embedded multi media card), UFS(universal flash storage)가 해당될 수 있다. 주기억 장치(132)는 처리 속도가 빠르지만 휘발성이며 RAM(random access memory)가 해당될 수 있다. 보조 기억 장치(134)에서 데이터를 읽는 방식은 임의의 영역을 읽는 임의 읽기(random read)와 연속된 영역을 순차적으로 읽는 순차 읽기(sequential read)가 있다. 순차 읽기가 임의 읽기보다 빠르게 동작할 수 있다. 임의 읽기에서 읽을 데이터의 영역이 많이 떨어지면 속도가 더 느려질 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1110에서, 메타 데이터를 검사할 수 있다. 파일 시스템의 무결성 검사 도구는 보조 기억 장치(예: 도 1의 비휘발성 메모리(134))에서 메타 데이터가 저장된 영역을 읽어 오류를 검사할 수 있다. 파일 시스템의 무결성 검사 도구는 읽은 메타 데이터를 이후 활용하기 위해 주기억 장치(예: 도 1의 휘발성 메모리(132))에 저장할 수 있다. 동작 1110은 도 5의 동작 510과 동일하거나 유사할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1120에서, 메타 데이터에서 노드의 위치를 확인할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1160에서, 노드 캐시를 구성할 수 있다. 동작 1160은 동작 1130 내지 동작 1150으로 구성될 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1130에서, 노드의 정보를 읽을 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1140에서, 읽은 노드의 정보에 기초해 노드의 위치를 정렬할 수 있다. 일 실시예에 따르면, 파일 시스템의 무결성 검사 도구는 동작 1140에서 노드가 저장된 블록을 오름차순으로 정렬할 수 있다. 다른 실시 예에 따르면, 동작 1140에서, 노드의 위치를 내림차순으로 정렬할 수도 있다. 예를 들어, 파일 시스템의 무결성 검사 도구는 노드가 저장된 블록을 내림차순으로 정렬할 수 있다. 동작 1140에서 내림차순으로 정렬하는 경우, 이하 동작에서 오름차순으로 설명된 부분은 내림차순으로 대체하여 설명이 될 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1140에서, 노드의 정보를 읽을 수 있다. 파일 시스템의 무결성 검사 도구는 오름차순으로 정렬한 노드의 정보를 읽을 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1150에서, 정렬된 노드의 정보를 주기억 장치(132)에 저장할 수 있다. 파일 시스템의 무결성 검사 도구는 주기억 장치(132)에 노드 캐시를 구성할 수 있다. 예를 들어, 파일 시스템의 무결성 검사 도구는 주기억 장치(132)에 읽은 노드의 정보를 저장할 수 있다.
다양한 실시예에 따르면, 파일 시스템의 무결성 검사 도구는, 동작 1170에서, 파일을 검사할 수 있다. 파일 시스템의 무결성 검사 도구는 깊이 우선 탐색 방식에 기초해 최상위 디렉토리부터 파일의 오류를 검사할 수 있다. 파일 시스템의 무결성 검사 도구는 멀티 태스킹을 통해 파일의 오류를 검사할 수 있다. 파일 시스템의 무결성 검사 도구는 검사할 파일을 임의로 나누고 복수의 스레드를 생성하여 파일의 오류를 검사할 수 있다. 생성하는 스레드의 개수는 제한되지 않을 수 있다. 또한, 스레드를 생성하는 기준도 다양하게 적용될 수 있다. 예를 들어, 디렉토리의 구조를 기초로 스레드를 생성할 수 있다. 다른 예로, 하나의 스레드가 처리할 파일의 개수를 기초로 스레드를 생성할 수 있다. 파일 시스템의 무결성 검사 도구는 오류가 검출되면 수정 또는/및 복구할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치(예: 도 1의 전자 장치(101))는, 로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치(예: 도 1의 비휘발성 메모리(143)), 주기억 장치(예: 도 1의 휘발성 메모리(132)), 및 상기 보조 기억 장치 및 상기 주기억 장치와 작동적으로 연결된 프로세서(예: 도 1의 프로세서(120))를 포함하고, 상기 프로세서(120)는, 상기 보조 기억 장치(134)의 메타 데이터를 검사하고, 상기 메타 데이터에서 파일의 노드의 위치를 확인하고, 상기 노드의 정보를 읽고, 상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하고, 상기 정렬된 노드의 정보를 상기 주기억 장치(132)에 저장하고, 및 상기 주기억 장치(132)에 저장된 노드의 정보를 검사할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 상기 보조 기억 장치(134)에서 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별될 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 상기 주기억 장치(132)에 노드 캐시를 구성하고, 상기 정렬된 노드의 정보를 노드 캐시에 저장할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 복수의 스레드를 구성하여 상기 노드의 검사를 나누어 수행할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 깊이 우선 탐색 방식에 기초해 상기 노드의 검사를 수행할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치(101)는, 로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치(134), 및 상기 보조 기억 장치와 작동적으로 연결된 프로세서(120)를 포함하고, 상기 프로세서(120)는 상기 보조 기억 장치(134)에서 가비지 컬렉션 영역을 선정하고, 상기 보조 기억 장치(134)에 저장된 디렉토리의 구조를 판단하고, 상기 보조 기억 장치(134)에서 가비지 컬렉션 영역을 선정하고, 상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 깊이 우선 탐색과 상기 판단된 디렉토리의 구조를 기초로 상기 이동할 노드의 영역을 선정할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 상기 보조 기억 장치(1343)에 빈 영역이 일정 영역보다 부족하고, 상기 전자 장치의 상태가 아이들(idle) 상태인지를 더 판단할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 보조 기억 장치(134)에서 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별될 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 프로세서(120)는 깊이 우선 탐색에 적합하도록 노드의 위치를 재구성하여 상기 노드를 이동할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치에서 로그 구조 파일 시스템의 무결성을 검사하는 방법은 보조 기억 장치(134)의 메타 데이터를 검사하는 동작, 상기 메타 데이터에서 파일의 노드의 위치를 확인하는 동작, 상기 위치가 확인된 노드의 정보를 읽는 동작, 상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하는 동작, 상기 정렬된 노드의 정보를 주기억 장치에 저장하는 동작, 상기 주기억 장치(132)에 저장된 노드의 정보를 검사하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템의 무결성을 검사하는 방법의 상기 보조 기억 장치에서 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별될 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템의 무결성을 검사하는 방법에서 상기 정렬된 노드의 정보를 주기억 장치에(134) 저장하는 동작은, 상기 주기억 장치에 노드 캐시를 구성하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템의 무결성을 검사하는 방법에서 상기 주기억 장치(132)에 저장된 노드의 정보를 검사하는 동작은, 복수의 스레드를 구성하여 상기 노드의 검사를 나누어 수행하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템의 무결성을 검사하는 방법에서 상기 주기억 장치(132)에 저장된 노드의 정보를 검사하는 동작은, 깊이 우선 탐색 방식에 기초해 상기 노드의 검사를 수행하는 동작일 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 로그 구조 파일 시스템에서 가비지 컬렉션(garbage collection)을 수행하는 방법은 보조 기억 장치(134)에서 가비지 컬렉션 영역을 선정하는 동작, 상기 보조 기억 장치에 저장된 디렉토리의 구조를 판단하는 동작, 상기 보조 기억 장치(134)에서 가비지 컬렉션 영역을 선정하는 동작, 및 상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 가비지 컬렉션을 수행하는 방법에서 상기 보조 기억 장치(134)에서 이동할 노드의 영역을 선정하는 동작은, 깊이 우선 탐색과 상기 판단된 디렉토리의 구조를 기초로 상기 이동할 노드의 영역을 선정하는 동작일 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 가비지 컬렉션을 수행하는 방법은 상기 보조 기억 장치(134)에 빈 영역이 일정 영역보다 부족하고, 상기 전자 장치의 상태가 아이들 상태인지를 판단하는 동작을 더 포함할 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 가비지 컬렉션을 수행하는 방법의 상기 보조 기억 장치(134)에서 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별될 수 있다.
본 개시의 다양한 실시예에 따른 전자 장치의 가비지 컬렉션을 수행하는 방법에서 상기 선정된 노드의 영역에 포함된 노드를 이동하는 동작은, 깊이 우선 탐색에 적합하도록 노드의 위치를 재구성하여 상기 노드를 이동하는 동작일 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서의 다양한 실시예들에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (20)

  1. 전자 장치에 있어서,
    로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치;
    주기억 장치; 및
    상기 보조 기억 장치 및 상기 주기억 장치와 작동적으로 연결된 프로세서를 포함하고,
    상기 프로세서는,
    상기 보조 기억 장치의 메타 데이터를 검사하고,
    상기 메타 데이터에서 파일의 노드의 위치를 확인하고,
    상기 노드의 정보를 읽고,
    상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하고,
    상기 정렬된 노드의 정보를 읽고,
    상기 정렬된 노드의 정보를 상기 주기억 장치에 저장하고, 및
    상기 주기억 장치에 저장된 노드의 정보를 검사하는, 전자 장치.
  2. 제1항에 있어서,
    상기 보조 기억 장치는 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별되는, 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 주기억 장치에 노드 캐시를 구성하고, 상기 정렬된 노드의 정보를 노드 캐시에 저장하는, 전자 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    복수의 스레드를 구성하여 상기 노드의 검사를 나누어 수행하는, 전자 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    깊이 우선 탐색 방식에 기초해 상기 노드의 검사를 수행하는, 전자 장치.
  6. 전자 장치에 있어서,
    로그 구조 파일 시스템으로 저장된 파일을 관리하도록 설정된 보조 기억 장치; 및
    상기 보조 기억 장치와 작동적으로 연결된 프로세서를 포함하고,
    상기 프로세서는,
    상기 보조 기억 장치에서 가비지 컬렉션(garbage collection) 영역을 선정하고,
    상기 보조 기억 장치에 저장된 디렉토리의 구조를 판단하고,
    상기 보조 기억 장치에서 가비지 컬렉션 영역을 선정하고,
    상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동하는, 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는,
    깊이 우선 탐색과 상기 판단된 디렉토리의 구조를 기초로 상기 이동할 노드의 영역을 선정하는, 전자 장치.
  8. 제6항에 있어서,
    상기 프로세서는,
    상기 보조 기억 장치에 빈 영역이 일정 영역보다 부족하고, 상기 전자 장치의 상태가 아이들 상태인지를 더 판단하는, 전자 장치.
  9. 제6항에 있어서,
    상기 보조 기억 장치는 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별되는, 전자 장치.
  10. 제6항에 있어서,
    상기 프로세서는,
    깊이 우선 탐색에 적합하도록 노드의 위치를 재구성하여 상기 노드를 이동하는, 전자 장치.
  11. 전자 장치에서 로그 구조 파일 시스템의 무결성을 검사하는 방법에 있어서,
    보조 기억 장치의 메타 데이터를 검사하는 동작;
    상기 메타 데이터에서 파일의 노드의 위치를 확인하는 동작;
    상기 위치가 확인된 노드의 정보를 읽는 동작;
    상기 읽은 노드의 위치를 기반으로 상기 노드를 정렬하는 동작;
    상기 정렬된 노드의 정보를 주기억 장치에 저장하는 동작; 및
    상기 주기억 장치에 저장된 노드의 정보를 검사하는 동작을 포함하는, 파일의 무결성을 검사 방법.
  12. 제11항에 있어서,
    상기 보조 기억 장치는 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별되는, 파일의 무결성 검사 방법.
  13. 제11항에 있어서, 상기 정렬된 노드의 정보를 주기억 장치에 저장하는 동작은,
    상기 주기억 장치에 노드 캐시를 구성하는 동작을 포함하는, 파일의 무결성 검사 방법.
  14. 제11항에 있어서, 상기 주기억 장치에 저장된 노드의 정보를 검사하는 동작은,
    복수의 스레드를 구성하여 상기 노드의 검사를 나누어 수행하는 동작을 포함하는, 파일의 무결성 검사 방법.
  15. 제11항에 있어서, 상기 주기억 장치에 저장된 노드의 정보를 검사하는 동작은,
    깊이 우선 탐색 방식에 기초해 상기 노드의 검사를 수행하는 동작인, 파일의 무결성 검사 방법.
  16. 전자 장치의 로그 구조 파일 시스템에서 가비지 컬렉션(garbage collection)을 수행하는 방법에 있어서,
    보조 기억 장치에서 가비지 컬렉션 영역을 선정하는 동작;
    상기 보조 기억 장치에 저장된 디렉토리의 구조를 판단하는 동작;
    상기 보조 기억 장치에서 가비지 컬렉션 영역을 선정하는 동작; 및
    상기 가비지 컬렉션 영역에 포함된 노드를 상기 가비지 컬렉션 영역으로 선정되지 않은 영역으로 이동하는 동작을 포함하는 전자 장치의 가비지 컬렉션 수행 방법.
  17. 제16항에 있어서, 상기 보조 기억 장치에서 이동할 노드의 영역을 선정하는 동작은,
    깊이 우선 탐색과 상기 판단된 디렉토리의 구조를 기초로 상기 이동할 노드의 영역을 선정하는 동작인, 전자 장치의 가비지 컬렉션 수행 방법.
  18. 제16항에 있어서,
    상기 보조 기억 장치에 빈 영역이 일정 영역보다 부족하고, 상기 전자 장치의 상태가 아이들 상태인지를 판단하는 동작을 더 포함하는, 전자 장치의 가비지 컬렉션 수행 방법.
  19. 제16항에 있어서,
    상기 보조 기억 장치는 상기 파일의 노드가 저장되는 영역과 파일의 데이터가 저장되는 영역이 구별되는, 전자 장치의 가비지 컬렉션 수행 방법.
  20. 제16항에 있어서, 상기 선정된 노드의 영역에 포함된 노드를 이동하는 동작은,
    깊이 우선 탐색에 적합하도록 노드의 위치를 재구성하여 상기 노드를 이동하는 동작인, 전자 장치의 가비지 컬렉션 수행 방법.
KR1020200165992A 2020-12-01 2020-12-01 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치 KR20220076969A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200165992A KR20220076969A (ko) 2020-12-01 2020-12-01 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치
PCT/KR2021/012301 WO2022119085A1 (ko) 2020-12-01 2021-09-09 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치
US18/203,441 US20230305999A1 (en) 2020-12-01 2023-05-30 Method for performing integrity check, and electronic device using same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200165992A KR20220076969A (ko) 2020-12-01 2020-12-01 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치

Publications (1)

Publication Number Publication Date
KR20220076969A true KR20220076969A (ko) 2022-06-08

Family

ID=81853427

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200165992A KR20220076969A (ko) 2020-12-01 2020-12-01 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치

Country Status (3)

Country Link
US (1) US20230305999A1 (ko)
KR (1) KR20220076969A (ko)
WO (1) WO2022119085A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515009B1 (en) * 2016-03-31 2019-12-24 EMC IP Holding Company LLC Method and system for reducing memory requirements during distributed garbage collection of deduplicated datasets
US11422719B2 (en) * 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
JP6712744B2 (ja) * 2016-11-17 2020-06-24 国立大学法人電気通信大学 ネットワークシステム、キャッシュ方法、キャッシュプログラム、管理装置、管理方法及び管理プログラム
US20180293165A1 (en) * 2017-04-07 2018-10-11 Hewlett Packard Enterprise Development Lp Garbage collection based on asynchronously communicated queryable versions
KR102088435B1 (ko) * 2017-09-29 2020-03-12 인하대학교 산학협력단 검색 결과 다양성 인덱스 기반의 효율적 검색 장치 및 그 방법

Also Published As

Publication number Publication date
US20230305999A1 (en) 2023-09-28
WO2022119085A1 (ko) 2022-06-09

Similar Documents

Publication Publication Date Title
KR102619954B1 (ko) 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
US20230342074A1 (en) Electronic device and method for operation of storage of electronic device
KR20220132865A (ko) 스토리지를 포함하는 전자 장치 및 그 방법
US20230359355A1 (en) Electronic device comprising heterogeneous memories and method for transferring compression data between heterogeneous memories thereof
US20230244406A1 (en) Electronic device and storage management method using same
US20230168831A1 (en) Electronic device and operation method of electronic device for managing storage space
US11907586B2 (en) Storage device configured to support multi-streams and operation method thereof
KR20220033912A (ko) 메모리를 관리하기 위한 전자 장치, 전자 장치의 동작 방법, 및 비 일시적 저장 매체
KR20220076969A (ko) 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치
KR20220102056A (ko) 메모리를 관리하는 전자 장치와 이의 동작 방법
KR20240074597A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US20230118797A1 (en) Data swapping method and electronic device supporting same
KR20230083940A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
KR20230031508A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US20230177005A1 (en) Electronic device and method for operating file system
US12019906B2 (en) Electronic device and method of electronic device operating file system using data compression and memory partition
KR20230081556A (ko) 저장 공간을 관리하기 위한 전자 장치 및 전자 장치의 동작 방법
KR20220135560A (ko) 메모리를 관리하기 위한 전자 장치 및 그의 동작 방법
US20220308994A1 (en) Electronic device including storage and method thereof
KR20220102489A (ko) 예약 공간에 기반한 데이터베이스 업데이트 방법 및 장치
KR20230091737A (ko) 파일 탐색을 위한 전자 장치의 동작 방법 및 그 전자 장치
KR20240022948A (ko) 지정된 이벤트에 기반하여 파일을 컴파일하기 위한 전자 장치 및 그 방법
KR20240023987A (ko) 어플리케이션을 관리하기 위한 전자 장치, 그 동작 방법 및 저장 매체
KR20220125557A (ko) 보안 데이터 처리 방법 및 장치
KR20220127504A (ko) 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination