[Linux][Kernel] softirq overview (1)
By Guillermo Austin Kim | 2017년 12월 4일 |
bottom half의 핵심 softirq에 대해서 잠깐 짚어볼께요.우선 먼저 "softirq는 어느 함수에서 실행되나?" 알아볼께요. 사실 코드 리뷰를 열심히 해도 좋은데요. 전 대가리가 나뻐서 소스 코드와 로그를 함께 봐야 머리에 잘 들어오더라구요. 자, softirq는 어느 함수에서 실행되는지 확인하기 위해 아래 코드에 ftrace log를 추가해 보았어요.흠, 어떤 결과를 확인할 수 있을까요?diff --git a/kernel/softirq.c b/kernel/softirq.cindex 0c998ef..5593bf6 100644--- a/kernel/softirq.c+++ b/kernel/softirq.c@@ -389,6 +389,7 @@ void irq_exit(void) WARN_
리눅스에서 문자열에 대한 베이스64 인코딩/디코딩
By 반달가면 | 2018년 1월 24일 |
우선, 파일에 대한 베이스64(base64) 인코딩/디코딩의 예시는 아래와 같다. (이전 게시물을 참고하자. 여기로) # 파일 test.txt를 베이스64 인코딩하여 test.txt.b64로 저장 base64 test.txt > test.txt.b64 # 파일 test.txt.b64의 내용을 베이스64 디코딩하여 화면에 출력 base64 -d test.txt.b64 파일이 아니라 특정 문자열에 대한 베이스64 인코딩/디코딩을 하고 싶다면 파이프(|)를 사용하면 간단하게 할 수 있다. 예를 들어 문자열 "abc"에 대한 베이스64 인코딩은 아래와 같이 하면 된다. # 문자열 abc 베이스64 인코딩 echo "abc" | base64 YWJjCg== 만약 줄바꿈(new
[라즈베리파이] 시스템 콜 - 커널 모드에서 시스템 콜을 어떻게 실행할까?
By Guillermo Austin Kim | 2018년 11월 19일 |
이번 절에서는 커널 공간에서 시스템 콜을 어떻게 실행하는지 살펴보겠습니다.다음 그림 전체 흐름도에서 검은색으로 표시된 부분을 눈여겨봅시다. 위 그림에서 검은색으로 된 부분입니다. 유저 공간에서 소프트웨어 인터럽트를 유발했으니 소프트웨어 인터럽트 벡터인 vector_swi 레이블이 실행합니다. 유저 공간에서 “svc 0x0” 이란 명령어를 실행하면 vector_swi 이란 시스템 콜 처리용 인터럽트 벡터로 프로그램 카운터를 이동하는 것입니다. 유저 공간에서 지정한 시스템 콜 번호는 r7 레지스터에 실려서 옵니다. 이 시스템 콜 번호를 통해 시스템 콜 테이블에 접근한 후 시스템 콜 핸들러로 분기합니다. ARM 프로세서 관점으로 시스템 콜을 실행하면 커널 공간에서 다음과 같은 동작을 수행합니다.1>
[Linux] losof의 사용하는 port를 확인하는 방법
By 멋진넘 | 2017년 1월 2일 |
lsof명령어를 이용하여, 사용하는 port의 프로세스를 확인하는 방법 아래 내용은 10001번 port를 사용하는 프로세스를 찾기 위한 방법이며, java가 프로세스명, 17641은 해당 PID 이다. [root@noon1 ~]# lsof -i:10001 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME java 17641 root 158u IPv6 185366324 TCP mvnoon1:scp-config (LISTEN)