Context Switching


  • Context Switching이란?
    - 현재 수행중인 Process의 Context state를 저장하고 다음 수행 될 Process의 Context state를 불러오는 작업

  • Context Saving
    - Context Swithcing이 일어날 경우 현재 Process의 Context를 저장하는 작업

  • Context 종류 및 Saving유무
    (Context별 설명은 http://winwoo.tistory.com/16 'Program State' 참고)
    - Memory Context : 필요한 Data만 Saving
    - CPU Register Context : 반드시 모든 Data Saving
        -> saving 장소 : 일반적으로 한단계 아래의 저장장치로 데이터를
                          대피시키기 때문에 CPU Register는 Main Memory로 대피
    - Kernel Context : Saving 필요 없음

  • Interrupt Service Routine이 발생 했을 때
     ( Context Switching 발생 -> HW가 실행)
    다음과 같은 순서로 Stack에 저장
    1. Interrupt가 발생하기 전 PSW 저장
    2. Interrupt가 끝나고 돌아올 주소 저장
        - 돌아올 주소는 HW가 PC(Program Count)에서 가져옴


  • 초기 Process 생성 시 Stack 초기화


- Context Switching Mechanism이 동작하기 위해선 한번이라도 Context Switching이 일어나야 된다. 하지만 Process가 처음 생성될 경우 임의의 Stack을 만들어 준다.



'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Process Concept  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

Process Concept


  • Process : OS에서 프로그램을 수행시키는 기본 주체

- Runtime System의 수행 주체

- CPU나 다른 자원을 할당 받는 주체

- Process는 OS에서 가장 중요한 단위


  • Decomposition

- 복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론


  • Program과 Process의 차이

- Program : 저장매체에 저장된 수동적인 Code Sequence ( 수동적 )

- Process : Program을 실행할 때 일어나는 일 ( 능동적 )

(실행 시 메모리 할당 및 CPU할당 등 다양한 일을 포함)


  • Program State
    - 무언가 Program이 실행될 때 모든 Data를 말한다.
        1. Memory ( Memory Context 
            - Code : 기계어
            - Data : Program 전역 변수
            - Stack : Program 지역 변수
            - Heap : Program 동적 메모리 공간
        2. CPU ( H/W Context )
            - Register value
        3. Per - Process Kernel Info ( System Context )

  • Execution Stream
    - Process가 지금까지 수행한 모든 명령어들의 순서

  • Process 정리
    수행중인 Program -> State 필요 -> State 위에 Thread of Control
    또는 excution Stream 존재

  • Multi Programming
    - 여러개의 Active한 Process가 Memory에 올라가 있는 경우

  • Swapping ( Main Memory의 공간이 작을 때 사용 )
    - 메모리 부족문제를 해결하기 위해 CPU를 사용하지 않는 일부 Process의 데이터를 Memory에서 다른 저장 장치로 옮기고 CPU를 사용할 Process의 데이터를 Memory에 Load 한다.

  • Process Control Block (PCB)
    - OS가 가지고 있는 Process의 정보

  • Process Table
    - 여러개의 PCB를 Array로 관리

  • State Transition
    Process Life Cycle : Process가 생성되었을 때 부터 종료될 때 까지 발생하는 일련의 상태 변화

- Ready State : Active한 Process가 CPU할당을 받지 못한 상태 

(Queue를 통해 관리한다)
*Ready Queue : Ready 상태의 Process들을 관리하기 위한 Queue형태의 자료구조 -> 일반적으로 PCB들을 Linked List로 구현

- Waiting State : 여러개의 Process가 Waiting 상태일 수 있다. 단, Process마다 Waiting 이유가 다를 수 있기 때문에 OS는 Waiting 이유에 따라 별도의 Queue를 통해  Process들을 관리 한다.


*본 자료는 서울대학교 홍성수 교수님의 '운영체제' 수업을 바탕으로 개인적으로 정리하여 올립니다. 관련 이미지 자료는 홍성수 교수님 수업 PPT자료가 출처임을 알립니다. 문제 시 말씀해주시면 삭제 조치 하겠습니다. 감사합니다.

'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

+ Recent posts