1. 운영체제 개요

1.1. 운영체제의 정의

  • 운영체제(OS: Operating System)

    • 컴퓨터의 주기억장치 내에 상주하며 사용자와 컴퓨터 시스템 사이의 인터페이스를 담당하는 프로그램
    • 하드웨어 → 운영체제(커널+인터페이스) → 사용자
    • 컴퓨터 시스템의 전반적인 동작을 제어하고 조정한다.
  • 역할

    • 사용자에게 편리성 제공
    • 한정된 시스템 자원(CPU, 메모리, 입출력장치, 파일 등)의 효율적 관리

1.2. 목적과 기능

1) 목적

  • 목적
    • 사용자가 컴퓨터를 편리하게 사용하도록 돕고, 하드웨어 성능을 최적화
  1. 처리 능력 향상(Throughput)

    • 일정한 시간 내에 컴퓨터가 처리하는 일의 양을 늘리는 것
    • 효율적인 자원 배분을 통해 시스템이 최대한 많은 작업을 처리할 수 있도록 한다.
  2. 반환 시간 단축(Turnaround Time)

    • 사용자가 작업을 의뢰한 시점부터 결과가 나올 때까지 걸리는 시간을 최소화하는 것
    • 사용자가 기다리는 시간을 줄여 응답성을 높인다.
  3. 신뢰도 향상(Reliability)

    • 시스템이 주어진 문제를 정확하게 해결하는 정도를 높이는 것
    • 오류 없이 안정적으로 프로그램을 실행하고 데이터를 보호하는 역할을 한다.
  4. 사용 가능도 향상(Availability)

    • 사용자가 컴퓨터를 사용하고 싶을 때 즉시 사용할 수 있는 정도를 높이는 것
    • 시스템 자원을 항상 준비된 상태로 유지하여 가동률을 극대화한다.

2) 기능

  • 주요 기능
    • 초기화, 중앙처리장치 관리, 저장장치 관리, 입출력장치 관리, 사용자 계정 관리, 오류 검사 및 복구 등

1.3. 사용자 인터페이스 방식

  • CLI(Command Line Interface, 명령 줄 인터페이스)

    • 텍스트를 통해 컴퓨터에 직접 명령어를 입력하여 제어하는 방식
  • GUI(Graphical User Interface, 그래픽 사용자 인터페이스)

    • 텍스트 대신 아이콘, 버튼, 메뉴 등 그래픽 요소를 마우스나 터치로 조작하는 방식
  • NUI(Natural User Interface, 내추럴 사용자 인터페이스)

    • 말, 몸짓, 시선 등 인간의 자연스러운 행동을 통해 기기를 제어하는 방식

2. 운영체제 관리

2.1. 관리 대상

  • 기억장치, 프로세스, 입출력장치, 파일 등

2.2. 주요 관리 기능

  • 기억장치 관리

    • 프로세스의 주기억장치 적재 및 회수 결정
  • 프로세스 관리

    • 프로세스(실행 중인 프로그램)의 생성, 삭제, 중지, 동기화 수행
    • 프로세스 상태: 준비(Ready), 대기(Waiting), 실행(Running)의 3가지 상태로 관리
  • 장치 관리

    • 입출력 장치의 할당/회수
    • 인터럽트 처리
    • 장치 제어기(Device Driver)를 통한 하드웨어 인터페이스 담당
  • 파일 관리

    • 파일의 생성/삭제/수정, 접근 제어, 저장 위치 관리, 폴더 구조 관리

2.3. 프로세스 스케줄링

  • 프로세스 스케줄링(Process Scheduling)
    • 운영체제가 여러 개의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정하는 계획

1) 주요 스케줄링 방식

  • 비선점형(Non-preemptive)

    • 한 프로세스가 CPU를 잡으면 끝날 때까지 아무도 뺏을 수 없다.
  • 선점형(Preemptive)

    • 운영체제가 판단해서 실행 중인 프로세스를 멈추고 다른 프로세스에게 CPU를 줄 수 있다.

2) 대표적인 알고리즘

  1. FCFS(First-Come, First-Served)

    • 먼저 온 순서대로 처리한다.
    • (가장 단순함)
  2. SJF(Shortest Job First)

    • 수행 시간이 가장 짧은 일을 먼저 처리한다.
    • (대기 시간은 짧지만, 긴 업무가 계속 밀릴 수 있음)
  3. Round Robin(RR)

    • 각 프로세스에게 똑같은 시간(Time Slice)을 주고 순서대로 번갈아 가며 처리한다.
    • (현대 운영체제에서 가장 흔히 쓰임)
  4. Priority Scheduling

    • 우선순위가 높은 프로세스부터 처리한다.
    • (중요한 작업 우선)
  5. Multilevel Queue

    • 프로세스를 성격에 따라 여러 그룹(큐)으로 나누고, 각 그룹마다 다른 규칙을 적용한다.

3. 운영체제의 분류

3.1. 처리 방식에 따른 분류

  1. 일괄 처리 시스템(Batch Processing)

    • 방식: 일정 기간 또는 일정량의 데이터를 한꺼번에 모아서 한 번에 처리한다.
    • 특징: 사용자 인터랙션이 불가능하며, 초기 컴퓨터 시스템에서 사용되었다. (예: 급여 계산, 연말 정산)
  2. 다중 프로그래밍 시스템(Multi-programming)

    • 방식: 하나의 CPU가 여러 개의 프로그램을 메모리에 올려놓고, CPU가 쉬지 않도록 계속해서 다음 프로그램을 실행하는 방식이다.
    • 특징: CPU 이용률을 극대화하는 것이 목적이다.
  3. 시분할 처리 시스템(Time-sharing)

    • 방식: 여러 사용자가 사용하는 경우, CPU 시간을 아주 짧은 시간 단위로 나누어 각 사용자에게 할당한다.
    • 특징: 사용자는 마치 자신만이 컴퓨터를 독점하고 있는 것처럼 느낀다. 오늘날 대부분의 운영체제 기초가 된다.
  4. 다중 처리 시스템(Multi-processing)

    • 방식: 한 대의 컴퓨터에 두 개 이상의 CPU(프로세서)를 장착하여 동시에 여러 작업을 처리한다.
    • 특징: 처리 속도가 빠르고, 하나가 고장 나도 다른 CPU가 작업을 계속할 수 있어 신뢰성이 높다.
  5. 실시간 처리 시스템(Real-time)

    • 방식: 데이터가 발생하는 즉시, 혹은 정해진 시간 내에 반드시 처리가 완료되어야 하는 방식이다.
    • 특징: 응답 시간이 매우 중요하다. (예: 미사일 제어, 항공기 예약, 원자력 발전소 제어)
  6. 분산 처리 시스템(Distributed Processing)

    • 방식: 여러 대의 컴퓨터를 통신 회선으로 연결하여 하나의 시스템처럼 작업을 나누어 처리한다.
    • 특징: 작업 효율이 높고 자원을 공유하기 좋다.

3.2. 작업 수에 따른 분류

  • 단일 작업(Single-tasking)

    • 정의: 한 번에 오직 하나의 프로그램만 실행할 수 있는 방식
    • 특징: 하나의 작업이 완전히 끝날 때까지 다른 작업을 시작할 수 없다. 만약 다른 일을 하고 싶다면 현재 하던 프로그램을 종료해야 한다.
    • 예시: 과거의 MS-DOS, 초기 대폰(전화 기능만 있을 때) 등
  • 다중 작업(Multi-tasking)휴

    • 정의: 동시에 여러 개의 프로그램을 실행할 수 있는 방식
    • 특징: CPU가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 처리하기 때문에, 사용자 입장에서는 여러 일이 동시에 일어나는 것처럼 보인다.
    • 예시: Windows, macOS, Android, iOS 등 우리가 지금 쓰는 대부분의 OS

4. 다양한 운영체제의 종류

4.1. Windows 계열

  • 마이크로소프트에서 개발한 운영체제로, 전 세계 데스크톱 시장의 점유율이 가장 높다.
  • 특징: 사용자 친화적인 그래픽 인터페이스(GUI)가 강력하며, 범용성이 좋아 대부분의 소프트웨어와 게임이 윈도우를 기준으로 제작된다.
  • 대표 종류: Windows 10, Windows 11, Windows Server(서버용) 등

4.2. Unix 계열

  • 1960년대 말 개발된 가장 뿌리 깊은 운영체제로, 현대 운영체제들의 기술적 모태가 되었다.
  • 특징: 다중 사용자 및 다중 작업(멀티태스킹) 환경에 최적화되어 있으며 보안성과 안정성이 매우 뛰어나다. 주로 대형 서버나 워크스테이션에서 사용된다.
  • 대표 종류: IBM AIX, HP-UX, Solaris 등

4.3. Linux 계열

  • 유닉스를 모델로 하여 만든 오픈 소스 운영체제이다. 누구나 코드를 수정하고 배포할 수 있어 종류가 매우 다양하다.
  • 특징: 무료로 사용할 수 있고 가볍고 안정적이어서 서버, 슈퍼컴퓨터, 임베디드 기기(가전제품 등)에 널리 쓰인다. 사용자가 용도에 맞게 변형한 배포판이 존재한다.
  • 대표 종류: Ubuntu(개인용/서버), CentOS/RHEL(기업 서버), Kali Linux(보안), Android(모바일) 등

4.4. macOS / BSD 계열

  • 애플의 컴퓨터용 운영체제로, 유닉스(정확히는 BSD 및 Mach 커널)를 기반으로 만들어졌다.
  • 특징: 애플 하드웨어에 최적화되어 있어 성능이 안정적이고 그래픽 작업이나 개발 환경에서 선호도가 높다. 디자인이 세련되고 아이폰 등 애플 생태계와의 연동성이 뛰어나다.
  • 대표 종류: macOS (과거 Mac OS X)

4.5. 모바일 운영체제 계열

  • 스마트폰과 태블릿 같은 휴대 기기에 최적화된 계열이다.
  • Android: 리눅스 커널을 기반으로 구글이 만든 개방형 운영체제이다. 다양한 제조사(삼성 등)가 사용한다.
  • iOS/iPadOS: macOS와 같은 뿌리(Unix/BSD)를 두고 애플 기기 전용으로 만든 폐쇄형 운영체제이다.

5. 윈도우 운영체제 활용

5.1. 윈도우 단축키

  • Ctrl + Shift + Esc: 작업 관리자 즉시 실행
  • Win + D: 모든 창을 최소화하고 바탕화면 보기 (다시 누르면 복구)
  • Win + E: 파일 탐색기 즉시 실행
  • Win + I: 윈도우 설정 창 열기
  • Win + L: PC 잠금 (잠깐 자리 비울 때 보안용)
  • Win + S: 윈도우 통합 검색창 열기
  • Win + . (마침표): 이모지 및 특수문자 입력창 열기
  • Win + Shift + S: 화면 캡처 (원하는 영역만 지정해서 캡처)

5.2. 가상 데스크톱

  • 하나의 모니터에서 여러 바탕화면을 독립적으로 사용하는 기능

  • 단축키

    • Win + Tab: 작업 보기(현재 실행 중인 데스크톱 및 앱 확인)
    • Ctrl + Win + D: 새 가상 데스크톱 생성
    • Ctrl + Win + 방향키: 데스크톱 간 이동
    • Ctrl + Win + F4: 현재 가상 데스크톱 삭제