[ 1. 운영체제 vs 펌웨어 vs 커널 ]
펌웨어
- EX) BIOS
- 하드웨어를 초기화 및 추상화 (정확한 register ID등의 하드웨어 세부사항을 몰라도 상위 계층에서 동작 하도록)
- 커널을 불러올 준비
- 운영체제와 달리 소프트웨어를 추가적으로 설치 불가
- in ROM
커널
- EX) Linux
- 하드웨어 제어 및 리소스 관리
- CPU‧메모리‧I/O 장치를 직접 컨트롤하는 최저층 “코드”
- in RAM
운영체제 : 커널 + 시스템 콜 + 인터페이스
- 역할
- CPU 스케쥴링
- 메모리 관리
- 디스크 관리
- I/O 관리
- 구조
- 시스템 콜 : 운영체제가 커널에 접근하기 위한 인터페이스 (커널의 함수 호출)
- 하드웨어 복잡성을 “숫자 + 레지스터 몇 개”로 압축한 추상화 레이어
⇒ 프로그램은 “무엇을 할지”만 묻고, “어떻게” 는 커널이 알아서
- 유저 모드(modebit : 1, Ring 3)와 커널 모드(modebit : 0, Ring 0)의 분기점 역할
- 하드웨어 복잡성을 “숫자 + 레지스터 몇 개”로 압축한 추상화 레이어
- 시스템 콜 : 운영체제가 커널에 접근하기 위한 인터페이스 (커널의 함수 호출)
- 커널에서
- 드라이버 = 하드웨어를 OS언어로 통역하는 모듈 (코드)
[ 2. 컴퓨터의 요소 ]
CPU(Central Processing Unit)
구조
- 제어장치 (Control Unit) : 명령어 해석 및 데이터 처리 순서 결정
- 레지스터 (Register) : 임시 기억 장치
- ALU (Arithmetric Logic Unit) : 산술 논리 연산
👉
제어 장치에서 메모리 + 레지스터에 로드 + 계산 명령
ALU가 계산 + 결과를 레지스터에 저장
제어 장치에서 레지스터의 결과를 메모리로
ALU가 계산 + 결과를 레지스터에 저장
제어 장치에서 레지스터의 결과를 메모리로
❓
심화 질문 1 : 제어 장치는 레지스터의 ALU의 연산 결과를 읽어 메모리에 저장하는 역할을 하는데, ALU의 연산결과가 나왔는지 어떻게 알고, 레지스터를 방문할까?
✅
인터럽트 (어떤 신호의 입력으로 인한 CPU 일시 정지)
- 하드웨어 인터럽트
- 소프트웨어 인터럽트 = TRAP
DMA Controller
- I/O와 메모리의 연결에 관여 (CPU가 해야할 일을 대신)
⇒ CPU 부하 줄여주는 보조 역할
Device Controller
- I/O와 CPU의 연결에 관여
- 명령 번역·데이터 전송·오류 처리”를 담당하는 하드웨어 모듈
❓
심화 질문 2 : DMA 컨트롤러와 CPU는 동일한 I/O 인터럽트를 처리하지 않는다. 이는 드라이버에서 코드로 판단되어 분배 되는데,
⇒ 작고 드문 데이터와, 크고 반복적인 데이터는 각각 어디서 처리되는가?
⇒ 작고 드문 데이터와, 크고 반복적인 데이터는 각각 어디서 처리되는가?
✅