삼국지도 다 끝났고, 남는 시간에 리눅스 커널을 배워 보기로 했다. 시간 남을 땐 이게 효과가 확실하지. 전에 샀던 “디버깅을 통해 배우는 리눅스 커널의 구조와 원리”를 따라 해보기로 했다. 커널이 리눅스 심장과 같아 꼭 배울 필요는 없지만, 알면 편하게 살 수 있다. 리눅스 역시 과거 서버를 벗어나 arm에 로딩되어 여러 임베디드 리눅스로 사용되고 있다. 라즈베리 파이…… raspberry pi4 커널 컴파일 계속 읽기
[태그:] linux
fork bomb
fork로 주기적으로 exec를 하는 방법을 알아보고 있었다. 잘못하여 이렇게 썼다. while(1){ fork(); } 이런 **ㄹ!#ㄲㄴㅇㄹㅉㅆㄲ$!!!! 게다가 sudo로 실행했다. ssh, ping 등 명령어에 응답하지 않는다. 하드웨어에 접근할 수 없었는데, 다행히 crontab에 등록한 재부팅 명령어는 동작했다.
posix shared memory, p325~p335
fork로 나온 parent, child와 다르게 완전 다른 프로세스간 shared memory로 데이터를 공유할 수 있다. pi@raspberrypi:~/Project/cCode/IPC/shared_memory $ cat make_memory.c #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/stat.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <unistd.h> #include <sys/mman.h> #define FILE_MODE 0666 int main(int argc, char **argv) { int c, fd, flags; char *ptr; off_t length; flags =…… posix shared memory, p325~p335 계속 읽기
shared memory introduction, p303 ~ p315
semaphore로 process간 데이터를 주고 받을 줄 알았는데, 아니었다. semaphore로 동기하고 process간 데이터 전달은 메모리 공유로 한다. #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/stat.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <unistd.h> #include <sys/mman.h> #define SEM_NAME “mysem” #define FILE_MODE 0666 struct shared{ sem_t mutex; int count; } shared; int main(int argc, char **argv) { int…… shared memory introduction, p303 ~ p315 계속 읽기
다른 process간 named semaphore 사용(실패)
세마포어로 데이터를 전달할 줄 알았으나, 동기화만 한다. 프로세스간 데이터를 공유할 방법이 없다. 다음 예제 shared memory로 공유한다. named semaphore는 잘 동작하는 듯 한데, 검증을 못했다. pi@raspberrypi:~/Project/cCode/IPC $ cat named_semaphore_prod.c /* include main */ #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <errno.h> #include <signal.h> #define NBUFF 10 #define SEM_MUTEX “mutex”…… 다른 process간 named semaphore 사용(실패) 계속 읽기