LINUX
Posts
477 posts[Linux][Kernel] 슬랩 Slab Memory 소개
리눅스 커널 Memory Management의 꽃 슬랩(Slab)을 소개할께요. 슬랩이 소개 되기 전 리눅스 커널 메모리는 모두 동적 할당을 했어요. 한참 그렇게 메모리를 썼었죠. 그러다가 메모리 성능을 높이기 위한 과제를 리눅스 커널 전문가들이 진행했어요. 여러가지 메모리 성능을 키우는 코드 작업을 진행하다가, 한 가지 조사를 했어요. 뭐나면, 어떤 타입의 메모리를 커널 코드에서 할당하는지에 대해서였어요. 그런데 재미있게도 메모리를 할당하는 패턴이 정해져 있다는 걸 확인했어요. 평범한 서민들이 먹는 식단을 몇 가지가 될까요? 아마 전 먹는 메뉴가 20여 가지로 정해져 있거든요. 비빔밥, 짜장면, 고구마(저녁으로 먹죠), 스타벅스, 삽겹살, 순대… 저 같은 경우는 20가지도 안되는 것 같네요. 그래서
virbr0 NAT 인터페이스 disable 시키기
출처:http://www.cyberciti.biz/faq/linux-kvm-disable-virbr0-nat-interface/virbr0 NAT 인터페이스 disable 시키기왜 disable 시킬까? by Vivek Gite · 0 commentsThis entry is part 9 of 12 in the series Redhat KVM Virtulization virtual network (virbr0)는 guest들이 네트웍 서비스에 접근하는 것을 허락하기위해서 Network address translation (NAT) 를 위해 사용된다. 하지만 NAT는 늦고 데스크탑 설치를 위해서 권장된다. 이 Network address translation (NAT)를 disable시키기 위해서는 아래와
[Linux][Kernel] signal - signal handler 설정 및 처리
리눅스 커널 코드 리뷰를 많이 했는데요.리눅스 시스템 프로그램이 커널과 어떻게 연동되는지 한 가지 점검해볼께요. 유저 공간에서 signal을 설정하는 코드를 많이 볼 수 있습니다. 아래는 SIGINT란 시그널이 전달되었을 때 linux_sig()란 함수가 호출되는 간단한 코드입니다.그럼 아래 시그널 콜백 함수가 어떻게 실행이 될까요?#include #define SIGINT (2) typedef void (*handler_t)(int); handler_t signal( int, handler_t ); handler_t old;void linux_sig( int signo ){ printf("linux_sig(%d)\n", signo ); signal( SIGINT, ol
[Linux][Kernel] preempt_disable(), preemption 상세 분석
저번 시간에 preempt_disable() 함수 호출로 커널 패닉이 일어나는 문제가 있었는데요.이 매크로 함수와 preemption의 관계에 대해서 좀 더 알아보고자 해요. preemption은 리눅스 커널 핵심 개념 중의 핵심이죠. preempt_disable() 함수를 호출하면 스택 주소를 꺼내와서, current_thread_info에 있는 preempt_count에 1을 더하는 짓만 하거든요. 그럼 current_thread_info의 preempt_count를 어떻게 접근하냐구요?어떤 프로그램이 돌던 스택 주소를 접근하면 해당 current_thread_info를 가져올 수 있어요.static inline struct thread_info *current_thread_info(void){ r


![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)
