ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스(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

    댓글

Designed by Tistory.