728x90
초기 상태: 쉘이 사용자의 입력을 wait하고 있음
- 사용자가 "ls"를 입력
- 쉘 프로세스는 fork로 자식 프로세스를 만든다.(아직 CPU는 부모 프로세스에게 있음)
- 쉘 프로세스는 나머지 명령어를 수행하고 wait를 호출한다.(waiting queue, sleeping queue에 간다)
- context_switching이 실행되고 자식 프로세스에게 CPU가 주어진다.
- 자식 프로세스는 exec를 호출해 disk에서 1에서 받은 command line에 해당하는 실행가능파일을 load해 자신의 이미지를 덮어쓴다.
(원래는 부모 프로세스와 같은 이미지였으나 새로운 이미지가 덮어써진다.) - exec 덕분에 자식은 새로 덮어쓴 이미지의 main함수부터 새출발한다.
- 자식은 main 루틴을 수행하고, exit을 호출한다.
- exit으로 인해 context switching이 발생함과 동시에 잠들었던 쉘이 다시 깨어난다.
728x90
'📂 Engineering > 🔹 CS & OS' 카테고리의 다른 글
| kernel_of_linux (0) | 2022.05.30 |
|---|---|
| PCB(Process Control Block) (0) | 2022.05.30 |
| [python] 뮤터블과 이뮤터블 변수 - 왜 튜플과 문자열은 값을 바꿀 수 없을까 (0) | 2022.04.02 |
| [알고리즘] 이진탐색에서 한 나의 실수 (0) | 2022.02.19 |
| itertools 참고용 (0) | 2022.01.06 |
댓글