[리눅스커널][스케줄링] 유저 프로세스가 시스템 콜 처리를 마무리한 후 선점 스케줄링
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
리눅스 bash 스크립트에서 배열/연관배열 초기화
By 반달가면 | 2022년 8월 3일 |
bash 스크립트에서 사용중이던 배열(array) 또는 연관배열(associative array)의 모든 원소를 삭제하고 싶다면 빈 배열을 할당하면 된다. x[0]='abc' x[1]='def' # x 초기화 x=() 연관배열도 동일하다. declare -A a_x a_x[abc]=1 a_x[aaa]=2 # a_x 초기화 a_x=() 배열의 사용에 대한 추가적인 내용은 아래의 링크를 참고하자.