프로세스
2023. 9. 16. 03:55ㆍ전공/운영체제
프로세스
프로세스란?
- 프로그램에 대한 실행 인스턴스(running instance)
- 실행 가능 파일(executable file)이 메모리에 적재(load)될 때 프로그램은 프로세스가 됨
멀티 프로세싱
- 제한된 컴퓨팅 자원 하에 다수의 프로세스가 실행
- CPU utilization(CPU이용률), User interaction(렉이 없는 즉각적인 서비스), Processing speed(처리 속도)
프로세스 적재
프로세스의 메모리 할당
- 텍스트(text) : 프로세스 인스트럭션 코드
- 프로세스를 처리할 수 있도록 하는 명령어들이 저장된 영역
- 데이터(data) : 프로세스 데이터, 정적/전역 변수들
- 프로그래밍이 프로세스로 시작될 때 할당되고 프로그램이 종료되면 할당 해제됨
- 힙(heap) : 동적 메모리 할당(예: malloc())
- 프로그램이 컴파일 된 후 런타임 시점에 값에 대한 저장이 이뤄짐
- 메모리 주소의 낮은값에서 높은 값 방향으로 할당됨
- 스택(stack) : 지역 변수, 함수 파라미터
- 메모리 주소의 높은값에서 낮은 값 방향으로 할당됨
프로세스 상태
프로세스 5가지 상태
- New : 프로세스가 생성되고 있음
- storatge에 저장된 프로그램이 메모리에 적재되면서 프로세스로 운용되기 시작한 시점 또는 상태
- Running : 프로세스의 인스트럭션이 실행되고 있음
- Ready 상태에서 scheduler dispatch가 처리되면 프로세스가 Running상태가 된다.
- CPU 자원을 할당 받아 프로세스가 처리되고 있는 상태
- Running 상태에서 인터럽트가 발생하면 다시 Ready상태가 됨
- Waiting : 프로세스는 특정 이벤트가 발생되기를 기다리고 있음
- Running상태에서 입출력이나 별도의 이벤트가 발생했을 때 Waiting상태가 됨
- 입출력이나 이벤트 처리가 완료되면 다시 CPU자원을 할당받아야 하므로 Ready상태가 되었다가 scheduler dispatch 처리에 의해 Running상태가 됨
- Ready : 프로세스는 CPU에게 할당되기를 기다리고 있음
- New 상태가 끝나고 프로세스가 대기 열에 삽입되면 → queue에 입력되면 Ready상태
- Terminated : 프로세스는 실행 종료됨
- 프로세스가 모든 작업을 끝내면 Terminated상태가 되며 메모리로부터 할당이 해제됨
프로세스 생성 및 종료
프로세스 생성(Process creation)
- 부모 프로세스(parent process)
- 프로세스를 생성하는 프로세스
- 자식 프로세스(child process)
- 부모 프로세스에 의해 생성되는 프로세스
- systemd: 부팅시, 처음으로 생성되는 루트 프로세스
- pid (process identifier) : 프로세스 구별용 변수
프로세스 종료(process termination)
- 프로세스 종료 시 운영체제는 해당 프로세스에게 할당된 모든 자원을 해재함
프로세스 명령어
fork()
- 부모 프로세스를 복제하여 자식 프로세스를 생성하기 위한 시스템 콜(system call)
exec()
- 자식 프로세스의 메모리 공간을 새로운 프로그램으로 교체
wait()
- 자식 프로세스가 종료(terminate)될 때까지 부모 프로세스를 대기
exit()
- 프로세스 소스로 종료하기 위한 시스템 콜
- 프로세스에 할당된 CPU자원이 운영체제에 의해 해제됨
abort()
- 부모 프로세스에 의해 자식 프로세스를 종료하는 시스템 콜
- 자식 프로세스가 CPU자원을 지나치게 사용하는 경우
- 부모프로세스 자신이 종료(exit())되는 경우
프로세스 명령어 사용 예제
- pid_t : 프로세스를 식별하기 위한 별도의 정수 타입(부모, 자식 식별)
- (pid = fork()) < 0이라면 프로세스 생성 중 에러 발생
- (pid = fork()) == 0 이라면 자식 프로세스
- (pid = fork()) >0 이라면 부모 프로세스
'전공 > 운영체제' 카테고리의 다른 글
CPU 스케쥴링 (0) | 2023.09.16 |
---|---|
저수준에서의 프로세스 관리 (0) | 2023.09.16 |
리눅스 (0) | 2023.09.16 |
컴퓨터 시스템과 운영체제 (0) | 2023.09.16 |
운영체제의 개요 및 종류 (0) | 2023.09.16 |