[TIL] 2022.11.26. [Context switch]
2022. 11. 26. 20:53
프로세서의 상태 전환에 대해 알아보자.
종료 상태 Terminated
- 종료 시그널을 수신했을 때
- 메인 함수에서 리턴했을 때
- exit 함수를 호출했을 때
프로세서의 제어
-> Unix는 C 프로그램을 이용해서 다음과 같은 프로새스 제어 기능을 제공한다.
- process ID를 가져온다
- 프로세스를 만들거나 종료한다
- 자식 프로세스를 제거한다 reaping child processes
- 프로그램의 로딩 및 실행
* Process ID 가져오기
각 프로세스는 프로세스 ID를 갖는다.
pid_t getpid(void)
pid_t getppdi(void)
=> 호출한 프로세스 또는 그 부모 프로세스의 PID 를 리턴
int fork(void)
호출하는 프로세스(부모 프로세스)와 동일한 새 프로세스(자식 프로세스)를 생성
자식 프로세스는 0을 리턴
부모 프로세스는 자식프로세스의 pid를 리턴
Key points :
- 부모와 자식은 동일한 코드를 실행한다.
- fork로부터의 리턴 값으로 부모와 자식을 구분함.
- 부모와 자식은 동일한 상태로 시작하지만, 각각의 사본을 갖는다.
- 출력 파일 식별자도 copy하여 가져간다.
- 각각의 출력문의 실행 순서는 랜덤이다.
exit : 프로세스를 종료하기
void exit (int stauts)
- 종료 상태 status 값을 가지고 종료
- 정상 리턴 시 status 0
- atexit() function은 exit할 때 실행할 함수를 등록한다.
좀비(Zombies)
- 프로세스가 종료되어도 여전히 시스템 자원을 점유한다.
- 운영체제가 관리하는 테이블 구조체들이 있다.
- zombie 종료되었지만, 아직 정리되지 않은 프로세스
프로세스 정리 과정 = reaping procedure
-> 부모가 자신의 종료한 프로세스에 대해 수행
-> 부모는 종료 상태 정보를 넘겨 받는다
-> 커널은 종료된 프로세스를 시스템에서 제거한다
부모가 정리하지 않은 경우
-> init process가 정리한다
-> 장기간 동작하는 프로세스들은 자신의 좀비 자식들을 정리해야 한다.
※ 해당 글은 충남대학교 컴퓨터융합학부 김형신 교수님의 강의 자료를 바탕으로 만들어진 것입니다. ※
문제가 될 시 삭제하겠습니다.
'Today I Learned(TIL)' 카테고리의 다른 글
[TIL] 2022.11.28. [Computer Architecture] (0) | 2022.11.28 |
---|---|
[TIL] 2022.11.27. [Single Datapath] (0) | 2022.11.27 |
[TIL] 2022.11.27. [Computer Architecture] (1) | 2022.11.27 |
[TIL] 2022.11.25. [System Programming] (0) | 2022.11.25 |
[TIL] 2022.11.21. [pipelining] (0) | 2022.11.22 |