728x90
반응형
SMALL
1. 프로세스의 구조
코드 영역
- 프로그래머가 작성한 프로그램은 코드 영역에 탑재되며 탑재된 코드는 읽기 전용으로 처리된다.
- 자기 자신을 수정하는 프로그램은 존재하지 않기 때문이다.데이터 영역
- 변수나 파일 등의 각종 데이터를 모아놓은 곳이다.
- 본문에 사용되는 데이터가 저장되어 있다.
- 상수로 선언된 변수는 읽기 전용이지만, 대부분의 변수는 읽기와 쓰기가 가능하다.스택 영역
- 운영체제가 프로그램을 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳이다.
- 프로세스 내에서 함수를 호추랗면 함수를 수행하고 원래 프로그램으로 되돌아올 위치를 이영역에 저장한다.
- 스택 영역은 운영체제가 사용자의 프로세스를 작동하기 위해 유지하는 영역이므로 사용자에게 보이지 않는다.
2. 프로세스의 생성과 복사
fork()
- fork()를 호출하면 실행 중인 프로세스와 똑같은 프로세스가 하나 더 만들어진다.
- 예를 들어, 구글 창을 ctrl + N 을 눌러 같은 프로세스가 하나 더 만들어지는 원리이다.
- 이 때 실행하던 프로세스는 부모 프로세스, 새로 생긴 프로세스는 자식 프로세스로서 부모 - 자식 관계가 된다.
이 때 프로세스 구분자(PID)가 바뀐다. 메모리의 위치가 다르므로 메모리 관련 정보가 바뀐다.
fork()의 장점 - 프로세스의 생성 속도가 빠르다.
- 추가 작업 없이 자원을 상속할 수 있다.
- 시스템 관리를 효율적으로 할 수 있다.
exec()
- 기존의 프로세스를 새로운 프로세스로 전환하는 함수이다.
- 프로세스는 그대로 둔 채 내용만 바꾸는 시스템 호출이다.
- exec() 시스템 호출을 하면 현재의 프로세스가 완전히 다른 프로세스로 전환된다.
이미 만들어진 프로세스의 구조를 재활용하는 것이다.
exec()의 목적 - 프로세스의 구조체를 재활용하기 위함이다.
- 새로운 프로세스를 만들려면 프로세스 제어 블록을 만들고 메모리의 자리를 확보하는 과정이 필요하다. 또한 프로세스를 종료한 후 사용한 메모리를 청소하기 위해 상위 프로세스와 부모-자식 관계를 만들어야 한다. 이 때 exec() 시스템 호출을 사용하면 이미 만들어진 프로세스 제어 블록, 메모리 영역, 부모-자식 관계를 그대로 사용할 수 있어 편리하다.
반응형
SMALL
'운영체제' 카테고리의 다른 글
프로세스 상태가 PCB와 문맥 교환에 미치는 영향 (0) | 2024.12.10 |
---|---|
프로세스 제어 블록과 문맥 교환 (0) | 2024.12.10 |
가상 메모리(Virtual Memory)의 개념과 필요성 (0) | 2024.10.26 |
컨텍스트 스위칭(Context Switching)의 정의와 비용 (1) | 2024.10.26 |
메모리 관리 기법(예: 페이징, 세그멘테이션) (1) | 2024.10.26 |