레이스

포스트: 56
Tags

Posts

56 posts
[너는 여기에 없었다] 다시 한번

[너는 여기에 없었다] 다시 한번

타누키의 MAGIC-BOX|2018년 10월 19일

게으름때문이기도 하지만 시간이 지나며 리뷰를 쓰기 머뭇거리게 되는 작품이 있습니다. 다시 보기도 애매하고(영화관에서 보고 싶으니) 그렇다고 시간을 지나서 쓰기도 좀....그런 영화가 케빈에 대하여인데 그 감독인 린 램지가 오랜만에 차기작인 너는 여기에 없었다를 찍었네요. 그리고 다시 한번 마음에 드는 영화네요. 물론 완전하다기엔 아쉬운 점이 없는건 아니지만 스타일리쉬한 아저씨같은 영화로 아주 좋았습니다. 폭력적인 면이 좀 있긴 하지만 직접 묘사가 적고 수위가 높지는 않아 누구에게나 추천할만한, 강추하는 작품이네요. 소리가 중요하기 때문에 조합이 좋은 관에서 보시기를~ 장르적으로 충실하기도 하지만 삶의 무게에 짓눌린 남성을 절절히 보여줘 정말 마음에 들었고 마지막에서도

[리눅스커널] 동기화 - 커널 프로세스 레이스 컨디션

Guillermo Austin Kim|2018년 10월 9일

이번에 커널 공간에서만 실행하는 커널 쓰레드에서 발생하는 Race를 확인합니다. 커널 쓰레드 중 많이 알려진 워커 쓰레드를 예를 듭시다. 이를 위해 다음 패치 코드를 적용할 필요가 있습니다.1 diff --git a/kernel/workqueue.c b/kernel/workqueue.c2 --- a/kernel/workqueue.c3 +++ b/kernel/workqueue.c4 @@ -2187,6 +2187,12 @@ static void process_scheduled_works(struct worker *worker)5 *6 * Return: 07 */8 +9 +static unsigned int global_func_exe_times = 0;10 +11 +extern void trace_f

[리눅스커널] 동기화 - 레이스 발생 동작 확인

Guillermo Austin Kim|2018년 10월 3일

커널 동기화 기법은 리눅스 커널에서 가장 배우기 어려운 내용 중 하나입니다. 커널 동기화 기법을 사실상 이론으로 이해하기 때문입니다. 아무리 커널 동기화나 레이스를 이론으로 이해해도 실전 개발에서 배운 내용을 적용하기 어렵습니다. 예를 들어 레이스로 커널 크래시가 발생했다고 가정합시다. 이 문제를 해결하기 위해서는 어떻게 해야 할까요? 우선 어느 코드 구간이 임계영역인지 분석해야 합니다. 이후 어떤 커널 동기화 방법(스핀락, 뮤텍스)를 써야 할지 판단해야 합니다. 이런 레이스로 인한 커널 동기화 문제를 해결하려면 리눅스 시스템에서 레이스가 어떤 방식으로 발생하는지 직접 체험해야 합니다. 그래야 리눅스 시스템에서 커널 동기화 기법이 왜 필요하며 어떤 커널 동기화 기법(스핀락, 뮤텍스, percpu)을 적

[리눅스커널] 동기화 - 유저 프로세스 시스템 콜 호출 시 레이스 컨디션

Guillermo Austin Kim|2018년 10월 3일

유저 공간에서 생성된 프로세스는 여러 개 쓰레드를 생성합니다. 이 쓰레드들이 같은 디바이스 노드에 접근해서 시스템 콜을 발생하며 커널과 통신합니다. fork() 라는 함수를 유저 공간에서 시스템 콜로 호출하면 유저 공간에서 sys_clone()이란 함수 호출로 프로세스를 생성합니다. 유저 공간에서 open(), write() 그리고 ioctl() 이란 함수를 호출하면 이에 대응하는 시스템 콜을 호출해서 커널 공간과 통신합니다. 이번에는 시스템 콜 관련 함수에서 발생한 레이스 컨디션을 확인합니다. 먼저 패치 코드를 소개하겠습니다.1 diff --git a/kernel/exit.c b/kernel/exit.c2 --- a/kernel/exit.c3 +++ b/kernel/exit.c4 @@ -760,10 +