경희대학교 허선영 교수님의 운영체제 수업을 기반으로 정리한 글입니다.
How Operating Systems Interact with Hardware?
Interrupts
: 전기적 신호로, OS <-> HW interaction 방식
Device Controller
: 운영체제가 Device를 사용하려면 Device Controller(HW)를 통해야 함
- Device Driver(SW): Device Controller와 소통하기 위한 OS의 소프트웨어 모듈
※ system bus: communication 통로
Device Controller
: interrupt를 만들어 내는 주체
CPU가 I/O Request를 I/O device에 보내면, I/O device는 해당 요청을 처리 후
device 작업이 끝남음을 CPU에게 알려주기 위한 신호인 interrupt signal을 보낸다.
interrupt signal을 받은 CPU에선 interrupt handling이 일어나고, 해당 작업 처리 후 CPU는 원래 하던 task로 돌아가 재시작한다.
※ Device Controller - Device Driver - (interrupt signal) -> CPU
Interrupt Vector
: CPU 종류마다 다르며, 컴퓨터 부팅 시 메모리에 올려 두고 사용
-> interrupt service routine의 address 제공
- 함수 address(포인터) -> 함수에 해당하는 코드로 점프
interrupt 종류에 따라 OS는 해당하는 interrupt handler를 불러 주어야 한다.
※ interrupt service routine = interrupt handler: interrupt 처리하는 함수
Programmable Interrupt Controller (PIC)
: 다양한 device들한테서오는 interrupt signal을 모아 CPU에 전달 (우선순위 반영)
Interrupt Request Line
: CPU 칩의 각각의 핀들은 전기적 신호를 받아들이는 wire, 이때 핀 중 interrupt를 처리하는 핀
- 0 -> 1 감지되면 CPU는 원래 하던 명령어 멈추고 interrupt handling 모드로 넘어 감
※ PIC는 마더보드에 장착되어 있음
- 과거엔 motherboard의 sauthbridge에 장착, 요즘엔 motherboard 영역 구분 X -> 그냥 chipset
Interrupts Types
1. Hardware interrupts - 주체: device controller
2. Software interrupts (exceptions) - 주체: processor (itself)
- faults, traps, aborts
핸들링 과정은 type에 상관없이 동일
: CPU에서 하던 걸 중단하고 interrupt type에 맞게 interrupt handler를 불러 handling
How Operating Systems Interact with Programs?
System Call
: program language에서 제공하는 API로, OS <-> Programs interaction 방식
- OS는 File Service, Process Scheduling 등 다양한 서비스를 제공하는데, system call을 통해 이러한 서비스들 이용 가능
※ API: Application Programming Interface (시스템 라이브러리 -> 함수 호출)
System Call
: OS의 서비스들을 이용하는 인터페이스
- trap: user -> kernel 모드 전환(코드) 커널에 요청
- execute system call: syscall table -> 핸들러 호출(함수)
※ Programming interface (high-level language)는 OS에 의해 제공됨
- e.g., f = open("file.txt") -> open이 OS 호출(요청)
System Call에 필요한 Parameter Passing 방법
1. Simplest: registers -> 개수 제한적
2. Block: 메모리에 파라미터를 집어 넣고, 데이이터의 주소를 OS에 줌
3. Stack: 메모리에 파리미터를 스택에 쌓아 놓고, 이를 전달
-> 2, 3: parameter 길이, 개수 제한 X (파라미터들은 테이블로 전달)
※ 파이썬과 같은 인터프리터 언어가 binary로 만들어 실행하는 C++과 같은 언어보다 시스템 콜 많이 일어남
Operating System Structure
: OS is very large program
1. Original Unix: Monolithic Structure
- System programs / Kernel, 두 파트로 구성
2. Linux System: 모듈화, but 한 덩어리
Layered Approach
: OS의 각 모듈 구분
Microkernels
: 커널 최소화 위해 서비스(e.g., file system, device driver)들이 커널 -> user space
'CS > 운영체제' 카테고리의 다른 글
Chapter 5: CPU Scheduling (1) | 2025.05.07 |
---|---|
Chapter 4: Thread & Concurrency (0) | 2025.05.06 |
Chapter 3: Processes (0) | 2025.05.04 |
Chapter 1: Introduction (0) | 2025.05.04 |