다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

10.4.3 리눅스에서의 프로세스 통제 (Process control under Linux)

리눅스에서, ptrace 시스템 호출은 프로세스 통제를 위해 지원되고 4.3 BSD에서 처럼 작동한다. 프로세스와 시스템 정보를 얻기 위해, 리눅스는 또한 /proc 파일시스템을 제공하지만, 매우 다른 semantics를 갖는다. 리눅스에서, /proc는 memory usage, load average, loaded module statistics, network statistics와 같은 일반적인 시스템 정보를 제공하는 많은 파일들로 구성된다. 이러한 파일들은 일반적으로 readwrite의 사용으로 접근되고 그것들의 내용은 scanf의 사용으로 조사될 수 있다. 리눅스에서의 /proc 파일시스템은 또한 process ID에 의해 이름 매겨진 각각의 수행 중인 프로세스를 위해 디렉토리 개체 (directory entry)를 제공하고 명령어 줄 (command line), 현재 작업 디렉토리와 실행할 수 있는 파일들의 연결, 열려진 파일 식별자(open file descriptor) 등과 같은 정보를 위한 파일 개체(file entries)들을 포함한다. 커널은 read 요청에 대한 대답의 비행 중에 이러한 정보들 모두를 제공한다. 이런 구현은 Plan 9에서 발견된 /proc 파일시스템과 다르지 않지만, 바람직하지 못한 점들이 있다. -- 에를 들어, 모든 수행 중인 프로세스 정보의 테이블을 조회하기 위한 ps와 같은 툴(tool)을 위해 많은 디렉토리들을 가로질러야 하고 많은 파일들을 열고 읽어야 한다. 그에 비해, kvm 루틴들은 적은 시스템 호출을 가지고 직접 커널 자료 구보체를 읽는 다른 UNIX 시스템 상에서 사용된다.

명백히, 각각의 구현은 그것들을 사용하는 응용프로그램을 포팅하는 것이 실제 작업으로 증명될 수 있는가에는 큰 차이점이 있다. SVR4 /proc 파일시스템이 리눅스에서 발견되는 것과는 매우 다른 것이라는 점은 지적되어야만 하고, 그것들은 같은 내용안에서 사용되지 않을런지 모른다. kvm 루틴들이나 SVR4 /proc 파일시스템을 사용하는 프로그램은 실제로 호환이 가능하지 않고 코드의 그러한 섹션(section)들은 각각의 운영체제를 위해 다시 씌여져야만 한다.

리눅스 ptrace 호출은 BSD에서 발견되는 것과 거의 동일하지만, 약간의 차이점이 있다.:

리눅스는 사용자 프로그램으로 부터 커널 주소 공간 (kernel address space)를 읽기 위해 kvm 루틴들을 제공하지 않지만, 몇몇 프로그램들(특히 kmem_ps)은 이러한 루틴들의 자신만의 버전을 구현한다. 일반적으로, 이것들은 호환성이 없고 kvm 루틴을 사용한 어떤 코드는 커널안의 몇몇 상징(symbols)이나 자료 구조 (data structures)에 따라 호환이 가능하다. -- 만들기에 안전한 가정은 아님. kvm 루틴들의 사용은 architecture-specific하게 고려되어야만 한다.


이전:10.4.2 ptrace/proc 파일시스템 다음:10.5 호환성있는 조건부 컴파일

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Dec 19,1997
Created Dec 19,1997