문맥교환?
먼저 간략하게 PCB를 알고 갑시다.
- 프로세스가 생성되면 같이 생성되는 블록
- 상태, 프로세스 넘버, 명령어, 레지스터가 포함되어 있다.
- Context Switching을 할 때 필요한 정보를 담고 있다.
PCB는 왜 필요한거야?
CPU에서는 프로세스의 상태에 따라 교체작업이 이루어지는데, 이때 앞으로 다시 수행할 대기중인 프로세스에 관한 저장 값을 PCB에 저장해두는 것이다.
- 교체작업
- intterupt가 발생해서 할당받은 프로세스가 waiting상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때
Context Switching이란?
현재 진행하고 있는 프로세스,스레드의 상태를 저장하고 다음 진행할 태스크의 상태 값을 읽어 적용하는 과정을 말합니다.
왜 Context Switching이 필요한가?
예전에 설명했던 시분할 방식에 Context Switching이 사용이 되는데, 하나의 태스크(Task)가 끝날때 까지 다음 태스크(Task)를 기다릴수 밖에 없는 상황에서 사용자는 불편함을 느끼게 된다. 그래서 빠른 속도로 태스크를 바꿔가며 실행하는것이 시분할인데, 빠른 속도로 태스를 바꿔가며 실행하기 위해서는 Context Switching이 필요하다.
Context Switching의 과정
- 태스크의 대부분 정보는 레지스터에 저장되고 PCB(Process Control Block)으로 관리 된다.
- 현재 실행하고 있는 태스크의 PCB 정보를 저장한다.
- 다음 실행할 태스크의 PCB 정보를 읽어 레지스터(Register)에 적재하고 CPU가 이전에 진행했던 과정을 연속으로 수행
Context Switching시 Process와 Thread의 비교
- Prcess CS가 Thread CS보다 비용이 많이 든다.
- 스레드(Thread)는 스택(Stack)영역을 제외한 모든 메모리를 공유하므로 Context Switching 수행시 스택(Stack)영역만 변경하면 되기 때문에 비용이 적게 든다.
예상 질문
Context Switching이란게 뭔가요?
현재 진행중인 프로세스,스레드의 상태를 저장하고 다음 진행할 태스크의 상태 값을 읽어 적용하는 과정을 뜻합니다.
Context Switching이 일어나는 순간은 언제인가요?
프로세스 준비 큐에서 실행으로 갈때, 실행중 인터럽트를 받았을 때, 실행중 입출력 이벤트가 발생했을 때 입니다.
PCB는 어떻게 관리가 될까?
Linked List 방식으로 관리가 됩니다. PCB List Head에 PCB들이 생성될 때마다 붙게 되고, 주소값으로 연결이 이루어져 있는 연결 리스트이기 때문에 삽입 삭제가 용이하게 된다. 즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거가 됩니다.
'CS > 운영체제' 카테고리의 다른 글
교착상태(Dead Lock)란???(feat.기아상태) (0) | 2022.01.17 |
---|---|
시스템 콜(System Call)이 뭐야? (0) | 2022.01.15 |
동기화(Synchronous)와 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2022.01.12 |
Multi Process & Multi Thread ??! (0) | 2022.01.11 |
프로그램(Program) & 프로세스(Process) & 스레드(Thread) (0) | 2022.01.10 |