한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(3: 제조업 마인드)
By Guillermo Austin Kim | 2018년 12월 27일 |
From한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(1) - SW문화한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(2: 쓰레기 관리자들) 한국 소프트웨어 업체에서 리눅스 고수가 나올 수 없는 또 다른 이유는 소프트웨어 업체를 제조업 마인드로 운영하기 때문이다. 제조업 마인드라. 이 용어에 대해서 조금 더 이야기를 해 보자.제조업 마인드는 원가 절감, 불량 감소를 통해 제품을 효율적으로 생산하는 체제를 의미한다. 이런 단어를 어디서 많이 쓸까? 공장이다. 공장에 가면 원가 절감 제로, 불량 감소란 캐치 프레이즈를 많이 볼 수 있다. 다른 관점으로 제조업 마인드에 대해 생각해보자.바로 생각나는 것은 시간을 많이 투입하면 그 만큼 더 많은 생산을 한다고 일을 바라 보는 관점이다.공장에
[리눅스커널][시그널] T32: 시그널 생성 과정 디버깅해보기
By Guillermo Austin Kim | 2019년 6월 12일 |
이전 포스팅에서 커널이 '시그널'을 어떤 방식으로 처리하는지 살펴봤습니다.이전에 배웠던 내용을 리뷰하는 차원으로 '시그널' 처리 과정을 정리해볼까요? 1. 시그널 생성 시그널을 받은 프로세스의 태스크 디스크립터에 시그널 정보를 써주고 해당 프로세스를 깨운다. 2. 시그널 전달 시그널을 받을 프로세스는 깨어나 시그널을 처리한다. 시그널 처리 과정에 대해 소스 코드를 분석했는데 이번에는 __send_signal() 함수에서 시그널을 생성할 때 바뀌는 시그널 자료구조에 대해서 디버깅해보는 시간을 갖겠습니다. 사실 함수 실행 흐름과 자료구조는 '이와 잇몸'의 관계와 같습니다. 조금 더 구체적으로 말씀드리면 다음과 같겠네요. "함수는 자료구조를 읽고 바꾸기 위해 실행한다." "자료구조
[Linux][Kernel]뮤텍스 데드락(Mutex Deadlock) 락업(lockup) - "simpleperf" 디버깅
By Guillermo Austin Kim | 2017년 12월 27일 |
특정 시점부터 갑자기 디바이스가 락업되는 현상이 리포트가 되었거든요. 엄청 쏟아 졌었는데요.이 때 어떻게 디버깅을 해서 문제를 해결했는지 업데이트하고자 해요. 락업이 된 상태에서 디바이스를 받아 강제로 코어 덤프를 뜬 다음에 콜 트레이스를 봤는데요.아래 콜 스택이 확인되었어요. 프로세스 이름은 "atd" 이에요. reboot 시스템콜을 trigger한 다음에 각 종 시스템 드라이버를 종료하는 과정에서 mutex lock을 계속 기다리는 현상이 확인되네요.-000|context_switch(inline)-000|__schedule()-001|schedule_preempt_disabled()-002|spin_lock(inline)-002|__mutex_lock_common(inline)-002|__mute
[bash: cd] 디렉토리 내용 새로 고침(refresh)
By 반달가면 | 2018년 3월 28일 |
자주 일어나는 일은 아닌데, 간혹 리눅스 bash 스크립트로 작업하면서 디렉토리 안의 파일 목록이 계속 변하는 경우(추가, 삭제) 변경 내용이 반영되지 않아서 이미 삭제된 파일이 존재한다고 간주해서 오동작을 하는 경우가 있었기 때문에 간단한 해결책을 정리해 두기로. 아마도 캐싱(caching)과 연관되어 발생하는 문제가 아닌가 추측하고 있다. 아래와 같은 예시를 생각해 보자. while [[ 1 ]] do ... for file in `find ~/my_data/ -type f` do ... done sleep 5 done 5초 간격으로 ~/my_data 디렉토리 안에 있는 파일에 대해서 뭔가 작업을 하는 경우다. 잘 동작하면 괜찮은데, 혹시라도 작업