[리눅스커널] 스케줄링: __schedule() 함수와 'bool preempt' 인자
By Guillermo Austin Kim | 2020년 1월 15일 |
다음과 같이 __schedule() 함수의 구현부를 보면 'bool preempt' 인자를 전달한다. void __sched notrace __schedule(bool preempt){ struct task_struct *prev, *next; unsigned long *switch_count; struct rq_flags rf; 이번 시간에는 이 함수에 'bool preempt' 인자가 추가된 이력을 확인해보자. __schedule() 함수에 'bool preempt' 인자가 추가된 패치 출처는 다음과 같다.https://lkml.org/lkml/2015/9/30/100 패치 코드의 내용은 다음과 같다. From fc13aebab7d8f0d19d557c721a0f25cdf7ae9
[라즈베리파이] 프로세스 생성: _do_fork() copy_process() 함수 분석
By Guillermo Austin Kim | 2019년 1월 17일 |
이전 시간까지 유저 프로세스와 커널 프로세스가 어떤 흐름으로 생성되는지 살펴봤습니다.둘 다 _do_fork() 함수를 호출한다는 사실을 알 수 있습니다. 프로세스 생성 시 공통으로 실행하는 _do_fork() 함수 코드를 분석하면서 커널이 어떻게 프로세스를 생성하는지 살펴봅니다. _do_fork() 함수_do_fork() 함수을 분석하기 앞서 이 함수 동작을 분류해봅시다. 1단계: 프로세스 생성copy_process() 함수를 호출해서 프로세스를 생성합니다. 프로세스를 생성하는 세부 동작을 파악하려면 copy_process() 함수를 분석할 필요가 있습니다. 2단계: 생성한 프로세스 실행 요청copy_process() 함수를 호출해서 프로세스 생성을 마쳤으면 wake_up_new_task() 함수를
[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)
리눅스에서 마이크 잡음 줄이기 (에코 캔슬러 기능 추가)
By 반달가면 | 2020년 8월 22일 |
리눅스에서 마이크 녹음에 에코 캔슬러(echo canceller) 기능을 추가하는 방법이다. 배경 잡음(background noise)을 상당히 많이 감소시킬 수 있다. 얼마전에 구입한 노트북에 설치한 리눅스 민트 20 XFCE에서 시험해 보았는데 눈에 띄게 잡음이 줄어들었다. 루트 권한으로 펄스오디오(PulseAudio) 설정 파일인 /etc/pulse/default.pa 파일을 편집한다. # /etc/pulse/default.pa sudo vi /etc/pulse/default.pa 파일 맨 아래쪽을 보면 아래와 같은 내용의 주석(comment)이 있을 것이다. ### Modules to allow autoloading of filters (such as echo cancel