변수의 기록

운영체제와 프로그램 실행 원리 정리 본문

CS지식/운영체제 (Operating System)

운영체제와 프로그램 실행 원리 정리

불광동 물주먹 2025. 4. 2. 00:52

2025년 4월 1일(화) 

운영체제 공부

 

✅ 운영체제와 프로그램 실행 원리 정리


📌 1. 컴퓨터 시스템 구성

컴퓨터 시스템은 다음과 같은 계층 구조로 구성되어 있다:

 
        [사용자]
             ↓
   [응용 프로그램]  
             ↓
   [운영체제 (OS)]
             ↓
  [하드웨어 (CPU, 메모리, 디스크, I/O 장치 등)]
 
  • 응용 프로그램: 메모장, 브라우저, 게임 등 사용자가 직접 실행하는 프로그램
  • 운영체제(OS): 응용프로그램과 하드웨어 사이를 중재하는 관리자
  • 하드웨어: 실제 명령 실행과 데이터 저장을 담당 (CPU, RAM 등)

📌 2. 프로그램 실행의 전체 흐름

  1. 사용자가 메모장 같은 실행파일을 클릭한다.
  2. OS가 시스템 콜을 통해 실행파일을 디스크에서 읽어 메모리에 로딩하고, 프로세스를 생성한다.
  3. OS는 CPU에게 해당 프로세스를 유저 모드에서 실행하라고 명령한다.
  4. CPU는 메모리에 있는 코드를 실행하면서 응용프로그램을 구동한다.
  5. 응용프로그램이 파일을 열거나 저장 등 자원 접근이 필요하면, 시스템 콜을 통해 커널 모드로 진입하여 OS가 직접 처리한다.
  6. 처리 후 다시 유저 모드로 돌아와 실행을 계속한다.

📌 3. CPU, 유저 모드, 커널 모드의 관계

  • CPU는 단순히 메모리에 적재된 명령어를 하나씩 읽어 실행하는 **실행기계(엔진)**이다.
  • CPU는 현재 자신이 커널 모드인지 유저 모드인지를 항상 인지하고 있음
    → 이 모드에 따라 허용된 명령이나 메모리 접근 권한이 달라짐
  • 모드 전환은 CPU가 하는 것이 아니라, OS(커널 코드)가 시스템 콜 등으로 전환을 제어함.
구분설명
유저 모드 일반 프로그램이 실행되는 환경, 제한된 권한
커널 모드 OS의 핵심 코드가 실행되는 환경, 전체 시스템 자원 접근 가능
시스템 콜 유저 모드에서 커널 기능을 요청할 때 사용하는 진입점

📌 4. 시스템 콜과 커널 진입

  • 시스템 콜은 유저 프로그램이 직접 할 수 없는 작업(디스크 접근, 네트워크, 메모리 관리 등)을 커널에게 요청할 때 사용된다.
  • 예: open(), write(), read(), socket() 등
  • 흐름: 유저 코드 실행 중 → 시스템 콜 발생 → CPU가 커널 모드로 전환 → OS가 처리 → 유저 모드 복귀

📌 5. 메모리와 접근 권한

  • 메모리 자체에는 유저/커널 모드가 없지만, CPU의 모드에 따라 접근 가능한 메모리 영역이 다르다.
  • 이 접근 권한 제어는 MMU(Memory Management Unit) 가 담당.
    • MMU는 CPU의 현재 모드(Ring 0 or 3 등)와 페이지 테이블 권한을 보고 메모리 접근을 허용/차단한다.

📌 6. 예시 상황별 커널 모드 진입 여부

상황커널 모드 진입 여부이유
키보드 입력 ✅ 있음 (인터럽트 발생 시) 하드웨어 이벤트 처리
파일 열기/저장 ✅ 있음 (시스템 콜) 디스크 접근은 OS만 가능
앱 간 전환 ⚠️ 있음 (스케줄링, 이벤트 처리 중 일부) OS가 처리
글자 입력만 ❌ 없음 이미 메모리에 있는 코드에서 처리

📌 7. 요약: OS는 진짜 중재자

  • 응용 프로그램은 하드웨어를 직접 다룰 수 없다.
  • OS가 대신 하드웨어와 소통하고, 적절히 CPU와 메모리를 관리해준다.
  • CPU는 실행만 담당, OS가 실행시킬 코드를 선택하고 모드를 제어한다.
  • 이 전체 흐름 덕분에 사용자는 다양한 프로그램을 안전하고 효율적으로 실행할 수 있다.

✅ 마지막 한 줄 요약:

운영체제는 응용프로그램과 하드웨어를 이어주는 강력한 중재자이며, CPU와 메모리, 시스템 자원을 통합적으로 관리하는 핵심 소프트웨어이다.