[OS] 1. Introduction to Operating Systems

2026. 4. 29. 11:51·Computer Science/OS(운영 체제)
728x90

 

운영체제는 어디에 있고, 어떤 구조로 움직일까?

운영체제를 처음 배울 때 가장 먼저 헷갈리는 지점은 “운영체제가 정확히 무엇인가?”이다. 프로그램 같기도 하고, 컴퓨터 전체를 관리하는 관리자 같기도 하고, 사용자가 보는 화면 그 자체처럼 느껴지기도 한다.

1강과 2강은 이 질문을 하나씩 정리해준다. 1강은 운영체제의 역할과 컴퓨터 시스템 전체 구조를 잡아주고, 2강은 그 운영체제가 사용자 프로그램에게 어떤 서비스를 제공하며 어떤 내부 구조로 구현되는지 보여준다.

운영체제는 하드웨어와 프로그램 사이에 있다

운영체제는 응용 프로그램과 하드웨어 사이에 있다. 사용자는 브라우저, 에디터, 게임 같은 응용 프로그램을 실행하지만, 그 프로그램이 CPU를 얼마나 쓸지, 메모리를 어디에 둘지, 디스크 파일을 어떻게 읽을지는 직접 결정하지 않는다. 이런 일을 대신 관리하는 소프트웨어가 운영체제다.

운영체제는 크게 두 관점에서 볼 수 있다.

사용자 관점에서는 컴퓨터를 편리하게 쓰게 해주는 프로그램이다. 파일을 열고, 프로그램을 실행하고, 장치를 사용할 때 하드웨어의 복잡한 세부사항을 숨겨준다.

시스템 관점에서는 자원 관리자다. CPU, memory, storage, I/O device 같은 자원을 여러 프로그램에 나누어준다. 동시에 잘못된 프로그램이 다른 프로그램이나 운영체제 자체를 망가뜨리지 않도록 보호한다.

이때 운영체제의 핵심 부분을 kernel이라고 한다. kernel은 컴퓨터가 켜져 있는 동안 계속 메모리에 올라와 있고, 필요한 순간에 하드웨어와 직접 상호작용한다.

Interrupt: 운영체제가 끼어드는 순간

운영체제는 항상 모든 일을 직접 실행하고 있는 것이 아니다. 보통은 사용자 프로그램이 CPU를 사용하다가, 중요한 발생하면 운영체제가 개입한다. 이 사건을 대표하는 개념이 interrupt다.

예를 들어 디스크에서 데이터를 읽는 작업이 끝났거나, 키보드 입력이 들어왔거나, timer가 울렸거나, 프로그램이 system call을 요청하면 CPU는 현재 작업을 잠시 멈추고 운영체제의 interrupt service routine으로 이동한다.

흐름은 대략 이렇다.

  1. 사용자 프로그램 실행
  2. interrupt 또는 trap 발생
  3. CPU 상태 저장
  4. interrupt handler 실행
  5. 원래 작업으로 복귀

이 구조 덕분에 운영체제는 필요한 순간에만 개입하면서도 시스템 전체를 통제할 수 있다.

저장장치 계층과 caching

컴퓨터의 저장장치는 비용과 속도의 trade off가 존재한다. register와 cache는 매우 빠르지만 작고 비싸다. main memory는 그보다 느리지만 더 크다. SSD나 HDD 같은 secondary storage는 훨씬 크지만 CPU가 직접 명령어를 실행할 수 있을 만큼 빠르지는 않다.

그래서 컴퓨터 시스템은 저장장치를 계층 구조로 사용한다.

자주 쓰는 데이터는 빠른 곳에 두고, 덜 자주 쓰는 데이터는 큰 저장장치에 둔다. 이때 caching이란 느린 저장장치의 데이터를 빠른 저장장치에 복사해두고, 다음 접근을 빠르게 만드는 방식이다.

하지만 cache가 많아지면 같은 데이터의 복사본이 여러 곳에 생긴다. 이때 어느 복사본이 최신인지 맞추는 문제가 생기는데, 이를 cache coherency 문제라고 볼 수 있다.

Multiprogramming과 Timesharing

운영체제가 여러 프로그램을 동시에 실행하는 것처럼 보이게 만드는 기본 아이디어는 multiprogramming이다. multiprogramming이란 한 프로그램이 I/O를 기다리는 동안 CPU를 놀리지 않고 다른 프로그램을 실행한하는 기법이다.

Timesharing은 여기서 한 단계 더 나아가 CPU 시간을 작은 조각으로 나누어 여러 사용자와 프로그램이 동시에 컴퓨터를 쓰는 것처럼 느끼게 한다.

실제로 CPU가 하나라면 한 순간에 실행되는 프로그램은 하나뿐이다. 하지만 운영체제가 매우 빠르게 전환해주기 때문에 사용자는 여러 프로그램이 동시에 움직이는 것처럼 느낀다.

User Mode와 Kernel Mode

운영체제가 보호를 제공하려면 일반 프로그램과 kernel을 구분해야 한다. 그래서 현대 시스템은 보통 dual-mode operation을 사용한다.

사용자 프로그램은 user mode에서 실행된다. 이 모드에서는 하드웨어를 직접 제어하거나, 다른 프로그램의 메모리를 마음대로 건드릴 수 없다. 반면 kernel은 kernel mode에서 실행되며, 보호된 자원에 접근할 수 있다.

이 둘 사이를 오가는 통로가 system call이다.

System Call: 사용자 프로그램이 kernel에게 부탁하는 방법

사용자 프로그램은 파일을 읽거나, 프로세스를 만들거나, 네트워크를 사용하고 싶을 때 운영체제의 도움이 필요하다. 그런데 아무 코드나 kernel 내부로 직접 뛰어들 수 있으면 시스템이 위험해진다.

그래서 운영체제는 system call이라는 정해진 입구를 제공한다.

예를 들어 C에서 printf()를 호출하면 겉으로는 화면에 문자열을 출력하는 함수처럼 보인다. 하지만 실제로는 library 내부에서 write() 같은 system call을 호출해 kernel에게 출력을 요청할 수 있다.

printf("hello\n");

이 코드는 대략 이런 흐름으로 내려간다.

printf()
→ C library
→ write() system call
→ trap
→ kernel mode
→ device/file 처리
→ user mode 복귀

사용자는 편한 API를 쓰고, API는 system call을 감싼다.

정리하자면 system call은 user mode와 kernel mode 사이를 안전하게 연결한다.

운영체제의 내부 구조

운영체제는 기능이 많다. 프로세스 관리, 메모리 관리, 파일 시스템, I/O 시스템, 보안, 네트워크 등 거의 모든 시스템 자원을 다룬다. 그래서 내부 구조를 어떻게 잡느냐가 중요하다.

단순 구조는 구현이 쉽지만, 모듈 경계가 약해 유지보수가 어렵다.

Layered structure는 계층을 나누어 각 계층이 아래 계층 기능만 사용하게 한다. 이해와 검증은 쉬워지지만, 계층을 지날 때마다 비용이 생기고 설계가 경직될 수 있다.

Microkernel은 kernel 안에는 최소 기능만 남기고, 파일 시스템이나 장치 드라이버 같은 기능을 user space 서버로 분리한다. 안정성과 확장성은 좋아지지만, 서버 사이 message passing 비용이 커질 수 있다.

Module 구조는 핵심 kernel은 유지하면서 필요한 기능을 동적으로 추가하거나 제거한다. 현대 운영체제에서 현실적인 균형점으로 자주 등장한다.

Boot: 운영체제가 시작되는 과정

컴퓨터가 켜진다고 바로 운영체제가 실행되는 것은 아니다. 처음에는 firmware나 BIOS가 하드웨어를 점검하고, bootloader가 운영체제 kernel을 찾아 메모리에 올린다.

그 뒤 kernel이 초기화되고 root filesystem을 mount한다. 이후 init process나 daemon, shell, GUI 환경이 차례로 올라오면서 우리가 아는 컴퓨터 사용 환경이 만들어진다.

정리

1~2강을 한 문장으로 묶으면 이렇게 볼 수 있다.

운영체제는 응용 프로그램과 하드웨어 사이에서 자원을 관리하고, system call이라는 통제된 입구를 통해 kernel 서비스를 제공하며, 내부 구조에 따라 안정성·성능·확장성의 균형을 잡는다.

처음에는 운영체제를 “컴퓨터를 켜면 있는 무언가” 정도로 느낄 수 있다. 하지만 구조를 따라가면 조금 더 선명해진다. 운영체제는 하드웨어를 직접 다루는 위험한 일을 감싸고, 프로그램들이 서로 방해하지 않게 조율하며, 사용자가 복잡한 시스템을 편하게 쓰도록 만들어주는 중간 관리자다.

참고

  • 운영체제 Lecture 1. Introduction to Operating Systems
  • 운영체제 Lecture 2. Operating System Structures
728x90
저작자표시 비영리 변경금지 (새창열림)

'Computer Science > OS(운영 체제)' 카테고리의 다른 글

[OS] 4. Thread(쓰레드)란?  (0) 2026.05.03
[OS] 3. 프로세스(Process)란?  (0) 2026.04.29
[OS] 2. Operating System Structures  (0) 2026.04.29
'Computer Science/OS(운영 체제)' 카테고리의 다른 글
  • [OS] 4. Thread(쓰레드)란?
  • [OS] 3. 프로세스(Process)란?
  • [OS] 2. Operating System Structures
BE_개발자
BE_개발자
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
    250x250
  • BE_개발자
    경이로운 개발일기
    BE_개발자
  • 전체
    오늘
    어제
    • 전체 보기 (213)
      • AI (1)
        • AI native (0)
        • Skill (0)
      • SpringBoot (4)
        • JPA (3)
        • Security (0)
        • 튜토리얼 (1)
        • 기타 (0)
      • Infra (0)
        • Docker (0)
        • AWS (0)
        • NCP (0)
        • GCP (0)
      • React (19)
      • 서버 (0)
      • Computer Science (16)
        • SW Engineering (10)
        • Data Base (2)
        • OS(운영 체제) (4)
      • Data science (0)
        • Probability & Random Variab.. (0)
        • Data Analysis(데이터 분석) (0)
      • 자료구조 | 알고리즘 (57)
        • 선형 자료구죠 (6)
        • 비선형 자료구조 (9)
        • 정렬(Sort) (3)
        • 탐색(Brute Force) (7)
        • 분할 정복(Devide Conquer) (3)
        • 동적 계획법 (6)
        • 탐욕(Greedy) (2)
        • 수학 (7)
        • 심화 알고리즘 (10)
      • PS (44)
        • 백준 알고리즘[BOJ] (38)
        • 프로그래머스[programmers] (3)
      • Dev tool (15)
        • 개발 도구 및 환경 (0)
        • vscode (3)
        • Git Hub (4)
        • Chrome 웹스토어 (5)
        • Python 전용 개발환경 (0)
      • 성장기록 (1)
      • 개인 project (14)
        • 홈페이지 만들기 (11)
        • 냉보미 (1)
      • STL(Standard Library) (9)
      • programming Language (1)
        • javascript (1)
      • 기타 (13)
        • html css (11)
      • (책, 글, 블로그)리뷰 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 백준
    • Github
    • Notion
    • 서울과학기술대학교 학술동아리 EC
  • 공지사항

  • 인기 글

  • 태그

    stack
    알고리즘
    탐색
    C++
    PS
    백트래킹
    분할정복
    BFS
    프론트엔드
    CS
    비트마스킹
    이분 탐색
    DP
    자료구조
    OS
    브루트포스
    완전 탐색
    괄호쌍
    재귀함수
    그리디
    운영체제
    SW 공학
    SW Engineering
    react
    백준
    스택
    stl
    수학
    순열
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
BE_개발자
[OS] 1. Introduction to Operating Systems
상단으로

티스토리툴바