-
프로세스(Process)Computer Engineering/운영체제 2019. 7. 13. 17:12
안녕하세요 dely입니다:)
오늘은 운영체제 프로세스에 대해 정리해보려고 합니다.
프로세스는 현재 컴퓨터에서 실행하고 있는 프로그램이라고 간단히 표현할 수 있습니다.
과거 한 대의 컴퓨터가 하나의 작업만 할 수 있던 때에는 필요없었지만
현대의 한 대의 컴퓨터에서 여러 작업을 수행하는 시분할 시스템에서 필요한 개념이라고 합니다.
왜냐하면 컴퓨터가 일을 하는 데에는 메모리, CPU 같은 여러 자원들이 필요한데,
한 대의 컴퓨터에서 여러 작업(task)들이 이 자원들을 서로 자기가 먼저 쓰겠다고 하는 상황이 일어나기 때문입니다.
- 프로세스??
프로세스에는 사실 우리가 흔히 생각하는 수동적인 프로그램이라기보단
다음에 실행할 명령어를 지정하는 프로그램 카운터(PC)와 연관된 자원의 집합을 가진 능동적인 존재(?)라고 할 수 있습니다.
이 자원의 집합은 현재 활동의 내용(프로그램 카운터의 값, 처리기 레지스터의 내용)과
임시적인 자료 스택(메서드 매개 변수, 복귀 주소, 로컬 변수 등), 전역변수를 저장해놓는 데이터 섹션을 말합니다.
- 프로세스 제어 블록(PCB: Process Control Block)
운영체제는 프로세스의 실행을 제어하는 역할을 수행하기 때문에 프로세스와 연관된 여러 정보들을 알고 있게 됩니다.
이 정보들은 프로세스 상태, 프로그램 카운터, CPU 레지스터들, CPU 스케쥴링, 메모리 관리, 회계 정보, 입/출력 상태 정보 등..과
관련된 정보로 프로세스 제어 블록(PCB: Process Control Block)이라고 합니다.
- 프로세스의 상태
그 중의 하나인 프로세스의 상태는
생성(new), 실행(running), 대기(waiting), 준비완료(ready), 종료(terminated)로 구분할 수 있습니다.
시스템을 떠날 때까지 프로세스는 이 상태를 계속 반복하게 됩니다.
이러한 상태 변환을 위해 운영체제는 작업 스케쥴러와 프로세스 스케쥴러 등의 프로세서 스케쥴러를 이용합니다.
- 프로세스의 상태 변환
프로세스의 상태 변환 할 때의 표시들도 정리해보면 다음과 같습니다.
준비완료 -> 실행 : dispatch(프로세서명)
실행 -> 준비완료 : timerunout(프로세스명)
실행 -> 대기 : block(프로세스명)
대기 -> 준비완료 : wakeup(프로세스명)
- 문맥교환(Context Switching)
현재 실행중인 프로세스가 입출력을 받거나 클럭으로 인해 인터럽트 되면
다른 준비완료 된 프로세스로 제어를 넘겨주게 되는데 이를 문맥교환(Context Switching)이라고 합니다.
준비완료 -> 실행 상태 변환이거나 실행 -> 준비완료, 실행 -> 대기 상태 변환일 때 발생하게 되는 것입니다.
문맥교환이 진행될 동안에는 시스템이 아무런 일을 하지 못하기 때문에 순수한 오버헤드라고 할 수 있습니다.
이 부분은 하드웨어의 성능에 영향을 많이 받게 되는데,
이 문맥교환을 피하기 위해 새로운 구조인 스레드를 사용하게 됩니다.
반응형'Computer Engineering > 운영체제' 카테고리의 다른 글
메모리 관리(Memory Management) (0) 2019.08.18 교착 상태(Deadlocks) (0) 2019.08.17 프로세스 동기화(Process Synchronization) (0) 2019.08.16 CPU 스케쥴링(CPU Scheduling) (0) 2019.08.08 스레드(Threads) (0) 2019.07.19