Computer Science

[CS] 컴퓨터 과학에서 'Offset'이란?

Hyper_ 2023. 9. 20. 10:06

출처 :https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=offset+%EB%9C%BB

 

  • 미국의 유명한 힙합 그룹 미고스의 오프셋으로도 유명한 이 단어 Offset
  • 과거 미고스의 'Walk it Talk it'이라는 곡을 인상깊게 들어서 Offset의 뜻을 찾아보았으나 '상쇄(벌충)하다'라는 의미가 잘 이해되지 않은 채로 긴 시간이 지나 컴퓨터과학 분야에서 네트워크를 공부하며 IP Protocol에서 Offset이 재등장하는 것이 아닌가! 평소 공부할 때 지엽적인 부분도 짚고 넘어가는 성향이라 뜻을 다시 찾아보았다.

 

 


(일상에서의) offset : 상쇄하다, 메우다

*케임브리지 사전: to balance one influence against an opposing influence, so that there is no great difference as a result

(두 가지의 상반되는 효과가 균형을 이루어 결과적으로 큰 차이가 없을 때 사용)

ex) There are goverment programs that can help offset the costs. (비용을 지원해주는 정부 정책이 있다.)

 

  • 일상적인 의미에서의 offset은 이제 잘 이해되었는데, 그럼 컴퓨터과학에서의 offset은 무슨 뜻일까?

(컴퓨터과학에서의) offset : 변위, 편차

어셈블리어와 같은 로우레벨 프로그래밍 언어에서 오프셋은 상대주소(relative address)라는 의미를 가지고 있다.(!!)

예를들어, 어떤 변수가 'abcdef'라는 문자열 자료형이라면 'c' 문자는 'a'시작점에서 2의 오프셋을 지닌다고 할 수 있다.

컴퓨터구조를 공부할 때 CPU 주변 장치인 레지스터 세트에 속한 프로그램 카운터'상대주소지정방식'에 활용된다고 했던 내용이 기억난다!! 그 때 등장하는 개념이 변위(offset)인 것이다. 좀 더 자세히 설명하자면,

 

 CPU가 프로그램을 실행하다가 파이썬의 if-elif-else문 같은 분기문을 마주쳤을 때,

CPU를 보조하는 레지스터 중 하나인 프로그램카운터가 가지고 있는 프로그램 첫 번째 코드의 메모리주소값(예를들면 1000)에서

실행할 특정 명령어의 상대적 코드 위치를 의미하는 변위값(예를들어 +3)을 연산하고

명령어를 분기하여 실행할 명령어의 메모리 주소(예 1003)를 찾는 것이었다!! 꿀잼


 

 

References: https://blog.naver.com/madwj/223214631211, https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%84%EC%85%8B_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99), https://hyo-ue4study.tistory.com/56