003주차 (2013.05.11) 리눅스 커널 내부구조 (p.150 ~ 끝)


#1

# 3주차 Study Note (2013/05/11)

Status

진도

  • 리눅스 커널 내부구조 (p.150 ~ 끝)

Notice

  • 세미나 장소에 대한 논의 (강남 토즈점 예약현황, 방법 공유 및 공지)

  • ARM 책 관련 논의

    • ARM developer’s guide로 진행할 경우 특정 chapter를 선정하자 라는 안건 논의됨.
    • ARM에 대해 잘 모르는 사람들은 어느 chapter가 중요한지 모르므로, 김진평님이 개괄적인 내용을 세미나 해주시기로 함.
  • 향후 세미나 일정 토의

    • 5.25, 6.1일의 경우, 외부 세미나가 진행되므로 해당일에는 스터디가 없는것으로 결정
    • 우리팀은 전원 세미나를 듣고, 이후에 chapter 선정을 진행하자고 결정

Issues (Clear)

  • [x] 1. ARM의 경우 하드웨어 핀인 IRQ가 여러개 존재하는 것인가? 또는 단일 핀을 사용하는 것인가? [#11]

    일반적인경우, IRQ는 선 1개만 존재하고 [PIC] (https://en.wikipedia.org/wiki/Programmable_Interrupt_Controller)를 통해 해당 Interrupt가 무엇인지 알 수 있다.


  • [x] 2. x86에서는 일반적으로 master-slave 구조의 PIC가 사용되는데, ARM도 동일한가? [#12]

    Interrupt개수가 많다면 cascade하여 사용하겠지만, ARM의 경우는 일반적으로 그렇게 사용하지 않는다.


  • [x] 3. Interrupt handler를 아무리 간결하게 작성한다 할지라도 4byte보다는 크다는것이 무슨 뜻인가? (p.160) [#13]

    ARM 워드가 4byte이고 (Interrupt를 수행할 시 ARM-Normal모드), 4byte내의 Interrupt Handler를 작성할 수 없기에 branch하여 코드를 작성한다.


  • [x] 4. PIC의 세부적인 동작이 잘 이해되지 않는다. 어떠한 방식으로 Interrupt를 분리하고, 코드는 C 또는 HDL로 작성하는것인가? [#14]

    현 시점에서 중요한것은 PIC의 역할이 어떠한 Interrupt가 들어왔는지를 ARM에게 알려준다는 것이다. PIC의 동작원리를 이해하는것도 중요하겠지만, 지금은 ARM이 Interrupt의 종류를 파악하기 위해 PIC를 사용한다는 것을 이해하는 수준이면 될것 같다. PIC초기화 관련 코드가 커널 내부의 하드웨어 초기화 코드 어딘가에 있을 것으로 생각된다.


  • [x] 5. p.178의 system call의 경우, kmalloc 후 kfree를 하지 않는다. 이것은 버그인가? 아니면 자동으로 관리가 되는것인가? [#15]

    소스코드가 버그인것 같다.


  • [x] 6. copy_to_user의 동작원리는 무엇인가? [#16]

    커널 영역에(0xc0000000~0xffffffff) 존재하는 메모리를 user영역에 복사하여 사용하는 것이다.


  • [x] 7. mount의 loop 옵션은 무엇을 하는 것인가? [#17]

    Ramdisk 라고 생각하면 된다.