하드웨어 구성요소
- 메인보드
- 버스
- 프로세서
- 클럭
- 메모리 계층구조
- 보조기억장치
- DMA
- 주변장치
메인보드 (mainboard, printed circuit board: PCB, motherboard)
- 장치간 전기적 연결을 제공하는 기판
- CPU, 메모리 등의 장치 부착 슬롯 제공 및 장치간 연결 버스 제공
- 하위수준 처리를 담당하는 BIOS 등의 칩 포함
노스 브리지 (Northbridge)
- CPU와 메모리, 고속 그래픽 카드, Southbridge 등과의 통신 제어
사우스 브리지 (Southbridge)
버스
프로세서
- 기계어 프로그램 실행
- 인출/해석
- 명령어 가져오기
- ALU
- 산술, 논리 연산 처리
- 레지스터
- 프로세서 내 고속 메모리
- 캐시
-메모리에서 읽어들인 명령어나 데이터로 채워지는 버퍼 형태의 고속 기억 장치
클럭
- 컴퓨터 시간은 사이클 단위로 측정
- System clock generator에 의해 발생
- 프로세서 속도는 GHz 단위
- Intel i7-4910MQ : 2.9 GHz
메모리 계층 구조
- 메인 메모리가 프로세서에 직접 접근 가능한 최하단
- 저장 장치의 접근 속도
- 레지스터>L1캐시>L2캐시>주기억장치(DRAM)>디스크
메인 메모리
- SRAM (static RAM): 고속, refresh 불필요
- DRAM (dynamic RAM): 고집적도, 저가
보조기억장치
- 하드 디스크
- CD
- DVD
- Flash memory
DMA (Direct Memory Access)
- 주변장치들(하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능
- CPU는 데이터 전송에 관여하지 않음
- 메모리의 일정 부분이 DMA에 사용될 영역으로 지정
주변장치
- 컴퓨터에 연결되어 있지만, 필수적인 부분은 아닌 것
운영체제 지원 하드웨어 요소
- 실행모드
- 메모리 보호
- 인터럽트
- 예외처리
- 타이머
- 부트스트래핑
- 버퍼링
프로세서 실행모드 (execution mode)
- 특권 명령어(privileged instruction)
- 사용자 프로그램에서는 사용할 수 없고 관리 프로그램만이 사용이 가능한 명령
ex) 시스템 파일 수정, 파일의 소유자 변경, 디스크 쿼터 조정, daemon 시작 또는 종료
- 프로세서에서 복수의 실행 모드 제공
- Intel i360 프로세서 이후 4개 모드 제공 (#0 최고특권, #3 최소특권)
사용자 모드(User mode, user state, problem state)
커널 모드(Kernel mode, supervisor state)
커널모드 전환
- 원인
- 인터럽트(interrupt; hardware interrupt)
- 키보드 입력, 타이머, 마우스 등 외부 주변장치에서 발생
- 트랩(trap; software interrupt)
- 프로그램에서 직접 호출, 시스템호출(system call)
- 예외상황(exception)
- 프로그램 실행 중 비정상 상황에서 발생
- 0으로 나누기, page fault, overflow 등
- OS에 따라 처리기의 인터럽트 벡터 테이블 등록 및 호출 지원
- try-catch 구문: 함수 호출 스택 정보 이용 예외처리기 실행 및 종료
- 인터럽트 서비스 루틴
- 커널 모드 전환
인터럽트
- 외부에서 하드웨어적으로 인터럽트 사건 발생
- 인터럽트 벡터 테이블에 특정 인터럽트 번호에 대응하는 인터럽트 처리기(interrupt handler)의 주소 저장
- 명령어 실행 사이의 인터럽트 요청 여부 확인 및 인터럽트 처리기 호출
트랩
- 직접 명령어를 사용하여 호출
- 80x86 CPU에서 int 명령어 사용
- 지정된 번호의 인터럽트 발생
- 인터럽트 처리기와 같은 형태로 정의되고 처리
범용 레지스터
- AX: 산술 연산
- CX: 시프트/회전 연산과 루프
- DX: 산술 연산과 I/O 명령
- BX: 데이터의 주소를 가리키는 포인터 (세그멘티드 모
드에서는 세그멘트 레지스터 DS로 존재)
- SP: 스택의 최상단을 가리키는 포인터
- BP: 스택의 베이스를 가리키는 포인터
- SI: 스트림 명령에서 소스를 가리키는 포인터
- DI: 스트림 명령에서 도착점을 가리키는 포인터
세그먼트 레지스터
- 스택 세그먼트(SS): 스택을 가리키는 포인터
- 코드 세그먼트(CS): 코드를 가리키는 포인터
- 데이터 세그먼트(DS): 데이터를 가리키는 포인터
- 기타 세그먼트(ES): 기타 데이터 가리키는 포인터
- F 세그먼트: 기타 데이터 가리키는 포인터
- G 세그먼트: 기타 데이터 가리키는 포인터
예외상황
- 프로그램 실행 중 발생하는 오류에 대해 처리하는 인터럽트
- set_trap_gate()
- 인터럽트 처리기를 인터럽트 벡터 테이블에 후킹
메모리 보호
- 프로세스가 다른 프로세스나 운영체제 영역을 접근하지 못하도록 하는 하드웨어적 기능 제공
타이머
- CPU 스케줄링 주기에 따른 타이머 인터럽트 생성
- 타이머 인터럽트 처리기 실행
- 스케쥴링 등 실행
- 250Hz (25ms)에서 1000Hz (1ms) 정도의 주기
- 시간간격 타이머는 일정 간격으로 타이머 인터럽트 생성
클럭
- time-of-day clock: 현 시점의 시각 및 날짜 확인
부트스트래핑
- 초기 운영체제 구성요소를 메모리에 적재하는 것
- BIOS(Basic Input/Output System)에 의해 수행
- 전원이 켜지면, 컴퓨터에 의해 맨 처음 실행되는 부팅 펌웨어
- BIOS 칩에 저장
- 하드웨어 초기화 실행
- 보조기억장치의 부트섹터로 부터 부트스트래핑 코드를 메모리에 적재
- 부트스트래핑 코드가 실행되어 메모리에 운영체제 적재
- UEFI(unified extensible firmware interface)
- 2TB 이상 저장장치, 빠른 부팅 지원
부트스트래핑 과정
1. 하드웨어 정보 수집 및 시스템 초기화
2. 부트 섹터에서 부트스트래핑 코드를 주기억장치에 적재
3. CPU가 부트스트래핑 코드 실행
4. 보조기억장치에서 운영체제를 주기억장치에 적재
LINUX 부팅 과정
1. BIOS 시행
2. 부트로더 적재
3. 부트로더
- 커널의 메모리 적재
4. 커널 압축 해제
5. start_kernel() 호출
- 인터럽트 핸들러 설치, 메모리 설정, 장치와 드라이버 초기화 등
6. idle 프로세스 시작
7. 스케줄러 시작
8. init 프로세스 시작
- 다양한 비 운영체제 서비스와 구조, 사용자 환경 구성 제공
9. 디스플레이 매니저 데몬
- 기본적인 그래픽 스택과 로그인 매니저 제공
버퍼
- 입출력 전송하는 중에 데이터를 일시적으로 보관하는 저장 공간
- 용도
- 속도 차이가 있는 장치간의 통신
- 비동기적으로 처리할 데이터 저장
- 비동기적으로 신호 전달
스풀링 (spooling; simultaneous peripheral operations on-line)
- 프로세스와 저속 입출력장치(프린터 등)에 디스크 등을 사용하여 버퍼링을 구현하는 것
- 프로세스가 주변장치의 서비스 요청 준비 상태에 상관없이 서비스 요청을 할 수 있게 함
- CPU에 비해 주변 장치의 처리속도가 느려서 발생하는 대기시간을 줄이기 위해 고안
소프트웨어
디바이스 드라이버
- 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램
- 입출력 장치별로 각각 디바이스 드라이버가 커널에 통합되어 실행
- 메모리에 상주
- 장치를 파일처럼 취급 가능
API (Application Programming Interface)
- 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 라이브러리 형태로 제공
- 시스템콜 함수는 운영체제 기능을 사용할 수 있도록 하는 API
- API 함수 내부에서 시스템호출 함수 사용 가능
컴파일
- 고급 언어를 기계어로 변환
- 컴파일 과정
- Lexer: 코드 내의 문자를 토큰 단위로 분리
- Parser: 문법적으로 맞는 토큰의 집단화
- 중간 코드 생성기: 문장을 단순한 명령어로 변환
- 최적화기: 코드 실행 및 메모리 활용에 대한 코드 개선
- 코드 생성기: 기계어 코드로 변환
링커
- 별도로 컴파일된 여러 코드를 결합하여 하나의 실행코드 생성
- 상대 주소를 사용하여 결합
- 코드 간의 외부참조를 확인
- 링킹 시기
로더
- 상대주소를 절대주소로 변환
- 명령어와 데이터를 메인메모리에 적재
펌웨어
- 특정 하드웨어에 대한 하위 수준 제어를 하는 소프트웨어로 해당 하드웨어 장치에 포함된 것
ex) BIOS, 임베디드 시스템, 가전 제품
- ROM, EPROM, 플래시 메모리 등과 같이 비휘발성 저장장치에 저장