LINUX

포스트: 487|아이템:LINUX(477)
Tags

Posts

487 posts

[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 등록 - 코드리뷰

Guillermo Austin Kim|2017년 12월 17일

리눅스 시스템 프로그램을 보면 fd를 얻어오는 코드를 자주 볼 수 있어요. fd를 보통 file descriptor라고 하죠.특정 프로세스에서 파일 핸들이라고 이야기하고요. 그럼 fd가 커널 공간에서 어떻게 생성되고 저장되는지 살펴보도록 할께요.#include #include #include #include #include #include #define MAX 1024 int main (int argc, char ** argv[]) { int fd; int readn = 0; int writen = 0; char

[Linux][Kernel] Kernel Panic @__stack_chk_fail - 스택 카나리 (Stack canary Feature)

Guillermo Austin Kim|2017년 12월 16일

최근 흥미로운 커널 패닉이 나왔는데요. 디버깅 과정을 공유 좀 하고자 해요. 일단 콜스택부터 볼께요. sock_has_perm() 함수가 돌다가 갑자기 __stack_chk_fail() 함수 호출로 panic()이 일어났거든요. 왜 이런 현상이 발생했을까요?crash> bt e5752c00PID: 1787 TASK: e5752c00 CPU: 4 COMMAND: "net_socket"bt: WARNING: stack address:0xe853fa38, program counter:0xc0ee5b60 #0 [ ] (panic) from [ ] #1 [ ] (__stack_chk_fail) from [

[Linux][Kernel] Process 프로세스 상태 (1) - 런큐(Runqueue) 디버깅

Guillermo Austin Kim|2017년 12월 14일

이번 시간에는 각 프로세스 상태에 대해 조금 더 짚어보려고 해요. 리눅스 커널 책을 보면 프로세스 상태에 대한 State Machine을 많이 볼 수 있는데요.Running/Ready 상태 이런 거죠. 실제 리눅스 커널에서는 어떤 API로 구현되는 지 살펴보려고 해요. 무엇보다 실제 데이터 구조체를 살펴보려고 해요. 1> Running State Process 프로세스가 실행되기 위해서는 뭘 해야 할까요? 런큐에 프로세스를 큐잉해야 해요. Runqueue에서 돌고 있는 프로세스를 Running 상태 프로세스라고 볼 수 있어요. 그럼 Crash Tool로 이 디버깅 정보를 어떻게 확인 가능하냐면요. 아래 커맨트로 볼 수 있어요.crash> runqCPU 0 RUNQUEUE: c4b4cb80

chmod - 리눅스에서 파일/디렉토리 접근권한 설정

반달가면|2017년 12월 13일

기본적인 내용이지만 정리해 두기로. 리눅스에서 파일/디렉토리 접근 권한은 chmod 명령으로 설정한다. chmod의 옵션에 의해 소유자(owner, u), 그룹(group, g), 나머지(others, o)에 대하여 각각 읽기(read, r), 쓰기(write, w), 실행(execute, x) 권한을 지정할 수 있다. 권한 추가는 +, 제거는 -, 특정 권한으로 지정은 = 기호를 사용한다. 예를 들어 소유자(u) 권한에 읽기(r)를 추가하기 위한 옵션은 u+r 이런식이다. 예시를 몇개 보면 쉽게 감을 잡을 수 있다. 예를 들어 my_data.txt 파일에 대하여 아래와 같이 접근권한을 지정할 수 있다. # 소유자(u) 권한에 읽기(r),쓰기(w),실행(x) 추가(+) chmod u+rwx my