컴퓨터 시스템 = 하드웨어 + 시스템 소프트웨어
정보는 비트와 컨텍스트로 이루어진다.
#inclue <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
- 프로그래머가 에디터로 작성한 소스 프로그램(또는 소스파일)으로 시작
- hello.c라는 텍스트 파일로 저장
소스 프로그램(=소스파일)
- 소스 프로그램은 0 또는 1로 표시되는 비트들의 연속이며, 바이트(8bit) 단위로 구성
- 각 바이트는 프로그램의 텍스트 문자를 나타냄
- 대부분의 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII)표준을 사용하여 표시한다.
텍스트 파일
- hello.c 파일처럼 오로지 아스키 문자들로만 이루어진 파일들은 텍스트 파일이라고 부른다.
- 다른 모든 파일들은 바이너리 파일이라고 한다.
컨텍스트(Context)
- 사전적 의미 : 상황, 맥락, 문맥상의 의미
- 모든 시스템 내부의 정보는 비트들로 표시 된다.
- 디스크 파일, 메모리상의 프로그램, 데이터, 네트워크를 통해 전송되는 데이터
- 이 정보들의 서로 다른 객체들을 구분하는 유일한 방법 : 컨텍스트(context)
1. 프로세스 컨텍스트 (Process Context)
컴퓨터 운영체제에서 가장 많이 언급되는 "컨텍스트"의 한 예는 프로세스 컨텍스트입니다. 프로세스는 실행 중인 프로그램을 말하며, 여러 프로세스가 동시에 실행되는 멀티태스킹 환경에서 운영체제는 어떤 프로세스가 실행 중인지 알고, 다른 프로세스로 전환할 수 있어야 합니다.
예시:
컴퓨터에서 워드 프로세서와 웹 브라우저를 동시에 실행한다고 가정해봅시다. 워드 프로세서가 현재 실행 중이고, 사용자가 타이핑을 하고 있습니다. 이때 운영체제는 워드 프로세서의 프로세스 컨텍스트를 유지하고 있습니다. 여기에는 CPU 레지스터 값, 메모리 상태, 스택 포인터, 프로그램 카운터 등 워드 프로세서의 실행 상태에 관한 모든 정보가 포함됩니다.
사용자가 웹 브라우저를 클릭하여 활성화하면, 운영체제는 현재 워드 프로세서의 상태(컨텍스트)를 저장하고 웹 브라우저의 프로세스 컨텍스트를 로드합니다. 이 과정에서 운영체제는 CPU 레지스터 값, 메모리 상태 등 웹 브라우저가 실행되던 시점의 모든 정보를 복원하여 웹 브라우저가 중단된 상태에서 다시 시작되도록 합니다.
즉, 프로세스 컨텍스트는 프로세스 간의 전환이 원활하게 이루어지도록 하는 데 필요한 모든 정보를 포함하는 것입니다.
2. 언어 문맥 (Context in Programming Languages)
프로그래밍 언어에서 "컨텍스트"는 특정 코드의 의미를 결정하는 데 중요한 역할을 합니다. 코드의 특정 구문이나 표현식이 그 위치와 주변 코드에 따라 다르게 해석될 수 있습니다.
예시:
x = 5
def foo():
x = 10
print(x)
foo() # 출력: 10
print(x) # 출력: 5
위의 예제에서 x의 값은 컨텍스트에 따라 다르게 해석됩니다. foo() 함수 안에서의 x는 함수 내부의 로컬 컨텍스트에 속하며, x = 10이라는 값을 가집니다. 그러나 함수 외부의 x는 전역 컨텍스트에 속하고 x = 5라는 값을 유지합니다. 여기서 x의 의미는 그것이 사용되는 위치, 즉 컨텍스트에 따라 달라지는 것입니다.
3. 보안 컨텍스트 (Security Context)
보안 측면에서 "컨텍스트"는 사용자가 특정 자원에 접근할 때 적용되는 보안 정책을 결정하는 데 사용됩니다.
예시:
웹 애플리케이션에서 사용자가 로그인할 때, 애플리케이션은 해당 사용자의 보안 컨텍스트를 설정합니다. 이 컨텍스트는 사용자의 역할(예: 관리자, 일반 사용자), 권한(읽기, 쓰기, 삭제 등), 그리고 현재 세션과 관련된 기타 정보를 포함합니다.
예를 들어, 관리자는 모든 데이터에 접근할 수 있지만, 일반 사용자는 자신의 데이터에만 접근할 수 있습니다. 사용자가 특정 페이지에 접근하려고 할 때, 애플리케이션은 이 보안 컨텍스트를 참조하여 사용자가 페이지에 접근할 수 있는지 여부를 결정합니다.
'SW 사관학교 정글(Jungle) > 컴퓨터 시스템(CSAPP)' 카테고리의 다른 글
[CSAPP] 9-9 동적 메모리 할당(Dynamic Memory Allocation) (0) | 2024.09.05 |
---|---|
[CSAPP] 1-7. 운영체제는 하드웨어를 관리한다. (0) | 2024.08.27 |
[CSAPP]1-5, 1-6 캐시와 저장장치 계층구조 (0) | 2024.08.27 |
[CSAPP]1-4 프로세서는 작동 원리 (0) | 2024.08.27 |
[CSAPP]1-2,1-3 컴파일 시스템 (1) | 2024.08.27 |