본문 바로가기
🌱 Computer Science/OS

[OS] 컨택스트 스위칭(Context Switching) 개념정리

by 카프리썬_ 2020. 5. 10.
728x90

프로그램 vs 프로세스 vs 스레드 개념정리 보고오기

 

프로그램 vs 프로세스 vs 스레드

스레드와 프로세스 차이점 보러가기 스레드 vs 프로세스 차이점(+멀티스레드/멀티프로세스) 정리. 프로세스는 실행되고 있는 하나의 프로그램이고, 스레드는 프로세스안에서 처리하고 있는 하��

pearlluck.tistory.com

프로세스 vs 스레드 개념정리 보고오기

 

스레드 vs 프로세스 차이점(+멀티스레드/멀티프로세스)

정리. 프로세스는 실행되고 있는 하나의 프로그램이고, 스레드는 프로세스안에서 처리하고 있는 하나의 작업단위 프로세스는 독립된 자원을 할당받아 사용하고, 스레드는 프로세스 안에서 자원을 공유하면서 실행..

pearlluck.tistory.com

 

1.Context란?
CPU
가 프로세스를 실행하기 위해서 필요한 프로세스에 대한 정보
이 프로세스의 Context를 커널내부에 존재하는 PCB(Process Control Block)에 저장
즉, CPU가 프로세스를 실행하기 위해서 PCB에서 context를 읽어서 레지스터값 변경

 

*PCB 구조

프로세스 식별자(Process ID)  
프로세스 상태(Process State) 생성(create), 준비(ready), 실행 (running), 대기(waiting), 완료(terminated) 
프로그램 계수기(Program Counter) 이 프로세스가 다음에 실행할 명령어의 주소
사용 중인 레지스터 정보  
CPU 스케줄링 정보 우선 순위, 최종 실행시각, CPU 점유시간 등
메모리 관리 정보(Memory limits) 사용 가능한 메모리 공간 정보
입출력 상태 정보 프로세스에 할당된 입출력장치 목록, 사용 파일 목록 등
포인터 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보

 

 

2. context-switching(문맥교환)이란?
CPU가 실행하는 프로세스가 교체될 때 CPU에서 관리하는 Context가 교체되는 것
인터럽트가 발생하면, 프로세스를 종료하고 다음 프로세스를 수행
이때 종료될 프로세스의 context를 PCB에 업데이트하고, 실행할 다음 프로세스의 context를 메모리에 올려서 CPU가 실행할 수 있도록 해 줌.
하지만, Context Switching일 때 해당 CPU는 아무 일을 할 수 없어서 오버헤드발생(성능저하)

 

*context-switching이 발생하는 인터럽트

1. 입출력 요청이 왔을떄

2. cpu사용시간이 만료되었을때

3. 자식프로세스를 만들때

4. 인터럽트 처리를 기다릴때

 

3. 스케쥴러
context-switching을 하는 주체
인터럽트가 발생했을 때 수행할 다음 프로세스를 결정함
사실은 하나씩 처리하는데 시분할(Time-slicing)을 통해서 동시에 수행하는 것처럼 보임

 

다음 프로세스를 결정하는 우선순위 알고리즘(CPU스케쥴링)

 

*CPU 스케줄링 : 메모리에 Ready상태의 프로세스 중 하나를 선택해서 CPU자원할당

 

1) 비선점 스케줄링 : 이미 할당된 CPU를 다른 프로세스가 강제로 뺏아서 할당할 수 없음

FCFS(First Come First Service)  가장 먼저 들어온 순서대로 CPU를 할당
SJF(Shortest Job First) 실행시간이 가장 짧은 프로세스에 먼저 CPU를 할당
HRN(Highest Response ratio)  우선순위 계산값 = (대기시간 + 서비스시간 / 서비스시간) 이 높은 것부터 CPU 할당
기한부(DeadLine) 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법
우선순위(Priority)  각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당

2) 선점 스케줄링 : 우선순위가 높은 프로세스를 CPU가 강제로 뺏아서 할당할 수 있음

RR(Round Robin) 대기 큐를 사용하여 먼저 대기한 작업이 먼저 CPU를 사용
SRT(Shortest Remaining Time) 프로세스의 실행시간이 가장 짧은 프로세스에게 CPU를 할당
선점 우선순위 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당
다단계 큐  그룹에 따라 각기 다른 준비상태 큐를 사용
다단계 피드백 큐 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동 가능

 

3.멀티프로세스
context-switching에 의해서 멀티프로세스 가능
하나의 프로그램을 여러 개의 프로세스로 구성해서 CPU가 일을 처리함
CPU는 하나인데 여러 프로세스가 동시에 실행되는 것 처럼 보임

<비유>
TV
보면서전화하면서컴퓨터를 동시에 하지만 실제로 뇌(CPU)에서는 하나씩 처리하듯이

 

context-switching이 자주 일어나면 부하가 발생함
메모리와 레지스터 사이의 데이터이동으로 IO가 자주 발생하기 때문에
context-switching
을 하면서 PCB를 저장하고 가져올 때 CPU가 아무런 일도 하지 못하기 때문에
따라서 실행되는 프로세스가 많고, context-switching이 자주 일어나면 성능이 떨어진다

 

 

출처

https://velog.io/@sohi_5/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-Context-Switching-suaduxev

 

[운영체제] Context Switching

먼저 프로세스란 실행중인 프로그램 또는 작업이라고 할 수 있다. CPU가 프로세스를 실행하기 위해서는 프로세스에 대한 정보가 필요한데, 이를 Context라고 한다. 각 프로세스의 Context를 저장한 ��

velog.io

https://slenderankle.tistory.com/196

 

컨텍스트 스위칭 - Context Switching

컨텍스트 스위칭(Context Switching) 이란 무엇인가? CPU는 동시에 한 개씩의 스레드만 실행시킬 수 있습니다. 스레드가 여러개가 생성되면 CPU는 각각의 스레드를 시분할하여 각각의 스레드를 번갈아가며 실행하..

slenderankle.tistory.com

https://ggodong.tistory.com/27

 

Context Switch란?

본 글은 https://jeong-pro.tistory.com/93을 참고하여 작성헀습니다. Context Switching이란? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 ��

ggodong.tistory.com

https://agh2o.tistory.com/12

 

[Context Switching] 프로세스와 쓰레드에서의 컨텍스트 스위칭

* 프로세스란? 실행파일을 클릭했을 때, 메모리(RAM)할당이 이루어지고, 이 메모리공간으로 코드가 올라간다. 이 순간부터 이 프로그램은 '프로세스'라 불리게 된다. * 프로세스의 스케줄링? CPU는

agh2o.tistory.com

https://www.crocus.co.kr/1364?category=268776

 

컨택스트 스위칭(Context Switching)

컨택스트 스위칭(Context Switching)이란? 위의 그림을 통해 설명하고자 한다. 프로세스 P0와 P1이 존재할 때, P0가 CPU를 점유중(excuting)이었고 P1이 대기중(idle)이었는 상태이다가 얼마후에는 P1이 실행��

www.crocus.co.kr

https://jins-dev.tistory.com/entry/%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%8A%A4%EC%9C%84%EC%B9%98Context-Switching-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC

 

컨텍스트 스위치(Context Switching) 에 대한 정리

Context Switching 은 면접에서 지원자의 기본기를 검사할 목적으로 단골로 등장하는 질문이자, CS의 중요한 기본 지식이기도 하다. Context Switching 이란 CPU가 한 개의 Task(Process / Thread) 를 실행하고 있..

jins-dev.tistory.com

 

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });