인터럽트 - Overview
By Guillermo Austin Kim | 2018년 1월 15일 |
인터럽트하면 무슨 생각이 나죠? 평소에 이런 말도 하죠. "인터럽트 걸지마!" "인터럽트가 걸려와서 제대로 일을 못했어요." 커널에서 인터럽트는 하드웨어와 소프트웨어의 인터페이스이라고 할 수 있구요,각 물리적인 디바이스와 디바이스 드라이버의 인터페이스라고 할 수 있어요. 인터럽트 동작에 대한 수 많은 예시를 들 수 있는데요. 모바일 디바이스에서 사용자가 화면을 터치했을 때 인터럽트가 올라와서 해당 처리를 하거든요.해당 처리는 Input Event를 유저 공간에 전달해서 메뉴가 바뀐다던가, 화면을 다시 그리던가 하는 동작을 하죠. 인터럽트 처리는 인터럽트 핸들러에서 처리하구요, 인터럽트 핸들러는 보통 ISR(Interrupt Service Routine)이라고 하는데요.최대한 빠른 시간 내 데이터 처리
[리눅스커널] 동기화: 스핀락 자료구조 알아보기
By Guillermo Austin Kim | 2019년 9월 11일 |
스핀락 구조체나 자료구조는 다음과 같은 관점으로 분석하면 이해가 빠릅니다. 스핀락을 획득하거나 해제할 때 어떤 필드가 바뀔까? 스핀락을 획득했다고 어떻게 판단할까? 이 점을 염두하고 스핀락을 표현하는 자료구조를 분석하겠습니다. 다음은 스핀락을 표현하는 자료구조인 spinlock_t 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/spinlock_types.h]1 typedef struct spinlock {2 union {3 struct raw_spinlock rlock;4 };5 } spinlock_t; spinlock_t은 struct spinlock 자료형이며 struct raw_spinlock
xclip - 리눅스 터미널창에서 클립보드(clipboard) 입출력
By 반달가면 | 2018년 12월 18일 |
xclip을 사용하면 리눅스 터미널창에서 파일의 내용 또는 문자열 등을 파이프(|)를 이용한 I/O 리다이렉션(redirection)을 통해 클립보드에 저장할 수 있다. 또한 클립보드에 저장된 내용을 출력할 수도 있다. 즉, 마우스를 사용하지 않고 명령어 기반으로 클립보드 입출력을 다룰 수 있게 해 준다. 우선 xclip 패키지를 설치한다. 데비안/우분투 계열 기준으로 터미널창에서 아래와 같이 작업. # S/W 저장소 갱신 sudo apt-get update # xclip 패키지 설치 sudo apt-get install xclip 사용 예시를 보기 전에 간단하게 X-윈도우의 "X selection"에 대해 알아보자. X selection은 세가지 종류가 있는데, PRIMARY, S
[리눅스커널] 인터럽트 컨택스트에서 많은 일을 하면 어떻게 될까?
By Guillermo Austin Kim | 2019년 2월 10일 |
인터럽트 컨택스트에서 많은 일을 하면 어떻게 될까? 인터럽트 후반부 처리 기법을 왜 적용해야 하는지 설명드리기 위해 인터럽트 컨택스트에서 많은 일을 하는 코드를 적용하면 시스템이 어떻게 오작동하는지 소개합니다. 디바이스 드라이버를 개발하다 보면 인터럽트 컨택스트에서 인터럽트 핸들링을 할 때 많은 일을 하는 코드를 입력할 때가 있습니다. 대표적으로 다음과 같은 예를 들 수 있습니다. - I/O을 시작하는 코드 - 과도한 while loop - 유저 공간으로uevent를 전달해서 인터럽트 발생을 알림 - 스케줄링을 지원하는 커널 함수 호출 위와 같은 코드를 입력하면 시스템 반응 속도가 아주 느려지거나 평소에 볼 수 없는 오류 메시지를 볼 수 있습니다. 인터럽트 핸들러와 서브 루틴에서 코드