PintOS| (번외 ) 운영체제는 어떤 역할을 할까?

맹쥐·2025년 5월 16일
5

kaist - PintOS

목록 보기
4/10
post-thumbnail

운영체제란 무엇일까

일반적으로 가장 접하기 쉬운 운영체제는 windows일 것이다.

운영체제(OS, Operating System)란 말 그대로 컴퓨터를 운영하기 위한 체계적인 시스템이다.
즉, 컴퓨터의 총관리자라고 생각하면 이해하기 쉽다.

이러한 관리시스템의 종류가 여러가지가 있다.
그 중 가장 대표적인 것이 windows,
그리고 맥북에서는 macOS라는 운영체제를 선택하여 사용하는 것이다.
그 외에도 리눅스, 안드로이드 등이 있다.

[macOS] [Linux]

운영체제는 왜 필요할까?

좀 더 깊이 들어가서 생각해보면, 컴퓨터는 단순히 하나의 기계가 아니다.

여러 하드웨어 부품들(CPU, 메모리, 디스크, 키보드 등)이 모여 있고, 그 위에서 프로그램이 실행된다.

그런데 이 모든 것들을 사용자가 직접 일일이 제어하기는 어렵고 위험하다.

사용자가 일일이 제어한다는 말은,
TV를 볼 때 리모컨 없이 전자 회로를 직접 만져야 하는 것과 같다.

운영체제는 사용자가 이러한 하드웨어를 직접 건드리지 않아도,
버튼 클릭 몇 번만으로도 프로그램 실행, 파일 저장, 인터넷 연결 같은 일을 가능하게 해주는 것이다.


운영체제의 역할

운영체제는 컴퓨터라는 복잡한 기계를 사람이 쉽게 사용할 수 있도록 도와주는 총괄 매니저이다.

대표적인 역할은 크게 네 가지로 나눌 수 있다.:

1️⃣ 프로그램을 실행시켜준다
2️⃣ 사용자에게 편리한 UI(화면 인터페이스)를 제공한다
3️⃣ 파일, 메모리 등 자원을 효율적으로 관리한다
4️⃣ 하드웨어(CPU, 디스크 등)를 제어하고 연결해준다.

사용자는 그저 프로그램을 더블 클릭하거나 아이콘을 누르지만,
그 뒤에서 OS는 엄청나게 바쁘게 움직이고 있다.

사용자가 프로그램 하나를 실행하면,

  • OS는 그 요청을 받아 적절한 메모리를 배정하고
  • CPU에게 일 시키고
  • 저장공간도 준비하느라

🌀 쉴틈이 없다.


이제, 운영체제가 어떻게 구성되어 있는지 알아보자.

운영체제의 핵심 구조: 두 가지 모드

그래서 운영체제는 프로그램을 실행할 때 두 개의 공간(모드)을 구분해서 사용한다.

  • 유저모드 (User Mode)
  • 커널모드 (Kernel Mode)

유저모드는 일반 프로그램이 실행되는 공간이다.

우리가 사용하는 크롬, 게임, 메모장 같은 앱들은 전부 유저모드에서 돌아간다.

반면, 커널모드는 컴퓨터의 핵심 기능이 작동하는 운영체제 전용 공간이다.

사용자가 실수로 이 영역을 건드리면 시스템 전체가 멈출 수 있기 때문에,
보안을 위해 접근이 제한되어 있다.

유저모드는 사용자 친화적인 놀이터,
커널모드는 운영체제만 들어갈 수 있는 조종실이다.

커널모드로 어떻게 들어갈까?

그렇다고 사용자가 커널모드에 전혀 접근 못 하는 건 아니다.
유저모드에서 커널모드로 들어갈 때 보내는 요청이 있다.
그게 바로 시스템 호출(System Call)이다.

참고 🌸 CSAPP 8장 번외편 | 운영체제, 커널, CPU, 시스템 콜 정리


운영체제의 4가지 대표 역할과 세부 구성

운영체제는 크게 아래 네 가지 역할을 수행하며,
각 역할 안에는 구체적인 기능들과 개념들이 들어 있다.

1️⃣ 프로그램을 실행시켜준다 (프로세스/스레드 관리)

  • 프로세스(Process)
    → 실행 중인 프로그램의 단위. CPU, 메모리 등의 자원을 할당받음

  • 스레드(Thread)
    → 프로세스 안에서 실행되는 작업 흐름. 여러 개 존재 가능

  • 컨텍스트 스위칭(Context Switching)
    → CPU가 실행 중인 프로세스를 바꾸는 과정

  • CPU 스케줄링(Scheduling)
    → 어떤 프로세스가 CPU를 사용할지 결정

💡 “실행 중인 프로그램을 효율적으로 관리하는 일”
이 파트가 운영체제의 핵심 중 하나이다.

2️⃣ 사용자에게 UI(사용자 인터페이스)를 제공한다

  • CLI (Command Line Interface)
    → 터미널에서 명령어 입력으로 조작

  • GUI (Graphical User Interface)
    → 창, 버튼, 아이콘 등 그래픽으로 조작

  • 쉘(Shell)
    → 사용자와 커널 사이의 중간 다리 역할

💡 "사용자가 명령을 입력하고, 그 결과를 눈으로 확인하는 공간"을 구성하는 역할

3️⃣ 파일, 메모리 등 저장공간을 관리한다

  • 메모리 관리 (Memory Management)

  • 가상 메모리

  • 페이징 / 세그먼테이션

  • 페이지 교체 알고리즘

  • 파일 시스템 (File System)

  • 디렉터리, 파일 구조

  • 파일 이름, 위치, 속성 관리

  • 저장장치 관리 (Disk Management)

  • 디스크 스케줄링 알고리즘 (e.g., FCFS, SSTF, LOOK 등)

💡 "누가 얼만큼 메모리를 쓰는지, 파일이 어디 저장됐는지 등을 책임지는 똑똑한 관리자 역할"

4️⃣ 하드웨어를 다룬다 (입출력 및 인터럽트 처리)

  • 장치 드라이버(Device Driver)
    → OS와 하드웨어(프린터, 마우스 등)를 이어주는 코드

  • 입출력 시스템 (I/O System)
    → 하드웨어와 데이터 주고받는 방법 관리

  • 인터럽트 (Interrupt)
    → 예외 상황이 발생했을 때 즉시 처리

  • DMA (Direct Memory Access)
    → CPU 개입 없이 장치가 메모리 접근할 수 있게 해줌

💡 “하드웨어와 소통하고, 예외 상황에 대처하는 조정자 역할”

profile
이유민

3개의 댓글

comment-user-thumbnail
2025년 5월 16일

덕분에 운영체제 마스터했네요

1개의 답글