미새문지

크래프톤 정글 week09, day69 - VFS Layer, Generic Block Layer, 시스템 콜 무한 에러 중 본문

크래프톤 정글/TIL

크래프톤 정글 week09, day69 - VFS Layer, Generic Block Layer, 시스템 콜 무한 에러 중

문미새 2024. 3. 17. 00:14
728x90

VFS layer

  • 운영체제에서 다양한 파일 시스템을 추상화하여 통합적으로 관리할 수 있게 해주는 중요한 컴포넌트
  • 이를 통해 사용자와 응용 프로그램은 파일 시스템의 구체적인 구현 방식을 신경 쓰지 않고도 파일 작업을 수행할 수 있다.

VFS의 주요 기능과 특징

  • 추상화(Abstaction)
    • VFS는 다양한 실제 파일 시스템을 하나의 일관된 인터페이스로 추상화함으로써, 사용자가 파일 시스템의 구체적인 세부 사항을 몰라도 파일에 접근할 수 있게 한다.
  • 호환성(Compatibility)
    • 다양한 파일 시스템(NTFS, FAT)에 대해 동일한 API를 제공함으로써, 다양한 환경에서의 호환성을 보장한다. 이는 개발자가 다양한 파일 시스템을 지원하는 응용 프로그램을 쉽게 개발할 수 있게 한다.
  • 포팅성(Portability)
    • 운영체제가 다양한 하드웨어와 파일 시스템에 걸쳐 이식성을 갖도록 도와준다. 이는 VFS가 파일 시스템에 관계없이 동일한 방식으로 작업을 수행할 수 있는 인터페이스를 제공하기 때문이다.
  • 통합 관리
    • 사용자와 시스템은 하나의 파일 시스템처럼 모든 파일에 접근할 수 있는데, 이는 파일 시스템 간의 경계를 허물어 사용자 경험을 개선해줘.

 

VFS의 구성 요소

  • VFS 인터페이스
    • 사용자와 응용 프로그램이 파일 시스템과 상호작용하기 위한 표준 API를 제공한다.
  • VFS 코어
    • 파일 시스템 간의 요청을 중계하고, 파일 시스템의 등록 및 관리를 담당한다.
  • 실제 파일 시스템
    • NTFS, ext4와 같은 구체적인 파일 시스템이 이에 해당되는데, VFS는 이러한 실제 파일 시스템과 VFS 인터페이스 사이에서 중개자 역할을 해준다.

 

VFS의 작동 원리

  • 응용 프로그램이 파일 관련 작업(읽기, 쓰기 등)을 요청하면 VFS 인터페이스는 이 요청을 받아 적절한 실제 파일 시스템의 API로 변환해준다.
  • 실제 파일 시스템은 요청된 작업을 수행하고 결과를 VFS를 통해 응용 프로그램에 반환한다.

Generic Block Layer(일반 블록 레이어)

  • 컴퓨터 운영체제에서 하드웨어와 파일 시스템 사이의 추상화 계층을 의미한다.
  • 주로 리눅스 운영체제에서 볼 수 있는 구조인데, 다양한 저장 장치(예 : 하드 드라이브, SSD, USB 등)에 대한 접근을 일관되고 효율적으로 관리하기 위해 설계되었다.

Generic Block Layer의 주요 기능과 특징

  • 추상화(Abstraction)
    • 다양한 유형의 블록 기반 저장 장치를 위한 공통 인터페이스를 제공한다.
    • 이를 통해, 파일 시스템이나 다른 상위 레벨의 소프트웨어는 저장 장치의 구체적인 세부 사항을 신경 쓰지 않고도 데이터를 읽고 쓸 수 있다.
  • 효율성과 성능 최적화
    • 데이터 전송을 최적화하기 위해 캐싱, 요청 병합(여러 I/O 요청을 하나로 병합), 비동기 I/O 등의 기능을 제공하여 시스템의 전반적인 성능 향상에 기여한다.
  • 장치 독립성(Device Independence)
    • 하위 레벨의 저장 장치 드라이버와 상위 레벨의 파일 시스템 사이에서 일관된 인터페이스를 제공함으로써, 새로운 저장 장치를 시스템에 추가할 때 드라이버만 있으면 되기 때문에 장치의 교체나 추가가 용이해진다.
  • 다양한 스토리지 기술 지원
    • SATA, SCSI 등 다양한 스토리지 인터페이스와 기술을 지원하여 시스템은 최신 저장 장치 기술을 쉽게 채택하고 활용할 수 있다.

Generic Block Layer의 작동 원리

  • 응용 프로그램이나 파일 시스템이 데이터를 읽거나 쓰기 위해 요청을 하면 GBL은 이 요청을 받아 처리하기 위해 적절한 저장 장치 드라이버로 전달한다.
  • 저장 장치 드라이버는 실제 디스크에 데이터를 읽거나 쓰기 위한 작업을 수행하고, 작업 완료 후 결과를 GBL을 통해 상위 레이어로 전달한다.

이러한 GBL은 리눅스 운영체제에서 스토리지 접근의 효율성과 유연성을 크게 향상시키는 중요한 역할을 한다.


이번 pintos project2인 시스템 콜은 진짜 뭐가 뭔지 모르겠다. 지금까진 기능 하나씩 구현해 가면서 그때마다 수정해가는 방식으로 진행했는데 project2는  여러 코드를 한번에 작성해야 테스트가 풀리는 방식이라 진행이 막혀서 너무 힘들다. 머리도 이제 잘 안돌아가고 점점 자신감과 의욕도 떨어져가서 얼른 테스트 하나라도 통과해야 다시 기운 차릴 수 있을 것 같다. 내일도 화이팅

 

학습 시간 : 10 ~ 25시

728x90