250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

스핀락(SpinLock), 컨텍스트 스위칭(Context Switching),인터럽트(Interrupt) 란? 본문

[Snow-ball]프로그래밍(컴퓨터)/프로그래밍 및 컴퓨터 개론 이론

스핀락(SpinLock), 컨텍스트 스위칭(Context Switching),인터럽트(Interrupt) 란?

Snow-ball 2021. 1. 28. 11:36
반응형

스핀락(SpinLock)

스핀락은 Critical Section에 진입이 불가능할 때 진입이 가능할 때 까지 루프를 돌면서 재시도 하는 방식으로 구현된 락을 가르킵니다. 스핀락은 바쁜 대기의 한 종류입니다.

 

스핀락은 운영체제의 스케줄링 지원을 받지 않기 때문에, 해당 스레드에 대한 Context Switch가 일어나지 않는다. 따라서 스핀락은 임계구역에 짧은 시간안에 진입할 수 있는 경우에 Context Switch을 제거할 수 있어서 효율적입니다. 하지만 만약 스핀락이 오랜 시간을 소요한다면 다른 스레드를 실행하지 못하고 대기하게 되며, 이 경우 비효율적인 결과를 가져게 됩니다.

스핀락

 

 

 

 

 

 

 

 

 

컨텍스트 스위칭(Context Switching)

CPU내에 존재하는 레지스터들은 현재 실행중인 프로세스 관련 데이터들로 채워집니다. 실행중인 프로세스가 변경이 되면, CPU내 레지스터들의 값이 변경되어야 하는데, 변경되기 전에 이전 프로세스가 지니고 있던 데이터들을 어딘가에 저장해 주어야 합니다.

 

그리고 새로 실행되는 프로세스가 아니라면 이전에 실행될 때 레지스터들이 지니고 있던 데이터를 불러와서 이어서 실행해야 하죠. 이 과정이 컨텍스트 스위칭입니다. 실행되는 프로세스의 변경 과정에서 발생하는 컨텍스트 스위칭은 시스템에 많은 부담을 주게 됩니다. 레지스터 개수가 많을수록, 프로세스별로 관리되어야할 데이터 종류가 많을수록 더 부담이 되며, 컨텍스트 스위칭에 소요되는 시간을 줄이려면 저장하고 복원하는 컨텍스트 정의 개수를 줄여주면 됩니다.

 

컨텍스트 스위칭

 

 

 

 

 

 

 

 

 

인터럽트(Interrupt)란?

운영체제에서 컴퓨터에 예기치 않은 일이 발생하더라도 작동이 중단되지 않고 계속적으로 업무처리를 할 수 있도록 해주는 기능입니다.

 

마이크로프로세서에서 인터럽트란 마이크로프로세서( CPU ) 가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요한 경우 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말합니다.

인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉘게 됩니다..

 

-하드웨어 인터럽트

하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생시킨다.

 

-소프트웨어 인터럽트

소프트웨어가 발생시키는 인터럽트입니다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.

종류 : 예외 상황, system call

 

인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 cpu내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다.cpu는 매번 명령을 수행하기 전에 인터럽트라인이 세팅되어있는지를 검사합니다.

인터럽트

 

 

 

 

 

 

 

 

 

 

 

 

베타존 : 네이버쇼핑 스마트스토어

나를 꾸미다 - 인테리어소품 베타존

smartstore.naver.com

 

반응형
Comments