[Kernel][Crash] 워크큐(workqueue) 락업(2) at [0321]
By Guillermo Austin Kim | 2018년 4월 16일 |
[Kernel][Crash] 워크큐(workqueue) 락업(1) at [0321] http://rousalome.egloos.com/9974388코어 덤프에서 계속... 자 여기까지 커널 크래시가 발행한 원인까지 확인했습니다.그럼 CPU2에 워커풀에서 등록된 워커쓰레드를 살펴봐야 겠습니다. 워커쓰레드들은 워커 풀에 등록할 때 struct worker_pool.workers 멤버 링크드 리스트로 등록합니다.1 (struct worker_pool *) (struct worker_pool*)0xFFFFFFC63A339000 = 0xFFFFFFC63A339000 -> (2 (spinlock_t) lock = ((struct raw_spinlock) rlock = ((arch_spinlock_t)
[라즈베리파이] 워크큐(Workqueue) - 딜레이워크(delayed_work) 소개
By Guillermo Austin Kim | 2018년 9월 22일 |
워크큐는 대표적인 커널 후반부 처리 기법으로 후반부 처리 코드를 워크 핸들러에서 실행합니다. 동기적으로 처리 할 필요가 없는 코드를 워크 핸들러에 위치시켜 비동기적으로 커널 쓰레드 레벨에서 처리하는 겁니다. 이런 구조로 드라이버를 설계하면 다양한 디바이스 드라이버 시나리오에 맞게 코드를 구성할 수 있습니다. 워크에서 유연성을 추가한 기법이 딜레이 워크입니다. 구체적으로 딜레이 워크란 무엇일까요? 딜레이 워크는 워크를 일정 시각(HZ 단위) 후에 지연시켜 실행합니다. 여기서 말하는 지연 시각은 디바이스 드라이버 시나리오에 맞게 변경할 수 있습니다. 예를 들어 다음 온도를 콘트롤하는 드라이버 시나리오를 생각해 봅시다.1. 온도가 높아지면 인터럽트가 발생2. 인터럽트 핸들러에서 워크를 워크큐에 큐잉3. 워크
[리눅스커널][스케줄링] 컨택스트 스위칭 관련 자료 구조 알아보기
By Guillermo Austin Kim | 2019년 3월 6일 |
컨택스트 스위칭 관련 자료 구조 알아보기이전 소절에서 컨택스트는 프로세스가 실행 중인 그 자체라고 소개했습니다. 프로세스 실행 그 자체는 레지스터 세트 표현할 수 있습니다. 어떤 프로세스가 CPU에서 실행하면 CPU 레지스터 세트에 프로세스가 실행 중인 코드와 함수 정보가 채워집니다. 컨택스트 스위칭으로 CPU 레지스터 세트를 어딘가에 저장할 것입니다. 그러면 CPU 레지스터 세트를 표현하는 자료구조는 무엇일까요? 다음 8 번째 줄 struct thread_info 구조체에서 cpu_context 필드입니다.[https://elixir.bootlin.com/linux/v4.14.70/source/arch/arm/include/asm/thread_info.h]1 struct thread_info {2un
KBO 마이카 리그 4월 첫주 주중 시리즈 결산
By 긁고, 흔들고, 때려! | 2018년 4월 6일 |
1위 다이노스 - 첫 경기는 김성욱의 워크오프 홈런, 둘째날은 박민우와 김성욱의 쌍포로 힘입어 승리 했습니다. 스윕을 가져가는 듯 했으나, 유원상의 난조와 박민우가 꼬여버리니 스윕에는 실패했습니다. 다른 팀은 잘 두들겨패도 삼성에게는 아직 짓눌려 있는건 맞으니 이후 경기도 지켜보는 사람 입장에서는 답답할겁니다. 나성범의 타순을 내리는 일은 아마도 없을 겁니다. 어디 부러지거나 해서 말소 되지 않는 이상 말이죠. 은근히 홈런이 터지니 그 점은 괜찮군요. 2위 베어스 - 잠실 라이벌인 트윈스와 두 경기를 치뤘는데, 첫 경기는 연장에서 이동현을 두들기면서 끝을 냈고, 두번째 경기는 이용찬이 올해는 선발로 돌아오면서 스무스하게 끝냈습니다. 두 경기를 다 보면 트윈스가 히트는 더 많이 쳤지만, 장타와 홈런이