시스템 콜(System Call)
- 정의: 응용 프로그램이 OS가 제공하는 서비스를 이용하기 위한 프로그래밍 인터페이스
- 사용 방법: API를 통해 접근 (예: C 표준 라이브러리는 Unix/Linux 시스템 콜 인터페이스 제공)
- 6대 기능 범주
- 프로세스 제어(Process Control)
- 파일 관리(File Management)
- 장치 관리(Device Management)
- 정보 유지 관리(Information Maintenance)
- 통신(Communication)
- 보호(Protection)
링커
컴파일된 여러 개의 오브젝트 파일과 라이버리를 하나로 묶어 실행 파일을 만든다.
- 심볼 결합 (Symbol Resolution)
- 여러 소스 파일에서 정의 및 참조된 함수와 변수를 서로 연결
- 예: main.c에서 print() 함수를 호출하면, 링커가 print()가 정의된 오브젝트 파일이나 라이브러릴 위치를 찾아 연결
- 재배치 (Relocation)
- 함수나 변수가 실제 메모리 주소에 맞게 재배치되도록 코드 수정
- 컴파일 시에는 심볼의 실제 주소를 알 수 없으므로, 링커가 실행 파일 생성 시 확정
- 라이브러리 링크
- 정적 라이브러리 (.a, .lib) > 실행 파일에 코드가 포함됨
- 동적 라이브러리 (.so, .dll) > 실행 중 로딩 됨
로더(Loader)
실행 파일을 메모리에 적재 후 CPU에서 실행 가능 상태로 준비
주요 단계
- 실행 파일 포맷 분석: ELF(Linux), PE(Windows) 등 실행 파일 헤더 읽어서 코드, 데이터, 스택, 힙 배치 위치 결정
- 메모리 적재: 코드 섹션(.text), 데이터 섹션(.data, .bss) 등을 해당 메모리 영역에 복사
- 동적 라이브러리 로드: 실행 파일이 사용하는 공유 라이브러리 (.so, .dll)를 로딩하고 심볼 연결
- 프로그램 진입점 설정: main()이 호출되기 전 초기화 작업 후 CPU 제어를 넘김
부트 로더(Boot Loader)
OS를 메모리에 적재하고 초기화, 시스템 실행 시작
동작과정
- 펌웨어 단계: 하드웨어 초기화, 부팅 장치 탐색
- 부트 로더 로드: 부팅 장치의 Master Boot Record 또는 EFI 파티션에서 부트 로더를 메모리에 로딩
- 운영체제 커널 로드: 부트 로더가 OS 커널 이미지를 메모리에 적재, 필요 시 초기 RAM 디스크 로딩
- 커널 실행 시작: 부트 로더가 CPU 제어를 커널에 넘김 > OS 초기화 > 로그인 화면 또는 GUI 표시
'IT' 카테고리의 다른 글
운영체제 #4 (3) | 2025.08.17 |
---|---|
운영체제 #3 (2) | 2025.08.16 |
운영체제 #1 (3) | 2025.08.14 |
admob 정책 위반 예방 5가지 (0) | 2025.04.28 |
Geo-blocking Regulation (EU) 2018/302 (0) | 2025.04.23 |