← Blog로 돌아가기

2026년 4월 18일 · 조회수 11

CS / OS

[OS] 1. 운영체제 들어가기

본 글은 인프런 강의를 바탕으로 정리한 개인 학습 기록입니다.
출처: <그림으로 쉽게 배우는 운영체제>



목차

1. 운영체제 개요
2. 운영체제의 역사
3. 운영체제의 구조
4. 컴퓨터 하드웨어와 구조
5. 컴퓨터 부팅 과정
6. 인터럽트



1. 운영체제 개요


운영체제의 역할

  1. 프로세스 관리
  2. 메모리 관리
  3. 하드웨어 관리
  4. 파일 시스템 관리


2. 운영체제의 역사


1) 1940년도: 초기 컴퓨터

  • 컴퓨터가 매우 비싸고 느리게 운영됨
  • 프로그래밍은 스위치와 배선을 직접 연결하는 방식
  • 입출력은 펀치카드로 처리해서 매우 느렸음
  • 입출력 중에는 CPU가 쉬게 되어 CPU 사용률이 낮았음

2) 1950년도: 배치 시스템

  • 오퍼레이터가 작업을 하나씩 넣고 결과를 전달하는 과정이 비효율적이었음
  • 이를 줄이기 위해 배치 시스템 등장
  • 여러 작업을 모아 순서대로 자동 실행
  • 사람 개입이 줄어들어 CPU 활용 효율 증가

3) I/O 컨트롤러와 인터럽트

  • 입출력을 별도 장치가 담당
  • 작업이 끝나면 인터럽트로 CPU에 알림
  • CPU가 입출력 동안 다른 일을 할 수 있어 효율 향상
  • 하지만 입력 대기 상황에서는 여전히 CPU가 놀 수 있었음

4) 1960년대: 시분할 시스템

  • 여러 프로그램을 메모리에 올려두고 CPU 시간을 잘게 나눠 번갈아 실행
  • 사용자 입장에서는 동시에 실행되는 것처럼 보임
  • 입력 대기 중인 프로그램 대신 다른 프로그램을 실행해 CPU 사용률을 더 높임
  • 이 시기에 다중 사용자 시스템도 등장

5) 운영체제가 복잡해진 이유

시분할과 다중작업이 가능해지면서 발생한 새로운 문제:

  • 메모리 보호 문제: 한 프로그램이 다른 프로그램이나 운영체제 영역을 침범할 수 있음
  • 주소 재배치 문제: 여러 프로그램이 메모리에 함께 올라가면 실행 위치가 달라짐
  • 이를 해결하려고 베이스 레지스터 같은 장치가 필요해짐
  • 다중 사용자 환경 때문에 파일 시스템도 필요해짐

6) 1970년대 이후

  • 하드웨어 가격이 내려가면서 개인용 컴퓨터 시대가 시작됨
  • 운영체제는 개인 사용자도 쉽게 쓸 수 있는 방향으로 발전
  • 대표적으로 Macintosh, MS-DOS 등이 등장


3. 운영체제의 구조


운영체제의 구조

1) 커널과 사용자 접근

  • 사용자는 커널에 직접 접근할 수 없음
  • 반드시 운영체제가 제공하는 인터페이스를 통해 접근해야 함
  • 인터페이스 방식에는 GUICLI가 있음

2) GUI와 CLI

  • GUI

    • 그래픽 기반 인터페이스
    • 사용이 직관적이고 쉬움
    • 예: Windows, macOS
  • CLI

    • 텍스트 명령어 기반 인터페이스
    • 명령어를 직접 입력해 작업 수행
    • 예: Unix, Linux

3) 시스템콜의 역할

  • 애플리케이션은 시스템콜을 통해 커널에 접근
  • 시스템콜은 프로그램이 하드웨어나 자원에 직접 접근하지 못하게 막고, 커널이 대신 안전하게 처리하도록 함
  • 예: 파일 저장 시 write 같은 시스템콜을 사용해 커널이 빈 공간을 찾아 안전하게 저장

4) 드라이버의 역할

  • 사용자/애플리케이션 ↔ 커널: 시스템콜
  • 커널 ↔ 하드웨어: 드라이버
  • 드라이버는 커널이 다양한 하드웨어를 제어할 수 있게 해줌
  • 단순한 장치(키보드, 마우스)는 기본 포함되는 경우가 많고, 복잡한 장치(그래픽카드 등)는 별도 설치가 필요할 수 있음


4. 컴퓨터 하드웨어와 구조


컴퓨터 하드웨어 구조

1) 폰 노이만 구조

  • 프로그램을 메모리에 저장해 두고 실행하는 방식
  • CPU와 메모리를 버스로 연결해 데이터와 명령어를 주고받음
  • 예전처럼 배선을 다시 연결할 필요 없이 프로그램만 바꾸면 됨
  • 그래서 컴퓨터 사용과 프로그램 변경이 훨씬 쉬워짐

2) 메인보드

  • 컴퓨터의 여러 하드웨어를 연결하는 핵심 기판
  • CPU, 메모리, 저장장치, 그래픽카드 등이 메인보드에 연결됨
  • 장치들 사이의 데이터 전달 통로 역할도 함

3) CPU

  • 컴퓨터의 연산과 제어를 담당하는 핵심 장치
  • 주요 구성:
    • ALU: 산술·논리 연산 수행
    • 제어장치: 각 장치의 동작을 지시하고 제어
    • 레지스터: CPU 내부의 고속 임시 저장 공간 (변수)

4) 메모리

  • RAM (Random Access Memory)

    • 실행 중인 프로그램과 데이터를 저장
    • 휘발성이라 전원이 꺼지면 내용이 사라짐
  • ROM (Read Only Memory)

    • 비휘발성이라 전원이 꺼져도 내용이 유지됨
    • 부팅에 필요한 기본 정보 저장에 사용됨


5. 컴퓨터의 부팅과정


1) BIOS 실행

  • 전원 버튼을 누르면 가장 먼저 ROM에 저장된 BIOS가 실행됨
  • BIOS는 부팅 절차를 시작하는 기본 프로그램임

2) 하드웨어 점검(POST)

  • BIOS가 주요 하드웨어에 이상이 없는지 확인함
  • 점검 대상:
    • 전원
    • CPU
    • 메모리
    • 키보드
    • 마우스
    • 하드디스크
  • 문제가 있으면 오류음이 나고 부팅이 중단됨

3) 부트로더 실행

  • 이상이 없으면 하드디스크의 **마스터 부트 레코드(MBR)**에 있는 부트로더를 메모리로 불러와 실행함

4) 운영체제 선택

  • 운영체제가 여러 개 설치되어 있으면 어떤 운영체제를 실행할지 선택함
  • 운영체제가 하나만 있으면 바로 다음 단계로 넘어감

5) 운영체제 로딩

  • 선택된 운영체제를 메모리에 적재
  • 운영체제가 실행되면 바탕화면이 나타남

6) 운영체제의 관리 시작

  • 이후 실행되는 모든 응용 프로그램은 메모리에 올라와 실행됨
  • 이 프로그램들은 모두 운영체제가 관리
BIOS 실행 → 하드웨어 점검 → 부트로더 실행 → 운영체제 로딩


6. 인터럽트


1) 폴링

  • CPU가 입출력 작업 완료 여부를 계속 반복해서 확인하는 방식
  • 작업이 끝났는지 알기 위해 주기적으로 상태를 검사함
  • CPU가 확인 작업을 계속 해야 해서 비효율적임

2) 폴링의 단점

  • CPU가 쓸데없이 반복 확인을 해야 함
  • 그만큼 CPU 자원이 낭비됨
  • 전체 시스템 성능이 떨어질 수 있음

3) 인터럽트

  • CPU가 입출력 명령만 내린 뒤 다른 작업을 수행
  • 입출력이 끝나면 장치가 CPU에 신호(인터럽트) 를 보냄
  • CPU는 그 신호를 받으면 필요한 처리를 수행함
  • 폴링보다 효율적임

4) 인터럽트 서비스 루틴(ISR)

  • 인터럽트가 발생했을 때 실행되는 처리 함수
  • CPU는 인터럽트를 받으면 해당 ISR을 실행해 필요한 작업을 마무리함

5) 인터럽트 종류

  • 하드웨어 인터럽트
    • 입출력 완료 등 장치에서 발생하는 인터럽트
  • 소프트웨어 인터럽트
    • 프로그램 실행 중 발생하는 인터럽트
    • 예:
      • 잘못된 메모리 접근
      • 0으로 나누기

댓글

댓글을 불러오는 중...