LINUX
Posts
487 posts독하게 시작하는 C 제3장 표준 입/출력 도구 - 첫 번째
HCI - CLI (DOS,Linux,...) 검정 화면 ->GUI 그래픽 ->UX 경험적 ---- 정보는 대부분 문자열로 표현한다.Web,HTML,XML,HTTP 등 깊이 있는 얘기 하기에 CLI가 기본. getchar()가져와라. 문자 한 글자를. 중요한 얘기.(암기) 컴퓨터 -> H/W + S/W 소프트 웨어는 시스템 소프트웨어와 응용 소프트웨어로 나뉜다. COMPUTER LAYERED(3층)(3층 전체를 C언어로 커버 가능 그만큼 C언어로 할 수 있는 범위가 넓다. 개인(Thread)이 집(Process)에 있음. 남의 집 함부로 침범 불가. -> 이 층이 유저(User).'정부' -> 이 층이 커널(Kernel)(OS)(운영체제)영토 영해 영공(하드
리눅스에서 스왑(swap) 사용률 확인 및 우선순위 변경
리눅스에서 메모리가 부족할 경우 디스크를 메모리처럼 사용하기 위해 스왑(swap) 파티션을 할당하게 되는데, 현재 어느 정도의 용량이 할당되어 있고 얼마나 사용되고 있는지 확인하는 방법이다. 스왑 파티션의 현재 상태는 /proc/swaps의 내용을 확인하면 된다. 터미널창에서 아래와 같이 입력 # 스왑 파티션 사용률 확인 cat /proc/swaps Filename Type Size Used Priority /dev/sda5 partition 1046524 0 -1 위의 예시를 보면 /dev/sda5 파티션이 스왑으로 사용되고 있으며 1046524바이트가 할당되어 있고(Size 항목), 사용되고 있는 용량은 0바이트(Used 항목)이다. 우선순위(
[ARM64]signal - sa_handler signal handler 실행 (code walk-through)
signal에 대해서는 리눅스 시스템 프로그램에서 많이 들어본 적이 있을 꺼에요.쓰레드에 특정 시그날이 전달되면 해당 시그널 핸들러 함수가 호출된다는 내용이죠. 아래 시스템 프로그램의 경우에는 SIGINT 시그널을 전달 받으면 sig_handler 함수가 호출되겠지오.#include #include #include void sig_handler(int signo){ if (signo == SIGINT) printf("received SIGINT\n");} int main(void){ if (signal(SIGINT, sig_handler) == SIG_ERR) printf("\ncan't catch SIGINT\
Reboot - Kernel Rebooting(커널 리부팅) Sequence
보통 시스템이 리부팅될 때 동작에 대해 상세히 다룬 글이 없는 것 같아요.그래서 유저 스페이스에서 reboot 시스템 콜을 수행하면 어떤 흐름으로 시스템이 리셋되는지 살펴볼께요. 가끔 시스템이 리부팅하는 과정에서 락업이나 커널 크래시가 발생하거든요. 이럴 때 어떤 흐름으로 리부팅 되는지에 대한 정보를 알면 어느 포인트에서 디버깅을 해야 할 지 빨리 파악할 수 있어요. sys_reboot이란 함수는 아래 코드로 정의되어 있구요. kernel_restart() 함수가 호출되요. SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg){ struct pid_namespace *pid_ns = task_act


