[리눅스커널] 시그널: __send_signal()dequeue_signal() 함수 분석 - 시그널 생성/시그널 받기
By Guillermo Austin Kim | 2020년 3월 18일 |
커널에서 시그널 서브시스템의 핵심 동작은 다음과 같다. * 시그널 전송: 시그널을 받은 프로세스에게 펜딩 시그널 정보를 써주고 시그널을 받을 프로세스를 깨운다. * 시그널 받기: 깨어난 프로세스는 펜딩 시그널을 받아 시그널에 대한 후속 처리를 한다. 이번 시간에는 펜딩 시그널 정보를 써주고(시그널 생성), 펜딩된 시그널을 프로세스(시그널 받음)는 읽는 과정에 초점을 맞춰 소스를 분석해보자. __send_signal() 함수 분석 먼저 __send_signal() 함수를 보자. int __send_signal(int sig, struct siginfo *info, struct task_struct *t, enum pid_type type, int from_ancestor_ns){
[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기
By Guillermo Austin Kim | 2019년 7월 25일 |
![[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기](https://img.zoomtrend.com/2019/07/25/c0246238_5d2b11370e6c7.png)
가상 주소를 물리 주소 변환하는 세부 원리 알아보기이번에는 가상 주소를 물리 주소로 변환하는 과정을 살펴보겠습니다. 다음 그림을 같이 보겠습니다. [그림 14.18] 가상 주소를 물리 주소로 변환하는 과정 전체 흐름도 가상 주소를 물리 주소로 변환하는 과정은 크게 2 단계로 나눌 수 있습니다. [그림 14.19] 가상 주소를 물리 주소로 변환하는 단계 1단계[그림 14.18] 가장 위쪽에 있는 주소는 TTBR(Translation Table Base Register)에 저장된 변환 테이블 시작 주소입니다. 페이지 테이블의 베이스 주소입니다. 변환 베이스 주소와 SBZ로 구분할 수 있는데 SBZ는 항상 0라는 의미입니다. 커널에서는 swapper_pg_dir 전역 변수가 이 주소를 저장합니다. 다음 ‘가
[라즈베리파이] 라즈베리 파이 사용 시 주의사항
By Guillermo Austin Kim | 2020년 1월 16일 |
이번에는 라즈베리 파이를 쓰면서 주의해야 할 사항 몇 가지를 정리합니다. 이 내용을 숙지하면 조금 더 오랫동안 라즈베리 파이를 쓸 수 있습니다. 1. 라즈베리 파이의 전원을 끌 때는 반드시 셧다운 메뉴를 선택합시다. 컴퓨터의 전원을 끌 때처럼 하면 됩니다. 바로 전원 케이블을 빼버리면 라즈베리 파이가 다시 부팅을 못할 수 있습니다. 마이크로 SD 카드가 제대로 마운트를 해제하지 않은 채로 전원이 끊기면 파일 시스템이 손상될 수 있기 때문입니다. 2. 라즈베리 파이는 주머니에 들어갈 만한 크기입니다. 그렇다고 정말 주머니에 그대로 넣고 다니면 안 됩니다. 라즈베리 파이를 가지고 다니다 떨어뜨리면 못 쓸 수 있습니다. 라즈베리 파이는 꼭 보호 케이스를 써서 충격으로부터 보호합시다. 3. 겨울철에 정전기가
[리눅스커널][가상파일시스템] 파일 객체: lseek() 함수 연산 세부 동작 분석
By Guillermo Austin Kim | 2019년 3월 27일 |
파일 객체: lseek() 함수 연산 세부 동작 분석 유저 공간에서 lseek() 함수를 호출하면 파일 쓰기 포인터 위치를 조절할 수 있습니다. 다음 예제 코드를 보면서 lseek() 함수 동작에 대해 살펴보겠습니다. 1 #include <unistd.h>2 #include <sys/types.h>3 #include <fcntl.h>45 #define FILENAME_NAME "/home/pi/sample_text.text"67 int main() 8 { 9 int fd = 0;10 ssize_t read_buf_size;11 off_t new_file_pos; 12 13 fd = open(FILENAME_NAME, O_RDWR);14 new_file_pos = l