[F-Lab 66해빗 페이백 챌린지 ]

[F-Lab 모각코 페이백 37일차] (CS) CHAPTER 4 운영체제

everydeveloper 2023. 7. 28. 09:20

하드웨어와 사용자 사이의 중재자 운영체제

 

학습목표

  • 운영체제가 왜 필요하고 어떤 기능을 하는 지 알아본다.
  • 운영체제의 프로세스 관리 방법을 알아본다.
  • 운영체제의 프로세스 스케쥴링 기법에 대해 알아본다.
  • 운영체제의 주기억장치 관리 방법을 알아본다.
  • 운영체제의 파일 관리 방법을 알아본다.

 

TIL

  • 운영체제

 

 

운영체제의 개요

  • 운영체제의 개념: 운영체제는 쉽게 말해 컴퓨터 시스템의 자원을 효율적으로 관리하고, 다양한 응용 프로그램을 실행할 수 있도록 지원하는 기반 프로그램입니다. 운영체제는 컴퓨터 하드웨어와 응용 프로그램 사이에서 중개자 역할을 하며, 하드웨어를 제어하고 응용 프로그램이 하드웨어를 사용할 수 있는 환경을 제공합니다.
  • 운영체제의 기능: 운영체제의 주요 기능으로는 사용자 인터페이스(UI)를 제공하는 것이 있습니다. 대표적인 UI로는 CLI(Command Line Interface)와 GUI(Graphical User Interface)가 있습니다. 그 외에도 프로세스 실행과 종료, 작업 스케줄링, 메모리 관리, 파일 시스템 관리 등이 있습니다.
  • 프로세스 관리
    • 프로세스의 개념: 프로세스는 컴퓨팅 시스템에서 실행 중인 일련의 작업 단위입니다. 프로세스는 운영체제가 실행하는 프로그램의 인스턴스로, 메모리와 CPU 시간 등의 자원을 할당받아 작업을 수행합니다. 프로세스는 일반적으로 병렬로 실행되며, 서로 다른 프로세스는 다른 메모리 영역을 사용합니다.
    • 프로세스 제어 블록: 프로세스 제어 블록(PCB)은 프로세스의 작업 정보를 저장하는 데이터 구조입니다. PCB는 프로세스가 실행되는 동안 변경되는 정보를 저장하며, 이 정보는 프로세스가 다시 실행될 때 사용됩니다. PCB에는 프로세스 상태, 프로그램 카운터(PC), 레지스터 값, 메모리 할당 정보 등의 정보가 저장됩니다.
    • 프로세스 상태: 프로세스 상태는 시작, 작업 대기(ready), 작업 중(running), 기다리는 상태(waiting), 종료로 구성됩니다. 프로세스 상태는 운영체제가 프로세스의 실행 상태를 관리하며, 프로세스가 CPU 시간을 할당받아 실행되거나, 입출력 작업 등으로 인해 대기 상태가 될 수 있습니다.
    • 프로세스 스케줄링: 프로세스 스케줄링은 CPU 시간을 할당받을 프로세스를 결정하는 작업입니다. 스케줄링 알고리즘에 따라 프로세스의 실행 순서가 달라질 수 있습니다. 대표적인 프로세스 스케줄링 알고리즘으로는 FCFS(First-Come, First-Served), 라운드 로빈(Round Robin), 우선순위(Priority) 스케줄링 등이 있습니다.
      • FCFS 스케줄링: 먼저 들어온 작업이 먼저 작업을 시작합니다. 이는 구현이 쉽지만, 작업의 길이에 따라 대기 시간이 길어질 수 있습니다.
      • 라운드 로빈 스케줄링: 보통의 경우 돌아가면서 작업합니다. 일정 시간동안 작업을 수행한 후에 다른 작업으로 전환하는 방식으로 작업의 대기 시간을 줄일 수 있습니다.
      • 우선순위 스케줄링: 우선순위를 정해놓고 높은 우선순위를 가진 작업을 먼저 처리합니다. 이는 긴급한 작업에 우선적으로 CPU 시간을 할당할 수 있으나, 우선순위가 낮은 작업은 계속해서 대기 상태에 머무를 수 있습니다.

주기억장치 관리

  • 단순한 구조의 주기억장치: 주기억장치는 컴퓨터에서 메모리를 의미합니다. 단일 연속 주기억장치 관리는 메모리를 단일한 공간으로 통합하여 사용하는 방법입니다. 이 방법은 구현이 쉽지만, 메모리를 할당받은 프로세스가 메모리 공간을 넘어서면 오류가 발생할 수 있습니다. 분할 주기억장치 관리는 메모리를 여러 개의 작은 영역으로 분할하여 사용하는 방법입니다. 이 방법은 메모리 공간을 효율적으로 활용할 수 있지만, 외부 단편화와 내부 단편화 문제가 발생할 수 있습니다.
  • 가상 메모리: 가상 메모리는 실제 물리적 메모리보다 큰 용량의 가상 메모리를 처리하는 기술입니다. 가상 메모리는 하드 디스크와 메모리를 조합하여 물리적으로는 작은 메모리 공간에서도 대용량의 데이터를 처리할 수 있도록 합니다. 가상 메모리는 일반적으로 페이징(Paging)과 세그멘테이션(Segmentation) 기법을 사용하여 구현됩니다.
    • 페이징: 가상 메모리를 일정한 크기의 페이지로 나누어 실제 메모리에 필요한 페이지만 올려서 사용하는 방법입니다. 이 방법은 메모리 공간을 효율적으로 활용할 수 있으며, 페이지 단위로 메모리를 할당하므로 외부 단편화 문제를 해결할 수 있습니다.
    • 페이지 교체 알고리즘: 페이지 부재 상황에서 어떤 페이지를 교체할지 결정하는 알고리즘입니다. 대표적인 페이지 교체 알고리즘으로는 FIFO(First In, First Out), LRU(Least Recently Used), LFU(Least Frequently Used) 등이 있습니다.

파일 관리

  • 파일 시스템의 이해: 파일 시스템은 하드 디스크 등에 파일을 저장하는 시스템입니다. 파일 시스템은 파일을 생성, 수정, 삭제할 수 있으며, 디렉터리 구조를 사용하여 파일을 분류할 수 있습니다.
  • 윈도우의 파일 시스템: 윈도우 운영체제에서는 FAT(File Allocation Table)와 NTFS(New Technology File System) 두 가지 파일 시스템을 지원합니다. FAT은 파일이 저장된 위치와 크기, 파일 이름, 확장자 등의 정보를 저장합니다. NTFS는 FAT보다 빠르고 안정적이며, 대용량 파일의 처리와 보안을 강화할 수 있습니다.
    • FAT의 동작 과정: 파일을 저장하기 위해 빈 영역을 찾아서 할당합니다. 파일의 크기가 변경되면 새로운 빈 영역을 찾아서 기존의 영역을 확장합니다. 이 방식은 구현이 쉽고 빠르지만, 파일 시스템이 많은 파일을 처리할 때 파일의 빈 영역을 찾는 데 시간이 오래 걸릴 수 있습니다.
  • 유닉스(리눅스)의 파일 시스템: 유닉스(리눅스) 운영체제에서는 inode 기반의 파일 시스템을 사용합니다. inode는 파일의 메타 정보를 저장하는 데이터 구조입니다. 유닉스(리눅스) 파일 시스템은 모든 것이 파일이며, 파일은 inode와 데이터 블록으로 구성됩니다. 파일 시스템은 블록 단위로 관리되며, 파일을 저장하기 위해 빈 블록을 찾아서 할당합니다. 이 방식은 FAT보다 느리지만, 블록 단위로 할당하므로 외부 단편화 문제를 해결할 수 있습니다.