맨위로가기

.bss

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

.bss는 1950년대 중반 IBM 704용 어셈블러인 UA-SAP에서 사용된 의사 연산자에서 유래된 용어로, 초기화되지 않은 데이터 블록을 예약하는 데 사용되었다. C 언어에서는 명시적인 초기화가 없는 정적으로 할당된 객체를 저장하는 데 사용되며, 포트란에서는 공통 블록 변수가 BSS 세그먼트에 할당된다. BSS는 메모리 공간을 효율적으로 관리하고, 프로그램의 실행 속도를 향상시키는 데 중요한 역할을 한다.

더 읽어볼만한 페이지

  • 어셈블리어 - 기계어
    기계어는 컴퓨터 CPU가 직접 이해하고 실행하는 이진수 형태의 명령어 집합으로, 각 프로세서는 고유한 명령어 집합을 가지며 어셈블리 언어를 통해 니모닉 코드로 표현될 수 있다.
  • 어셈블리어 - 주소 지정 방식
  • 실행 파일 포맷 - EXE
    EXE 파일 형식은 운영 체제에 따라 다양한 종류가 있는 실행 파일의 한 형태로, DOS MZ 실행 파일에서 PE, PE32+까지 발전해 왔으며, 코드, 데이터, 스택을 별도 관리하고 재배치 항목을 통해 실행 환경에 유연하게 대응하는 특징을 가진다.
  • 실행 파일 포맷 - COM 파일
    COM 파일은 CP/M 및 MS-DOS 운영체제에서 사용된 실행 파일 형식으로, 메타데이터 없이 코드와 데이터로 구성되어 64KB 크기 제한을 가지며, 단순한 구조로 극소의 실행 파일을 만들 수 있지만 보안 취약점도 존재한다.
  • 프로그래밍 언어 구현 - 어셈블리어
    어셈블리어는 사람이 이해하기 쉬운 니모닉 기호로 기계어 명령을 표현하는 저수준 프로그래밍 언어로서, 각 프로세서마다 사양이 다른 어셈블리어가 존재하며 하드웨어 직접 제어, 성능 최적화, 저수준 시스템 프로그래밍 등에 활용된다.
  • 프로그래밍 언어 구현 - 컴파일러
    컴파일러는 고급 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 저급 언어로 변환하는 프로그램으로, 어휘 분석, 구문 분석, 의미 분석, 최적화, 코드 생성 등의 단계를 거쳐 목적 코드를 생성하며, 네이티브 컴파일러, 크로스 컴파일러 등으로 분류되어 다양한 분야에서 활용된다.
.bss
기본 정보
기본적인 서비스 세트 다이어그램
기본적인 서비스 세트 다이어그램
정의기본적인 서비스 세트 (BSS)는 무선랜 (WLAN)에서 사용되는 용어이며, 통신할 수 있는 스테이션 그룹을 의미함
구성 요소하나의 액세스 포인트 (AP)
AP와 연결된 모든 스테이션
역할BSS는 WLAN의 기본적인 구성 요소이며, 무선 네트워크의 기본적인 빌딩 블록을 형성함
특징모든 스테이션은 AP를 통해 서로 통신함
BSS 유형
인프라 BSSAP를 중심으로 구성된 네트워크. AP는 네트워크의 중심 역할을 하며, 모든 통신은 AP를 거침
독립 BSS (IBSS)애드혹 네트워크라고도 함. AP 없이 스테이션들이 직접 통신함.
확장 서비스 세트 (ESS)여러 개의 BSS가 연결되어 더 큰 네트워크를 형성하는 구조. 여러 AP들이 동일한 네트워크 이름 (SSID)을 공유함
기술적 세부 사항
SSID (서비스 세트 식별자)BSS를 식별하는 데 사용되는 고유한 이름. 모든 스테이션은 동일한 SSID를 사용하여 네트워크에 연결됨
채널BSS는 특정 무선 주파수 채널에서 작동함. 채널 선택은 네트워크 성능에 영향을 미침
보안BSS는 WEP, WPA, WPA2, WPA3 등의 보안 프로토콜을 사용하여 보호될 수 있음
활용
가정 및 소규모 사무실무선 인터넷 공유를 위해 AP를 사용하여 BSS를 구성함
기업 환경여러 개의 AP를 사용하여 넓은 영역을 커버하는 ESS를 구축함
공공장소카페, 공항 등에서 공용 Wi-Fi 네트워크를 제공하기 위해 BSS를 사용함

2. 기원

역사적으로 BSS(Block Started by Symbol, 기호로 시작하는 블록)는 1950년대 중반 IBM 704용으로 유나이티드 에어크래프트의 로이 넛(Roy Nutt)과 월터 램쇼(Walter Ramshaw) 등이 개발한 어셈블러인 UA-SAP(United Aircraft Symbolic Assembly Program)에서 사용된 의사 동작이다.[16][17] BSS는 레이블(기호)을 정의하고 지정된 수의 워드에 대한 초기화되지 않은 공간 블록을 예약하는 역할을 했다.

텍스트, 다양한 데이터, 스택 및 힙 섹션이 있는 간단한 컴퓨터 프로그램 메모리의 일반적인 레이아웃

2. 1. BSS 용어의 유래

BSS(Block Started by Symbol)는 유나이티드 에어크래프트의 로이 넛(Roy Nutt)과 월터 램셔(Walter Ramshaw) 등이 IBM 704용으로 1950년대 중반에 개발한 어셈블러인 UA-SAP (United Aircraft Symbolic Assembly Program)에서 사용된 의사 동작이다.[16][17]

BSS는 UA-SAP(United Aircraft Symbolic Assembly Program)의 어셈블러에서 사용되는 의사 연산자로, 나중에 FORTRAN Assembly Program[6](FAP) 및 Macro Assembly Program[7](MAP)에 통합되어 IBM 709 및 7090/94 컴퓨터용 표준 어셈블러가 되었다. BSS 키워드는 레이블(기호)을 정의하고 지정된 수의 워드에 대한 초기화되지 않은 공간 블록을 예약하는데, 이는 여러 개의 작은 데이터 위치를 개별적으로 예약하는 대신 사용되는 약식 표현이었다. 일부 어셈블러는 예약된 블록의 끝에 해당하는 지정된 기호를 사용하는 '''BES'''('''Block Ended by Symbol''', 기호로 끝나는 블록) 지시어를 지원하기도 한다.[9]

2. 2. 초기 어셈블러에서의 역할

BSS (Block Started by Symbol, 기호로 시작하는 블록)는 1950년대 중반 IBM 704용으로 로이 너트(Roy Nutt), 월터 램쇼(Walter Ramshaw) 등이 유나이티드 항공기 주식회사(United Aircraft Corporation)에서 개발한 어셈블리 언어인 UA-SAP(United Aircraft Symbolic Assembly Program)의 어셈블러에서 사용되는 의사 연산자이다.[4][5] BSS 키워드는 나중에 FORTRAN Assembly Program[6](FAP) 및 Macro Assembly Program[7](MAP)에 통합되었으며, 이는 IBM의 709 및 7090/94 컴퓨터용 표준 어셈블러였다. 이 키워드는 레이블(즉, 기호)을 정의하고 지정된 수의 워드에 대한 초기화되지 않은 공간 블록을 예약했다.[8] BSS는 여러 개의 작은 데이터 위치를 개별적으로 예약하는 대신 사용되는 약식 표현이었다. 일부 어셈블러는 예약된 블록의 끝에 해당하는 지정된 기호를 사용하는 '''BES'''('''Block Ended by Symbol''', 기호로 끝나는 블록) 지시어를 보완하거나 대체하는 것을 지원한다.[9]

3. C 언어에서의 BSS

C 언어에서 명시적인 초기화 구문이 없는 정적으로 할당된 객체는 (산술 타입의 경우) 0 또는 (포인터 타입의 경우) 널 포인터로 초기화된다. C 언어 구현은 일반적으로 0 값을 비트 패턴으로 표현하며, 이 비트 패턴은 0 값의 비트로만 구성된다. (C 표준에서는 BSS를 0으로 채우는 것을 요구하지 않지만, BSS의 모든 변수는 C ISO 표준 9899:1999의 6.7.8절 또는 최신 표준의 6.7.9절에 따라 개별적으로 0으로 초기화해야 한다.) 따라서 BSS 세그먼트는 일반적으로 파일 범위에서 선언된 모든 초기화되지 않은 객체 (변수 및 상수)와 초기화되지 않은 정적 지역 변수 (지역 변수는 `static` 키워드로 선언됨)를 포함한다. 그러나 정적 지역 ''상수''는 별도의 선언이 없으므로 선언 시 초기화되어야 하며, 일반적으로 BSS 섹션에 포함되지 않지만, 암시적으로 또는 명시적으로 0으로 초기화될 수 있다. 구현에 따라 0 값의 비트로만 구성된 값으로 초기화된 정적으로 할당된 변수 및 상수를 BSS 섹션에 할당할 수도 있다.

C 프로그래머이자 작가인 피터 반 더 린덴은 "어떤 사람들은 '공간을 절약하는 것이 더 좋다(Better Save Space)'라고 기억하는 것을 좋아합니다. BSS 세그먼트는 아직 값이 없는 변수만 포함하므로, 실제로 이러한 변수의 이미지를 저장할 필요가 없습니다. BSS가 런타임에 필요로 하는 크기는 객체 파일에 기록되지만, BSS는 (데이터 세그먼트와 달리) 객체 파일에서 실제 공간을 차지하지 않습니다."[10]라고 말한다.

4. 포트란에서의 BSS

포트란에서 공통 블록 변수는 BSS 세그먼트에 할당된다.[11] 일부 컴파일러는 64비트 명령어 집합에서 이 세그먼트에 접근하는 명령의 오프셋을 32비트로 제한하여 크기를 2GB 또는 4GB로 제한할 수 있다.[12][13][14] 포트란은 정적 데이터를 0으로 초기화할 필요가 없지만, BSS 세그먼트가 0으로 초기화되는 시스템에서는 공통 블록 변수 및 기타 정적 데이터를 해당 세그먼트에 배치하면 0으로 초기화되는 효과를 얻을 수 있다. 그러나 이식성을 위해서는 프로그래머가 이에 의존해서는 안 된다.

참조

[1] 웹사이트 A New Virtual Memory Implementation for Berkeley UNIX http://www.mimuw.edu[...] University of California, Berkeley
[2] 웹사이트 Memory Sections http://www.nongnu.or[...]
[3] 웹사이트 ELF Special Sections http://refspecs.linu[...]
[4] 서적 Network Dictionary Javvin Press
[5] 문서 Coding for the MIT-IBM 704 Computer October 1957 http://bitsavers.org[...] 1957-10
[6] manual FORTRAN ASSEMBLY PROGRAM (FAP) for the IBM 709/7090 http://archive.compu[...] IBM 2017-10-18
[7] manual IBM 7090/7094 IBSYS Operating System Version 13 Macro Assembly Program (MAP) Language http://bitsavers.org[...] IBM
[8] 웹사이트 Unix - Frequently Asked Questions (1/7) http://www.faqs.org/[...]
[9] 웹사이트 38.9. Directives http://linux.web.cer[...] 2014-02-22
[10] 서적 Expert C Programming: Deep C Secrets https://books.google[...] Prentice Hall
[11] 문서 How does Fortran 77 allocate common-block variables? https://stackoverflo[...]
[12] 웹사이트 IBM RS/6000 and PowerPC Options https://gcc.gnu.org/[...]
[13] 웹사이트 SPARC Options https://gcc.gnu.org/[...]
[14] 웹사이트 x86 Options https://gcc.gnu.org/[...]
[15] 문서 ただし、それが C89, C99 の仕様で要求されているわけではない。概念上の 0 や[[ヌルポインタ]]がハードウェア上・メモリ上どのように表現されるかは実装依存とされている。ただし、概念上のヌルポインタや概念上の false は整数に型キャストしたら概念上の 0 にならないといけないとは規定されており、型キャストして概念上の 0 となる値の集合は規定されている。そして、そもそも bss セクションはC言語の仕様の物ではなく、コンパイラの慣習であり、bss セクションを扱うようなコンパイラは、二進法のハードウェアを扱い、概念上の 0 はハードウェア上も全てのビットを 0 で表現している。
[16] 서적 Network Dictionary Javvin Press
[17] 문서 Coding for the MIT-IBM 704 Computer October 1957 http://bitsavers.org[...] 1957-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com