본문 바로가기
Study/CS

03-1 운영체제 큰그림

by dailycoding777 2025. 2. 12.

운영체제는 특별한 프로그램이다.

대표적으로

  • 데스크탑 : 윈도우 ,맥OS,리눅스
  • 스마트폰 : iOS , 안드로이드

등이 있다. 매우 다양한 종류,다양한 기능이 있지만 핵심적인 기능은 비슷하다.

커널 : 운영체제의 핵심 기능을 담당하는 부분 (자동차 엔진 같은 곳)

운영체제의 두가지 핵심 기능

1. 자원 할당 및 관리

  • 프로세스와 스레드
  • 동기화와 교착 상태

2.프로세스 및 스레드 관리 (뒤에 자세히 다룸)

  • 프로세스 : 실행중인 프로그램 실행 중인 프로그램의 독립적인 작업 단위로, 자신만의 메모리 공간을 가짐 (OS가 할당) ex ) 크롬의 탭 하나
  • 쓰레드 : 이 프로세스를 이루는 실행 단위
    • 쓰레드는 같은 프로세스의 메모리를 공유 함.
      • 프로세스 A ( 쓰레드 a , 쓰레드 b ~~~)
    개념
    • 하드웨어적 개념 : 한 코어에서 동시에 실행 될 수 있는 소프트웨어 스레드 수 ex ) 2코어 4쓰레드
    • 소프트웨어적 개념 : 프로세스 내에서 실행되는 개별 실행 단위

운영체제의 역할

  • CPU,메모리,보조기억장치 등의 컴퓨터 부품 접근 , 각 부품들이 효율적으로 사용되도록 관리
  • 응용프로그램에게 자원을 할당

자원이란?

프로그램 실행에 마땅히 필요한 요소 ( 소프트웨어 , 하드웨어 )

1. CPU 스케줄링

운영체제가 여러 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정하는 과정

멀티태스킹 환경이 아니면 CPU는 한번의 하나의 프로세스만 실행 가능 → 효율적으로 분배해야 함

CPU 스케줄링 필요한 이유

  • CPU 활용을 극대화
  • 공정한 자원 분배
  • 응답 시간 최소화
  • 처리량(Throughput) 극대화
  • 대기 시간 최소화

CPU 스케줄링 종류

  1. 비선점(Non-preemptive) 스케줄링
    • 한 번 CPU를 할당받은 프로세스가 자신의 작업이 끝날 때까지 CPU를 점유
    • 중간에 다른 프로세스가 CPU를 빼앗을 수 없음
  2. 선점(Preemptive) 스케쥴링
    • 운영체제가 특정 조건에서 CPU를 강제로 회수 , 다른 프로세스에 할당 가능
    • 실시간 시스템이나 멀티 태스킹 환경에서 주로 사용 됨

2.가상 메모리

메모리 새롭게 실행하는 프로그램을 메모리에 적재, 종료된 프로그램은 메모리 삭제한다.

3. 파일 시스템

파일 시스템 : 보조기억 장치 내의 정보를 파일 및 폴더(디렉토리) 단위로 접근&관리 할 수 있도록 만드는 운영체제 내부 프로그램

+운영체제의 입출력장치 및 캐시 메모리 관리 운영체제는 일부 입출력장치의 장치 드라이버 , 하드웨어 인터럽트 서비스 루틴을 제공하거나 캐시 메모리의 일관성을 유지하는 등의 기능을 제공한다.

시스템 콜과 이중 모드

운영체제도 일종의 프로그램이기 때문에 프로그램이 실행 되기 위해선 반드시 메모리에 적재되어야 한다.

1️⃣ 시스템 콜 (System Call)

📌 사용자 프로그램이 운영체제(OS)의 기능을 요청하는 인터페이스

  • 사용자 영역(User Space)에서 실행되는 프로그램은 직접 하드웨어를 제어할 수 없음.
  • 대신, **운영체제(커널)**에 요청해야 하는데, 이때 시스템 콜을 사용함.

✅ 사용자 프로그램이 시스템 콜을 호출 하면,

✅ CPU가 사용자 모드 → 커널 모드로 전환 됨 (Mode Switching)

✅ 운영체제(OS)가 필요한 작업을 수행 (파일 열기, 메모리 할당, 네트워크 요청 등)

✅ 작업이 끝나면 CPU가 다시 커널 모드 → 사용자 모드로 전환하고,

✅ 결과를 사용자 프로그램에 돌려줌

즉, 사용자 프로그램이 커널 모드를 직접 빌려서 실행하는 게 아니라, 운영체제가 대신 작업을 처리해주는 구조

💡 정리하면?

"사용자 모드 = 일반인, 커널 모드 = 보안 구역"

  • 사용자는 보안 구역에 직접 들어갈 수 없음
  • 보안 구역에 있는 정보를 얻으려면 직원이 대신 작업해줘야 함
  • 시스템 콜은 "직원에게 요청하는 과정"
  • 요청이 들어오면 직원이 보안 구역(커널 모드)에서 대신 작업
  • 끝나면 다시 일반 구역(사용자 모드)로 돌아옴

💡 그래서 "빌려온다"기보다는, "운영체제에게 요청해서 대신 처리해달라고 한다"가 정확한 표현

예시

기능 시스템 콜

파일 관리 open(), read(), write(), close()
프로세스 관리 fork(), exec(), wait(), exit()
메모리 관리 mmap(), brk()
네트워크 socket(), connect(), bind(), listen(), accept()

시스템 콜을 새끼를 낳는다.

fork() 시스템 콜을 통해 알 수 있듯 프로세스는 시스템 콜을 통해 또 다른 프로세스 생성 , 그 밑으로 또 생성 가능

  • 부모프로세스 - 생성한 새 프로세스
  • 자식 프로세스 - 부모 프로세스에 의해 생성 된 프로세스

💾 커널 영역(Kernel Space) vs 사용자 영역(User Space) 차이점

구분 커널 영역 (Kernel Space) 사용자 영역 (User Space)

설명 OS 핵심 부분이 실행되는 공간 사용자 애플리케이션이 실행되는 공간
권한 높은 권한 (Supervisor Mode) 제한된 권한 (User Mode)
접근 가능 자원 하드웨어 직접 접근 가능 (CPU, 메모리, 디스크, 네트워크 등) 하드웨어 직접 접근 불가, OS API를 통해 접근
안정성 하나가 오류 나면 전체 시스템에 영향 오류가 나도 다른 프로세스에는 영향 없음
운영체제 서비스 제공 O 제공 X
예시 드라이버, 파일 시스템, 프로세스 관리 웹 브라우저, 게임, 문서 편집기

2️⃣ 이중 모드 (Dual Mode)

📌 CPU가 두 가지 실행 모드를 가지는 개념 - 그러니까 두개로 나눴다는 거임. 별 의미 없음

  • 사용자 모드 (User Mode): 일반 프로그램 실행 (제한된 권한)
  • 커널 모드 (Kernel Mode): 운영체제 실행 (모든 권한)

이중 모드가 필요한 이유?

  • 사용자가 운영체제 핵심 기능을 마음대로 건드릴 수 없도록 보호하기 위해.
  • 예를 들어, 메모리, 파일 시스템, 프로세스 관리 등은 커널 모드에서만 변경 가능.

모드 전환 과정

  1. 프로그램 실행 (User Mode)
  2. 시스템 콜 호출 (read(), write() 등)
  3. CPU가 커널 모드로 전환 후 시스템 콜 처리
  4. 완료되면 다시 사용자 모드로 복귀

💡 정리하면?

  • 시스템 콜을 통해 사용자 프로그램이 운영체제 기능을 사용할 수 있음.
  • 이중 모드를 통해 보안과 안정성을 보장.

컴퓨터 내부에서 시스템 콜이 호출되면?

S/W 인터럽트 발생 → CPU의 커널모드 전환 → 운영체제 코드 실행 → 사용자 모드로 재전환

📌 S/W 인터럽트(Software Interrupt)

  1. 프로그램이 명령어를 실행하면서 발생하는 인터럽트로, **시스템 콜(System Call)**을 호출할 때 사용됨.
  2. 사용자 모드 → 커널 모드 전환을 위해 활용되며, OS가 특정 작업(파일 입출력, 프로세스 관리 등)을 수행하도록 요청함.
  3. 하드웨어 인터럽트(외부 신호로 발생)와 달리, 소프트웨어가 직접 발생시킴.
  4. 예시: int 0x80 (리눅스 시스템 콜), syscall 명령어.
  5. 목적: 사용자 프로그램이 직접 접근할 수 없는 OS 기능을 안전하게 실행.

시스템 콜이 이 소프트웨어 인터럽트 일종임

  1. 사용자 영역을 실행하는 과정에서 시스템콜 호출 → CPU는 현 작업 백업
  2. 커널 영역 내의 인터럽트 처리하기 위한 코드
  3. 사용자 영역의 코드 실행을 재개함

'Study > CS' 카테고리의 다른 글

03-3 동기화와 교착 상태  (0) 2025.02.12
03-2 프로세스와 스레드  (1) 2025.02.12
02-5 보조기억장치와 입출력 장치  (0) 2025.02.05
02-4 메모리  (0) 2025.02.05
02-3 CPU  (0) 2025.02.05