일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- icon button
- Copy-on-write
- pintos
- Cow
- scaffold
- flutter
- create
- materialapp
- stack growth
- file
- algorithm
- BFS
- Flutter
- System call
- widget
- vm
- Today
- Total
JunHyeok
[PintOS - Userprog] Fork, Exec, Wait 에 들어가기 앞서... 본문
Fork와 Exec 시스템 호출의 역사와 배경
프로그램 발전 역사
1960년대와 1970년대에 멀티태스킹 운영체제의 개발이 시작되면서, 여러 프로세스가 동시에 실행될 수 있는 개념이 도입되었습니다.
이 시기에 UNIX 운영체제가 개발되었고, UNIX는 프로세스를 효율적으로 관리하기 위해 여러 시스템 호출을 도입했습니다. 이 중 중요한 것이 fork
와 exec
시스템 호출입니다.
fork() 시스템콜
1960년대 초, MIT의 Dennis Ritchie와 Ken Thompson 팀은 Multics 운영체제를 개발하면서 fork() 사용했습니다.
이 시스템콜은 프로세스를 복제하여 새로운 프로세스를 만드는 데 사용되었습니다.
exec() 시스템콜
1969년, Unix 운영체제의 개발자인 AT&T Bell Labs의 Dennis Ritchie 팀은 exec() 시스템콜을 도입했습니다.
이 시스템콜은 기존 프로세스를 새 프로그램으로 바꾸는 데 사용되었습니다.
Fork 시스템 호출의 배경
fork
는 다음과 같은 배경에서 필요하게 되었습니다
- 멀티태스킹 여러 프로세스를 동시에 실행하기 위해서는 새로운 프로세스를 생성할 수 있는 방법이 필요했습니다.
fork
는 간단하게 현재 프로세스를 복사하여 이 문제를 해결했습니다. - 프로세스 격리 각 프로세스는 독립적으로 실행되며, 자신의 메모리 공간을 가집니다.
fork
는 이러한 프로세스 격리를 유지하면서 새로운 프로세스를 생성하는데 효과적입니다. - 간편한 프로세스 생성
fork
는 현재 프로세스의 정확한 복사본을 만들기 때문에, 초기화나 설정 작업이 필요 없습니다. 이는 프로세스를 생성하는데 매우 간편한 방법을 제공합니다.
Exec 시스템 호출의 배경
exec
시스템 호출은 현재 프로세스를 다른 프로그램으로 대체하는 기능을 제공합니다. 즉, 현재 프로세스의 메모리 공간을 새로운 프로그램으로 덮어씌우고 새로운 프로그램을 실행합니다.
- 유연성
exec
를 통해 하나의 프로세스가 다른 프로그램으로 변환될 수 있습니다. 이는 쉘과 같은 프로그램이 다른 프로그램을 실행할 때 유용합니다. - 프로세스 자원 재사용
exec
는 현재 프로세스의 자원을 재사용하여 새로운 프로그램을 실행하므로, 프로세스 생성 오버헤드를 줄일 수 있습니다.
Fork와 Exec의 사용 방식
fork
와 exec
는 종종 함께 사용됩니다. 일반적인 패턴은 fork
로 새로운 프로세스를 생성하고, 자식 프로세스에서 exec
를 호출하여 새로운 프로그램을 실행하는 것입니다. 이는 다음과 같은 이유로 유용합니다:
- 프로세스 분리: 부모 프로세스와 자식 프로세스를 분리하여, 각각 독립적으로 실행될 수 있습니다.
- 초기화와 설정: 부모 프로세스는 자식 프로세스를 초기화하고 설정한 후, 자식 프로세스에서 새로운 프로그램을 실행하도록 할 수 있습니다.
Fork와 Exec의 현재 사용
오늘날에도 fork
와 exec
시스템 호출은 매우 널리 사용됩니다. 특히 UNIX 계열 운영체제(예: Linux, macOS)에서 자주 사용됩니다. 이 시스템 호출들은 다음과 같은 이점이 있습니다.
- 안정성
fork
와exec
는 안정적으로 프로세스를 생성하고 실행할 수 있는 방법을 제공합니다. - 효율성 프로세스를 복제하고 대체하는 작업이 효율적으로 수행됩니다. 특히
fork
는 Copy-On-Write(COW) 기술을 사용하여 메모리 사용을 최적화할 수 있습니다. - 유연성 다양한 상황에서 유연하게 사용할 수 있습니다. 예를 들어, 서버는
fork
를 사용하여 각 클라이언트 요청을 별도의 프로세스로 처리할 수 있습니다. - 호환성 대부분의 UNIX 계열 운영체제에서
fork
와exec
가 표준적으로 제공되므로, 코드의 이식성이 높습니다.
'PintOS' 카테고리의 다른 글
[PintOS - Userprog] Exec (0) | 2024.05.30 |
---|---|
[PintOS - Userprog] Wait (0) | 2024.05.29 |
[PintOS - Userprog] Write (0) | 2024.05.28 |
[PintOS - Userprog] Seek & Tell (0) | 2024.05.28 |
[PintOS - Userprog] Create & Remove (0) | 2024.05.28 |