KERNEL

포스트: 183|조회수: 0|PERSON
Items

Posts

183 posts

[리눅스커널] 스케줄링: __schedule() 함수와 'bool preempt' 인자

Guillermo Austin Kim|2020년 1월 15일

다음과 같이 __schedule() 함수의 구현부를 보면 'bool preempt' 인자를 전달한다. void __sched notrace __schedule(bool preempt){ struct task_struct *prev, *next; unsigned long *switch_count; struct rq_flags rf; 이번 시간에는 이 함수에 'bool preempt' 인자가 추가된 이력을 확인해보자. __schedule() 함수에 'bool preempt' 인자가 추가된 패치 출처는 다음과 같다.https://lkml.org/lkml/2015/9/30/100 패치 코드의 내용은 다음과 같다. From fc13aebab7d8f0d19d557c721a0f25cdf7ae9

[리눅스커널] 시그널: ERESTARTSYS 매크로와 signal_pending() 에 대해서

Guillermo Austin Kim|2020년 1월 13일

-ERESTARTSYS 는 리눅스 커널의 '시그널' 서브 시스템과 연관된 매크로로 시스템 콜을 다시 실행시키려고 할 때 반환하는 매크로이다. ERESTARTSYS 매크로의 의미 보통 커널이 다시 시스템 콜을 재실행을 시키려는 이유는 '어떤 액션의 동기화'를 맞추기 위해서이다. 음, 내가 써도 무슨 소리인지 모르겠네. 나중에 이 글을 읽을 '나 자신'을 위해 이해하기 쉽도록 비유를 하나 들자. * 침대에서 잠을 든 상태이고 난 침대에서 잘 들어 있어야 한다.* 그런데 갑자기 택배가 와서 초인종이 울린다.* 일어나서 택배를 받고 다시 침대에 들어가 잠든 상태에 있어야 한다. 여기서 중요한 사실은 '난 침대에 잠 들어 있어야 한다.'라는 사실이다. 자, 위에서 든 예시를 조금 어려운 용어로 바꿔보자.

[라즈베리 파이] 설치 - 라즈비안 이미지를 SD카드에 굽기

Guillermo Austin Kim|2020년 1월 4일

2. 마이크로 SD 카드에 라즈비안 이미지 쓰기 다음으로 마이크로 SD 카드에 라즈비안 이미지를 굽는 프로그램인 Win32 Disk Imager를 내려받기 위해 다음 URL로 접속합시다.  다음과 같은 화면이 나타나면 [Download] 버튼을 클릭합니다. 그림 2.11 Win32 Disk Imager 다운로드 페이지 다음과 같이 페이지가 바뀌고 프로그램 다운로드가 시작됩니다. 그림 2.12 Win32 Disk Imager 다운로드 Win32 Disk Imager의 다운로드가 끝나면 프로그램을 설치한 후 실행합니다. 그림 2.13 Win32 Disk Imager를 실행한 모습 [Image File] 섹션 우측의 파일 불러오기 아이콘( )을 클릭해 다음 그림과 같이 앞에서 다운로드한

[리눅스커널] 익명 페이지 메모리 누수(Memory Leak) 디버깅 - TRACE32

Guillermo Austin Kim|2019년 12월 16일

많은 리눅스 시스템 개발자들은 자신이 개발하고 있는 리눅스 커널의 버전이 주류였으면 하는 바램이 있다. 하지만 현실은 다르다. 현재 리눅스 커널의 최신 버전인 4.19(LTS 기준)으로 개발하고 있어도 이전 리눅스 커널 버전에서 다뤘던 자료 구조에 대해 알고 있어야 한다. 이번에는 커널 3.10 버전에서 struct anon_vma 구조체와 struct address_space 구조체의 관계에 대해 알아보겠다. 먼저 다음 TRACE32 명령어를 입력해 3번째 프레임의 페이지 디스크립터를 확인하자. $(TRACE32 명령어) v.v %d %t %h %i (struct page[0x7FFF])*mem_map (static struct page [32767]) (struct page[0x7FFF])*me