CS/Operating System
Chapter 03. 프로세스와 스레드
오코드
2021. 10. 24. 23:04
Chapter 03. 프로세스와 스레드
01 프로세스의 개념과 상태 변환
1 프로세스의 개념
가장 일반적인 프로세스 정의는 '실행 중인 프로그램 '
프로그램이 실행 중이라는 의미는? → 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 되었다는 것인데, 이는 자신만의 메모리 영역(주소 공간)이 있음을 의미
그림1 프로그램과 프로세스 : 프로그램이 메모리로 적재되면 프로세스가 됨
프로그램 : 컴파일한 코드와 초기화 전역변수, 문자열과 문자열 상수 등 정적 데이터를 포함하는 정적인 개체
프로세스 : 아래 그림과 같이 메모리 구조를 이루고, PC(프로그램 카운터)나 레지스터처럼 현재 어떤 자원을 사용하는지 관련 정보가 들어 있는 동적인 개체
프로세스 메모리 구조
스택
- 스택은 데이터를 일시적으로 저장하는 영역
- 지역변수에 사용하고, 변수가 범위 밖으로 이동하면 공간 해제
- 호출한 함수의 반환 주소, 반환 값, 매개변수 등에 사용
힙
- 코드 영역과는 별도로 유지되는 자유 영역
- 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 활용
데이터
- 프로그램의 가상 주소 공간
- 전역변수 나 정적변수를 저장하거나 할당하고 실행하기 전에 초기화한다.
코드
- 실행 명령을 포함하는 메모리
프로세스의 종류
시스템(커널) 프로세스 : 모든 시스템 메모리와 프로세서의 명령에 엑세스 할 수 있는 프로세스이다.
프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(운영체제) 영역을 침범하지 못하게 감시하고, 사용자 프로세스를 생성하는 기능을 한다.
사용자 프로세스 : 사용자 코드를 수행하는 프로세스이다.
2 프로세스의 상태 변환와 상태 정보
2.1 프로세스의 상태 변화
실행상태와 비실행 상태로 구분
- 운영체제가 프로세스를 생성하면 비실행 상태로 초기화해서 실행을 기다린다.
- 실행중인 프로세스를 종료하거나 인터럽트가 발생하면 비실행 프로세스 중에서 선택한 프로세스를 실행 상태로 바꾼다(디스패치)
- 이때 인터럽트된 프로세스는 비실행 상태가 된다.
- 실행 중인 프로세스는 새로운 자원을 할당받으려고 프로세스를 기다리는 비실행 상태로 바뀌기도 한다.