[라즈베리파이] 시그널 - 커널 공간 시그널 함수 분석
By Guillermo Austin Kim | 2018년 12월 10일 |
시그널과 연관된 동작을 변경하면 유저 공간에서 sigaction() 함수를 호출하면 됩니다. 이 함수를 호출하면 시스템 콜 핸들러인 sys_rt_sigaction() 함수가 실행하며 커널 공간에서 시그널을 설정합니다. 이 실행 흐름을 표현하면 다음 그림과 같습니다. 유저 공간에서 sigaction() 함수를 호출하면 커널 공간에서 sys_rt_sigaction() 함수를 호출합니다. 유저 공간에서 sigaction() 함수를 호출하면 커널 공간에서 sys_rt_sigaction() 함수가 어떻게 실행하는지 바로 이해하기 어렵습니다. 이 과정을 조금 더 자세히 정리하면 다음과 같습니다.[유저 공간]1. r7에 sys_rt_sigaction() 함수에 해당하는 시스템 콜 번호인 174를 지정2. “sv
[라즈베리파이] 스케줄링: 프로세스 상태 관리
By Guillermo Austin Kim | 2019년 2월 6일 |
프로세스를 효율적으로 관리하기 위해서 커널은 프로세스에게 프로세스 상태를 부여합니다. 커널에서 정의한 프로세스 상태는 다음과 같습니다.[https://elixir.bootlin.com/linux/v4.14.70/source/tools/perf/builtin-sched.c]#define TASK_RUNNING0#define TASK_INTERRUPTIBLE1#define TASK_UNINTERRUPTIBLE2 커널에서 구동 중인 프로세스는 위에서 정의한 상태 정보를 갖고 있으며 커널은 이 정보를 기준으로 스케줄링을 수행합니다. 그러면 프로세스 상태는 어디에 저장할까요?프로세스를 관리하는 태스크 디스크립터 필드 중 state는 위에서 언급한 정수형 상태 정보를 저장합니다.[https://elixir.
[bash: awk] 항목의 합계를 계산할 때 예외 처리
By 반달가면 | 2018년 11월 9일 |
awk를 이용해서 합계를 구할 때, 입력이 유효하지 않은 경우가 발생할 수 있다. 예를 들어 특정 파일에서 grep으로 특정 항목만 추출한 후에 해당 항목의 합계를 구하려는데, 그 항목 자체가 파일에서 존재하지 않는 경우다. awk를 이용한 항목별 합계 계산 방법은 이전 게시물을 참고하자. 여기로 예를 하나 생각해 보자. my_data.txt의 파일이 아래와 같다. # my_data.txt 파일 내용 확인 (구분자는 탭) cat my_data.txt 2018.1.3 apple 10 2018.1.3 orange 3 2018.3.10 apple 2 위의 파일에 대해서 사과(apple)가 몇개 팔렸는지만 궁금하다면 아래와 같은 작업을 할 수 있다. # 사과(apple) 항목의 합계 계
[git-bash] 윈도우 디렉토리로 cd 처리
By 박모 사진첩 | 2023년 2월 20일 |
alias cdw=function _cdw() { cd "$(cygpath -u "${1//\\//}")/"; }; _cdw 예제 USER@DESKTOP-1 MINGW64 ~$ cdw "C\Program Files (x86)\Microsoft\Edge\Application" USER@DESKTOP-1 MINGW64 /c/Program Files (x86)/Microsoft/Edge/Application$ pwd/c/Program Files (x86)/Microsoft/Edge/Application