[라즈베리파이] 커널 타이머 -동적 타이머는 누가 언제 호출하나? (2)
By Guillermo Austin Kim | 2018년 8월 27일 |
커널 타이머는 타이머 인터럽트가 발생 후 동작을 시작합니다. 다음 그림은 커널 시스템 타이머 전체 흐름도 중 1단계 부분입니다. [그림] 커널 타이머 전체 흐름도 1단계 타이머 인터럽트가 발생하면 인터럽트 핸들러 함수인 arch_timer_handler_phys() 가 실행하고 HZ (100)만큼 jiffies를 증감시키는 tich_sched_timer() 함수를 호출합니다. 이후 update_process_times() 함수를 호출하고 나서 run_local_timers() 함수가 run_local_timers() 함수를 호출합니다. 먼저 update_process_times() 함수를 봅시다.1 void update_process_times(int user_tick)2 {3struct ta
[라즈베리파이] 시그널 - 시그널 관련 시스템 콜 함수 소개
By Guillermo Austin Kim | 2018년 12월 5일 |
시그널 관련 시스템 호출 함수는 다음과 같습니다.함수 이름 동작 시스템 콜 핸들러kill 쓰레드 그룹에 시그널을 보냄 sys_killtkill 프로세스에 시그널을 보냄 sys_tkilltgkill 특정 쓰레드 그룹에 있는 프로세스에게 시그널을 보냄 sys_tgkillsigaction 시그널 속성 설정 sys_rt_sigactionsigpending 펜딩된 시그널이 있는지 점검 sys_rt_sigpendingsigprocmask 블록되어 있는 시그널 집합을 수정 sys_rt_sigprocmasksigsuspend 시그널을 기다림 sys_rt_suspendpause 시그널을 수신할 때 까지 기다림 sys_pause 가장 왼쪽
[리눅스커널][스케줄링] 유저 프로세스가 시스템 콜 처리를 마무리한 후 선점 스케줄링
By Guillermo Austin Kim | 2019년 2월 10일 |
유저 프로세스는 시스템 콜로 커널과 통신을 합니다. 유저 프로세스는 시스템 콜을 발생해서 시스템 콜 핸들러 함수를 호출합니다. 이후 시스템 콜 핸들러 하부 함수 실행을 마친 후 유저 공간으로 복귀하기 직전에 선점 스케줄링 실행 조건을 점검합니다. 다음 다이어그램을 보면서 세부 동작에 대해 살펴보겠습니다. 위 블록 다이어그램은 유저 프로세스가 시스템 콜을 처리한 후 선점 스케줄링되는 흐름도입니다. 선점 스케줄링은 다음 단계로 실행합니다. 1. 시스템 콜 발생으로 시스템 콜 벡터인 vector_swi 레이블로 브랜치 2. 시스템 콜 핸들러와 하부 루틴 실행을 마무리한 후 ret_fast_syscall 레이블로 복귀3. ret_fast_syscall 레이블에서 프로세스 struct thread_inf
우분투 계열 배포판에서 S/W저장소 미러(mirror) 서버 구축
By 반달가면 | 2019년 4월 5일 |
우분투 계열 배포판에서 공식 S/W저장소(S/W repository)의 자료를 가져와서 미러(mirror) 서버를 구축하는 방법이다. 장비가 매우 많거나 인터넷 접속이 원활하지 않을 때는 미러 서버를 구축해 놓고 이를 통해 패키지를 설치/업그레이드하는 것이 편리할 수 있다. 리눅스 민트 19(우분투 18.04 LTS 기반)에서 작업했다. 우선 apt-mirror 패키지와 apache2 패키지를 설치한다. apt-mirror는 우분투 S/W저장소 자료를 다운로드하기 위한 것이고 apache2는 미러 서버에서 구동할 웹서버다. # S/W 저장소 갱신 sudo apt-get update # apt-mirror, apache2 설치 sudo apt-get install apt-mirror