CS/운영체제(OS)

[OS] 운영체제 개요

유정주 2022. 3. 9. 21:08
반응형

안녕하세요. 개발하는 정주입니다.

 

오늘은 운영체제 개요를 정리했습니다.

잘못된 점이 있다면 댓글로 알려주시면 감사하겠습니다.

 


운영체제란?

하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층입니다.

사용자가 하드웨어적인 지식이 없어도 각종 애플리케이션 프로그램 등을 편하게 사용할 수 있도록 하는 것이 운영체제의 목적입니다.

컴퓨터 분야에서 가장 복잡하고 까다로운 소프트웨어로 볼 수 있습니다.

 

컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공합니다.

하드웨어를 직접 다루는 복잡한 부분을 사용자 대신 운영체제가 대행합니다.

 

컴퓨터 시스템의 자원을 효율적으로 관리

CPU, 메모리, I/O 장치 등을 효율적으로 관리합니다.

여러 프로그램에게 CPU를 번갈아 할당하거나 메모리 공간을 적절히 분배합니다.

CPU에서 프로그램이 실행되려면 메모리에 올려야 하는데 여러 프로그램이 동시에 실행될 때 어떤 메모리에 얼마큼 올려놔야 CPU에서 효율적으로 실행할 수 있는지를 계산합니다.

이때, 주어진 자원으로 최대한의 성능을 내도록 하는 효율성과 효율성을 극대화하기 위해 특정 사용자나 프로그램의 지나친 불이익이 발생하지 않도록 하는 형평성을 동시에 고려합니다.

 


운영체제 작업

운영체제는 컴퓨터 전원이 켜지면 메모리에 올라가 실행이 됩니다. 이를 부팅이라고 합니다.

운영체제는 컴퓨터가 꺼질 때까지 항상 실행이 되며 여러 작업을 처리합니다.

운영체제 개요 강의에서는 대략적으로만 소개됩니다.

 

CPU 스케줄링

운영체제는 어떤 프로그램에게 CPU 사용권을 줄지를 계산하고 부여합니다.

아래 Waiting Time은 프로세스의 사용권을 중간에 박탈하지 않는다는 가정 하에 계산되었습니다.

 

Waiting Time

Waiting Time 이란 프로세스들이 도착하고 실행되기까지 대기하는 시간입니다.

CPU 사용 시간이 짧은 프로세스가 먼저 사용할수록 평균 Waiting Time은 줄어듭니다.

Starvation을 방지하면서 Waiting Time을 줄일수록 효율적입니다.

 

FCFS(First-Come First-Served)

선착순으로 사용권을 부여하는 방법입니다. 공평하다고 볼 수 있지만 효율적이지는 않습니다.

Waiting Time이 굉장히 길기 때문입니다.

 

CPU 사용 시간이 27초, 3초, 3초인 프로세스가 순서대로 들어온다면

A의 대기 시간은 0초, B의 대기 시간은 27초, C의 대기 시간은 30초로 평균 대기 시간은 19초입니다.

 

SJF(Shorted-Job-First)

금번 CPU 사용 시간이 가장 짧은 프로세스를 제일 먼저 스케줄 합니다.

 

SJF는 minimum average waiting time을 보장합니다.

3초, 3초, 27초 순서로 실행된다면 대기 시간은 각각 0초, 3초, 6초로 평균 대기 시간은 3초입니다.

 

단, 실행 시간이 항상 가장 긴 프로세스가 있을 때 이 프로세스는 영원히 스케줄링될 수 없습니다.

이런 현상을 Starvation(기아 현상)이라고 합니다.

 

Round Robin

각 프로세스에게 동일 크기의 CPU 할당 시간을 부여합니다.

할당 시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 제일 뒤에 삽입됩니다.

 

n개의 프로세스가 CPU 큐에 있는 경우 어떤 프로세스도 (n-1) * 할당 시간 이상으로 대기 시간이 발생하지 않습니다.

즉, 대기 시간이 프로세스의 CPU 사용 시간에 비례합니다.

모든 프로세스가 동일한 할당 시간이 부여되니 기아 현상이 없습니다.

 

메모리 관리

컴퓨터 전원이 켜지면 운영체제는 메모리에 가장 먼저 할당됩니다.

여러 프로그램들은 운영체제를 제외한 나머지 메모리 공간에 적절히 할당돼야 합니다.

 

각 프로세서들은 현재 필요한 부분만 메모리에 들어가고 불필요한 부분은 각자의 가상 메모리에 저장됩니다.

불필요한 부분은 메모리에 올리지 않아 메모리를 효과적으로 관리 가능합니다.

메모리에서 쫓겨난 페이지는 Swap 영역에 저장합니다.

 

미래를 모르는 상황에서 미래에 다시 사용될 가능성이 높은 페이지는 유지하고 않고 가능성이 낮은 페이지는 Swap영역으로 보내는 것이 메모리 관리의 핵심입니다. 과거의 내역을 토대로 계산하며 크게 두 가지 방법이 있습니다.

 

LRU

가장 오래전에 참조된 페이지를 삭제합니다.

1번 페이지가 가장 오래전에 참조되었다면 1번을 Swap 합니다.

최근에 사용된 페이지가 재사용될 가능성이 높다고 판단합니다.

 

LFU

참조 횟수가 가장 적은 페이지를 삭제합니다. 4번이 가장 적게 참조되었다면 4번 페이지를 Swap 합니다.

과거에 많이 사용되었다면 재사용될 가능성이 높다고 판단합니다.

 

디스크 스케줄링

디스크는 헤드를 이동하며 트랙을 읽어 데이터를 전송합니다.

디스크 접근 시간(Access Time)은 아래 세 가지로 구성되어 있습니다.

  1. 탐색 시간(Seek Time) : 헤드를 해당 트랙(Cylinder)으로 움직이는데 소요되는 시간
  2. 회전 지연(Rotational Latency) : 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
  3. 전송 시간(Transfer Time) : 실제 데이터 전송 시간

Seek Time이 가장 많은 시간이 소요되기 때문에 Seek Time을 줄여야 디스크의 효율성이 증가합니다.

Seek Time을 줄이기 위해서는 헤드의 이동 거리를 최소화해야 합니다.

 

First-Come First-Served

디스크 요청은 디스크 Queue에 쌓입니다.

Queue에 쌓이는 순서대로 처리를 하면 헤드의 이동이 비효율적입니다.

끝에서 끝으로 이동하는 패턴이 반복될 수 있기 때문입니다.

 

SSTF(Shortest SEek Time First) 

현재 위치에서 가장 짧은 요청을 먼저 처리합니다.

이동 거리는 가장 짧지만 Starvation이 발생할 수 있습니다.

항상 가장 먼 거리에 있는 프로세스는 처리가 되지 않기 때문입니다.

 

SCAN

헤드가 디스크의 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하는 방법입니다. 

다른 한쪽 끝에 도달하면 역방향으로 이동하며 오늘 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동합니다.

엘리베이터 방식과 매우 유사하며 헤드의 이동 거리가 짧아집니다.

 


운영체제의 종류

서버용 운영체제, PC용 운영체제, 스마트 디바이스용 운영체제로 나뉩니다.

서버용 운영체제의 예로는 Linux가 있습니다.

PC용 운영체제는 macOS, Windows, Linux 등이 있습니다.

스마트 디바이스용 운영체제는 iOS, Android 등이 있습니다.

 

공개 소프트웨어

이런 운영체제 중 UNIX처럼 공개 소프트웨어인 것도 있습니다.

공개 소프트웨어란 소스 코드가 무료로, 공개된 공간에 배포된 소프트웨어를 말하는데요.

무료이며, 환경과 필요에 따라 코드를 수정할 수 있다는 장점이 있습니다.

 

OSI(Open Source Initiative)의 공개 소프트웨어 10가지 조건

  1. 자유 배포(Free Redistribution)
  2. 소스코드 공개(Source Code Open)
  3. 2차적 저작물(Derived Works) (허용)
  4. 소스코드 수정 제한(Integrity of The Author's Source Code)
  5. 개인이나 단체에 대한 차별 금지 (No Discrimination Against Persons or Groups)
  6. 사용 분야에 대한 제한 금지 (No Discrimination Against Fields of Endeavor)
  7. 라이선스의 배포 (Distribution of License)
  8. 라이선스 적용상의 동일성 유지 (License must not be specific to a product)
  9. 다른 라이선스의 포괄적 수용 (License must not contaminate other software)
  10. 라이선스의 기술적 중립성 (License must be Technology-Neutral)

 


운영체제의 목적

운영체제는 하드웨어와 자원을 직접 다루는 복잡한 부분을 운영체제가 대행하여

컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공합니다.

 

컴퓨터 시스템 자원을 효율적으로 관리합니다.

  1. 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리
    1. 사용자 간의 형평성 있는 자원 분배
    2. 주어진 자원으로 최대한의 성능을 내도록 관리
  2. 실행 중인 프로그램들에게 CPU를 번갈아 할당
  3. 실행 중인 프로그램들에게 메모리 공간을 적절히 분배

 


운영체제의 분류

운영체제는 세 가지를 기준으로 분류가 됩니다.

  1. 동시 작업 가능 여부
  2. 다중 사용자 가능 여부
  3. 작업 처리 방식

이후 모든 포스팅에서 다루는 운영체제는 동시 작업 가능 / 다중 사용자 가능 / 시분할 처리 방식인 운영체제입니다.

 

동시 작업 가능 여부

단일 작업(Single Task)

한 번에 하나의 작업만 처리 가능

ex) MS-DOS : 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행할 수 없음

 

다중 작업(Multi Tasking)

동시에 두 개 이상의 작업이 가능합니다. 다중 작업이 가능한 운영체제에서 CPU 할당, 메모리 분배 등의 문제가 발생합니다.

ex) UNIX, MS Windows, macOS 등

 

다중 사용자 가능 여부

단일 사용자(Single User)

한 대의 컴퓨터에 여러 사용자가 동시 접속이 불가합니다.

개인 PC는 일반적으로 단일 사용자입니다.

 

다중 사용자(Multi User)

한 대의 컴퓨터에 여러 사용자가 동시 접속이 가능합니다.

A 유저가 파일을 실행시킬 때 B 유저는 해당 파일을 보지 못하게 하는 등 보안 문제 등을 운영체제가 해결해야 합니다.

ex) UNIX, NT server

 

처리 방식

일괄 처리 방식(Batch Processing)

작업 요청의 일정량을 모아서 한꺼번에 처리합니다. 작업이 완전 종료될 때까지 대기해야 합니다.

 

시분할(Time Sharing)

일반적인 운영체제의 처리 방식입니다. interactive 한 방식이라고 합니다.

여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용합니다. 일괄 처리 시스템에 비해 짧은 응답 시간을 가집니다.

시분할 방식의 운영체제에서는 실시간 시스템을 가진 Task를 돌릴 수 있으나 실시간을 보장하지는 않습니다.

 

실시간(RealTime OS)

정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS입니다.

종료에 대한 데드 라인이 있고 이를 넘기면 치명적인 결과가 발생할 수 있는 시스템입니다.

ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로봇 제어

 

실시간 처리 방식은 Hard Realtime System, Soft Realtime System으로 나뉩니다.

Hard Realtime System : 데드라인을 넘기면 아주 치명적인 시스템. 미사일 반응 시스템 등 

Soft Realtime System : 데드 라인은 있지만 넘겨도 치명적이지 않은 시스템. 초당 60 프레임을 지원하는 동영상 시스템 등

 


운영 체제의 예시

유닉스(UNIX)

코드의 대부분을 C로 작성했습니다. C언어는 여러 아키텍처에서 호환이 되기 때문에 높은 이식성을 가집니다.

최소한의 커널 구조와 소스 코드가 공개된 공개 소프트웨어이기 때문에 복잡한 시스템에 맞게 확장이 용이합니다.

프로그램 개발에 용이하며 다양한 버전(System V, FreeBSD, SunOS, Solaris, Linux)을 갑니다.

 

DOS(Disk Operating System)

단일 작업, 단일 사용자용 운영체제입니다.

주 기억 장치가 640KB로 매우 낮아 메모리 관리 능력의 한계가 있습니다.

 

MS Windows

MS사의 다중 작업용 GUI 기반 운영 체제입니다.

Plug and Play 방식이고 네트워크 환경이 강화되었습니다.

DOS용 응용프로그램과 호환성을 제공합니다.

초기에는 매우 불안정했지만 점차 나아져 현재는 많이 안정된 상태입니다.

풍부한 지원 소프트웨어가 있습니다.

 


감사합니다.

 

출처

- 숭실대학교 홍지만 교수님, 운영체제

- 이화여자대학교 반효경 교수님, 운영체제

- A. Silberschatz et al., Operating System Concepts, 9th Edition, John Wiley & Sons, Inc. 2013. 
- A. Silberschatz et al., Operating System Principles, Wiley Asia Student Edition 
- https://itwiki.kr/w/공개_소프트웨어

반응형