본문 바로가기

분류 전체보기

(44)
인터럽트 벡터? 아래의 블로그를 참고하여 글을 작성하였습니다. 제가 공부할 때 참조한 커널 버전은 v2.6.39.4입니다. http://rousalome.egloos.com/10012152 [리눅스커널] 인터럽트: 리눅스 커널이 처리하는 인터럽트의 주요 개념 앞에서 인터럽트에 대해 소개했으니 리눅스 커널에서 인터럽트를 처리하는 방식을 이해하기 위해 알아야 할 주요 개념을 소개합니다.  인터럽트 핸들러  인터럽트 벡터  인터럽트 디스크립터  인터럽트 컨텍스트 인터럽트 핸들러란? 인터럽트가 발생하면 이를 핸들링하기 위한 함수가 호출되는데 이를 인터럽트 핸들러라고 합니다. 예를 들어 rousalome.egloos.com  인터럽트 핸들러  인터럽트 벡터  인터럽트 디스크립터  인터럽트 컨텍스트 앞에서 인터럽트 ..
인터럽트 핸들러? 하드웨어 인터럽트의 처리 과정은? 아래의 블로그를 통해 인터럽트 핸들러에 대해 공부해 보았습니다. 제가 공부할 때 참조한 커널 버전은 v2.6.39.4입니다. http://rousalome.egloos.com/10012152 [리눅스커널] 인터럽트: 리눅스 커널이 처리하는 인터럽트의 주요 개념 앞에서 인터럽트에 대해 소개했으니 리눅스 커널에서 인터럽트를 처리하는 방식을 이해하기 위해 알아야 할 주요 개념을 소개합니다.  인터럽트 핸들러  인터럽트 벡터  인터럽트 디스크립터  인터럽트 컨텍스트 인터럽트 핸들러란? 인터럽트가 발생하면 이를 핸들링하기 위한 함수가 호출되는데 이를 인터럽트 핸들러라고 합니다. 예를 들어 rousalome.egloos.com 앞에서 인터럽트에 대해 소개했으니 리눅스 커널에..
인터럽트? 아래의 블로그를 참조하여 글을 작성하였습니다. ● http://rousalome.egloos.com/9971347 ● https://velog.io/@codemcd/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt-3ek4aww0xj ● https://coding-factory.tistory.com/353 인터럽트(interrupt)란 사전적인 의미로는 "방해하다", "중단시키다", "차단하다" 등의 의미가 있습니다. 하던 일을 멈추게 하는 무엇인가가 갑자기 발생하는 상황을 의미합니다. 일상에서의 예를 들면, 책을 읽는 도중 갑자기 전화가 와서 읽던 책을 덮어 놓고 전화를 받는 상황이 있습니다. 리눅스에서도 이런 인터럽트 방식을 사용하여 여러 가지 처리를 합니다. 예를 들..
프로세스를 TASK_RUNNING(CPU 실행) 상태로 바꾸는 함수...? 프로세스를 TASK_UNINTERRUPTIBLETASK_RUNNING(CPU 실행) 상태로 바꿀 때 호출되는 함수들에 대해서 공부를 해 보았습니다. 커널 버전은 v2.6.39.4 입니다. http://rousalome.egloos.com/10003491 [리눅스커널] 스케줄링: TASK_RUNNING(CPU 실행)로 바뀔 때 호출되는 함수 TASK_RUNNING(CPU실행)로 바뀔 때 호출하는 함수 분석 프로세스 상태를 CPU실행(TASK_RUNNING)으로 변경하는 함수는 1개 밖에 없습니다. __schedule() 함수를 실행할 때 프로세스는 CPU를 점유하면서 실행하는 상태로 바뀝니다. __schedule() 함수 코드를 살펴봅시다. [https://elixir.bootlin.com/ rousalo..
linux에서 likely와 unlikely란? 리눅스 소스코드를 보다 보면 조건문에서 가끔씩 likey()와 unlikely()를 볼 수 있습니다. 프로그램에서의 조건문은 굉장히 중요한 것인데, 어떻게 동작하는 것인지는 알아야겠다는 생각이 들어서 한번 찾아 봤습니다. likely()와 unlikely()는 “include/linux/compiler.h“에 정의되어있습니다. 얼핏 보면 반대의 동작을 하는 것 같은 느낌이 듭니다. # define likely(x) __builtin_expect(!!(x), 1) # define unlikely(x) __builtin_expect(!!(x), 0) [https://elixir.bootlin.com/linux/v2.6.39.4/source/include/linux/compiler.h#L115] 자 그럼 실제..
sleep과 wait의 차이? wait는 지정한 프로세스의 자식 프로세스를 포함해서 프로세스들의 작업이 끝나기를 기다리는 것이고, sleep은 프로세스를 정해준 시간만큼 잠시 멈추는 것입니다. sleep의 예시 [root@centos77 ~]# sleep 3 # 여기서 3초간 정지 [root@centos77 ~]# sleep 3& [1] 5204 [root@centos77 ~]# [1]+ Done sleep 3 [root@centos77 ~]# wait의 예시 [root@centos77 ~]# sleep 10 & [1] 5205 [root@centos77 ~]# sleep 20& [2] 5214 [root@centos77 ~]# sleep 30& [3] 5216 [root@centos77 ~]# wait %1 %2 %3 [1] Don..
프로세스를 TASK_UNINTERRUPTIBLE 상태로 바꾸는 함수...? 프로세스를 TASK_UNINTERRUPTIBLE 상태로 바꿀 때 호출되는 함수들에 대해서 공부를 해 보았습니다. 커널 버전은 v2.6.39.4 입니다. 아래 블로그를 참고하였습니다. http://rousalome.egloos.com/10003493 [리눅스커널] 스케줄링: TASK_INTERRUPTIBLE 상태로 바뀔 때 호출되는 함수 TASK_UNINTERRUPTIBLE 상태로 바뀔 때 호출하는 함수 분석 다음 함수가 호출될 때 프로세스 상태를 TASK_UNINTERRUPTIBLE로 바꿉니다.  io_wait_event()  mutex_lock()  usleep_range()  msleep()  wait_for_completion() io_wait_eve rousalome.egloos.com ..
프로세스를 TASK_RUNNING(실행 대기) 상태로 바꾸는 함수...? TASK_RUNNING(실행 대기)로 바뀔 때 호출되는 함수들에 대해서 공부를 해 보았습니다. 아래 블로그를 참고하였습니다. http://rousalome.egloos.com/10003490 [리눅스커널] 스케줄링: TASK_RUNNING(실행 대기)로 바뀔 때 호출되는 함수 - p TASK_RUNNING(실행 대기)로 바뀔 때 호출하는 함수 분석 프로세스가 다음과 같은 동작을 수행할 때 실행대기(TASK_RUNNING) 상태로 바꿉니다.  프로세스를 깨울 때  프로세스를 처음 생성하고 실행 요청을 할 때  프로세스 관련 정보를 업데이트 할 때 보통 휴면 중에 있는 프로세스를 깨우면 프로세스는 실행대기(TASK_RUNNING)상 rousalome.egloos.com 프로세스의 상태를 TASK_RUN..