CS/운영체제

Chapter 2: Operating System Structures

arsenic-dev 2025. 5. 4. 20:15

경희대학교 허선영 교수님의 운영체제 수업을 기반으로 정리한 글입니다.

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