리눅스

포스트: 556|아이템:리눅스(554)
Tags

Posts

556 posts

[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?

Guillermo Austin Kim|2019년 1월 13일

이번에는 커널 스레드 생성 요청과 커널 스레드를 생성하는 코드 흐름을 살펴봅시다. 커널 스레드를 생성하려면 다음과 같이 kthread_create() 함수를 호출해야 합니다.1 #define kthread_create(threadfn, data, namefmt, arg...) \2 kthread_create_on_node(threadfn, data, NUMA_NO_NODE, namefmt, ##arg)34 struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),5 void *data, int node,6 const char namefmt[],7 ...) 먼저 이 함수에 전달하는 인자부터 살펴봅시다.

[리눅스] 리눅스 시스템에서 메모리가 부족할 때

Guillermo Austin Kim|2019년 1월 10일

OOM의 기본적인 원인은 간단합니다. 즉, 여러분은 사용 가능한 가상 메모리 공간보다 더 많은 것을 요구했을 것입니다.여기서 "가상"이라고 말한 이유는 RAM이 free 메모리로 계산되는 유일한 공간이 아니며 어떠한 스왑 영역도 해당되기 때문입니다. OOM 조사하기 OOM 조사를 시작하기 위해 먼저 대량의 메모리 블록을 할당하는 아래의 코드를 입력하고 실행시킵니다: #include #include #define MEGABYTE 1024*1024 int main(int argc, char *argv[]){ void *myblock = NULL; int count = 0; while (1)

[리눅스] 커널 크래시: abort@test_and_set_bit

Guillermo Austin Kim|2019년 1월 9일

우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.)-000|do_DataAbort(addr = 3244789312, fsr = 3245415784, regs = 0xC1678E40)-001|__dabt_svc(asm) -->|exception-002|test_and_set_bit(asm) // <<**** kernel panic-003|bit_spin_lock(inline)-003|hlist_bl_lock(inline)-003|mb_cache_shrink_scan(?, ?)-0

리눅스 민트에서 NFS 서버 설정

반달가면|2019년 1월 7일

리눅스 민트에서 NFS(Network File System, 네트워크 파일 시스템) 서버 설정 절차다. 리눅스 민트가 우분투 계열 배포판이므로, 데비안/우분투 계열 배포판은 다 비슷할 것이다. 우선 nfs-kernel-server 패키지를 설치하자. 터미널창에서 아래와 같이 작업 # S/W 저장소 정보 갱신 sudo apt-get update # nfs-kernel-server 설치 sudo apt-get install nfs-kernel-server NFS로 공유할 디렉토리를 만들자. 여기서는 /var/nfs_exports로 했다. 접근 권한은 별도로 설정하므로 디렉토리 권한은 모두 접근 가능한 777로 설정. # 디렉토리 생성(/var 디렉토리 하위이므로 root 권한 필요