Process는 실행되고 있는 프로그램을 말한다. 프로세스는 OS와 system call을 통해서 통신한다. system call이나 다른 디바이스에 의해서 언제나 interrupte 당할 수 있다.
Context Switch
Context Switch는 프로세스가 interrupte 당해서 멈췄을 때 현재 상태를 저장하는 것이다. 이를 통해 나중에 저장상태부터 다시 실행할 수 있다. 다음과 같은 상황에 일어난다.
- Software interrupt(system call)
- device interrupt
- timer interrupt(quantum expired)
Context Switch의 순서
• User가 interrupte 당했다고 가정한다.
1. CPU가 interrupte를 감지한다.
2. CPU가 interrupt handler를 privileged mode(OS에서)로 실행한다.
3. (또 다른 interrupt가 발생하는 것을 막을 수 있다)
4. Interrupt handler가 interrupte당한 프로세스의 현재 상태를 저장한다.
5. Interrupt handler가 interrupt한 코드를 수행한다.
6. Interrupt handler가 CPU scheduler에게 다음 실행할 작업을 설정하게 한다.
7. CPU scheduler가 설정된 프로세스를 불러온다.
8. (또 다른 interrupt가 발생하도록 할 수 있다.)
9. CPU가 user mode로 바꾸며 멈췄던 프로세스를 실행한다.
Process identification
- 프로세스는 process ID와 parent process ID를 가지고 있다.
- pid_t getpid(void): 프로세스 ID를 반환한다.
- pid_t getppid(void): 부모 프로세스 ID를 반환한다.
- pid_t는 unsigned integer type이다.
- User와 group ID
- UNIX process는 real/effective user나 and group IDs를 가진다.
- real user는 프로세스를 생성시킨 유저다.
- effective user는 프로세스를 실행시킬 때 실행되는 권한을 가진 유저이다.
- gid_t getegid(void), uid_t geteuid(void)
- gid_t getgid(void), uid_t getuid(void)
Process state

- 프로세스가 생성이 되면 ready queue로 들어가 ready 상태가 된다. 메모리에 로드가 되었지만 시작은 되지 않았다.
- 프로세스가 선택받으면 running 상태가 된다. 실제 CPU에서 실행되고 있다.
- 실행되는 시간(Quantum)이 지나면 다시 ready상태로 돌아간다.
- running상태에서 Input/Output 요청을 받으면 blocked 상태가 된다. 이 상태일 때는 CPU가 다른 프로세스를 실행시키는 경우가 많다.
- blocked 상태가 해소되면 다시 ready 상태가 된다.
Process Hierachy
프로세스는 계층적 구조를 지닌다.
- 부모와 자식 프로세스
- Process A(parent)는 B(child)라는 자식을 만든다. 만드는 것은 부모이고, 만들어지는 것은 자식이다.
- 루트 프로세스(Root Process)
- Shell Example
- 쉘 또한 하나의 프로세스이며, 명령어를 받아서 실행(반응)하는 프로세스라고 할 수 있다. 명령어에 반응하기 위해 자식 프로세스를 만든다.

System Function for Process
System Function은 대표적으로 4가지가 있다.