[리눅스커널] 인터럽트 컨택스트에서 많은 일을 하면 어떻게 될까?
By Guillermo Austin Kim | 2019년 2월 10일 |
인터럽트 컨택스트에서 많은 일을 하면 어떻게 될까? 인터럽트 후반부 처리 기법을 왜 적용해야 하는지 설명드리기 위해 인터럽트 컨택스트에서 많은 일을 하는 코드를 적용하면 시스템이 어떻게 오작동하는지 소개합니다. 디바이스 드라이버를 개발하다 보면 인터럽트 컨택스트에서 인터럽트 핸들링을 할 때 많은 일을 하는 코드를 입력할 때가 있습니다. 대표적으로 다음과 같은 예를 들 수 있습니다. - I/O을 시작하는 코드 - 과도한 while loop - 유저 공간으로uevent를 전달해서 인터럽트 발생을 알림 - 스케줄링을 지원하는 커널 함수 호출 위와 같은 코드를 입력하면 시스템 반응 속도가 아주 느려지거나 평소에 볼 수 없는 오류 메시지를 볼 수 있습니다. 인터럽트 핸들러와 서브 루틴에서 코드
리눅스에서 파일을 인자(argument)로 사용하는 곳에 표준입출력 사용하기
By 반달가면 | 2019년 1월 24일 |
제목이 약간 복잡한데, 좀 더 자세히 설명해 보자면 이렇다. 인자(argument)로 파일명을 입력 받아서 작업을 하는 프로그램/스크립트가 있는데, 파일 대신에 터미널창의 출력(표준출력)을 파이프(|)로 넘겨서 마치 파일의 내용인 것처럼 입력하고 싶은 경우다. 좀 억지스럽긴 하지만, 편의상 예를 들어 test.sh 스크립트의 내용이 아래와 같다고 해 보자. # test.sh 내용 cat test.sh file "$1" cat "$1" 위 스크립트의 내용을 보면 file 명령어로 파일 종류를 식별하여 출력한 후에 cat 명령어로 해당 파일의 내용을 출력하는 것임을 알 수 있다. # test.sh 실행 예시 bash test.sh my_doc.pdf my_doc.pdf: PDF d
[Linux][Kernel] gcc - asmlinkage란
By Guillermo Austin Kim | 2018년 11월 21일 |
커널 소스를 보다보면 asmlinkage로 선언된 함수들을 볼 수 있습니다. 대표적으로 시스템 콜 핸들러를 들 수 있으며 다음 해더 파일에 정의되어 있습니다.[https://elixir.bootlin.com/linux/v4.14.70/source/include/linux/syscalls.h]asmlinkage long sys_fork(void);asmlinkage long sys_exit(int error_code);asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);asmlinkage long sys_write(unsigned int fd, const char __user *buf, size_t count); asm
귀여운 휴대용 리눅스 PC, 팝콘 리눅스 PC(Popcorn Linux PC)
By 자그니 블로그 : 거리로 나가자, 키스를 하자 | 2020년 5월 14일 |
리눅스는 마치 오래 전 소개팅으로 만나 몇 번 데이트했던 누군가와 비슷합니다. 써본 적도 있고,크게 불만이 있지는 않았지만, 어느새 윈도에 밀려 잊혀지고, 스마트폰에 밀려 다시 연락할 기회도 없게 되고, 언제 한 번 깔아봐야지-했더니, 요즘 나오는 PC나 노트북은 죄다 윈도 10만 깔 수 있습니다(...). 언제 한 번 다시 써보고 싶긴 한데 쓸 기회가 전무했던(하지만 다르게 진화한 리눅스 커널 기반 안드로이드는 매일 쓰는), 데스크탑 리눅스를 간단히 써볼 수 있는 PC가 나올 예정입니다. 이거 뭐랄까, 노트북은 아닌데, 휴대용이긴 합니다. 모니터도 키보드도 달리긴 했지만, 뭐랄까... 아하하. 예, 출시 예정인 리눅스 모바일 PC, 팝콘 리눅스 PC입니다. 중국 심천에