[라즈베리파이][리눅스커널] in_interrupt() 함수란
By Guillermo Austin Kim | 2018년 6월 16일 |
in_interrupt() 함수란리눅스 커널이 실행할 때 수많은 함수가 각자 서로를 호출합니다. 어떤 함수는 프로세스 컨택스트에서 실행(커널 쓰레드)되는데 대부분 함수는 인터럽트 컨택스트, 즉 인터럽트 처리하는 도중 호출될 수 있습니다. 만약 현재 실행하는 코드가 인터럽트를 처리 중이면 더 빨리 처리해야겠죠? 인터럽트 서비스 루틴은 실행 중인 프로세스를 멈추고 동작하므로 인터럽트 컨택스트 조건에서만 신속하게 코드를 실행시키고 싶을 때가 있습니다. 그럼 현재 실행 중인 코드가 인터럽트 컨택스트 구간인지 어떻게 알 수 있을까요? in_interrupt()란 함수가 이 정보를 알려줍니다. 그럼 다음 패치를 함께 살펴 봅시다. diff --git a/drivers/md/dm-region-hash.c b/dr
4.8 스레드 정보(struct thread_info)
By Guillermo Austin Kim | 2019년 2월 3일 |
프로세스 상세 정보를 저장하는 자료구조는 태스크 디스크립터입니다. 이와 더불러 프로세스 세부 실행 정보를 저장하는 struct thread_info 자료구조가 있습니다. 커널이 프로세스를 생성할 때 프로세스마다 고유한 스택 공간을 부여합니다. 스택 최상단 주소에 struct thread_info 구조체 필드가 저장돼 있습니다. 이 구조체 필드는 커널이 프로세스를 제어할 때 필요한 중요 정보를 담고 있습니다.+ 프로세스 컨택스트 정보+ 선점 스케줄링 여부+ 컨택스트 스위칭 시 저장한 레지스터 세트 이번 절에서는 프로세스 동작을 표현하는 struct thread_info 구조체에 대해서 알아봅시다. struct thread_info 구조체 각 멤버에 대해 알아보기 전에 이 구조체가 프로세스 어느 주소에 위
리눅스 기본 명령어
By JH의 컴퓨터세상 | 2019년 10월 11일 |
* 실행파일 경로- 파일 실행시 참조되는 경로는 $PATH 변수에 설정되어 있다.echo $PATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin- 파일 실행시 경로명 없이 파일명만 사용한 경우에는 shell 내장 명령어인지를 먼저 확인한다.shell 내장 명령어가 아니면 $PATH 변수에 설정되어 있는 디렉토리 경로에서 파일을 찾는다.현재 디렉토리는 참조하지 않는다.$PATH 에 설정되지 않는 디렉토리의 파일을 실행할 때 경로를 생략할 수 없다.실행파일 경로를 재지정 하려면PATH=설정할 경로 명*. logout 하게 되면 설정 변수값을 잃어버린다.파일관련 명령어catconCAT
[Linux][ARM] Coprocessor(코프로세서) Assembly
By Guillermo Austin Kim | 2018년 5월 23일 |
ARM 프로세스 내 Coprocessor라는 하드웨어가 있습니다. Co-Processor라는 것은 Co-worker랍니다. CPU 혼자 모든 일을 다 할 수 없으니 Co-Processor가 필요한 것입니다. Co-Processor는 C언어 같이 어떤 코드 흐름을 제어하는 일보다는 ARM Core나 Cache을 콘트롤하는 역할을 수행합니다. 그래서 ARM 프로세스로 칩을 디자인하는 개발자는 Co-Processor를 제어하는 명령어를 달달 외우고 있죠. Co-Processor가 있으니 당연히 Co-Processor하고 대화를 해야 겠죠. Co-Processor에게 말을 거는 방법을 역시 레지스터를 이용해서 주어진 명령어를 실행시키면 됩니다.Co-Processor에게 말을 걸면 Co-Processor가 알아듯