728x90
반응형

1. Process

process는 operating-system에서 실행중인 프로그램을 의미한다.

process는 서로서로 CPU를 공유한다.

- 한번에 하나의 프로세스가 실행될 수 있다. (Single Core라고 가정한 경우)

- CPU는 빠르게 process 사이를 왔다갔다 한다. (Time Sharing 알고리즘에 따라서 Context Switch를 수행한다)

Process가 OS와 소통하는 것을 system call 이라고 한다.

Process는 interrupt가 일어날 수 있다 (I/O device interrupt, system call)

- OS의 리소스를 사용할 때, SystemCall 함수 호출, OS가 대신 리소스를 사용하고 결과를 전달해 준다.

Process는 Process control block(PCB) 또는 process descriptor이라는 data structure에 정보가 담긴다.

 

2. Context Switch

현재 상태 정보를 저장하고 다음 실행할 process를 load한다.

현재 진행 중인 프로세스의 충분한 정보를 저장해서 아무일 없었던것처럼 재개되어야한다.

context switch는 interrupt에 의해 일어난다. interrupt의 종류는 다음과 같다

(Interrupt가 생기면 context switch가 발생한다)

- software interrupt (system call)

- device interrupt

- timer interrupt (quantum expired) : Process가 실행이 될 때 scheduling algorithm 종류 중에 OS가 process를 선택하고 나서 정해진 시간이 끝났을 때 다 됐으면 process를 ready queue로 쫓아내고 timer interrupt가 일어난다. 

 

3. Process identification

Process는 process ID와 parent process ID를 가지고 있다. (여기서 pid_t는 process ID type 변수이다)

- pid_t getpid(void) : process ID를 반환한다. 

- pid_t getppid(void) : 부모 process ID를 반환한다.

- pid_t 는 unsigned Integer type이다.

- parent process가 종료되면, 자식 프로세스는 system process에게 선택받는다.

User and group ID

- 시스템 관리자는 user account가 생성될 때, userID 와 groupID를 준다.

- UNIX process는 real/effective user 와 group ID를 가지고 각 프로세스에게 권한을 준다. 

(userID는 Linux에서 2가지 개념이 있다. real userID와 effective userID)

 

4. Process State : COMMAND는 PS이다.

 

5. Process Hierachy

Parent와 Child Processes : root를 제외하고는 모두 부모 process를 가진다. 

Root process : 모든 process의 조상, 시스템 boot되면 첫번째로 생성되는 process

Shell process는 리눅스에서 터미널을 실행시키면 생성된다. Shell process가 사용자가 입력한 것을 실행하기 위해 새로운 자식 process를 만들어서 자식 process가 실행시킨다.

Shell Example : Shell creates a new proces when it receives a command

 

6. System Function for process

fork : Clone the calling process

exec : make calling process run a different program

exit : terminate calling process

wait : wait for child process to terminate

 

 

728x90
반응형

'CS > 시스템 프로그래밍' 카테고리의 다른 글

Times and Timers  (0) 2021.11.16
UNIX Special Files  (0) 2021.11.03
Files and Directories  (0) 2021.10.15
UNIX I/O  (0) 2021.10.15
System Call 함수 [Fork() 함수, wait() 함수]  (0) 2021.10.04

+ Recent posts