[라즈베리파이] 시그널 - 시그널 관련 시스템 콜 함수 소개
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
[라즈베리파이] 시스템 콜 - 시스템 콜 핸들러 실행을 마무리하면 어떤 동작을 할까?
By Guillermo Austin Kim | 2018년 11월 27일 |
시스템 콜을 수행하면 시스템 콜 핸들러를 통해 가상 파일시스템이나 커널 프로세스 함수를 실행합니다. 이후 시스템 콜 종류에 따라 시스템 콜 핸들러 하부 루틴을 수행하고 유저 공간 복귀합니다. 시스템 콜 실행 후 복귀할 때 ret_fast_syscall 레이블에서 리눅스 커널 시그널 및 스케줄링 관점에서 중요한 동작을 실행합니다. 시스템 콜 테이블을 통해 시스템 콜 핸들러를 분기하기 직전 다음 1번째 줄 코드와 같이 복귀 레지스터(r14, lr)에 ret_fast_syscall 레이블을 지정했습니다. [https://elixir.bootlin.com/linux/v4.14.70/source/arch/arm/kernel/entry-common.S]1badrlr, ret_fast_syscall@ retu