[CS] 운영체제 기초

Ryan (Geonhee) Son·2021년 5월 4일
1

Study Stack

목록 보기
19/34

컴퓨터는 크게 응용 소프트웨어, 시스템 소프트웨어와 하드웨어로 구성되어 있으며, 운영체제는 컴퓨터의 시스템 소프트웨어의 한 종류입니다.

운영 체제는 사용자와 응용 프로그램, 하드웨어 사이에서 동작하며 응용 프로그램과 하드웨어 사이의 매개 역할을 수행합니다.

운영체제의 종류는 Linux, Windows, iOS, Android 등 다양하게 존재하며 매킨토시 컴퓨터의 경우 macOS를 사용합니다.

목적

이전 컴퓨터는 계산에 특화된 계산기의 용도로 활용되는 경우가 많았기에 범용성이 떨어져도 큰 문제가 없었습니다. 일반 계산, 공학 계산, 탄도학 계산 등 특정 용도에 맞는 컴퓨터를 제작하고 용도에 맞게 사용하면 되었기 때문이죠. 그러나 요즈음에는 컴퓨터가 계산 이외 여러가지 작업을 수행해야할 필요성이 커졌기에 PC, tablet 등 하드웨어와 사용자를 연결시켜줄 소프트웨어가 필요하게 되었습니다.

운영체제의 업무

  1. 시스템 하드웨어 관리
    • 사용자 프로그램의 오류나 잘못된 자원 사용을 감시한다.
    • 입출력 장치 등의 자원에 대한 연산과 제어를 관리한다.
  2. (가상) 시스템 서비스 제공
    • 사용자에게 컴퓨터 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공한다.
  3. 자원 관리
    • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적으로 할당, 관리하고 보호한다.

프로세스와 프로세서의 관리

컴퓨터가 관리해야할 가장 중요한 자원은 프로세서 (CPU)입니다. 하드디스크 (HDD) 또는 SSD와 같은 보조기억장치에 잠들어 있던 프로그램이 주기억장치로 로드되어 실행된 것을 프로세스라 합니다. 거의 모든 상황에서 동시에 여러가지 프로세스가 동작하기에 CPU에 연산이 집중되는데 이 때 CPU에 프로세스를 효율적으로 할당하는 것이 운영체제의 주요 역할입니다.

프로세스의 상태

한 번에 모든 작업을 CPU가 처리할 수 없기 때문에 프로세스는 아래와 같은 상태를 가집니다. 유사한 이유로 모든 프로세스가 항상 작업 처리 (CPU 점유)를 할 필요가 없기에 필요에 따라 준비-실행-대기 상태가 변경됩니다.

  • 생성
    프로그램이 실행된다 (프로세스가 생성된다).
  • 준비
    CPU에 의해 프로세스가 실행되기를 기다린다.
  • 실행
  • 대기
    어떤 사건이 일어나기를 기다린다.
  • 종료
    프로그램이 종료된다 (프로세스가 종료된다).

동시에 여러가지 작업을 수행해야하므로 한 프로세스가 계속해서 CPU를 점유하고 있을 수 없습니다. 컴퓨터 사용자는 굉장히 빨라 인지하기 어렵지만 다른 프로세스에서 보내는 명령을 수행하고, 그동안 다른 프로세스들을 준비 및 대기 상태로 놓는 스위칭 (switching)을 합니다. 운영체제는 여러가지 프로세스 사이의 스위칭을 할 때 우선순위를 부여하는 스케줄링(scheduling)을 수행합니다.

프로세스 스케줄링

프로세스 스케줄링은 아래를 포함해 수많은 방식이 있습니다.

First-Come First-Served (FCFS)

준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법입니다. 프로세스가 실행된 순서대로 작업을 처리합니다.

Shortest Job First (SJF)

실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법입니다. 평균 대기 시간이 가장 적은 알고리즘으로 알려져 있지만, 실행시간이 긴 프로세스에 밀려 무한 연기 상태에 빠질 수 있습니다.

Round Robin Scheduling

시분할 시스템을 위해 고안된 방식으로 FCFS의 변형 기법입니다. 각 프로세스는 시간 할당량 동안만 실행되며, 완료되지 않으면 다음 프로세스에게 CPU 점유를 넘겨주고 준비상태 큐의 가장 뒤에 배치됩니다. 할당된 시간이 많을수록 FCFS와 비슷해지는 경향이 있는 반면 할당 시간이 적을수록 문맥교환과 오버헤드가 커집니다.

Priority Based Scheduling

프로세스마다 우선순위를 부여하는 기법입니다. 우선순위가 동등한 경우 FCFS 기법으로 할당하며 가장 낮은 우선 순위를 부여받은 프로세스의 무한 연기 상태에 빠질 수 있습니다.

Multi Queue Scheduling

프로세스를 특정 그룹으로 분류할 수 있을 경우, 그룹에 따라 각기 다른 준비단계 큐를 사용하는 기법입니다. 준비상태 큐마다 다른 스케줄링 기법을 적용할 수 있으며, 어느 한 준비상태 큐에 속한 프로세스는 다른 준비상태 큐로 이동할 수 없습니다. 하위 단계 준비 큐에 있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위단계 프로세스에게 CPU를 할당합니다.

주기억장치 관리

주기억장치를 관리하는 것도 운영체제가 할 일입니다. 메모리 공간을 차지하는 프로세스들 간의 메모리 점유를 효율적으로 분배하고, 신규 프로세스가 실행되고자할 때 메모리를 비워주거나 디스크에 메모리 상태를 저장해두었다 이후에 사용할 수 있도록 합니다. 메모리 상태를 디스크에 저장해두었다 사용자가 해당 앱을 사용할 때 디스크에서 다시 불러오는 작업을 스왑(swap)이라 합니다. 반대로 메모리가 여유로운 경우 디스크 대신에 메모리에서 내용을 읽고 쓸 수 있도록 램 디스크를 구성하여 사용할 수도 있습니다.

파일 관리

운영체제는 파일 또한 관리합니다. 응용 프로그램은 보조기억장치에 직접적으로 읽고 쓰는 방식을 알지 못하기 때문에 운영체제를 통해 읽기와 쓰기를 수행합니다.

파일 시스템은 다양한 종류가 있는데, 파일을 읽고 쓰는 방식이 다르다는 것을 의미합니다.

  • Unix
    • Unix File System
  • Linux
    • 확장 파일 시스템, ZFS, XFS, ...
  • macOS
    • HFS, HFS+, AFPS
  • Windows
    • FAT
    • NTFS

커널

운영체제의 가장 핵심이자 뼈대는 커널이라 할 수 있습니다. 보안, 자원관리와 추상화를 담당하고 있으며, Ubuntu, Redhat, Android와 같은 Linux 계열 운영체제는 Linux 커널을 사용하고 있습니다.

profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글