일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 다독
- 재테크
- 서평
- algorithmtraining
- 자바
- 책을알려주는남자
- 알고리즘 공부
- Java
- 화장품
- 주식
- 성분
- 책알남
- C
- 자바스크립트
- 알고리즘트레이닝
- 프로그래머스 알고리즘 공부
- 지혜를가진흑곰
- 독후감
- 독서
- 돈
- 채권
- 경제
- algorithmTest
- 투자
- 백준알고리즘
- C++
- 알고리즘공부
- 프로그래밍언어
- algorithmStudy
- JavaScript
- Today
- Total
탁월함은 어떻게 나오는가?
스핀락(SpinLock), 컨텍스트 스위칭(Context Switching),인터럽트(Interrupt) 란? 본문
스핀락(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는 매번 명령을 수행하기 전에 인터럽트라인이 세팅되어있는지를 검사합니다.
'[Snow-ball]프로그래밍(컴퓨터) > 프로그래밍 및 컴퓨터 개론 이론' 카테고리의 다른 글
폰트(font) URL 가져올 수 있는 곳 (0) | 2021.02.09 |
---|---|
매개변수(parameter 파라미터) 란? (0) | 2021.02.02 |
메모리 계층 구조(Memory hierarchy)에 대해서 (0) | 2021.01.27 |
시분할 방식 및 시스템에 대하여 (0) | 2021.01.22 |
프로그램 언어와 API가 없이 간단히 코드 조회하기 (0) | 2021.01.07 |