본문 바로가기

전체 글154

[Linux Kernel] 리눅스 커널 개발 가이드: How the development process works 2. How the development process works — The Linux Kernel documentation Linux kernel development in the early 1990’s was a pretty loose affair, with relatively small numbers of users and developers involved. With a user base in the millions and with some 2,000 developers involved over the course of one year, the kernel has s www.kernel.org 1990년대 초반의 리눅스 커널 개발은 꽤 느슨했고, 상대적으로 적은 수의 사용자와 개발자만이 참여했다... 2021. 8. 26.
[Linux Kernel] 리눅스 커널 개발 가이드: Introduction A guide to the Kernel Development Process — The Linux Kernel documentation © Copyright The kernel development community. www.kernel.org Introduction 이 문서는 커널 개발 프로세스와 개발자나, 고용주들이 개발에 참여하면서 겪는 좌절에 대해 다룬다. 커널 코드가 “mainline”에 머지되어야 할 이유는 많다. 코드가 mainline에 머지되어야 사용자들이 편하게 사용할 수 있고, 기여한 코드가 커뮤니티로부터 유지보수 받고, 커널 개발의 방향에 영향을 줄 수 있다. 리눅스 커널에 기여된 코드는 반드시 GPL 호환 라이선스여야 한다. 1.1 Executive summary (링크는 번역 후 추.. 2021. 8. 26.
[LWN.net] bdflush() 시스템 호출의 삭제 Bye-bye bdflush() [LWN.net] Did you know...?LWN.net is a subscriber-supported publication; we rely on subscribers to keep the entire operation going. Please help out by buying a subscription and keeping LWN on the net. By Jonathan Corbet July 5, 2021 The addition of system calls to t lwn.net 리눅스 커널에는 종종 시스템 호출이 추가된다. 거의 모든 merge window마다 시스템 호출이 추가된다. 하지만 시스템 호출이 제거되는 경우는 훨씬 적다. 근데 이제 시스템 호출 하나가.. 2021. 8. 23.
[KNK 정리] 7장: Basic Types 요약/정리 integer types integer type은 말 그대로 정수를 데이터로 하는 변수의 타입이다. signed와 unsigned로 나누는데, signed의 경우 첫 번째 비트(MSB, Most Significant Bit)를 부호 비트로 사용한다. MSB가 1이면 음수, MSB가 0이면 양수이다. unsigned의 경우는 항상 0보다 크거나 같은 정수만 표현할 수 있으며, MSB를 부호 비트로 사용하지 않는다. 기본적으로 C에서 integer type은 별도로 명시하지 않는 한 signed이다. 가장 일반적인 integer type은 앞의 글에서도 많이 사용했단 int이다. 그 외에 필요에 따라 long int, short int도 사용할 수 있다. long int, short int는 lo.. 2021. 8. 22.
[KNK 정리] 6장: Loops 요약/정리 반복문(Loop)는 정해진 구문을 반복적으로 실행하는데 사용된다. C에는 반복문으로 for, while, do가 있다. while statement 형식 : while ( expression ) statement while문은 expression이 거짓이 될때까지 statement를 실행한다. 먼저 expression을 evaluate하고, 참이라면 statement를 실행한다. 일반적으로 statement를 실행하다보면 특정 시점에서 expression이 거짓이 되어 while문이 종료된다. 그렇지 않은 경우에는 무한 루프에 빠지거나, break나 goto로 빠져나와야 한다. 일부러 expression에 1처럼 상수를 넣어서 무한루프를 만드는 경우도 있다. do statement 다른데선 d.. 2021. 8. 21.
mutt 이메일 클라이언트 사용법 정리 이 글은 필자가 공부하는대로 부족한 부분을 업데이트 하고 있습니다. mutt에 관하여 좋은 내용을 알고계시다면 알려주세요! mutt란 mutt는 터미널에서 사용하는 이메일 클라이언트다. 리눅스 커널은 이메일을 통해 대부분의 토론과 패치로 소통한다. 그러다보니 참여하려면 이메일을 정말 많이 봐야한다. 보통 이메일을 쓸 땐 웹 기반 이메일 서비스를 사용하지만, 리눅스 커널 메일링 리스트처럼 하루에도 수백개의 메일을 수신해야 하는 환경에는 적합하지 않다. 텍스트 기반인 mutt를 애용하자. 패치를 몇개 보내면서 이메일 클라이언트 때문에 삽질을 좀 했다. 인라인 패치가 아니라 첨부파일로 보낸다던가, 어떤 메일에 대한 답장으로 인라인 패치를 보내고 싶은데 방법을 모른다던가.. 그런걸 여기서 글로 정리해보려고 한다.. 2021. 8. 20.
[KNK 정리] 5장: Selection Statements 요약/정리 C언어에는 몇가지의 statements가 있다. 이번 장에서는 selection statements를 다룬다. - selection statements: if / switch 등 조건에 따라 분기하는 구문 - iteration statements: for, while, do-while 등 정해진 동작을 반복하는 구문 - jump statements: 코드를 점프하는 구문 - compound statement: 여러 개의 구문을 하나의 구문으로 만들기 위한 구문 - null statement: 아무 동작도 수행하지 않는 구문 logical expressions 우리는 4장에서 배웠듯 연산자를 통해서 다양한 expression을 만들 수 있다. 하지만 x + y와 같은 expression과 다르게.. 2021. 8. 18.
[KNK 정리] 4장: Expressions 요약/정리 C언어는 다른 언어와 달리 expression을 강조한다. 기본적으로 변수와 상수도 expression에 해당하며, 연산자를 통해서 새로운 expression을 만들 수도 있다. (x + y) * z에서 x, y, z, x + y, (x + y) * z는 모두 expression이라고 할 수 있다. 산술 연산자 (Arithmetic Operators) 단항 연산자 (Unary Operators) 산술 연산자 중 단항 연산자는 +, -가 있다. 이는 expression의 부호를 나타낸다. 예시): +1, -1, +x, -x 이항 연산자 (Binary Operators) + : 두 operand의 합을 구한다. - : 좌측 operand에서 우측 operand를 뺀 값을 구한다. * : 두 ope.. 2021. 8. 17.
[KNK 정리] 2장: C Fundamentals 요약/정리 간단한 C언어 프로그램의 구현 #include /* Standard Input/Output 관련된 함수의 정의를 포함한다 */ /* main 함수: 모든 C 언어 프로그램에 들어가는 필수적인 함수 */ intmain(void) { printf("To C, or not to C: that is the question.\n"); /* 문자열 출력 */ return 0; /* main 함수를 종료한다. 0은 프로그램이 정상적으로 종료됨을 의미한다. */ } 전처리(Preprocess), 컴파일(Compile), 링크(Link) C언어로 프로그램을 만들때 보통 전처리, 컴파일, 링크라는 세 단계를 순서대로 거친다. 전처리 전처리는 컴파일 이전에 #define, #include, #if, #endif와.. 2021. 8. 16.