리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

[리눅스커널] 동기화: 스핀락 자료구조 알아보기

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

[리눅스커널] 시스템 콜: GNU C 라이브러리 실행 흐름

Guillermo Austin Kim|2019년 9월 6일

유저 공간에서 시스템 콜을 실행하려면 리눅스 저수준 표준 함수를 호출해야 합니다.저수준 표준 함수는 glibc 라이브러리에 구현돼 있습니다. 그래서 실제 시스템 콜을 발생하는 코드를 확인하기 어렵습니다. glibc 라이브러리 파일은 어디있을까요? 리눅스 배포판마다 다르지만 라즈베리파이에서는 glibc는 라즈베리파이에서 다음 경로에 있는 libc.a란 파일입니다.root@raspberrypi:/home/pi# ls /usr/lib/arm-linux-gnueabihf/libc.a/usr/lib/arm-linux-gnueabihf/libc.a libc.a 를 리눅스에서 제공하는 라이브러리라고 하며 표준 입출력 함수과 프로세스 생성 요청과 같은 핵심 동작을 수행합니다. 이번 시간에는 libc.a 파일에

[리눅스커널] 시스템 콜: 시스템 콜의 특징 알아보기

Guillermo Austin Kim|2019년 9월 6일

이번 소절에서는 시스템 콜의 특징을 알아보겠습니다. 앞서 알아봤듯이 시스템 콜은 유저 모드에서 커널 모드로 진입하는 관문입니다. 소프트웨어 구조 관점으로 보면 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층으로 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 콜 계층으로 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약 없이 접근한다고 가정합시다. 실수로 어플리케이션이 커널 코드 영역 메모리를 오염시키면 시스템은 오동작할 가능성이 높습니다. 그래서 유저 모드에서 시스템 콜로만 커널 모드에 진입해서 제한된 메모리 공간에 접근하는 것입니다. 2. 유저 어플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. 유저 모드에서 구동 중인 어

리눅스 커널 기여(Contribution) - 패치 작성 및 패치 반영(Contribution) 확인하기

Guillermo Austin Kim|2019년 9월 4일

이전 시간에는 리눅스 커널 기여(Contribution) 하기 전에 준비해야 할 사항을 소개했습니다.- gmail 계정 생성- mutt 설치 및 설정 이번 시간에는 커널 패치를 작성해보고 패치를 리눅스 매인테이너(Maintainer)에게 보내는 과정을 소개합니다.그리고 업스트림(Upstream)된 패치를 확인하는 방법도 말씀드리겠습니다. 오류 코드 확인하기 먼저 패치를 작성하기 전 커널 코드를 볼까요?참고로 다음 함수는 AMD/PowerPlay 드라이버입니다.[drivers/gpu/drm/amd/powerplay/smumgr/smu8_smumgr.c]01 static int smu8_start_smu(struct pp_hwmgr *hwmgr)02 {03struct amdgpu_device *adev