320x100
320x100

프로세스와 CPU

프로세스 문맥교환 (Context switch)

- 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하기 위해

  기존 프로세스의 상태(문맥)을 PCB에 보관하고 새로운 프로세스의 상태(문맥)을 CPU에 적재하는 작업

 : 인터럽트 혹은 프로세스에 할당된 사용시간을 소진 했을때 발생

 

 

오버헤드

- 문맥교환 중 다른 작업을 할 수 없는 시간

: 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정

:  PCB에 레지스터 정보를 저장 

  CPU내 레지스터에 다음 프로세스의 정보를 적재

 

 

 

문맥교환시 PCB에 저장되는 정보

- 프로그램 카운터 : 프로세스가 어디까지 수행되었는지

- 프로세스 상태 정보

- CPU 사용정보 

 

 

 

문맥교환 절차

- 인터럽트 / 시스템 호출

 : 운영체제에서 프로세스 스케줄러에 의해 인터럽트 발생

 

- 커널 모드 전환

 : 프로세스 실행모드를 사용자모드에서 커널모드로 전환

 

- 현재 프로세스 상태 PCB에 저장

 : 기존 실행되는 프로세스 정보를 PCB에 저장

 

- 다음 실행 프로세스 로드 

 : PCB에 있는 다음 실행 프로세스 상태 정보 복구 

 

- 사용자 모드 전환

 : 프로세스 실행모드를 커널모드에서 사용자모드로 전환 

출처 : https://blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221356479397&parentCategoryNo=&categoryNo=62&viewDate=&isShowPopularPosts=false&from=postView

 

 

문맥교환 중 발생하는 cost

- CPU내 Cache 초기화

- MemoryMapping 초기화

- 메모리 접근을 위한 커널 실행

 

=> 잦은 Context Switching는 성능저하 

=> 오버헤드 해결방안

    ㆍ프로그램 다중화 하향 (문맥 교환 빈도 감소)

    ㆍ스레드 사용

    ㆍ스택 포인터 활용 (스택을 이용할 경우에만)

 

 

 

문맥교환이 필요한 상황

- dispatch 

 : Queue 우선 프로세스로 CPU할당 받아 실행 상태로 전이 (준비 -> 실행)

 

- Timeout 

 : CPU할당시간 만료 (실행 -> 준비)

 

- I/O

 : 입출력 작업이 필요하여 작업 완료시 까지 대기 상태로 전이 (실행 -> 대기)

 

- System Call

 : 또 다른 서비스 호출이 필요한 경우 대기상태로 전이 (실행 -> 대기)

 

출처 : http://blog.skby.net/%EB%AC%B8%EB%A7%A5%EA%B5%90%ED%99%98-context-switching/

 

 

300x250
728x90

'Computer Science > OS' 카테고리의 다른 글

CPU의 구조와 명령어 수행 과정  (0) 2021.02.05
프로세스와 운영체제  (0) 2021.02.03
스레드  (0) 2021.02.03
프로세스와 메모리  (0) 2021.02.03
프로세스  (0) 2021.01.19