Process Attributes
Process Attributes
Process Identifiers
프로세스의 기본적인 특성은 프로세스 ID인 PID와 부모의 process ID인 PPID입니다.
PID와 PPID 모두 0이 아닌 양수입니다.
PID는 프로세스를 유일하게 특정합니다.(하나의 PID는 하나의 프로세스만 매칭됩니다.)
프로세스가 새로운 프로세스를 만든다면 child process를 생성한 것입니다. 반대로 child process를 만든 프로세스는 parent process입니다.
모든 프로세스들은 따라가다 보면 init process(pid = 1)의 손자들입니다.
init process는 커널이 부팅된 후 최초의 프로세스입니다.
<unistd.h>에 정의되어 있는 getpid, getppid 함수를 이용해 pid와 ppid값을 얻을 수 있습니다.
이 두 함수의 원형은 다음과 같습니다.
pid_t getpid(void);
pid_t getppid(void);
getpid는 호출한 프로세스의 pid를 반환해 줍니다.
getppid는 호출한 프로세스의 부모 프로세스 pid를 반환해 줍니다.
-prpids.c-
Real and Effective IDs
Attribute |
Type |
Function |
Process ID |
pid_t |
getpid(void); |
Parent Process ID |
pid_t |
getppid(void); |
Real User ID |
uid_t |
getuid(void); |
Effective User ID |
uid_t |
geteuid(void); |
Real Group ID |
gid_t |
getgid(void); |
Effective Group ID |
gid_t |
getegid(void); |
각각의 프로세스는 3개의 user ID(UIDs)와 3개의 group ID(GIDs)를 가지고 있습니다. 이것들은 파일 접근 허가나 누가 특정한 프로그램을 실행할 수 있는지와 같은 보안 목적으로 사용되어집니다.
real user ID와 real group ID는 진짜 사용자가 누구인지 알려줍니다. 이것들은 로그인 시 /etx/passwd에서 읽어옵니다.
Effective user ID와 Effective group ID는 보안적인 목적으로 사용하지만 대부분의 경우 real user ID와 real group ID와 일치합니다.
real과 effective의 차이는 다음 섹션에서 다룰 주제인 setuid나 setgid와 관련이 있습니다.
-ids.c-
setuid and setgid programs
setuid와 setgid는 사용자에게 프로그램을 실행할 때 특별한 권한을 주기 위해서 사용합니다.
예를 들어 비밀번호를 바꾸기 위해 사용하는 passwd 프로그램을 생각해 봅시다. 이 file은 모든 유저들이 읽을 수 있지만 root user만이 writable해야 합니다.
User Information
-getname.c-
Additional Process Information
- Wall clock Time (Elapsed time)
- User CPU time (user mode(non-kernel mode) 코드를 실행하는데 프로세서가 사용한 총 시간)
- System CPU time (kernel 코드를 실행하는데 사용한 시간)