[리눅스커널] TRACE32: 'v.type' 명령어로 구조체와 enum 필드를 바로 확인하기
By Guillermo Austin Kim | 2020년 5월 20일 |
소스 코드를 분석 하다보면 구조체와 enum의 정체를 알고 싶을 때가 있습니다.이 때 TRACE32를 활용하면 바로 이 정보를 확인할 수 있습니다. 구조체 확인하기 먼저 구조체의 세부 필드는 다음과 같은 명령어를 입력하면 확인할 수 있습니다. $ v.type % %m %l %hi %sp struct '구조체 이름' 자, 그럼 리눅스 커널에서 프로세스 정보를 나타내는 struct task_struct 구조체의 정체를 확인해봅시다. $ v.type % %m %l %hi %sp struct task_struct(struct task_struct) struct task_struct struct (4096 bytes, [0] struct thread_info thread_inf
[리눅스커널] 스케줄링: CFS 스케줄러를 이루는 주요 개념 알아보기
By Guillermo Austin Kim | 2019년 7월 8일 |
CFS(Completely Fair Scheduler)는 2.6.23 커널 버전 이후 적용된 리눅스의 기본 스케줄러입니다. CFS이란 용어를 그대로 풀면 ‘완벽하게 공정한 스케줄러’라고 해석할 수 있습니다. 즉, 런큐에서 실행 대기 상태로 기다리는 프로세스를 공정하게 실행하도록 기회를 부여하는 스케줄러입니다. 이번 절에서는 CFS 알고리즘의 개념을 알아보고 코드 분석으로 세부 동작을 살펴보겠습니다. CFS 스케줄러를 이루는 주요 개념 알아보기CFS는 실행 대기 상태인 프로세스들을 우선 순위에 따라 최대한 공정하게 실행하는 스케줄러입니다. CFS 세부 동작과 알고리즘을 이해하려면 다음과 같은 개념을 파악할 필요가 있습니다. - 타임 슬라이스 - 우선순위 - 가상 실행 시간(vruntime) 이번
[WoT]최근 마스터 딴 탱크들.
By 레이오네 얼음집 | 2013년 12월 6일 |
![[WoT]최근 마스터 딴 탱크들.](https://img.zoomtrend.com/2013/12/06/f0046867_52a0679b5ad74.jpg)
1. T32 - 노스샷(...) 적당히 헐다운 하면서 퉁퉁퉁 튕겨주면서 하나씩 녹여주니 순경 1314에 겟. 요즘 10탑에 너무 많이 끌려가서 슬퍼요(...) 2. SU-101 2188로 마스터 못딸리가 있냐고요? 이거 2배입니다. 딱 보면 아시겠지만 이 탱크는 장애입니다(.....) 제가 최근 리그베다 위키(전 엔하위키)에 약간은 옹호하는 어조로 써주긴 했지만 이건 참.... 답이 없쓰요;;; 바로 옆이 소년사랑포의 ISU-152다보니 더더욱 그런 것 같기도 하네요. 걔가 한방 제대로 쏘는 게 이놈이 2방 쏘는 것보다 뎀이 크게 나오니 원.... 빨리 넘어가야겠다는 생각밖에 안들어서 고문받는 것처럼 타고 있습디다 ㅠㅠ 3. 포르쉐 티거 일스 - 블프 - 포르쉐 티거 - 판터(이놈은 노 킬. 옆
[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드 핸들러인 irq_thread() 함수 분석
By Guillermo Austin Kim | 2020년 4월 25일 |
![[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드 핸들러인 irq_thread() 함수 분석](https://img.zoomtrend.com/2020/04/25/a0386257_5ea3804a5a10f.png)
커널에서 지원하는 wake_up_process() 함수를 사용해 커널 스레드를 깨우면 스케줄러에 의해 커널 스레드는 실행을 시작합니다. 이 때 커널 스레드의 스레드 핸들 함수가 호출되며 스레드의 시나리오에 따라 정해진 동작을 수행합니다. 마찬가지로 IRQ 스레드의 스레드 핸들 함수는 irq_thread() 입니다. 따라서 IRQ 스레드가 깨어나면 irq_thread() 함수가 호출됩니다. 이번 시간에는 IRQ 스레드를 깨우면 실행하는 irq_thread() 함수를 살펴보겠습니다. 먼저 IRQ 스레드를 깨우면 실행하는 irq_thread() 함수를 보겠습니다. static int irq_thread(void *data)2 {3struct callback_head on_exit_work;4stru