리눅스

포스트: 556|아이템:리눅스(554)
Tags

Posts

556 posts

[SW] 리눅스 커널은 왜 알아야 할까? 코드 몽키가 되어야 하나?

Guillermo Austin Kim|2019년 1월 20일

많은 사람들이 리눅스 커널, 리눅스 커널하는데 왜 리눅스 커널을 잘 알아야 할까?이번에는 리눅스 커널을 왜 공부해야 하는지 알아보자. 문제 해결 능력리눅스 커널을 알아야 하는 이유는 정말 간단하다. 디바이스 드라이버 담당자로써 문제 해결 능력을 키울 수 있기 때문이다. 처음 임베디드 임베디드 리눅스 개발자로 일을 시작하면 보통 어떤 개발 업무를 맡을까?대부분 드라이버를 맡는 경우가 많다. 예를 들어 스토리지, 네트워크, 모뎀 등등 디바이스 종류는 무궁무진하다. 그런데 디바이스 드라이버 코드는 누구나 작성할 수 있다. 리눅스 커널에 얼마나 많은 디바이스 드라이버 예제 코드가 많은가? 예제 코드를 활용해서 해당 디바이스에 대한 데이터 시트만 있으면 그리 어렵지 않게 드라이버를 구현할 수 있다. 그럼 리

[라즈베리파이] 프로세스: do_exit() 함수 분석

Guillermo Austin Kim|2019년 1월 18일

do_exit() 함수로 커널이 프로세스를 종료 시키는 세부 동작 못지 않게 프로세스가 종료되는 흐름을 파악하는 것이 중요합니다. 그 이유는 무엇일까요? 유저 어플리케이션 프로세스나 커널 프로세스가 예외 상황에서 의도하지 않게 종료해서 문제가 발생하는 경우가 있습니다. 이런 문제를 만났을 때 커널 어느 함수부터 분석을 해야할 지 결정할 수 있습니다. 이번에는 do_exit() 함수가 어떻게 실행되는지 알아봅시다. - exit() 시스템 콜 실행유저 어플리케이션 프로세스가 자신을 종료하려면 리눅스 저수준 함수로 exit() 함수를 호출합니다. 이 때 시스템 콜을 발생시킨 다음 sys_group_exit() 시스템콜 핸들러를 실행합니다. - 다른 프로세스가 프로세스 종료 시그널을 전달했을 경우프로세스

우분투 14.04 기반 클라이언트에서 우분투 18.04 기반 NFS 서버에 접속하는 문제

반달가면|2019년 1월 18일

정확히 말하자면, 우분투 14.04LTS 기반인 리눅스 민트 17에서 우분투 18.04LTS 기반인 리눅스 민트 19의 NFS 공유 디렉토리에 접속하는 문제다. 리눅스 민트 19 서버에서 정상적으로 NFS를 다 설정하고(NFS 서버 설정은 이전 게시물을 참고하자. 여기로) 방화벽에서도 NFS 접속을 허용하도록 해 두었는데, 클라이언트에서 접속을 하면 접근 불가 오류 메시지가 계속 나왔다. # 클라이언트에서 NFS 서버로 접속 시도 sudo mount -t nfs server.net:/nfs_export_dir/ ~/nfs_dir mount.nfs: access denied by server while mounting server.net:/nfs_export_dir/ 아무리 이리 저리 찾아

[라즈베리파이] 프로세스 생성: _do_fork() copy_process() 함수 분석

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() 함수를