KR20230083940A - 전자 장치 및 전자 장치의 파일 시스템 운영 방법 - Google Patents

전자 장치 및 전자 장치의 파일 시스템 운영 방법 Download PDF

Info

Publication number
KR20230083940A
KR20230083940A KR1020210172447A KR20210172447A KR20230083940A KR 20230083940 A KR20230083940 A KR 20230083940A KR 1020210172447 A KR1020210172447 A KR 1020210172447A KR 20210172447 A KR20210172447 A KR 20210172447A KR 20230083940 A KR20230083940 A KR 20230083940A
Authority
KR
South Korea
Prior art keywords
file
memory
storage
cold
write
Prior art date
Application number
KR1020210172447A
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 KR1020210172447A priority Critical patent/KR20230083940A/ko
Priority to PCT/KR2022/015238 priority patent/WO2023101195A1/ko
Priority to US17/982,175 priority patent/US20230177005A1/en
Publication of KR20230083940A publication Critical patent/KR20230083940A/ko

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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • 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/11File system administration, e.g. details of archiving or snapshots
    • 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
    • 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/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Library & Information Science (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

다양한 실시예들에 따른 전자 장치는 메모리(random access memory), 스토리지(storage) 및 프로세서를 포함하고 프로세서는 어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 어플리케이션의 파일을 쓰고(write), 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하고, 메모리에 쓰여진 파일이 스토리지로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file) 및 콜드 파일(cold file) 중 하나로 분류하고, 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하도록 제어할 수 있다. 이 때 핫 파일은 수정 및/또는 삭제가 콜드 파일에 비해 자주 발생하는 파일이고, 콜드 파일은 수정 및/또는 삭제가 핫 파일에 비해 자주 발생하지 않는 파일이고, 쓰기 패턴(write pattern)은 파일이 수정되는 정도를 포함할 수 있다.

Description

전자 장치 및 전자 장치의 파일 시스템 운영 방법{ELECTRONIC DEVICE AND METHOD FOR OPERATING FILE SYSTEM}
본 문서의 다양한 실시예들은 전자 장치에 관한 것이며, 예를 들어 스토리지를 포함하는 전자 장치 및 그 운영 방법에 관한 것이다.
최근 개발되는 스마트 폰(smart phone), 태블릿 PC(Tablet PC), PMP(Portable Multimedia Player), PDA(Personal Digital Assistant), 랩탑 PC(Laptop Personal Computer) 및 웨어러블 기기(Wearable device)와 같은 전자 장치는 이동성(mobility)뿐만 아니라 다양한 기능(예를 들어, 게임, 소셜 네트워크 서비스(SNS), 인터넷, 멀티미디어, 사진 동영상 촬영 및 실행)을 수행할 수 있다.
전자 장치는 다양한 기능을 수행에 필요한 고용량의 데이터를 저장하기 위해 낸드 플래시 메모리 또는 SSD(solid state disk)와 같은 저장 장치를 포함할 수 있다.
전자 장치는 프로세서에 의해 실행될 수 있는 프로그램 모듈 또는 소프트웨어의 일종인 파일 시스템을 이용하여 어플리케이션의 적어도 일부 데이터를 메인 메모리 상에 write 수 있다. 또한, 전자 장치는 어플리케이션의 데이터를 메인 메모리 상에 write하는 시점에 파일 시스템을 이용하여 write 되는 파일의 종류를 분류하고, 스토리지 상에서 분리되어 저장되도록 제어할 수 있다.
본 문서에 따른 전자 장치는 file을 page cache에 write 하는 시점부터 storage에 저장하는 시점까지의 write pattern을 활용하여, 파일 수정 및 삭제가 빈번하게 발생하는 파일 (hot file) 과 파일 저장 이후 변경이 거의 발생하지 않는 파일 (cold file) 을 구분하여 저장할 수 있다.
Hot / cold file 을 구분하여 분리하는 기술은 스토리지 및 파일시스템 분야에서 다양한 방법으로 다루어지고 있다. 그 이유는 Hot / cold file 을 잘 분리하여 저장할 경우 NAND storage 또는 파일시스템에서 이 정보를 참조하여 Garbage Collection 동작을 최소화하거나, 또는 hot file 과 비교하여 상대적으로 큰 size 의 cold file 저장 시 데이터 블록을 연속적으로 저장하여 파편화를 최소화 함으로써, 파일 저장 성능과 NAND Storage 수명을 최적화 할 수 있기 때문이다.
Hot / cold file 을 분리하는 기존의 기술은 가장 단순하게는 file 의 확장명 (.xml, .db, .jpg, .mp4 등)을 기준으로 파일의 변경될 가능성을 예측하는 방법, 그리고, 특정 OS 별로 지정되는 디렉토리 특성을 기준으로 예측하는 방법, block write size 등을 통해 예측하는 방법 등 다양한 기술이 활용되고 있다.
사전에 설정된 Rule 을 기준으로 hot / cold file 을 분류하는 경우, 임의의 어플리케이션에서만 사용되는 파일 확장명을 가진 파일이 생성되거나 (예를 들어 Youtube cache의 경우 .exo 파일) 또는 파일 확장명이 없는 경우, 확장명으로는 파일의 종류를 예측하기 어려운 한계를 가질 수 있다.
또한, 미리 정의된 디렉토리 이름을 기준으로 hot / cold file 분리에 활용할 수도 있으나 확장명을 사용하는 경우와 마찬가지로 새로운 디렉토리 이름을 갖거나, 모호한 디렉토리 이름이 사용되는 경우 디렉토리 이름으로는 파일의 종류를 예측하기 어려운 한계를 가질 수 있다.
다양한 실시예들에 따른 전자 장치는 메모리(random access memory), 스토리지(storage) 및 프로세서를 포함하고 프로세서는 어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 어플리케이션의 파일을 쓰고(write), 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하고, 메모리에 쓰여진 파일이 스토리지로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file) 및 콜드 파일(cold file) 중 하나로 분류하고, 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하도록 제어할 수 있다. 이 때 핫 파일은 수정 및/또는 삭제가 콜드 파일에 비해 자주 발생하는 파일이고, 콜드 파일은 수정 및/또는 삭제가 핫 파일에 비해 자주 발생하지 않는 파일이고, 쓰기 패턴(write pattern)은 파일이 수정되는 정도를 포함할 수 있다.
다양한 실시예들에 따른 전자 장치의 파일 시스템 운영 방법은 어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 어플리케이션의 파일을 쓰는(write) 동작, 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하는 동작, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하는 동작 및 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하는 동작을 포함할 수 있다. 이 때 핫 파일은 수정 및/또는 삭제가 콜드 파일에 비해 자주 발생하는 파일이고, 콜드 파일은 수정 및/또는 삭제가 핫 파일에 비해 자주 발생하지 않는 파일이며 쓰기 패턴(write pattern)은 파일이 수정되는 정도를 포함할 수 있다.
다양한 실시예에 따르면, 전자 장치는 file writeback시 확인 가능한 write pattern을 활용하여 파일 확장명 또는 디렉토리 설정이 없거나 모호한 경우에도 파일의 종류를 예측할 수 있다.
다양한 실시예에 따르면, 전자 장치는 파일 확장명 또는 디렉토리 설정 없이 file write pattern 을 runtime 에 수집하고, 수집된 pattern 정보를 활용하여 파일의 종류를 예측할 수 있다.
다양한 실시예에 따르면, 본 발명의 Writeback thread 모듈은 page cache 의 내용을 스토리지(storage) 에 저장 요청하기 전에, 기존에 file 별로 수집된 write pattern 정보를 활용하여 hot 파일인지 cold file 일지 예측할 수 있다. 전자 장치는 예측한 결과에 따라 스토리지(storage) 에 저장 시 hint 정보를 tagging 하여 저장 요청하거나, 파일시스템 자체적으로 분리된 영역에 저장하여 스토리지(storage)의 저장 성능을 최적화하고, 스토리지(storage)의 수명을 향상시킬 수 있다.
다양한 실시예에 따르면, 전자 장치는 다양한 환경(예: Android 와 같은 모바일 환경 및 Cloud 서버 환경)에서 각각 write pattern 의 feature의 수치에 대한 학습을 수행하고, hot / cold file 의 예측 정확도를 향상시킬 수 있다.
도 1은 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
도 2a는 비교 실시예에 따른, 전자 장치의 파일 분류 동작을 도시한 것이다.
도 2b는 다양한 실시예들에 따른, 전자 장치의 파일 분류 동작을 도시한 것이다.
도 3은 다양한 실시예들에 따른 전자 장치의 구성을 블록도로 나타낸 것이다.
도 4 및 도 5는 다양한 실시예들에 따른 전자 장치의 파일 분류 후 garbage collection 동작에 활용하는 과정을 도시한 것이다.
도 6은 다양한 실시예들에 따른 전자 장치의 파일 시스템 운영 방법을 순서도로 나타낸 것이다.
도 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 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "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)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2a는 비교 실시예에 따른, 전자 장치의 파일 분류 동작을 도시한 것이다.
비교 실시예에 따른 전자 장치는 프로세서(예: 도 1의 프로세서(120)), 메모리(220) 및 스토리지(230)를 포함할 수 있다. 프로세서(120)는 적어도 하나의 어플리케이션의 파일 쓰기(write) 요청에 대응하여 메모리(220) 상에 파일을 분류하여 저장할 수 있다. 이 때 프로세서(120)는 메모리(220)내의 파일 시스템(225) 상에서 사전에 설정된 규칙(201)에 따라 파일을 핫 파일(hot file) 또는 콜드 파일(cole file)중 어느 하나로 분류할 수 있다. 핫 파일(hot file)은 수정 및/또는 삭제가 콜드 파일(cold file)과 비교하여 상대적으로 빈번하게 발생하는 파일을 의미할 수 있다. 콜드 파일(cole file)은 수정 및/또는 삭제가 핫 파일(hot file)과 비교하여 상대적으로 자주 발생하지 않는 파일을 의미할 수 있다. 핫 파일은 예를 들어, DB, xml 파일을 포함할 수 있고, 콜드 파일은 예를 들어, 사진, 동영상 등의 미디어 파일을 포함할 수 있다. 사전에 설정된 규칙(201)은 예를 들어, 파일의 확장명 (.xml, .db, .jpg, .mp4 등)을 기준으로 파일의 변경될 가능성을 예측하는 방법, 특정 OS 별로 지정되는 디렉토리 특성을 기준으로 예측하는 방법 또는 block write size 등을 통해 예측하는 방법 중 적어도 어느 하나를 포함할 수 있다.
메모리(220)는 프로세서(120)에 의해 실행될 수 있는 프로그램 모듈(예: 도 1의 프로그램 모듈(140))의 일종인 파일 시스템(225)을 포함할 수 있다. 전자 장치는 파일 시스템(225)을 이용하여 복수의 파일들을 스토리지(230)상에 나누어 저장시킬 수 있다.
프로세서(120)는 writeback thread(203)를 이용하여 파일의 분류 정보 및 메모리(220) 상의 파일 데이터와 스토리지(330) 상에 저장된 파일 데이터와의 일치 여부를 확인하고, 메모리(220) 상의 파일 데이터와 스토리지(330) 상에 저장된 파일 데이터가 일치하지 않는 경우 writeback을 수행하도록 제어할 수 있다.
writeback은 파일의 데이터를 기록할 때 스토리지(330)가 아닌 메모리(320)의 캐시(cache) 상에만 업데이트하는 동작을 의미할 수 있다. 즉, 프로세서(120)는 파일의 데이터를 쓸 때 스토리지(230)에는 쓰지 않고 캐시에만 업데이트를 하다가 필요할 때에만 스토리지(230)를 포함하는 주기억장치나 보조기억장치에 기록하도록 제어할 수 있다.
다만, 비교 실시예에 따른 전자 장치는 사전에 설정된 규칙(210)을 이용하여 파일을 분류하기 때문에 임의의 어플리케이션에서만 사용되는 파일 확장명을 가진 파일이 생성되거나 (예를 들어 Youtube cache의 경우 .exo 파일) 또는 파일 확장명이 없는 경우, 확장명으로는 파일의 종류를 예측하기 어려운 한계를 가질 수 있다. 또한, 비교 실시예에 따른 전자 장치는 미리 정의된 디렉토리 이름을 기준으로 파일을 분류할 수 있으나 확장명을 사용하는 경우와 마찬가지로 디렉토리 이름으로는 파일의 종류를 예측하기 어려운 한계를 가질 수 있다.
이하에서는 이러한 한계를 극복하기 위한 전자 장치 및 전자 장치의 파일 시스템 운영 방법에 대해 설명될 것이다.
도 2b는 다양한 실시예들에 따른, 전자 장치의 파일 분류 동작을 도시한 것이다.
도 2b의 전자 장치(예: 도 1의 전자 장치(101))는 프로세서(예: 도 1의 프로세서(120)), 메모리 (220) 및 스토리지 (230)를 포함할 수 있다. 이 때 메모리(220)는 도 1의 휘발성 메모리(132)를 포함할 수 있으며, 스토리지(230)는 도 1의 비휘발성 메모리(134)를 포함할 수 있다. 프로세서(120)는 적어도 하나의 어플리케이션의 파일 쓰기(write) 요청에 대응하여 메모리(220) 상에 파일을 write할 수 있다. 이 때 도 2b의 전자 장치(101)는 사전에 설정된 규칙(예: 도 2a의 212)이 아닌 어플리케이션 파일의 쓰기 패턴(write pattern)을 이용하여 파일을 분류할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치(101)는 파일을 메모리(220) 상의 page cache에 write 하는 시점부터 스토리지(230)에 저장하는 시점 사이의 기간(time period) 중 적어도 일부 기간의 쓰기 패턴(write pattern)을 활용하여, 수정 및 삭제가 빈번하게 발생하는 파일 (hot file) 과 저장 이후 변경이 거의 발생하지 않는 파일 (cold file) 을 구분하여 저장할 수 있다.
일 실시예에 따르면, 메모리(220)는 프로세서(120)에 의해 실행될 수 있는 프로그램 모듈(예: 도 1의 프로그램 모듈(140))의 일종인 파일 시스템(225)을 포함할 수 있다. 전자 장치는 파일 시스템(225)을 이용하여 파일의 종류를 분류하고, 스토리지(230)상에 나누어 저장시킬 수 있다.
일 실시예에 따르면, 스토리지(230)는 핫 파일(hot file)을 저장하는 제1영역(231)을 포함할 수 있다. 또한, 스토리지(230)는 콜드 파일(cole file)을 저장하는 제2영역(232)을 포함할 수 있다. 전자 장치(101)는 수정 및 삭제가 빈번하게 발생하는 파일 (hot file)을 제1영역(231) 상에 저장하고, 저장 이후 변경이 거의 발생하지 않는 파일 (cold file)을 제2영역(232)상에 저장할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치(101)는 파일을 메모리(220)상에 저장하는 시점에는 파일의 쓰기 패턴(write pattern)과 관련된 정보만을 업데이트(update)할 수 있다. 이후 전자 장치(101)는 파일의 데이터를 스토리지(330) 상으로 내리는 시점에 writeback thread(212)를 이용하여 파일의 종류를 구분할 수 있도록 확률을 계산할 수 있다. 전자 장치(101)는 확률 계산의 시점을 조절하여 확률 계산으로 인한 응답 지연을 방지할 수 있다.
일 실시예에 따르면, 파일 시스템(225)은 쓰기 패턴 감지 모듈(write pattern monitor module)(210) 및 writeback thread 모듈(212)을 포함할 수 있다. 쓰기 패턴 감지 모듈(210)은 파일을 파일 시스템(225) 상에 쓰기(write)위한 어플리케이션의 요청을 감지하고, 쓰기(write) 동작의 주요 특징(이하 '쓰기 패턴(write pattern)' 또는 '제1패턴'이라 함)을 모티터링할 수 있다. 쓰기 패턴 감지 모듈(210)은 모니터링하던 파일의 쓰기 패턴(write pattern)을 메모리(220) 상의 파일 객체(미도시)에 임시로 저장할 수 있다.
일 실시예에 따르면, 파일의 쓰기 패턴(write pattern)의 특성(feature)은 overwrite count, append count, write chunk 또는 system call count(fsync) 중 적어도 어느 하나를 포함할 수 있다. 이하에서는 이러한 쓰기 패턴(write pattern)의 특성 및 파일 분류 방법에 대해 설명될 것이다.
도 3은 다양한 실시예들에 따른 전자 장치의 구성을 블록도로 나타낸 것이다.
도 3에 따르면, 전자 장치(300)는 프로세서(310), 메모리(320) 및 스토리지(330) 를 포함할 수 있으며, 도시된 구성 중 일부가 생략 또는 치환 될 수도 있다. 전자 장치(300)는 도 1의 전자 장치(101)의 구성 및/또는 기능 중 적어도 일부를 더 포함할 수 있다. 도시된(또는 도시되지 않은) 전자 장치의 각 구성 중 적어도 일부는 상호 작동적으로(operatively), 기능적으로(functionally) 및/또는 전기적으로 (electrically) 연결될 수 있다.
다양한 실시예에 따르면, 프로세서(310)는 전자 장치(300)의 각 구성 요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 수행할 수 있는 구성으로써, 하나 이상의 프로세서들로 구성될 수 있다. 프로세서(310)는 도 1의 프로세서(120)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다.
다양한 실시예에 따르면, 프로세서(310)가 전자 장치(300) 상에서 구현할 수 있는 연산 및 데이터 처리 기능에는 한정됨이 없을 것이나, 이하에서는 메모리(320) 내 파일 시스템(325)의 제어와 관련된 특징에 대해 상세히 설명하기로 한다. 프로세서(310)의 동작들은 메모리(320)(예: 도 1의 메모리(130))에 저장된 인스트럭션들을 로딩(loading)함으로써 수행될 수 있다. 파일 시스템(file system)(325) 체제는 전자 장치(300)에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 의미할 수 있다. 본 문서의 다양한 실시예에 따른 파일 시스템(325)은 파일 시스템 체제를 구성하여 스토리지(330) 및 메모리(320)에서 파일 및 디렉토리를 저장하고 관리하도록 제어할 수 있다.
다양한 실시예에 따르면, 전자 장치(300)는 적어도 하나 이상의 메모리(320) 및 스토리지(storage)(330)를 포함할 수 있다. 이 때 메모리(320)는 도 1의 휘발성 메모리(132)를 포함할 수 있으며, 스토리지(330)는 도 1의 비휘발성 메모리(134)를 포함할 수 있다. 메모리(320)는 DRAM(dynamic random access memory), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등 휘발성 메모리를 포함할 수 있다. 스토리지(storage)(330)는 OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브(SSD) 중 적어도 하나를 포함할 수 있다. 또는 메모리(320)는 비휘발성 메모리(non-volatile memory)로써, 대용량의 스토리지(storage) 장치를 포함할 수 있다. 예를 들어, 메모리(320)는 OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브(SSD) 중 적어도 하나를 포함할 수 있다. 메모리(320)는 다양한 파일 데이터들을 저장할 수 있으며, 프로세서(310)의 동작에 따라 저장된 파일 데이터들은 업데이트 될 수 있다.
다양한 실시예에 따르면, 파일 시스템(325)은 별도의 데몬(daemon) 없이, 커널(kernel) 레벨 에서의 시스템 콜을 인터셉트하여 이용 가능한 시스템을 의미할 수 있다. 데몬(daemon)이란 시스템이 처음 가동될 때 실행되는 백그라운드 프로세스를 의미할 수 있다. 파일 시스템(325)은 데몬이 메모리(320) 상에 저장된 상태로 사용자의 요청을 기다리다가 사용자의 요청 발생 시 사용자의 요청을 인지할 수 있다.
다양한 실시예들에 따르면, 파일 시스템(325)은 응용 프로그램 계층(application layer)의 요청에 대응하여 파일을 제공할 수 있다. 파일 시스템(325)은 커널 계층(kernel layer)상에 위치할 수 있다. 파일을 제공하는 동작은 요청된 파일을 오픈(open)하여 읽어내거나(read) 또는 이미 오픈(open)된 파일을 읽어(read) 응용 프로그램 계층으로 전달하는 동작을 의미할 수 있다. 파일을 오픈(open)하는 동작은 저장 장치에 있는 파일 이름을 찾아서 응용 프로그램 계층에서 read 및/또는 write 할 수 있도록 준비하는 동작을 의미할 수 있다. 파일을 읽는(read) 동작은 오픈된 파일의 데이터(data)를 메모리(320) 상에 로딩(loading)하는 동작을 의미할 수 있다. 로딩(loading)이란 동작에 필요한 프로그램 그 자체와 리소스를 보조 기억 장치(예: 하드디스크)에서 주 기억 장치(예: 메모리)로 불러들이는 동작을 의미할 수 있다.
일 실시예에 따르면, 파일 시스템(325)은 응용 프로그램 계층(application layer)의 요청에 대응하여 메모리(320) 내 상위 파일 시스템 상에 요청된 파일이 존재하면 요청된 파일을 읽어서 응용 프로그램 계층으로 해당 파일을 제공할 수 있고, 상위 파일 시스템 상에 요청된 파일이 존재하지 않는 경우 스토리지(330)에서 파일을 읽어서 응용 프로그램 계층으로 해당 파일을 제공할 수 있다.
다양한 실시예들에 따르면, 프로세서(310)는 다양한 소프트웨어(예: 프로그램(140))를 실행할 수 있다. 메모리(320)는 파일 시스템(325)을 포함할 수 있다. 파일 시스템(325)은 메모리(320)에 저장된 프로그램 모듈로서, 프로세서(310)에 의해 동작될 수 있다.
다양한 실시예들에 따르면, 프로세서(310)는 파일 시스템(325)을 통해 스토리지(330)에 파일 형태의 데이터를 저장할 수 있다. 파일 시스템(325)은 프로세서(310)가 스토리지(330)에 데이터를 저장하기 위해 관리하는 자료 구조 또는 시스템을 의미할 수 있다. 전자 장치(300)는 스토리지(330)에 데이터를 쓰거나, 스토리지(330)에 저장된 데이터를 효율적으로 읽어내기 위하여 파일 시스템(325)을 활용할 수 있다. 다양한 실시예들에서, 파일 시스템(325)은 F2FS(flash friendly file system)로 구현됨을 가정하여 설명하지만, 파일 시스템(325)의 형태가 F2FS로만 한정되는 것은 아니며 다른 형태의 파일 시스템을 포함할 수 있다. F2FS는 로그 기반 스토리지를 기반으로 낸드 플래시 메모리(NAND flash memory)에 최적화된 파일 시스템을 의미할 수 있다. F2FS(flash friendly file system)에 대해서는 도 4 내지 도 5에서 설명될 것이다.
다양한 실시예들에 따르면, 스토리지(330)는 제1파일 또는 핫 파일(hot file)을 저장하는 제1영역(331)을 포함할 수 있다. 또한, 스토리지(330)는 제2파일 또는 콜드 파일(cole file)을 저장하는 제2영역(332)을 포함할 수 있다.
제1파일 또는 핫 파일(hot file)은 수정 및/또는 삭제가 콜드 파일(cole file)과 비교하여 상대적으로 빈번하게 발생하는 파일을 의미할 수 있다. 제2파일 또는 콜드 파일(cole file)은 수정 및/또는 삭제가 핫 파일(hot file)과 비교하여 상대적으로 자주 발생하지 않는 파일을 의미할 수 있다.
다양한 실시예들에 따르면, 파일 시스템(325)은 쓰기 패턴 감지 모듈(write pattern monitor module)(예: 도 2의 쓰기 패턴 감지 모듈(210)) 및 writeback thread 모듈(예: 도 2의 writeback thread 모듈(212))을 포함할 수 있다. 쓰기 패턴 감지 모듈(210)은 파일을 파일 시스템(325) 상에 쓰기(write)위한 어플리케이션의 요청을 감지하고, 쓰기(write) 동작의 주요 특징(이하 '쓰기 패턴(write pattern)' 또는 '제1패턴'이라 함)을 모티터링할 수 있다. 쓰기 패턴 감지 모듈(210)은 모니터링하던 파일의 쓰기 패턴(write pattern)을 메모리(320) 상의 파일 객체(미도시)에 임시로 저장할 수 있다.
일 실시예에 따르면, 파일의 쓰기 패턴(write pattern)의 특성(feature)은 overwrite count, append count, write chunk 또는 system call count(fsync) 중 적어도 어느 하나를 포함할 수 있다.
overwrite count는 파일의 일부를 중간에 수정하는 횟수를 의미할 수 있다. 예를 들어, 프로세서(310)는 엑셀 파일에서 일부 셀이 수정되는 경우 파일을 저장할 때 overwrite count로 분류할 수 있다. 프로세서(310)는 파일의 overwrite count가 상대적으로 큰 경우 파일의 수정 횟수가 빈번한 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다.
append count는 기존 파일에 다른 데이터를 새롭게 추가하는 횟수를 의미할 수 있다. 예를 들어, 프로세서(310)는 jpg 파일에서 파일이 일부 수정되는 수준을 넘어 새로운 데이터가 추가되는 경우 파일을 저장할 때 append count로 분류할 수 있다. 프로세서(310)는 파일의 append count가 상대적으로 큰 경우 파일에 새로운 내용이 추가되는 경우가 많은 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다.
write chunk는 파일을 메모리(320)상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미할 수 있다. 예를 들어, 프로세서(310)는 write chunk가 상대적으로 작은 경우 한 번 write 동작 시 작은 양의 write를 수행하는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다. 반대로 프로세서(310)는 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다.
system call count(fsync)은 메모리(320) 상에 기록된 파일이 스토리지(330)로 내려지는 또는 write되는 횟수를 의미할 수 있다. 예를 들어, 프로세서(310)는 fsync가 상대적으로 낮은 경우 메모리(320) 상에 기록된 파일이 스토리지(330)로 write되는 횟수가 상대적으로 적은 파일로 판단할 수 있다. 즉, 프로세서(310)는 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다. 반대로 프로세서(310)는 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다. 프로세서(310)는 fsync가 제1수준 미만인 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다. 예를 들어, 프로세서(310)는 fsync가 3 미만인 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다. 이 때 fsync의 수치 또는 제1수준은 이것으로 한정되는 것은 아닐 수 있으며, 개발자의 설정에 의해 결정될 수도 있고, 머신 러닝(machine learning)에 의해 복수의 파일들을 학습하여 결정될 수도 있다.
일 실시예에 따르면, 프로세서(310)는 위에서 언급한 적어도 하나의 쓰기 패턴(write pattern)의 특성(feature)에 기초하여 특정 파일이 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류할 수 있다. 다만, 특정 파일이 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류하는 경우 쓰기 패턴(write pattern)의 특성(feature)을 참고하더라도 어떠한 수치를 기준으로 파일의 종류를 분류할 지 그 기준이 모호할 수 있다. 예를 들어, 특정 파일의 fsync가 상대적으로 높은 경우 전자 장치(300)는 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다. 그러나 파일의 fsync의 수치가 상대적으로 높은지 낮은지는 기준에 따라 달라질 수 있으며, 사용자는 그러한 기준을 정하기 어려울 수 있다.
일 실시예에 따르면, 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 파일의 쓰기 패턴(write pattern)을 학습하고, 파일을 분류하는 기준을 세울 수 있다. 전자 장치(300)는 특정 파일의 쓰기 패턴(write pattern)을 확인하고, 확인된 쓰기 패턴(write pattern)의 특성에 기초하여 핫 파일(hot file)의 쓰기 패턴(write pattern)의 특성 및 콜드 파일(cold file)의 쓰기 패턴(write pattern)의 특성을 판단할 수 있다. 예를 들어, 파일의 확장자 명이 xml(엑셀 파일의 확장자 명)인 경우, 파일은 수정이 상대적으로 빈번한 핫 파일(hot file)에 가까울 수 있다. 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 xml 파일의 쓰기 패턴(write pattern) 및 특성(feature)을 확인할 수 있다. 전자 장치(300)는 xml 파일이 핫 파일(hot file)에 가깝다는 정보 또는 xml 파일의 쓰기 패턴 중 적어도 어느 하나를 확인하고, 인공지능 모델이 핫 파일(hot file)의 쓰기 패턴 및 특성(feature)을 학습하도록 제어할 수 있다. 이 때 특성(feature)은 앞서 언급한 overwrite count, append count, write chunk 또는 system call count(fsync) 중 적어도 어느 하나를 포함할 수 있다.
또는 예를 들어, 파일의 확장자 명이 jpg(사진 또는 그림파일의 확장자 명)인 경우 파일은 수정이 거의 일어나지 않는 콜드 파일(cold file)에 가까울 수 있다. 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 jpg 파일의 쓰기 패턴(write pattern) 및 특성(feature)을 확인할 수 있다. 전자 장치(300)는 jpg 파일이 콜드 파일(cold file)에 가깝다는 정보 또는 jpg 파일의 쓰기 패턴 중 적어도 어느 하나를 확인하고, 인공지능 모델이 콜드 파일(cold file)의 쓰기 패턴 및 특성(feature)을 학습하도록 제어할 수 있다.
전자 장치(300)는 다양한 파일을 이용하여 머신 러닝(machine learning)을 수행하고, 다양한 파일들 각각 핫 파일(hot file) 또는 콜드 파일(cold file) 중 하나의 파일로 분류할 수 있다. 머신 러닝은 의 프로세서(310)에 포함된 보조 프로세서(예: 도 1의 보조 프로세서(132)) 또는 NPU 프로세서에서 실행될 수도 있고, 메인 프로세서(예: 도 1의 메인 프로세서(121))에서도 실행될 수 있다. 프로세서(310)(예: NPU 프로세서)는 인공지능 모델을 이용하여 본 문서의 다양한 실시예들에 따른 전자 장치(300)의 서비스를 제공할 수 있다. 예를 들어, 프로세서(310)(예: NPU 프로세서) 파일 쓰기 패턴을 인식하고 이에 기초하여 특정 파일이 핫 파일(hot file)로 분류되는지 또는 콜드 파일(cold file)로 분류되는지 결정할 수 있다.
일 실시예에 따르면, 스토리지(330)는 파일 쓰기 패턴을 인식하고 이에 기초하여 특정 파일을 분류하기 위한 인공지능 모델을 포함할 수 있다. 메인 프로세서(121)는 NPU 프로세서를 이용하여 인공지능 모델이 머신 러닝을 수행하도록 제어할 수 있다. 메인 프로세서(121)는 이러한 학습에 기초하여 인공지능 모델이 메모리(320) 상에 write되는 파일의 종류를 구분하도록 제어할 수 있다. 인공지능 모델의 학습 과정은 도 4 내지 도 5에서 설명될 것이다.
전자 장치(300)는 파일을 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류하면서, 핫 파일(hot file)의 쓰기 패턴 및 특성은 어떠한지 자료를 확보할 수 있다. 또한, 전자 장치(300)는 파일을 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류하면서, 콜드 파일(cold file)의 쓰기 패턴 및 특성은 어떠한지 자료를 확보할 수 있다. 예를 들어, 전자 장치(300)는 다양한 파일에 대해 머신 러닝(machine learning)을 수행하면서, 핫 파일(hot file)의 system call count(fsync)는 어떠한 분포를 갖는지 및 콜드 파일(cold file)의 system call count(fsync)는 어떠한 분포를 갖는지 판단할 수 있다. 전자 장치(300)는 이러한 학습에 기초하여 임의의 파일에 대해 system call count(fsync)를 확인하고, system call count(fsync)의 수치에 기초하여 임의의 파일이 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류할 수 있다.
전자 장치(300)는 이러한 머신 러닝(machine learning)을 이용하여 점점 더 많은 파일에 대해 학습을 수행하고, system call count(fsync)의 수치에 대해 점점 더 정교한 분류기준을 세울 수 있다.
전자 장치(300)가 머신 러닝(machine learning)을 이용하여 학습할 수 있는 파일의 수나 쓰기 패턴의 특성(feature)은 overwrite count, append count, write chunk, system call count(fsync)으로 한정되는 것은 아니다. 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 앞서 언급한 overwrite count, append count, write chunk, system call count(fsync) 및 다른 쓰기 패턴의 특성(feature)도 모두 학습할 수 있다. 다른 쓰기 패턴의 특성(feature)은 예를 들어, 파일 크기(file size), 파일의 수정 시간(modification time), 수정 간격(modification interval), dirty page count, append write count, overwrite count, chunk size, fsync count, directory name 및 use specific file system 중 적어도 어느 하나를 포함할 수 있다. 여기서 directory name은 파일이 저장되는 폴더(디렉토리)의 이름을 의미할 수 있다. 예를 들어 파일이 임시 폴더(temp)에 저장되는 경우 프로세서(310)는 파일이 핫 파일(hot file)에 가까운 것으로 분류할 수 있다.
일 실시예에 따르면, 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 쓰기 패턴의 특성(feature)의 가중치를 업데이트(update)할 수 있다. 예를 들어, 핫 파일(hot file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 fsync 및 overwrite count에 대해 가중치를 높일 수 있다. 또는 콜드 파일(cold file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 write chunk, dirty page count 및 append count에 대해 가중치를 높일 수 있다. write chunk 는 파일의 write 요청 시 평균적인 파일의 크기(size)를 의미할 수 있으며, 콜드 파일(cold file)의 경우 수정이 빈번하지 않아 1번 write를 요청하는 경우 수정되는 파일의 크기가 상대적으로 클 수 있다. 그래서 콜드 파일(cold file)은 상대적으로 높은 write chunk를 가질 수 있으며 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 학습 후 콜드 파일(cold file)에 대해 write chunk의 가중치를 높일 수 있다.
일 실시예에 따르면, dirty page는 메모리(320)와 스토리지(330) 상의 내용이 다른 파일을 의미할 수 있다. 파일이 자주 수정되는 경우 메모리(320) 상의 파일 내용과 스토리지(330)에 저장된 파일의 내용이 다를 수 있으며, 콜드 파일(cold file)의 경우 스토리지(330)에 write하는 동작이 상대적으로 잘 일어나지 않고, 한번에 많은 write를 수행할 수 있다. 이 경우 콜드 파일(cold file)은 낮은 write 횟수로 인해 핫 파일에 비해 상대적으로 많은 dirty page를 포함할 수 있다. 그래서 콜드 파일(cold file)은 상대적으로 많은 dirty page를 포함할 수 있으며, 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 학습 후 콜드 파일(cold file)에 대해 dirty page count의 가중치를 높일 수 있다.
일 실시예에 따르면, 머신 러닝(machine learning)을 이용하여 가중치를 구하는 방법은 회귀 분석(Regression Analysis) 를 수행하는 방법을 포함할 수 있다. 회귀(Regression)는 분포된 복수의 값이 평균 또는 대표적인 상태로 모이는 현상을 의미할 수 있다. 회귀 분석(Regression Analysis) 방법은 Logistic Regression 또는 Multiple Linear Regression을 포함할 수 있다.
머신 러닝(machine learning)을 이용하여 가중치를 구하는 방법은 Regression 적용 시 사전에 다양한 write 패턴을 통해 '선행 학습된 Regression 식'을 적용하는 방법을 포함할 수 있다. 또는 머신 러닝(machine learning)을 이용하여 가중치를 구하는 방법은 전자 장치(300)를 실시간으로 학습시키는 방법을 포함할 수 있다.
전자 장치(300)는 선행 학습된 Regression 식을 적용하여 미리 외부에서 학습을 시키고 결과로 나온 고정된 regression 식을 바탕으로 임의의 파일이 핫 파일(hot file)인지 또는 콜드 파일(cold file)인지 분류할 수 있다. 또는 전자 장치(300)는 실시간으로 다양한 write 패턴을 학습할 수 있다. 이 경우, 전자 장치(300)는 특정 시간 또는 특정 주기마다 쓰기 패턴 감지 모듈(write pattern monitor module)(예: 도 2의 쓰기 패턴 감지 모듈(210))이 저장한 쓰기 패턴(write pattern)을 활용해 학습 후 전자 장치(300)내에서 regression 식을 스스로 업데이트 시킬 수 있다.
일 실시예에 따르면, 전자 장치(300)는 서로 다른 환경에서 수집된 파일의 쓰기 패턴(write pattern) 을 이용하여 각각의 환경에서 학습을 수행할 수 있다. 예를 들어, 전자 장치(300)는 안드로이드(Android)를 포함하는 모바일 환경의 어플리케이션이 요청하는 write pattern을 학습할 수 있다. 또는 전자 장치(300)는 클라우드(cloud) 서버 환경의 응용프로세스가 요청하는 write pattern을 학습할 수 있다. 전자 장치(300)가 학습할 수 있는 환경은 모바일 환경이나 클라우드 서버 환경으로 제한되는 것은 아니다. 각각의 환경에서 머신 러닝 처리를 위한 프로세싱 파워의 차이가 발생할 수 있다. 전자 장치(300)는 각각의 환경에서 학습을 수행하여 임의의 파일의 분류 시 예측 정확도를 높일 수 있다.
일 실시예에 따르면, 전자 장치(300)는 파일을 메모리(320) 상의 page cache에 저장하는 시점에 파일의 write pattern을 업데이트하고, 메모리(320) 상의 파일을 스토리지(330) 상으로 write하는 시점에 스토리지(330) 상의 파일이 얼마나 빨리 지워지는지에 대한 확률을 계산할 수 있다. 전자 장치(300)는 스토리지(330) 상의 파일이 빨리 지워질수록 수정이 빈번한 핫 파일(hot file)에 가깝다고 판단할 수 있다. 파일을 메모리(320)에 저장하는 시점에 확률을 계산하지 않고 이후 확률을 계산하여, 어플리케이션에서 메모리(320)로 write 요청 시 확률 계산으로 인한 응답 지연을 방지할 수 있다.
일 실시예에 따르면, 파일을 스토리지(330) 상으로 write하는 시점에 파일이 얼마나 빨리 지워지는지에 대한 확률 또는 임의의 파일이 핫 파일(hot file)에 속할 확률을 계산하는 식은 아래에 기재된 수학식 1과 같다.
[수학식 1]
P = ∑WX + b
[P: hot file 일 확률,
X: 쓰기 패턴의 특성(feature)으로써 X1, X2, X3 ~Xn 으로 구성 (예: X1(write_chunk_size), X2(append_write_count) ~ Xn(overwrite_count) 으로 구성될 수 있음, 이에 한정된 것은 아님), W: Weight, b: bias]
프로세서(310)는 파일 시스템(325) 상의 캐시(cache)를 주기적으로 스토리지(330)에 동기화하면서 각 파일 별로 쓰기 패턴(write pattern)을 확인하고, 확인된 쓰기 패턴(write pattern)을 regression 식에 적용하여 확률 P를 계산할 수 있다. 여기서 W는 앞서 언급한 쓰기 패턴(write pattern)의 특성(feature)별 가중치(weight)를 의미할 수 있다. 예를 들어, 핫 파일(hot file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 fsync 및 overwrite count에 대해 가중치를 높일 수 있다. 또는 콜드 파일(cold file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 write chunk, dirty page count 및 append count에 대해 가중치를 높일 수 있다. write chunk 는 파일의 write 요청 시 평균적인 파일의 크기(size)를 의미할 수 있으며, 콜드 파일(cold file)의 경우 수정이 빈번하지 않아 1번 write를 요청하는 경우 수정되는 파일의 크기가 상대적으로 클 수 있다. 그래서 콜드 파일(cold file)은 상대적으로 높은 write chunk를 가질 수 있으며 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 학습 후 콜드 파일(cold file)에 대해 write chunk의 가중치를 높일 수 있다.
또한, b(bias값)는 가중치(weight)와 함께 머신러닝 학습의 결과로 도출될 수 있다. 인공지능 모델은 수학식 1에서 같은 가중치(weight) 또는 w값을 갖더라도 bias값에 따라 분석 대상이 되는 파일의 분류 결과를 다르게 도출할 수 있다. 예를 들어, 인공지능 모델은 bias가 일정 수준 이상인 경우, 같은 쓰기 패턴에 대해 핫 파일(hot file)로 분류할 수 있다. 또는 인공지능 모델은 bias가 일정 수준 미만인 경우, 같은 쓰기 패턴에 대해 콜드 파일(cold file)로 분류할 수 있다. 정리하면, 인공지능 모델은 b(bias값)에 따라 계산된 W값의 위치를 조절할 수 있다.
또한, X는 임의의 파일의 쓰기 패턴(write pattern)의 특성(feature)을 의미할 수 있다. 쓰기 패턴(write pattern)의 특성(feature)은 예를 들어, 파일 크기(file size), 파일의 수정 시간(modification time), 수정 간격(modification interval), dirty page count, append write count, overwrite count, chunk size, fsync count, directory name 및 use specific file system 중 적어도 어느 하나를 포함할 수 있다. b는 편향(bias)을 의미할 수 있다. 데이터의 편향(bias)이 큰 경우 예측값과 실제값의 차이가 클 수 있으며, 확률을 계산하는 머신 러닝의 모델이 단순해질수록 데이터의 편향(bias)이 커질 수 있다. 프로세서(310)는 편향(bias)과 분산(variance)의 합이 최소가 되도록 편향(bias)의 값을 제어할 수 있다.
도 4 및 도 5는 다양한 실시예들에 따른 전자 장치의 파일 분류 후 garbage collection 동작에 활용하는 과정을 도시한 것이다.
garbage collection 동작은 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 동작을 의미할 수 있다. 필요 없게 된 영역이란 파일의 정보가 바뀐 경우에 수정 전의 정보를 담고 있는 파일이 저장된 영역을 의미할 수 있다. 이하에서 수정 전의 정보를 담고 있는 파일은 invalid block(402)으로 지칭될 것이다.
일 실시예에 따르면, 전자 장치(예: 도 3의 전자 장치(300))는 프로세서(예: 도 3의 프로세서(310)), 메모리(320) 및 스토리지(330)를 포함할 수 있다. 메모리(320)는 파일 시스템(325)을 더 포함할 수 있다. 파일 시스템(file system)(325) 체제는 전자 장치(300)에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 의미할 수 있다. 본 문서의 다양한 실시예에 따른 파일 시스템(325)은 파일 시스템 체제를 구성하여 스토리지(330) 및 메모리(320)에서 파일 및 디렉토리를 저장하고 관리하도록 제어할 수 있다.
일 실시예에 따르면, 파일 시스템(325)은 쓰기 패턴 감지 모듈(write pattern monitor module)(예: 도 2의 쓰기 패턴 감지 모듈(210)) 및 writeback thread 모듈(예: 도 2의 writeback thread 모듈(212))을 포함할 수 있다. 쓰기 패턴 감지 모듈(210)은 파일을 파일 시스템(325) 상에 쓰기(write)위한 어플리케이션의 요청을 감지하고, 쓰기(write) 동작의 주요 특징(예: 쓰기 패턴(write pattern))을 모티터링할 수 있다. 쓰기 패턴 감지 모듈(210)은 모니터링 중이던 파일의 쓰기 패턴(write pattern)을 메모리(320) 상의 파일 객체(미도시)에 임시로 저장할 수 있다. 파일 시스템(325)은 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file)(401) 또는 콜드 파일(cold file)(403)로 분류할 수 있다. 또는 파일 시스템(325)은 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 제1파일 또는 제2파일로 분류할 수 있다. 제1파일 또는 핫 파일(hot file)은 파일의 수정 및/또는 삭제가 상대적으로 빈번하게 발생하는 파일을 의미할 수 있다. 제2파일 또는 콜드 파일(cole file)은 파일의 수정 및/또는 삭제가 상대적으로 자주 발생하지 않는 파일을 의미할 수 있다.
프로세서(310)는 임의의 파일에 대해 핫 파일(hot file)(401)인지 또는 콜드 파일(cold file)(403)인지 분류하고, 스토리지(330) 상에 나누어 저장할 수 있다. 또는 프로세서(310)는 임의의 파일에 대해 핫 파일(hot file)(401)인지 또는 콜드 파일(cold file)(403)인지 분류하고, 스토리지(330) 상에 어느 종류의 파일인지 힌트(hint)를 태깅(tagging)하여 저장할 수 있다.
도 5에 따르면, 프로세서(310)는 스토리지(330) 상의 제1공간(510) 내지 제4공간(540) 상에 파일 정보를 저장할 수 있다. 여기서 스토리지(330) 상의 공간은 제1공간(510) 내지 제4공간(540)으로 한정되는 것은 아니며, 분류에 따라 공간의 수는 달라질 수 있다.
도 5 상단의 비교 실시예에 따르면, 제1공간(510) 상에는 콜드 파일(403) 및 invalid block(402)이 저장될 수 있다. invalid block(402)은 파일이 수정된 경우 수정 전의 정보를 담고 있는 파일을 의미할 수 있다.
일 실시예에 따르면, 메모리(320) 상에 write되는 파일은 인공지능 모델에 의해 핫 파일(401) 또는 콜드 파일(403) 중 적어도 어느 하나로 분류될 수 있다. 전자 장치(300)는 파일 시스템(325)을 이용하여 분류된 파일이 최신 파일인지 또는 수정 전의 정보를 담고 있는 invalid block(402)인지 확인할 수 있다. 전자 장치(300)는 스토리지(330)상으로 파일이 write될 때 분류된 파일 정보에 기초하여 확인된 invalid block(402)의 종류를 확인할 수 있다. 예를 들어, 스토리지(330)상으로 write될 때 핫 파일(401)로 분류된 특정 파일은 invalid block(402)으로 확인된 경우에도 여전히 핫 파일(401)로 분류될 수 있다.
도 5 상단의 비교 실시예에 따르면, 제1공간(510) 및 제2공간(520) 상에는 콜드 파일(403) 및 invalid block(402)이 저장될 수 있다. 이 때 콜드 파일(403) 및 invalid block(402)의 배열은 공간마다 상이할 수 있다. 제3공간(530) 상에는 핫 파일(401) 중에서 수정된 파일이 저장될 수 있다. 제4공간(540)은 어떠한 파일도 포함하지 않는 자유 공간(free space) 상태를 유지할 수 있다.
도 5 상단의 비교 실시예에 따른 경우, 프로세서(310)는 공간 활용을 위해 invalid block(402)을 삭제하고, 파일 종류(예: 핫 파일(401) 또는 콜드 파일(403)) 에 따라 다른 공간에 나누어 저장할 수 있다. 프로세서(310)는 제1공간(510) 및 제2공간(520)의 invalid block(402)을 삭제하고, 남아있는 콜드 파일(403)을 제4공간(540)으로 복사하고, 제1공간(510) 및 제2공간(520)의 콜드 파일(403)을 삭제하도록 제어할 수 있다. 이 경우 제1공간(510) 및 제2공간(520)을 자유 공간(free space)으로 확보할 수 있다. 다만, 이 과정에서 스토리지(330)는 invalid block(402)의 삭제 명령, 남아있는 콜드 파일(403)의 복사 및 이동 명령, 제1공간(510) 및 제2공간(520) 상의 콜드 파일(403)의 삭제 명령을 수행하며, disk write의 양이 증가할 수 있다. 스토리지(330)는 disk write의 양이 증가하면, 저장 성능 및 수명이 감소할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치(300)는 이러한 파일 정리 과정에서 disk write의 양을 증가시키지 않고도 효율적으로 자유 공간(free space)을 확보할 수 있다.
도 5 하단의 일 실시예에 따르면, 프로세서(310)는 스토리지(330) 상에 파일을 write할 때 확률 계산을 이용하여 파일이 핫 파일(401)인지 또는 콜드 파일(403)인지 분류할 수 있다. 또한, 프로세서(310)는 분류된 파일의 종류에 기초하여 복수의 파일들이 서로 다른 공간에 저장되도록 제어할 수 있다. 예를 들어, 프로세서(310)는 핫 파일(401)은 제1공간(510) 및 제3공간(530)에 저장되고 콜드 파일(403)은 제2공간(520) 상에 저장되도록 제어할 수 있다. 핫 파일(401) 및 콜드 파일(403)이 저장되는 영역은 이것으로 한정되는 것은 아니며, 사용자의 분류, 핫 파일(401)의 수 또는 콜드 파일(403)의 수 중 적어도 어느 하나에 따라 달라질 수 있다.
프로세서(310)는 파일이 수정되어 invalid block(402)이 된 것을 확인하고, invalid block(402)을 삭제하도록 제어할 수 있다. 이 경우 스토리지(330) 상에서 제1공간(510) 상의 invalid block(402)이 삭제될 수 있으며, 나머지 제2공간(520) 내지 제4공간(540)은 invalid block(402)을 포함하지 않아 별도의 명령을 요구하지 않을 수 있다. 앞선 비교 실시예에서는 파일 정리 과정에서 스토리지(330)는 invalid block(402)의 삭제 명령, 남아있는 콜드 파일(403)의 복사 및 이동 명령, 제1공간(510) 및 제2공간(520) 상의 콜드 파일(403)의 삭제 명령을 수행해야 할 수 있다. 반면 본 문서에 따른 전자 장치를 활용한 실시예에서 스토리지(330)는 invalid block(402)의 삭제 명령만을 수행하면 되므로 disk write의 양을 증가시키지 않고도 효율적으로 자유 공간(free space)을 확보할 수 있다.
도 6은 다양한 실시예들에 따른 전자 장치의 파일 시스템 운영 방법을 순서도로 나타낸 것이다.
도 6을 통하여 설명되는 동작들은 컴퓨터 기록 매체 또는 메모리(도 3의 320)에 저장될 수 있는 인스트럭션들 을 기반으로 구현될 수 있다.
도시된 방법(600)은 앞서 도 1 내지 도 5를 통해 설명한 전자 장치(예: 도 3의 전자 장치(300))에 의해 실행될 수 있으며, 앞서 설명한 바 있는 기술적 특징은 이하에서 생략하기로 한다.
프로세서(예: 도 3의 프로세서(310))는 동작 602에서 파일 시스템(예: 도 3의 파일 시스템(325)을 로딩할 수 있다. 이후 동작 604에서, 프로세서(310)는 어플리케이션(예: 도 3의 어플리케이션(345))으로부터 어플리케이션과 관련된 파일의 입력 또는 출력 요청을 수신할 수 있다. 프로세서(310)는 동시에 복수의 어플리케이션들로부터 입력 또는 출력 요청을 수신할 수도 있다.
동작 610에서, 프로세서(310)는 어플리케이션(345)으로부터 받은 입력 또는 출력 요청이 write 요청인지 또는 sync 요청인지 확인할 수 있다. write 요청은 어플리케이션(345)의 파일을 메모리(예: 도 3의 메모리(320)) 상에 저장하기 위한 요청을 의미할 수 있다. sync 요청은 메모리(320)상에 저장된 파일과 일치하도록 스토리지(예: 도 3의 스토리지(330)) 상의 파일을 업데이트(update) 또는 수정하기 위한 요청을 의미할 수 있다.
동작 612에서, 프로세서(310)는 어플리케이션(345)으로부터 받은 입력 또는 출력 요청이 write 요청이거나 또는 sync 요청인 것을 확인함에 대응하여 파일의 쓰기 패턴(write pattern)과 관련된 정보를 추출하고, 파일 객체에 저장하도록 제어할 수 있다. 파일의 쓰기 패턴(write pattern)과 관련된 정보는 파일의 쓰기 패턴(write pattern)의 특성(feature)을 포함할 수 있다. 일 실시예에 따르면, 파일의 쓰기 패턴(write pattern)의 특성(feature)은 overwrite count, append count, write chunk 또는 system call count(fsync) 중 적어도 어느 하나를 포함할 수 있다. 또한, 파일의 쓰기 패턴(write pattern)의 특성(feature)은 예를 들어, 파일 크기(file size), 파일의 수정 시간(modification time), 수정 간격(modification interval), dirty page count, append write count, overwrite count, chunk size, fsync count, directory name 및 use specific file system 중 적어도 어느 하나를 포함할 수 있다. 이는 앞선 도 3에서 설명된 바 있다.
본 문서의 다양한 실시예들에 따른 전자 장치(300)의 파일 시스템 운영 방법은 파일을 메모리(320)상에 저장하는 시점에는 파일의 쓰기 패턴(write pattern)과 관련된 정보만을 업데이트(update)할 수 있다. 이후 전자 장치(300)는 파일의 데이터를 스토리지(330) 상으로 내리는 시점에 writeback thread(예: 도 2의 writeback thread(212))를 이용하여 파일의 종류를 구분할 수 있도록 확률을 계산할 수 있다. 전자 장치(300)는 확률 계산의 시점을 조절하여 확률 계산으로 인한 응답 지연을 방지할 수 있다. 여기서 파일의 종류는 예를 들어, 핫 파일(예: 도 4의 핫 파일(401)) 또는 콜드 파일(예: 도 4의 콜드 파일(403))을 포함할 수 있다. 핫 파일(hot file)(401)은 파일의 수정 및/또는 삭제가 상대적으로 빈번하게 발생하는 파일을 의미할 수 있다. 콜드 파일(cole file)(403)은 파일의 수정 및/또는 삭제가 상대적으로 자주 발생하지 않는 파일을 의미할 수 있다.
이후 동작 614에서 프로세서(310)는 파일의 입력 또는 출력 요청에 대응하여 파일의 입력 또는 출력을 진행할 수 있다. 동작 610에서 프로세서(310)는 어플리케이션(345)으로부터 받은 입력 또는 출력 요청이 write 요청 또는 sync 요청이 아닌 경우 파일의 쓰기 패턴(write pattern)과 관련된 정보를 따로 추출하지 않고 파일의 입력 또는 출력을 진행할 수 있다.
동작 620에서, 프로세서(310)는 파일의 입력 또는 출력에 있어서 writeback 처리가 필요한지 판단할 수 있다. writeback은 파일의 데이터를 기록할 때 스토리지(330)가 아닌 메모리(320)의 캐시(cache) 상에만 업데이트하는 동작을 의미할 수 있다. 즉, 프로세서(310)는 파일의 데이터를 쓸 때 스토리지(330)에는 쓰지 않고 캐시에만 업데이트를 하다가 필요할 때에만 주기억장치나 보조기억장치에 기록하도록 제어할 수 있다. writeback은 데이터의 입력 속도가 빠르지만, 스토리지(330) 상에 바로 업데이트하지 않기 때문에 메모리(320) 상의 캐시와 스토리지(330)의 데이터가 서로 값이 다른 경우가 발생할 수 있다. 이렇게 메모리(320)와 스토리지(330) 상의 값이 다른 파일은 dirty page로 지칭될 수 있다. 프로세서(310)는 dirty page의 유무를 기준으로 파일의 입력 또는 출력 시 writeback에 대한 처리가 필요한지 판단할 수 있다.
일 실시예에 따르면, dirty page는 메모리(320)와 스토리지(330) 상의 내용이 다른 파일을 의미할 수 있다. 파일이 자주 수정되는 경우 메모리(320) 상의 파일 내용과 스토리지(330)에 저장된 파일의 내용이 다를 수 있으며, 콜드 파일(cold file)의 경우 스토리지(330)에 write하는 동작이 상대적으로 잘 일어나지 않고, 한번에 많은 write를 수행할 수 있다. 이 경우 콜드 파일(cold file)은 낮은 write 횟수로 인해 상대적으로 많은 dirty page를 포함할 수 있다. 그래서 콜드 파일(cold file)은 상대적으로 많은 dirty page를 포함할 수 있으며, 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 학습 후 콜드 파일(cold file)에 대해 dirty page count의 가중치를 높일 수 있다.
프로세서(310)는 dirty page의 존재를 확인하고 writeback을 진행하도록 제어할 수 있다. 동작 622에서, 프로세서(310)는 writeback thread(212)를 실행하도록 제어할 수 있다. writeback thread(212)는 파일의 쓰기 패턴(write pattern)의 특성(feature)별 가중치에 기초하여 파일의 종류를 구분할 수 있다. 동작 624에서, writeback thread(212)는 사전에 정의된 쓰기 패턴(write pattern)의 특성(feature)별 가중치를 로딩(loading)할 수 있다.
일 실시예에 따르면, 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 쓰기 패턴의 특성(feature)의 가중치를 업데이트(update)할 수 있다. 예를 들어, 핫 파일(hot file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 fsync 및 overwrite count에 대해 가중치를 높일 수 있다. 또는 콜드 파일(cold file)을 이용하여 학습을 진행하는 경우, 전자 장치(300)는 write chunk, dirty page count 및 append count에 대해 가중치를 높일 수 있다. write chunk 는 파일의 write 요청 시 평균적인 파일의 크기(size)를 의미할 수 있으며, 콜드 파일(cold file)의 경우 수정이 빈번하지 않아 1번 write를 요청하는 경우 수정되는 파일의 크기가 상대적으로 클 수 있다. 그래서 콜드 파일(cold file)은 상대적으로 높은 write chunk를 가질 수 있으며 전자 장치(300)는 머신 러닝(machine learning)을 이용하여 학습 후 콜드 파일(cold file)에 대해 write chunk의 가중치를 높일 수 있다. 이는 앞선 도 3에서 설명된 바 있다.
동작 626에서, 프로세서(310)는 writeback thread(212)를 이용하여 파일의 종류를 예측할 수 있다.
일 실시예에 따르면, 프로세서(310)는 fsync가 상대적으로 낮은 경우 메모리(320) 상에 기록된 파일이 스토리지(330)로 write되는 횟수가 적은 파일로 판단할 수 있다. 즉, 프로세서(310)는 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다. 반대로 프로세서(310)는 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다.
또는 프로세서(310)는 write chunk가 상대적으로 작은 경우 한 번 write 동작 시 작은 양의 write를 수행하는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류할 수 있다. 반대로 프로세서(310)는 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다. 이는 도 3에서 설명된 바 있다.
동작 628에서, 프로세서(310)는 파일의 종류를 확인함에 대응하여 writeback에 대한 처리 동작을 수행하고, 파일 종류에 따라 파일을 분류하여 제1영역(예: 도 3의 제1영역(331)) 및 제2영역(예: 도 3의 제2영역(332))으로 나누어 저장하도록 제어할 수 있다.
예를 들어, 프로세서(310)는 임의의 파일이 핫 파일(401)로 분류될 수 있는 경우, 파일의 수정이 빈번하여 메모리(320) 상의 파일 정보와 스토리지(330) 상의 파일 정보가 일치하지 않는지 확인할 수 있다. 프로세서(310)는 메모리(320) 상의 파일 정보와 스토리지(330) 상의 파일 정보가 일치하지 않음을 확인함에 대응하여 스토리지(330)에 저장되어 있던 invalid block(예: 도 4의 invalid block(402))을 삭제하도록 제어할 수 있다. invalid block(402)은 메모리(320) 상의 파일 정보와 스토리지(330) 상의 파일 정보가 일치하지 않는 상황에서 수정 전의 정보를 담고 있는 스토리지(330) 상의 파일을 의미할 수 있다. 프로세서(310)는 invalid block(402)을 삭제하고 자유 공간(free space)을 확보하는 garbage collection 동작을 수행할 수 있다. 이는 앞선 도 4 내지 도 5 에서 설명된 바 있다.
동작 630에서, 프로세서(310)는 파일의 종류에 따른 분류가 완료되었거나 또는 파일의 writeback에 대한 처리가 필요하지 않은 경우 도 6에 도시된 과정들을 종료시킬 수 있다.
다양한 실시예들에 따른 전자 장치는 메모리(random access memory), 스토리지(storage) 및 프로세서를 포함하고 프로세서는 어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 어플리케이션의 파일을 쓰고(write), 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하고, 메모리에 쓰여진 파일이 스토리지로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file) 및 콜드 파일(cold file) 중 하나로 분류하고, 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하도록 제어할 수 있다. 이 때 핫 파일은 수정 및/또는 삭제가 콜드 파일에 비해 자주 발생하는 파일이고, 콜드 파일은 수정 및/또는 삭제가 핫 파일에 비해 자주 발생하지 않는 파일이고, 쓰기 패턴(write pattern)은 파일이 수정되는 정도를 포함할 수 있다.
일 실시예에 따르면, 쓰기 패턴은 파일의 크기(file size), 파일의 수정 유무(dirty page), 파일이 수정된 시간(modification time), 파일이 수정되는 시간 간격(modification interval), 파일의 시스템 호출 빈도(fsync), 파일 상에서 수정되는 부분의 크기(chunk size), 파일의 확장자명, 파일이 저장된 디렉토리 이름(directory name) 및 특정 파일 시스템(file system)의 사용 여부 중 적어도 어느 하나를 포함할 수 있다.
일 실시예에 따르면, 프로세서는 머신 러닝(machine learning)을 이용하여 파일 별로 쓰기 패턴(write pattern)을 학습할 수 있도록 제어하고, 학습 결과에 기초하여 핫 파일(hot file)에 대해서 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하고, 학습 결과에 기초하여 콜드 파일(cold file)에 대해서 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하도록 제어할 수 있다.
일 실시예에 따르면, 프로세서는 머신 러닝(machine learning)을 이용하여 학습한 가중치를 메모리 상에 저장하고, 메모리에 쓰여진 임의의 파일이 스토리지로 복사되는 제2시점에 머신 러닝(machine learning)을 이용하여 학습한 가중치에 기초하여 임의의 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하도록 제어할 수 있다.
일 실시예에 따르면, 프로세서는 머신 러닝(machine learning)을 이용하여 학습한 파일이 핫 파일(hot file)로 분류됨을 확인함에 대응하여 쓰기 패턴(write pattern) 중 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count 또는 메모리 상에 기록된 파일이 스토리지로 write되는 횟수를 의미하는 fsync 중 적어도 어느 하나의 가중치를 높이도록 제어할 수 있다.
일 실시예에 따르면, 프로세서는 머신 러닝(machine learning)을 이용하여 학습한 파일이 콜드 파일(cold file)로 분류됨을 확인함에 대응하여 파일을 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk 또는 메모리와 스토리지 상에서 저장된 내용이 다른 더티 페이지의 수(dirty page count) 중 적어도 어느 하나의 가중치를 높이도록 제어할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count를 포함할 수 있으며, 프로세서는 파일의 overwrite count가 상대적으로 큰 경우 파일의 수정 횟수가 빈번한 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며, 파일의 overwrite count가 상대적으로 작은 경우 파일의 수정 횟수가 적은 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 파일을 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk를 포함할 수 있으며, 프로세서는 파일의 write chunk가 상대적으로 작은 경우 빈번하게 수정이 있는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며, 파일의 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 메모리 상에 기록된 파일이 스토리지로 write되는 횟수를 의미하는 fsync를 포함할 수 있으며, 프로세서는 파일의 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며, 파일의 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류할 수 있다.
일 실시예에 따르면, 프로세서는 제1영역에 핫 파일(hot file)이 저장되도록 제어하고, 제2영역에 콜드 파일(cold file)이 저장되도록 제어할 수 있다.
다양한 실시예들에 따른 전자 장치의 파일 시스템 운영 방법은 어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 어플리케이션의 파일을 쓰는(write) 동작, 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하는 동작, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하는 동작 및 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하는 동작을 포함할 수 있다. 이 때 핫 파일은 수정 및/또는 삭제가 콜드 파일에 비해 자주 발생하는 파일이고, 콜드 파일은 수정 및/또는 삭제가 핫 파일에 비해 자주 발생하지 않는 파일이며 쓰기 패턴(write pattern)은 파일이 수정되는 정도를 포함할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 파일의 크기(file size), 파일의 수정 유무(dirty page), 파일이 수정된 시간(modification time), 파일이 수정되는 시간 간격(modification interval), 파일의 시스템 호출 빈도(fsync), 파일 상에서 수정되는 부분의 크기(chunk size), 파일이 수정되는 정도(overwrite count, append count), 파일의 확장자명, 파일이 저장된 디렉토리 이름(directory name) 및 특정 파일 시스템(file system)의 사용 여부 중 적어도 어느 하나를 포함할 수 있다.
일 실시예에 따르면, 메모리 상에 어플리케이션의 파일을 쓰는(write) 제1시점에 파일의 쓰기 패턴(write pattern)을 모니터링 후 메모리 상에 업데이트(update)하는 동작은 머신 러닝(machine learning)을 이용하여 파일 별로 쓰기 패턴(write pattern)을 학습할 수 있도록 제어하는 동작 및 학습 결과에 기초하여 핫 파일(hot file) 및 콜드 파일(cold file)에 대해서 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은 머신 러닝(machine learning)을 이용하여 학습한 가중치를 메모리 상에 저장하는 동작, 메모리에 쓰여진 임의의 파일이 스토리지로 복사되는 제2시점에 머신 러닝(machine learning)을 이용하여 학습한 가중치에 기초하여 임의의 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 전자 장치의 파일 시스템 운영 방법은 머신 러닝(machine learning)을 이용하여 학습한 파일이 핫 파일(hot file)로 분류됨을 확인함에 대응하여 쓰기 패턴(write pattern) 중 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count 또는 메모리 상에 기록된 파일이 스토리지로 write되는 횟수를 의미하는 fsync 중 적어도 어느 하나의 가중치를 높이도록 제어하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 전자 장치의 파일 시스템 운영 방법은 머신 러닝(machine learning)을 이용하여 학습한 파일이 콜드 파일(cold file)로 분류됨을 확인함에 대응하여 파일을 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk 또는 메모리와 스토리지 상에서 저장된 내용이 다른 더티 페이지의 수(dirty page count) 중 적어도 어느 하나의 가중치를 높이도록 제어하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count를 포함할 수 있으며, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은 파일의 overwrite count가 상대적으로 큰 경우 파일의 수정 횟수가 빈번한 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하고, 파일의 overwrite count가 상대적으로 작은 경우 파일의 수정 횟수가 적은 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 파일을 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk를 포함할 수 있으며, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은 파일의 write chunk가 상대적으로 작은 경우 빈번하게 수정이 있는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며, 파일의 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 쓰기 패턴(write pattern)은 메모리 상에 기록된 파일이 스토리지로 write되는 횟수를 의미하는 fsync를 포함할 수 있으며, 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은 파일의 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하고, 파일의 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 파일의 분류 결과를 파일과 함께 스토리지에 저장하거나 또는 파일의 분류 결과에 기초하여 파일을 제1영역 또는 제2영역으로 나누어 스토리지에 저장하는 동작은 제1영역에 핫 파일(hot file)이 저장되도록 제어하는 동작 및 제2영역에 콜드 파일(cold file)이 저장되도록 제어하는 동작을 더 포함할 수 있다.
본 명세서와 도면에 개시된 본 문서의 실시예는 본 문서의 실시예에 따른 기술 내용을 쉽게 설명하고 본 문서의 실시예의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 문서의 실시예의 범위를 한정하고자 하는 것은 아니다. 따라서 본 문서의 다양한 실시예의 범위는 여기에 개시된 실시예 이외에도 본 문서의 다양한 실시예의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 문서의 다양한 실시예의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 전자 장치에 있어서,
    메모리(random access memory);
    스토리지(storage);및
    프로세서를 포함하고
    상기 프로세서는
    어플리케이션의 파일 입력 요청에 대응하여 상기 메모리 상에 상기 어플리케이션의 파일을 쓰고(write),
    상기 메모리 상에 상기 어플리케이션의 파일을 쓰는(write) 제1시점에 상기 파일의 쓰기 패턴(write pattern)을 모니터링 후 상기 메모리 상에 업데이트(update)하고,
    상기 메모리에 쓰여진 파일이 상기 스토리지로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 상기 파일을 핫 파일(hot file) 및 콜드 파일(cold file) 중 하나로 분류하고,
    상기 파일의 분류 결과를 상기 파일과 함께 상기 스토리지에 저장하거나 또는 상기 파일의 분류 결과에 기초하여 상기 파일을 제1영역 또는 제2영역으로 나누어 상기 스토리지에 저장하도록 제어하며,
    상기 핫 파일은 수정 및/또는 삭제가 상기 콜드 파일에 비해 자주 발생하는 파일이고, 상기 콜드 파일은 수정 및/또는 삭제가 상기 핫 파일에 비해 자주 발생하지 않는 파일이고,
    상기 쓰기 패턴(write pattern)은 상기 파일이 수정되는 정도를 포함하는 전자 장치.
  2. 제 1 항에 있어서,
    상기 쓰기 패턴은
    상기 파일의 크기(file size), 상기 파일의 수정 유무(dirty page), 상기 파일이 수정된 시간(modification time), 상기 파일이 수정되는 시간 간격(modification interval), 상기 파일의 시스템 호출 빈도(fsync), 상기 파일 상에서 수정되는 부분의 크기(chunk size), 상기 파일의 확장자명, 상기 파일이 저장된 디렉토리 이름(directory name) 및 특정 파일 시스템(file system)의 사용 여부 중 적어도 어느 하나를 포함하는 전자 장치.
  3. 제 1항에 있어서,
    상기 프로세서는
    머신 러닝(machine learning)을 이용하여 파일 별로 상기 쓰기 패턴(write pattern)을 학습할 수 있도록 제어하고,
    학습 결과에 기초하여 상기 핫 파일(hot file)에 대해서 상기 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하고,
    학습 결과에 기초하여 상기 콜드 파일(cold file)에 대해서 상기 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하도록 제어하는 전자 장치.
  4. 제 3항에 있어서,
    상기 프로세서는
    상기 머신 러닝(machine learning)을 이용하여 학습한 가중치를 상기 메모리 상에 저장하고,
    상기 메모리에 쓰여진 임의의 파일이 상기 스토리지로 복사되는 상기 제2시점에 상기 머신 러닝(machine learning)을 이용하여 학습한 가중치에 기초하여 상기 임의의 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하도록 제어하는 전자 장치.
  5. 제 3항에 있어서,
    상기 프로세서는
    상기 머신 러닝(machine learning)을 이용하여 학습한 파일이 상기 핫 파일(hot file)로 분류됨을 확인함에 대응하여
    상기 쓰기 패턴(write pattern) 중 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count 또는 상기 메모리 상에 기록된 파일이 상기 스토리지로 write되는 횟수를 의미하는 fsync 중 적어도 어느 하나의 가중치를 높이도록 제어하는 전자 장치.
  6. 제 3항에 있어서,
    상기 프로세서는
    상기 머신 러닝(machine learning)을 이용하여 학습한 파일이 상기 콜드 파일(cold file)로 분류됨을 확인함에 대응하여
    파일을 상기 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk 또는 상기 메모리와 상기 스토리지 상에서 저장된 내용이 다른 더티 페이지의 수(dirty page count) 중 적어도 어느 하나의 가중치를 높이도록 제어하는 전자 장치.
  7. 제 1항에 있어서,
    상기 쓰기 패턴(write pattern)은
    파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count를 포함할 수 있으며,
    상기 프로세서는
    상기 파일의 overwrite count가 상대적으로 큰 경우 상기 파일의 수정 횟수가 빈번한 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며,
    상기 파일의 overwrite count가 상대적으로 작은 경우 상기 파일의 수정 횟수가 적은 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 전자 장치.
  8. 제 1항에 있어서,
    상기 쓰기 패턴(write pattern)은
    파일을 상기 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk를 포함할 수 있으며,
    상기 프로세서는
    상기 파일의 write chunk가 상대적으로 작은 경우 빈번하게 수정이 있는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며,
    상기 파일의 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 전자 장치.
  9. 제 1항에 있어서,
    상기 쓰기 패턴(write pattern)은
    상기 메모리 상에 기록된 파일이 상기 스토리지로 write되는 횟수를 의미하는 fsync를 포함할 수 있으며,
    상기 프로세서는
    상기 파일의 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며,
    상기 파일의 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 전자 장치.
  10. 제 1항에 있어서,
    상기 프로세서는
    상기 제1영역에 상기 핫 파일(hot file)이 저장되도록 제어하고,
    상기 제2영역에 상기 콜드 파일(cold file)이 저장되도록 제어하는 전자 장치.
  11. 전자 장치의 파일 시스템 운영 방법에 있어서,
    어플리케이션의 파일 입력 요청에 대응하여 메모리 상에 상기 어플리케이션의 파일을 쓰는(write) 동작;
    상기 메모리 상에 상기 어플리케이션의 파일을 쓰는(write) 제1시점에 상기 파일의 쓰기 패턴(write pattern)을 모니터링 후 상기 메모리 상에 업데이트(update)하는 동작;
    상기 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 상기 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하는 동작;및
    상기 파일의 분류 결과를 상기 파일과 함께 상기 스토리지에 저장하거나 또는 상기 파일의 분류 결과에 기초하여 상기 파일을 제1영역 또는 제2영역으로 나누어 상기 스토리지에 저장하는 동작을 포함하며,
    상기 핫 파일은 수정 및/또는 삭제가 상기 콜드 파일에 비해 자주 발생하는 파일이고, 상기 콜드 파일은 수정 및/또는 삭제가 상기 핫 파일에 비해 자주 발생하지 않는 파일이고,
    상기 쓰기 패턴(write pattern)은 상기 파일이 수정되는 정도를 포함하는 방법.
  12. 제 11항에 있어서,
    상기 쓰기 패턴(write pattern)은 상기 파일의 크기(file size), 상기 파일의 수정 유무(dirty page), 상기 파일이 수정된 시간(modification time), 상기 파일이 수정되는 시간 간격(modification interval), 상기 파일의 시스템 호출 빈도(fsync), 상기 파일 상에서 수정되는 부분의 크기(chunk size), 상기 파일이 수정되는 정도(overwrite count, append count), 상기 파일의 확장자명, 상기 파일이 저장된 디렉토리 이름(directory name) 및 특정 파일 시스템(file system)의 사용 여부 중 적어도 어느 하나를 포함하는 방법.
  13. 제 12항에 있어서,
    상기 메모리 상에 상기 어플리케이션의 파일을 쓰는(write) 제1시점에 상기 파일의 쓰기 패턴(write pattern)을 모니터링 후 상기 메모리 상에 업데이트(update)하는 동작은
    머신 러닝(machine learning)을 이용하여 파일 별로 상기 쓰기 패턴(write pattern)을 학습할 수 있도록 제어하는 동작;및
    학습 결과에 기초하여 상기 핫 파일(hot file) 및 콜드 파일(cold file)에 대해서 상기 쓰기 패턴(write pattern)의 특성(feature)중 적어도 어느 하나에 대해 가중치를 부여하는 동작을 더 포함하는 방법.
  14. 제 13항에 있어서,
    상기 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은
    상기 머신 러닝(machine learning)을 이용하여 학습한 가중치를 상기 메모리 상에 저장하는 동작;
    상기 메모리에 쓰여진 임의의 파일이 상기 스토리지로 복사되는 상기 제2시점에 상기 머신 러닝(machine learning)을 이용하여 학습한 가중치에 기초하여 상기 임의의 파일을 핫 파일(hot file) 또는 콜드 파일(cold file)로 분류하는 동작을 더 포함하는 방법.
  15. 제 13항에 있어서,
    상기 머신 러닝(machine learning)을 이용하여 학습한 파일이 상기 핫 파일(hot file)로 분류됨을 확인함에 대응하여
    상기 쓰기 패턴(write pattern) 중 파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count 또는 상기 메모리 상에 기록된 파일이 상기 스토리지로 write되는 횟수를 의미하는 fsync 중 적어도 어느 하나의 가중치를 높이도록 제어하는 동작을 더 포함하는 방법.
  16. 제 13항에 있어서,
    상기 머신 러닝(machine learning)을 이용하여 학습한 파일이 상기 콜드 파일(cold file)로 분류됨을 확인함에 대응하여
    파일을 상기 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk 또는 상기 메모리와 상기 스토리지 상에서 저장된 내용이 다른 더티 페이지의 수(dirty page count) 중 적어도 어느 하나의 가중치를 높이도록 제어하는 동작을 더 포함하는 방법.
  17. 제 11항에 있어서,
    상기 쓰기 패턴(write pattern)은
    파일의 일부를 중간에 수정하는 횟수를 의미하는 overwrite count를 포함할 수 있으며,
    상기 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은
    상기 파일의 overwrite count가 상대적으로 큰 경우 상기 파일의 수정 횟수가 빈번한 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하고,
    상기 파일의 overwrite count가 상대적으로 작은 경우 상기 파일의 수정 횟수가 적은 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함하는 방법.
  18. 제 11항에 있어서,
    상기 쓰기 패턴(write pattern)은
    파일을 상기 메모리 상에 write 하는 동작에서 저장되는 파일의 크기 단위를 의미하는 write chunk를 포함할 수 있으며,
    상기 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은
    상기 파일의 write chunk가 상대적으로 작은 경우 빈번하게 수정이 있는 것으로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하며,
    상기 파일의 write chunk가 상대적으로 큰 경우 한 번 write 동작 시 많은 양의 write를 수행하는 것으로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함하는 방법.
  19. 제 11항에 있어서,
    상기 쓰기 패턴(write pattern)은
    상기 메모리 상에 기록된 파일이 상기 스토리지로 write되는 횟수를 의미하는 fsync를 포함할 수 있으며,
    상기 메모리에 쓰여진 파일이 스토리지(storage)로 복사되는 제2시점에 상기 파일의 쓰기 패턴(write pattern)에 기초하여 파일의 수정이 상대적으로 빈번하게 발생하는 핫 파일(hot file) 또는 파일의 수정이 상대적으로 자주 발생하지 않는 콜드 파일(cold file)로 분류하는 동작은
    상기 파일의 fsync가 상대적으로 높은 경우 수정이 상대적으로 빈번한 파일로 판단하고, 핫 파일(hot file)에 가까운 것으로 분류하고,
    상기 파일의 fsync가 상대적으로 낮은 경우 수정이 잘 일어나지 않는 파일로 판단하고, 콜드 파일(cold file)에 가까운 것으로 분류하는 동작을 더 포함하는 방법.
  20. 제 11항에 있어서,
    상기 파일의 분류 결과를 상기 파일과 함께 상기 스토리지에 저장하거나 또는 상기 파일의 분류 결과에 기초하여 상기 파일을 제1영역 또는 제2영역으로 나누어 상기 스토리지에 저장하는 동작은
    상기 제1영역에 상기 핫 파일(hot file)이 저장되도록 제어하는 동작;및
    상기 제2영역에 상기 콜드 파일(cold file)이 저장되도록 제어하는 동작을 더 포함하는 방법.
KR1020210172447A 2021-12-03 2021-12-03 전자 장치 및 전자 장치의 파일 시스템 운영 방법 KR20230083940A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210172447A KR20230083940A (ko) 2021-12-03 2021-12-03 전자 장치 및 전자 장치의 파일 시스템 운영 방법
PCT/KR2022/015238 WO2023101195A1 (ko) 2021-12-03 2022-10-11 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US17/982,175 US20230177005A1 (en) 2021-12-03 2022-11-07 Electronic device and method for operating file system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210172447A KR20230083940A (ko) 2021-12-03 2021-12-03 전자 장치 및 전자 장치의 파일 시스템 운영 방법

Publications (1)

Publication Number Publication Date
KR20230083940A true KR20230083940A (ko) 2023-06-12

Family

ID=86612505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210172447A KR20230083940A (ko) 2021-12-03 2021-12-03 전자 장치 및 전자 장치의 파일 시스템 운영 방법

Country Status (2)

Country Link
KR (1) KR20230083940A (ko)
WO (1) WO2023101195A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645741B2 (en) * 2014-02-05 2017-05-09 Sandisk Technologies Llc Storage module and host device for storage module defragmentation
KR20180050860A (ko) * 2016-11-07 2018-05-16 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
KR102663661B1 (ko) * 2018-12-06 2024-05-10 에스케이하이닉스 주식회사 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
KR20210097493A (ko) * 2020-01-30 2021-08-09 강원대학교산학협력단 메모리 시스템의 데이터 분류 방법 및 이를 수행하는 컨트롤러
KR20210132453A (ko) * 2020-04-27 2021-11-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
WO2023101195A1 (ko) 2023-06-08

Similar Documents

Publication Publication Date Title
US20230342074A1 (en) Electronic device and method for operation of storage of electronic device
US20230244406A1 (en) Electronic device and storage management method using same
KR20220132865A (ko) 스토리지를 포함하는 전자 장치 및 그 방법
KR20230083940A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US20230177005A1 (en) Electronic device and method for operating file system
KR20230023450A (ko) 멀티 윈도우를 지원하는 전자 장치 및 이의 제어 방법
KR20220116650A (ko) 이형 메모리들을 포함하는 전자 장치 및 그것의 이형 메모리들 간 압축 데이터 이동 방법
KR20240074597A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US12019906B2 (en) Electronic device and method of electronic device operating file system using data compression and memory partition
US20230305999A1 (en) Method for performing integrity check, and electronic device using same
US20230067968A1 (en) Electronic device and method of electronic device operating file system
US20240211137A1 (en) Electronic device for managing memory and operating method thereof
US20230168831A1 (en) Electronic device and operation method of electronic device for managing storage space
KR20230031508A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
US20230297522A1 (en) Electronic device and method for performing garbage collection
US20220308994A1 (en) Electronic device including storage and method thereof
US11907166B2 (en) Electronic device and method for updating database based on reserved space
US20230118797A1 (en) Data swapping method and electronic device supporting same
US20230409733A1 (en) Security data processing method and device
KR20220102489A (ko) 예약 공간에 기반한 데이터베이스 업데이트 방법 및 장치
KR20230081556A (ko) 저장 공간을 관리하기 위한 전자 장치 및 전자 장치의 동작 방법
WO2024112034A1 (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
KR20220135560A (ko) 메모리를 관리하기 위한 전자 장치 및 그의 동작 방법
KR20230109022A (ko) 비휘발성 메모리에 기반하여 쓰기 원자성을 보장하는 전자 장치 및 그 동작 방법
KR20220127504A (ko) 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법