Linux Kernel Programming, 모듈 기능 구현 방안
By 재무설계 모든것 | 2017년 10월 17일 |
Linux Kernel Programming, 모듈 기능 구현 방안 출처 : 디바이스 드라이버 프로그래밍 [링크] 리눅스 커널의 특징은 기능이 동작 중임에도 어떤 기능이 추가되어 운영된다는 겁니다. 당연히 메인 함수는 없고 모듈(각 기능)들의 실행, 중지, 관련 메모리 반환 등의 함수는 꼼꼼하게 작성되어야 합니다. 그래서 모듈 프로그래밍할 때는 커널에 자유롭게 오르고 내릴 수 있도록 유연하게 작성해야 하는 것이죠. 링크의 예제를 살펴보면, 모듈 함수는 크게 begin, end, init, exit로 구성됩니다. init는 begin을 호출하고 exit는 end를 호출합니다. init, exit가 실제로 리눅스 커널에서 호출하는 함수인데, 이렇듯 리눅스 커널은 운영 중에 모듈을 추가/제거할 수 있
리눅스와 APC BE550-KR UPS 연결
By 반달가면 | 2022년 5월 19일 |
얼마전에 구입한 APC BE550-KR 가정용 UPS를 리눅스와 연결했다. 작업은 아래와 같이 진행했다. UPS를 설치하고 제품에 포함된 데이터 케이블을 리눅스 장비에 연결한 후 터미널창에서 아래와 같이 진행한다. 데비안/우분투 계열 배포판 기준이다. 우선 apcupsd 패키지를 설치한다. # S/W 저장소 정보 갱신 sudo apt-get update # apcupsd 설치 sudo apt-get install apcupsd 설치를 마쳤으면 systemd에서 서비스를 활성화하고 상태를 확인해 보자. # 서비스 활성화 sudo systemctl enable apcupsd # 상태 확인 systemctl status apcupsd 아마도 상태 정보에 "Comm
[라즈베리파이] 동기화 - 스핀락(spinlock): 두 번째 스핀락 해제 시 동작(2)
By Guillermo Austin Kim | 2018년 12월 30일 |
스핀락을 해제할 때 spin_unlock() 함수를 호출하며 이 때 스핀락 인스턴스 owner 값을 +1만큼 증감한다고 배웠습니다. 이제 [2] 번 프로세스가 임계 영역 실행을 마치고 스핀락을 해제했습니다. spin_unlock() 함수를 실행하니 스핀락 인스턴스 중 owner를 +1만큼 증감해서 0x3이 됐습니다. [3]번 프로세스는 스핀락 인스턴스를 계속 읽으면서 스핀락 인스턴스 owner 값이 0x3이 되기를 기다리고 있었습니다. 그런데 스핀락 인스턴스 owner 값이 0x3이니 스핀락을 획득하고 무한 루프를 빠져나갑니다. 스핀락 기본 동작과 함께 누군가 스핀락을 획득했을 때 스핀락 동작에 대해서 알아봤습니다. 코드 분석으로 다음과 같은 중요 포인트를 알 수 있습니다.1.스핀락은 코드 구현도가
리눅스 커널, 드디어 6.0 버전대 시대로 진입
By 파란오이의 Beautiful Life | 2022년 10월 6일 |
며칠 지난 소식이지만, 새로운 10월의 시작과 함께 하듯이 10월 2일 리눅스 커널의 6.0 릴리즈가 등장했습니다. 기존 안정 버전 5.19 버전대에서 6.0 대에서 한 번에 올라왔지만, 메이저 버전업에 기대하는 천지개벽 같은 요소는 그리 없습니다. 버전을 6.0으로 올린 것도 5.19에서 5.20으로 가기에는 서브 버전이 좀 숫자가 크다... 고 해서 올린 의미 정도이니까요. 하지만 지속적으로 진행 중인 변화의 폭 자체는 그리 작지 않습니다. 이번 커널 6.0에서도 최신 하드웨어들에 대한 지원들이 추가되었습니다. 프로세서에서는 3세대 제온 스케일러블 ''아이스 레이크''나 AMD 라이젠 쓰레드리퍼, AMD 에픽 프로세서 등에서의 성능 최적화 등이 적용되었고, 인텔의 차세대 프로세서가 될 4세대 제온 스케일러