운영체제(OS, Operating System)는 우리가 컴퓨터를 편리하게 쓸 수 있게 도와주는 프로그램입니다. 컴퓨터의 한정된 부품(메모리, CPU 등)을 여러 프로그램이 싸우지 않고 효율적으로 나눠 쓸 수 있게 관리해줍니다. 운영체제와 비슷하지만, 나중에 다른 프로그램을 추가로 설치할 수 없는 내장형 소프트웨어를 펌웨어(firmware)라고 부릅니다. (예: TV, 냉장고 안의 프로그램)
⚙️ 운영체제의 역할
- CPU 스케줄링과 프로세스 관리: 컴퓨터의 '뇌'인 CPU를 어떤 프로그램(프로세스)이 먼저 쓸지 순서를 정해주고, 프로그램이 시작하고 끝나는 것을 관리하며 필요한 자원을 나눠주고 회수합니다.
- 메모리 관리: '작업대'인 메모리를 어떤 프로그램에 얼마나 나눠줄지 관리합니다.
- 디스크 파일 관리: '서랍장'인 디스크에 파일을 어떻게 저장하고 찾을지 관리합니다.
- I/O 디바이스 관리: 마우스, 키보드 같은 '입력/출력 장치'와 컴퓨터 본체가 서로 데이터를 잘 주고받도록 관리합니다.
🏗️ 운영체제의 구조
보통 '운영체제'라고 하면 GUI, 시스템콜, 커널, 드라이버 같은 부분들을 합쳐서 말합니다. 윈도우처럼 예쁜 아이콘이 있는 GUI 화면이 있기도 하고, 리눅스 서버처럼 까만 화면에 명령어를 입력하는 CUI만 있기도 합니다.

- 용어 설명:
- GUI(Graphic User Interface):
마우스로 아이콘을 클릭하는 것처럼, 그림(그래픽)을 통해 컴퓨터와 대화하는 방식입니다. - 드라이버(Driver):
컴퓨터에 연결된 특정 부품(하드웨어)이 작동할 수 있게 해주는 전용 소프트웨어입니다. (예: 그래픽카드 드라이버) - CUI(Character User Interface):
그래픽 없이, 키보드로 명령어(글자)를 입력해서 컴퓨터와 대화하는 방식입니다.
- GUI(Graphic User Interface):
📞 시스템콜
'유저 프로그램'이 운영체제의 핵심 기능('커널')을 사용하고 싶을 때 이용하는 '창구' 또는 '인터페이스'입니다.
만약 우리가 만든 프로그램이 "파일 읽어줘"(fs.readFile()) 같은 I/O 요청을 하면, '트랩(trap)'이라는 신호가 발생합니다. 그럼 컴퓨터는 이게 안전한 요청인지 확인한 뒤, '유저 모드'에서 '커널 모드'로 잠시 전환합니다.
즉, 프로그램이 직접 파일을 읽는 게 아니라, 운영체제(커널)에게 "대신 읽어줘"라고 부탁하는 것입니다. 커널이 파일을 다 읽어서 프로그램에 전달해주면, 다시 '유저 모드'로 돌아와서 하던 일을 계속합니다.
이렇게 하는 이유는, 프로그램이 컴퓨터의 중요한 자원(파일, 하드웨어 등)에 마음대로 접근해서 망가뜨리는 것을 막기 위해서입니다. 다른 프로그램으로부터 내 프로그램을 보호하는 효과도 있습니다.
시스템콜은 일종의 '보호막'이자 '전문가' 역할을 해줍니다. 덕분에 개발자들은 "네트워크 연결은 어떻게 하지?", "파일은 어떻게 저장하지?" 같은 복잡하고 낮은 단계의 처리를 일일이 신경 쓰지 않고 프로그램을 만들 수 있습니다.
- 용어 설명:
- I/O 요청:
'입력(Input)'이나 '출력(Output)'과 관련된 작업 요청입니다. (예: 파일 읽기/쓰기, 인터넷 연결, 데이터베이스 접근)
- I/O 요청:
🚦 modebit
시스템콜이 작동할 때, 현재 상태가 '유저 모드'인지 '커널 모드'인지를 구분하는 '표시등' 같은 역할을 합니다. modebit은 1 또는 0의 값을 가집니다. (예: 1 = 유저 모드, 0 = 커널 모드)
카메라나 키보드 같은 중요한 장치(I/O 디바이스)는 오직 운영체제(커널)만 직접 다룰 수 있어야 합니다. 만약 우리가 만든 프로그램이 카메라를 켜고 싶다면, 먼저 '시스템콜'을 보냅니다.
이때 컴퓨터는 modebit을 1(유저 모드)에서 0(커널 모드)으로 바꿉니다. 그리고 커널이 대신 카메라를 켜는 작업을 안전하게 수행합니다. 일이 끝나면, 다시 modebit을 0에서 1로(유저 모드) 되돌려놓고, 우리 프로그램은 하던 일을 계속합니다.
- 용어 설명:
- 유저 모드(User Mode):
일반 프로그램이 실행되는 '제한 구역'입니다. 중요한 컴퓨터 자원에 함부로 접근할 수 없습니다. - 커널 모드(Kernel Mode):
운영체제의 핵심(커널)이 실행되는 '특수 구역'입니다. 컴퓨터의 모든 자원에 접근할 수 있습니다. - 커널(Kernel):
영체제의 '가장 핵심'이 되는 부분입니다. 위에서 말한 시스템콜(창구)을 제공하고, 컴퓨터의 보안, 메모리 관리, 프로그램(프로세스) 관리, 파일 시스템, 입출력 장치 관리 등 가장 중요하고 중심이 되는 일을 도맡아 합니다.
- 유저 모드(User Mode):
1. 운영체제의 역할은 무엇인가요?
운영체제는 하드웨어와 응용 프로그램 사이에서 중개자 역할을 하면서 CPU, 메모리, 저장장치 같은 자원을 효율적으로 관리합니다. 프로세스 관리, 메모리 관리, 파일 시스템 관리, 그리고 입출력 장치 제어를 담당하며, 안정성과 보안성을 보장해 시스템이 안정적으로 동작하도록 합니다.
2. 커널에 대해 설명해보세요.
커널은 운영체제의 가장 핵심적인 부분입니다. CPU 스케줄링, 메모리 관리, 입출력 장치 제어 등과 같은 하드웨어 자원을 관리합니다. 또한 시스템 콜 인터페이스를 제공하여 소프트웨어가 하드웨어에 접근할 수 있도록 합니다. 이를 통해 시스템의 안정성과 보안성을 유지할 수 있습니다. 커널은 프로그램이 안정적으로 작동할 수 있는 가장 중요한 요소라고 할 수 있습니다.
3. 시스템콜을 설명하고 필요한 이유는 무엇인가요?
시스템콜은 사용자 프로그램이 직접 접근할 수 없는 커널 기능을 요청할 때 사용하는 인터페이스입니다. 파일 읽기/쓰기, 프로세스 생성 같은 작업을 안전하게 수행하기 위해 반드시 필요하며, 시스템 자원을 보호하고 프로그램 간의 안정적인 실행을 보장합니다.
'Computer Science > Operating System' 카테고리의 다른 글
| 🚦 CPU 스케줄링 알고리즘 (0) | 2025.11.18 |
|---|---|
| 🧵 프로세스와 스레드 (0) | 2025.11.18 |
| 🗂️ 메모리 관리 (0) | 2025.11.05 |
| 💾 메모리 계층 (0) | 2025.11.05 |
| 🧱 컴퓨터의 요소 (0) | 2025.11.05 |