라즈베리파이

포스트: 191|조회수: 0|ARTIFACT
Items

Posts

191 posts

[라즈베리파이] 가상 파일시스템 공통 모델이란

Guillermo Austin Kim|2019년 1월 2일

가상 파일시스템 구조와 동작을 알려면 가상 파일시스템에서 쓰는 자료구조를 이해할 필요가 있습니다. 가상 파일시스템 자료구조를 소개하기 전 자료구조를 왜 생성했는지 생각 해 봅시다. 우리는 리눅스 시스템에서 파일을 열고 디렉토리를 검색하는 동작을 반복합니다. 이 과정에서 파일을 실행할 수 있는 권한이 있는지 해당 파일이 어떤 파일시스템에서 관리하는지 특별히 신경 쓰지 않습니다. 리눅스 가상 파일시스템에서 배경 작업으로 이런 동작을 수행하기 때문입니다. 어떤 파일시스템에서도 파일이나 디렉토리를 찾거나 유효성을 점검하는 공통 패턴이 있습니다. 또한 파일시스템에서 파일을 관리하기 위한 속성이 있습니다. 파일에 대한 공통 속성인 메타 데이터에 대해서 생각해 봅시다. 먼저 파일이 접근한 시간, 수정 시각 그리고 실

[라즈베리파이] 가상 파일시스템이란?

[라즈베리파이] 가상 파일시스템이란?

Guillermo Austin Kim|2019년 1월 2일

가상 파일시스템이란 무엇일까요? ext4나 proc과 같은 파일시스템일까요? 가상 파일시스템은 ext4나 proc과 같은 파일시스템은 아닙니다. 리눅스 커널에서 다양한 파일시스템이 공존하며 동적으로 실행할 수 있는 가상 소프트웨어 계층입니다. 참고로, ext4는 Extended File System 4 약자로 리눅스 저널링 파일시스템입니다.라즈베리파이에서 특정 파일을 생성해서 쓰고 저장할 때 ext4 파일시스템이 해당 파일을 관리합니다. 가상 파일시스템이란 용어 자체가 리눅스 커널을 처음 접하는 분에게 혼돈을 줄 수 있으니 이 용어에 대해 조금 더 짚어 봅시다. 가상이란 용어는 객체 지향에서 말하는 추상화와 유사한 개념입니다. 추상화 계층(Abstraction Layer)은 소프트웨어를 전체 구조를 설

[라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock_irq() 소개

Guillermo Austin Kim|2018년 12월 30일

이해를 돕기 위해 다시 화장실을 예를 들겠습니다. 어떤 영업 사원이 있다고 가정하겠습니다. 영업 사원은 언제 전화를 받는 것이 회사 규칙입니다. 그런데 이 영업 사원은 화장실에 들어갈 때 전화를 안 받아도 된다고 회사와 약속을 했습니다. 화장실에서 중요한 용무를 봐야 하기 때문입니다. 그 조건으로 화장실 문에 들어갈 때는 비행기 모드로 바꾸고 화장실에서 나올 때는 반드시 비행기 모드를 풀어야 합니다. 여기서 전화를 인터럽트 그리고 화장실 문에 들어간 상태를 임계 영역이라고 바꿔서 생각해봅시다. 이 영업 사원은 화장실에서 용무를 볼 때 전화가 오지 않으니 방해을 안 받습니다. 스핀락을 얻어 임계 영역을 실행 중에 인터럽트를 실행을 막는 상태입니다. 임계영역이 다음과 같은 코드 흐름일 때 임계 영역에서

[라즈베리파이] 동기화 - 스핀락(spinlock): 두 번째 스핀락 해제 시 동작(2)

Guillermo Austin Kim|2018년 12월 30일

스핀락을 해제할 때 spin_unlock() 함수를 호출하며 이 때 스핀락 인스턴스 owner 값을 +1만큼 증감한다고 배웠습니다. 이제 [2] 번 프로세스가 임계 영역 실행을 마치고 스핀락을 해제했습니다. spin_unlock() 함수를 실행하니 스핀락 인스턴스 중 owner를 +1만큼 증감해서 0x3이 됐습니다. [3]번 프로세스는 스핀락 인스턴스를 계속 읽으면서 스핀락 인스턴스 owner 값이 0x3이 되기를 기다리고 있었습니다. 그런데 스핀락 인스턴스 owner 값이 0x3이니 스핀락을 획득하고 무한 루프를 빠져나갑니다. 스핀락 기본 동작과 함께 누군가 스핀락을 획득했을 때 스핀락 동작에 대해서 알아봤습니다. 코드 분석으로 다음과 같은 중요 포인트를 알 수 있습니다.1.스핀락은 코드 구현도가