lsof - 리눅스에서 현재 열려 있는 파일 목록 보기
By 반달가면 | 2017년 5월 10일 |
"list open files"를 의미하는 lsof 명령은 현재 열려 있는 파일의 목록을 출력해 준다. 어떤 명령어에 의해 어떤 파일이 열려 있고, 해당 명령어에 대응되는 프로세스ID(PID), 사용자 등을 확인할 수 있다. # 모든 열린 파일 목록 출력 lsof 만약 특정 사용자에 의해 열린 모든 파일을 보고 싶다면 아래의 예시처럼 -u 옵션을 사용한다. # 사용자 john에 의해 열린 파일 목록 출력 lsof -u john 2개 이상의 사용자를 지정하고 싶을 경우에는 쉼표(,)로 구분한다. # 사용자 root와 john에 의해 열린 파일 목록 출력 lsof -u root,john 개인적으로 가장 요긴하게 사용하는 경우는 특정 디렉토리에 연결된 저장장치를 해제(언마운트
[라즈베리파이] 스케줄링: 선점(Preemptive)과 비선점(Non-preemptive) 스케줄링
By Guillermo Austin Kim | 2019년 2월 2일 |
커널에서 지원하는 스케줄링 방식은 크게 선점 스케줄링 방식과 비선점 스케줄링 방식으로 나눌 수 있습니다. 대부분 스케줄링하면 선점 스케줄링 방식으로 이해하는 경우가 많습니다.히지만 커널은 프로세스 상태에 따라 유연하게 두 가지 방식을 같이 적용합니다. 먼저 선점 스케줄링 동작에 대해서 살펴보겠습니다.선점이란 단어는 보통 영어로 Preemptive라고 쓰는 경우가 많습니다. 실제 개발자들은 선점이란 용어보다 Preemptive 를 더 자주 쓰기는 합니다. Preemptive 란 단어는 뭔가 점유하고 있는 것을 뺃어 버린다는 뜻이 있습니다. 조금 더 구체적으로 어떤 프로세스가 CPU를 점유하면서 실행 중인데 스케줄러가 강제로 프로세스를 CPU에서 빼내는 동작입니다. 여기서 스케줄러가 어떤 방식으로 실행
[리눅스커널] 시그널: ERESTARTSYS 매크로와 signal_pending() 에 대해서
By Guillermo Austin Kim | 2020년 1월 13일 |
-ERESTARTSYS 는 리눅스 커널의 '시그널' 서브 시스템과 연관된 매크로로 시스템 콜을 다시 실행시키려고 할 때 반환하는 매크로이다. ERESTARTSYS 매크로의 의미 보통 커널이 다시 시스템 콜을 재실행을 시키려는 이유는 '어떤 액션의 동기화'를 맞추기 위해서이다. 음, 내가 써도 무슨 소리인지 모르겠네. 나중에 이 글을 읽을 '나 자신'을 위해 이해하기 쉽도록 비유를 하나 들자. * 침대에서 잠을 든 상태이고 난 침대에서 잘 들어 있어야 한다.* 그런데 갑자기 택배가 와서 초인종이 울린다.* 일어나서 택배를 받고 다시 침대에 들어가 잠든 상태에 있어야 한다. 여기서 중요한 사실은 '난 침대에 잠 들어 있어야 한다.'라는 사실이다. 자, 위에서 든 예시를 조금 어려운 용어로 바꿔보자.
[라즈베리파이] 시스템 콜(시스템 호출)은 왜 필요하나?
By Guillermo Austin Kim | 2018년 10월 29일 |
시스템 콜은 유저 모드에서 커널 모드로 진입하는 동작입니다. 다른 관점으로 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층이자 인터페이스라고 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약없이 접근한다고 가정합시다. 실수로 어플리케이션이 커널 코드 영역 메모리를 오염을 시키면 시스템은 오동작할 가능성이 높습니다. 2. 유저 어플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. 유저 모드에서 구동 중안 어플리케이션 입장에서 하나의 파일 시스템 위에서 구동 중인 것으로 착각하게 합니다. 3. 시스템 콜 구현으로 유저 어플리케이션의 호환성과 이식성을 보장할 수 있습니다. 리눅스 시스템은 시스