오버헤드(Overhead)
" 어떤 작업을 수행하기 위해 추가적으로 필요한 부가적인 비용이나 시간 "
오버헤드는 일반적으로 시스템의 성능을 저하시키는 요소 중 하나이기 때문에, 프로그래밍과 시스템 설계 시에는 가능한 작업을 효율적으로 수행하도록 최적화하는 것이 중요합니다.
[ 오버헤드가 발생하는 상황 ]
- 시스템 호출 시
운영체제로부터 서비스를 받기 위해 프로세스가 시스템 호출을 요청할 때 오버헤드가 발생함
* 이때 시스템 호출이란 프로세스 간의 커뮤니케이션, 파일 입출력, 메모리 관리 등을 포함함
( 시스템 호출은 사용자 모드에서 커널 모드로의 전환과 관련하여 비용이크다.)
- 자원 할당과 해제
새로운 프로세스나 스레드를 생성하거나 종료할 때 시스템은 이들에게 메모리, 자원, 스케줄링 등을 할당 또는 해제해야하는데 이러한 작업들은 오버헤드를 초래할 수 있음
- 컨텍스트 스위칭(Context Switching)
- 정의 : 멀티태스킹 환경에서 여러 프로세스나 스레드가 실행되는데, 실행 중인 작업을 일시 중지하고 다른 작업으로 전환하는 것
컨텍스트 스위칭은 프로세스나 스레드 간의 상태 정보를 저장하고 복구하는 과정을 포함하며, 이는 오버헤드를 발생시킴
- 자원 공유와 동기화
여러 프로세스나 스레드가 공유 자원에 접근하는 경우, 이들 사이의 동기화를 위해 락(lock)을 사용함
락을 획득하고 해제하는 과정에서 오버헤드가 발생할 수 있음
( 동기화를 위한 기법들은 오버헤드를 줄이기 위해 최적화되어야함)
- 프로토콜 및 알고리즘 오버헤드
통신 프로토콜이나 암호화 알고리즘 등을 사용하는 경우, 추가적인 계산과 데이터 처리가 필요한데 이 경우에 오버헤드가 발생할 수 있음
# 프로세스와 스레드에 대한 이해
스레드와 프로세스의 차이 / 데몬 스레드 / 스레드를 만드는 방법
스레드(Thread)와 프로세스(Process)의 차이 스레드(thread)와 프로세스(process)는 컴퓨터에서 동작하는 실행 단위입니다. 하지만 각각은 서로 다른 특성과 목적을 가지고 있습니다. 이들의 주요 차이점
megak.tistory.com
'TIL' 카테고리의 다른 글
MongoDB URI exposed on GitHub - MongoDB URI 보호하기 (0) | 2023.07.31 |
---|---|
MongoDB 사용하기 - VScode 에서 mongoose 연결 error (0) | 2023.07.31 |
TIL | 코드 라이브러리화 (0) | 2023.07.17 |
URL 작성 규칙 - 카노니컬 태그(Canonical Tag) (0) | 2023.07.14 |
SEO 란? 검색 엔진 최적화 - 구글 SEO 잘 활용하기 (0) | 2023.07.14 |