인프런 커뮤니티 질문&답변

김태선 Kim님의 프로필 이미지
김태선 Kim

작성한 질문수

운영체제 공룡책 강의

03. 프로세스의 이해: Chapter 3. Processes (Part 1)

fork()의 개념에 대해

작성

·

215

0

안녕하세요, 교수님

먼저 좋은 강의 제공해 주셔서 정말 감사하다는 말씀 드립니다.

Q1. 새로운 프로그램을 process에 올리는 것도 fork()라는 시스템 콜에 의해 진행 되는 것인가요?

예를 들어,

1. 인프런 영상을 플레이 중

2. 동시에 메모장에 오늘 배운 내용을 정리

여기서 2번이 실행 되기 위해서 시스템 내부적으로는 fork()라는 시스템콜이 있고, 복제된 프로세스위에 메모장과 관련된 데이터, 코드 등등이 덮어 써지게 되는 건가요?

Q2. 위의 말이 맞다면 최초의 복제 되상이 되는 parent는 무엇인가요?

답변 2

1

주니온님의 프로필 이미지
주니온
지식공유자

Q1 질문: 맞습니다.

fork() 시스템 콜은 리눅스 기준으로 질문한 것과 같이 동작합니다.

운영체제 커널이 먼저 fork()를 하고, 

fork()를 한 프로세스 영역에 실행을 요청한 프로세스의 코드와 데이터 영역을 덮어 쓰는 것이죠.

Q2 질문:

fork()를 할 때는 자기 자신을 복제합니다.

메모장을 실행했을 때 fork()를 호출하는 프로세스를 복제하겠지요?

메모장 실행을 요청하는 것은 GUI의 마우스 클릭을 하겠지만,

이것은 커맨드창에서 memo.exe를 입력한 것과 동일합니다.

따라서, 리눅스라면 쉘 프로세스(sh, bash, zsh 등)가 parent 프로세스가 되어

메모장을 위한 child process를 생성하는 것이라 보면 됩니다.

0

김태선 Kim님의 프로필 이미지
김태선 Kim
질문자

크흙 감사합니다.ㅎㅎ 재미있네요!!!ㅎㅎ

김태선 Kim님의 프로필 이미지
김태선 Kim

작성한 질문수

질문하기