[리눅스커널] 시그널: ERESTARTSYS 매크로와 signal_pending() 에 대해서
By Guillermo Austin Kim | 2020년 1월 13일 |
-ERESTARTSYS 는 리눅스 커널의 '시그널' 서브 시스템과 연관된 매크로로 시스템 콜을 다시 실행시키려고 할 때 반환하는 매크로이다. ERESTARTSYS 매크로의 의미 보통 커널이 다시 시스템 콜을 재실행을 시키려는 이유는 '어떤 액션의 동기화'를 맞추기 위해서이다. 음, 내가 써도 무슨 소리인지 모르겠네. 나중에 이 글을 읽을 '나 자신'을 위해 이해하기 쉽도록 비유를 하나 들자. * 침대에서 잠을 든 상태이고 난 침대에서 잘 들어 있어야 한다.* 그런데 갑자기 택배가 와서 초인종이 울린다.* 일어나서 택배를 받고 다시 침대에 들어가 잠든 상태에 있어야 한다. 여기서 중요한 사실은 '난 침대에 잠 들어 있어야 한다.'라는 사실이다. 자, 위에서 든 예시를 조금 어려운 용어로 바꿔보자.
[라즈베리파이] 시스템 콜(시스템 호출)은 왜 필요하나?
By Guillermo Austin Kim | 2018년 10월 29일 |
시스템 콜은 유저 모드에서 커널 모드로 진입하는 동작입니다. 다른 관점으로 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층이자 인터페이스라고 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약없이 접근한다고 가정합시다. 실수로 어플리케이션이 커널 코드 영역 메모리를 오염을 시키면 시스템은 오동작할 가능성이 높습니다. 2. 유저 어플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. 유저 모드에서 구동 중안 어플리케이션 입장에서 하나의 파일 시스템 위에서 구동 중인 것으로 착각하게 합니다. 3. 시스템 콜 구현으로 유저 어플리케이션의 호환성과 이식성을 보장할 수 있습니다. 리눅스 시스템은 시스
Runqueue(런큐) Timestamp(실행 시간) 확인
By Guillermo Austin Kim | 2017년 12월 24일 |
보통 커널 크래시나 와치독 리셋으로 시스템이 다운된 경우 세밀하게 디버깅해야 할 때가 있어요.그런데 가끔 각 프로세스가 마지막에 어떤 순서로 실행이 됐는지 확인하고 싶을 경우가 가끔 있거든요.이 순서가 가끔 정말 중요한 순간이 가끔 있어요. 아래는 런큐에서 돌고 있는 프로세스 목록이거든요. 그럼 각각 프로세스가 어떤 순서로 실행이 되었는지 알 수 있을까요?crash64> runq -m CPU 0: [0 07:36:22.901] PID: 585 TASK: ffffffc071eb8b80 COMMAND: "android.hardwar" CPU 1: [0 07:36:22.901] PID: 726 TASK: ffffffc0f6e3f300 COMMAND: "DispSync" CPU 2: [0
tmux - 리눅스 터미널창 분할
By 반달가면 | 2021년 3월 25일 |
tmux는 리눅스 터미널창을 여러개의 화면(pane)으로 분할하여 하나의 터미널창에서 여러 작업을 동시에 보면서 진행할 수 있게 해 준다. 터미널 다중화기(terminal multiplexer)를 줄여서 tmux이다. 특히 원격에서 ssh 접속하여 작업할 때 서버쪽에 tmux가 설치되어 있으면 대단히 편리하다. 우선 tmux 패키지를 설치해 주자. 터미널창에서 아래와 같이 작업한다. 데비안/우분투 계열 배포판 기준이다. # S/W 저장소 정보 갱신 sudo apt-get update # tmux 설치 sudo apt-get install tmux # 도움말 확인 man tmux # 실행 (새로운 세션 생성) tmux tmux 세션(session)이 생성되면 터미널창 아