프로세스 개념
• 컴퓨터 프로그램이 메모리 상에서 실행중인 작업
◦ 디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 된다.
• 각 프로세스는 아래와 같은 메모리 영역을 할당받는다
◦ 텍스트(코드) 영역 : 컴파일된 실행 코드가 저장되는 영역
◦ 데이터 영역 : 전역 변수 및 초기화된 데이터가 저장되는 영역
◦ 힙 영역 : 프로그램 실행 중에 동적으로 할당되는 데이터가 저장되는 영역
◦ 스택 영역 : 임시 데이터(매개변수, 복귀 주소, 지역 변수 등)가 저장되는 영역
프로세스 상태
• New : 프로세스가 생성되는 중이다.
• Running : CPU에서 프로세스가 수행되고 있다.
• Waiting : 프로세스가 이벤트가 일어나기를 기다리고 있다.
◦ Ready 와 달리 입출력 완료 또는 신호의 수신을 기다리는 것
• Ready : 프로세스가 CPU에 할당되기를 기다리고 있다.
◦ 다른 프로세스가 수행되고 있기 때문에, 실행 준비가 다 된 상태에서 본인 차례가 오기를 기다리는 상태
• Terminated : 프로세스의 실행이 종료되었다.
• Suspended : 메모리를 강제로 뺏긴 상태. 특정한 이유로 프로세스의 수행이 정지된 상태를 의미한다.
외부에서 다시 재개시키지 않는 이상 다시 활성화 될 수 없다.
◦ 중기 스케줄러에 의해 디스크로 스왑 아웃된 프로세스가 대표적인 suspendended 상태
- suspended ready : 준비 상태에 있던 프로세스가 디스크로 스왑아웃
- suspended blocked : 봉쇄 상태에 있던 프로세스가 디스크로 스왑아웃
◦ blocked 와 suspended의 차이
- blocked : 잠시 중지되어 있다가(blocked) 끝나면 다시 ready 상태로 돌아옴
- suspended : 잠시 중지되어 있다가(suspended) 누군가가 재개시켜줘야 다시 ready 상태로 돌아옴
프로세스 제어 블록(PCB)
• 프로세스 관리에 필요한 정보를 포함하는 운영체제 커널의 자료구조
◦ 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.
• 프로세스 제어 블록이 포함하는 정보
◦ 프로세스 상태
◦ 프로세스 계정 정보
- CPU 사용 시간, 시간 제한, 프로세스 ID 등을 포함
◦ 프로그램 카운터
- 프로세스가 실행할 명령어의 주소
◦ CPU 레지스터 및 일반 레지스터
◦ CPU 스케줄링 정보
- 프로세스 우선 순위, 스케줄 큐 포인터, 스케줄 매개변수 등
◦ 메모리 관리 정보
- 운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보
- 페이지 테이블, 세그먼트 테이블, 해당 프로세스의 주소 공간 등
◦ 입출력 상태 정보
- 프로세스에 할당된 입출력 장치 및 열린 파일 목록
◦ 포인터
- 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터,
할당된 자원에 대한 포인터 정보 등
Context Switching
• 현 프로세스의 상태를 PCB에 저장하고(state save) 새 프로세스의 PCB를 불러오는(state restore) 과정을 Context Switching
이라 부른다.
◦ 프로세스는 CPU 를 점유해 작업을 처리하다 상태가 전이되면 CPU 를 반환해야 하는데, 이때 진행하던 작업들을 저장해두지 않으면
다음에 자신의 차례가 왔을 때 어떠한 작업을 수행해야하는지 알 수 없다. 따라서 프로세스는 CPU 가 처리하던 작업 내용을 자신의
PCB 에 저장하고, 다음에 자신의 차례가 왔을 때 PCB 로 부터 해당 정보들을 CPU 에 전달해 작업을 재개할 수 있다.
◦ Context Switching이 이루어지는 동안 CPU는 다른 작업을 할 수 없다.
- 즉 Context Switching에 소요되는 시간은 순수한 Overhead 이다.
참고자료
'CS Knowledge > 운영체제' 카테고리의 다른 글
[OS] CPU 스케줄링 개념 (0) | 2022.09.16 |
---|---|
[OS] 스레드와 멀티스레드 (0) | 2022.09.08 |
[OS] 운영체제 구조 (0) | 2022.09.07 |
[OS] 운영체제 개요 (0) | 2022.09.07 |
[OS] 운영체제와 프로세스 & 스레드 (0) | 2022.06.26 |