[OS]1. 운영체제 개요

Geon·2023년 2월 2일
0

CS

목록 보기
4/9
post-thumbnail

1. 운영체제의 정의와 목적

운영체제 (Operating System)

응용프로그램 또는 사용자가 컴퓨터 하드웨어를 편리하고 효율적으로 사용하게 하기 위하여 시스템 자원(CPU ,메모리, 입출력 장치 등)을 관리하고 여러가지 프로그램이 필요로 하는 공통적인 서비스를 제공하는 소프트웨어이다.

한마디로, 운영체제는 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것과 컴퓨터 시스템의 자원을 효율적으로 관리하는 것이 주 목적이라고 할 수 있다.

*참고)
운영체제의 좁은 의미 : 커널
운영체제의 넓은 의미 : 커널 뿐 아리나 각종 주변 시스템 유틸리티를 포함한 개념

2. 운영체제의 분류

분류 기준 : 동시 작업 가능 여부

· 단일 작업 (Single tasking) : 한번에 하나의 작업만 처리
e.g., MS-DOS

· 다중 작업 (Multi tasking) : 동시에 두 개 이상의 작업 처리
e.g., UNIX, Windows 등 현재 사용하는 대부분의 OS

분류 기준 : 사용자의 수

· 단일 사용자 (Single user) : 하나의 사용자가 하나의 컴퓨터 시스템을 사용
e.g., MS-DOS, Windows, Mac OS 등
(Windows, Mac os 환경에서도 서버를 여는 등의 방식으로 다른 사용자가 접속하여 다중 사용자 시스템처럼 활용도 가능하다.)

· 다중 사용자 (Multi user) : 여러 사용자가 하나의 컴퓨터 시스템에 동시에 접속해서 사용
e.g., UNIX, NT Server

분류 기준 : 처리 방식

· 일괄 처리 (Batch processing) : 작업을 그때 그때 바로 처리하는 것이 아니라 일정량을 모아서 한꺼번에 처리하는 방식. 작업이 완전 종료될 때까지 기다려야 한다.
*) 일괄 처리 방식은 현대의 운영체제에선 잘 사용되지 않는 구식 방식이지만 아래와 같은 상황에서 유용하다.(링크)

· 시분할 (Time sharing): 현대 운영체제에서 가장 많이 사용하는 방식으로, 여러 작업을 수행할 때 시스템 자원을 일정한 시간 단위로 쪼개어서 한 사용자에서 다음 사용자로 빠르게 전환시켜가며 시스템을 작동시키고, 각 사용자에게 자신만이 컴퓨터를 사용하고 있는 것과 같은 착각을 주지만, 실제로는 여러 사용자가 하나의 컴퓨터를 공유하여 사용하고 있는 것이다.

시분할(Time sharing)과 실시간(Realtime) 시스템의 차이는 'deadline'의 유무에 있다. 시분할 시스템은 기본적으로 바로바로 돌아오는 응답 등 나만 시스템을 사용하는 것 같지만, 여러 사용자들이 동시에 한 시스템을 사용하는 상태이기 때문에 어느 사용자나 프로그램이 시스템 자원을 상당히 차지하는 작업을 하거나, 사용자가 기하급수적으로 늘어났을 경우 등에서는 내가 시스템에 요청하는 작업의 완료 속도가 느려진다거나 하는 일이 발생할 수 있다. 즉, 시분할 시스템에서는 "최대한 너가 혼자 쓰는 것처럼 느끼게 해주고 빨리 처리 해줄게, 다만 내가 너무 바쁘면 그건 완벽히 보장할 순 없어" 라고 말하는 느낌이라면, 실시간 시스템은 반드시 특정 시간 안에 작업의 완료가 보장되어야 하는 시스템이다. 즉, 반드시 지켜야 할 deadline이 있는 것이다. 따라서 반드시 특정 작업의 완료가 제시간에 일어나야 하는 반도체, 원자로, 미사일, 로켓 등의 제어 시스템에 필요한 경우가 많다.

3. 운영체제의 구조

운영체제의 구조를 간단히 그려보면 아래와 같다.

운영체제는 위의 시스템 구성 요소들을 통합적으로 관리한다.

CPU의 자원은 한정적이기에 CPU는 어떤 작업에게 자신의 자원을 줄것인지에 대한 'CPU Scheduling'을 한다. 우리가 사는 세계에선 선착순이 가장 대표적인 처리 순서겠지만, 컴퓨터 시스템 내에선 CPU를 가장 짧게 사용하려는 프로그램에게 우선적으로 자원을 주는것이 가장 효율적이라는 이론에 입각하여 스케쥴링을 하였지만, 시분할 시스템에 대해 설명했듯이 짧은 시간으로 쪼개어 각 프로그램 및 사용자에게 CPU에 대한 자원을 짧게 짧게 줬다 뺐었다 하는 것이 가장 효율적인 방식임을 알게되어 오늘날은 이러한 방식으로 CPU 스케쥴링이 동작한다.

메모리의 자원 또한 한정되어 있기 때문에 운영체제에선 한정된 메모리 공간을 어떻게 분배할지 '메모리 관리'에 대해서도 고려한다. CPU에서 자주 사용할만한 작업을 위주로 메모리에 올려놓고, 상대적으로 그렇지 않은 작업들은 후순위로 두어 Disk에 내려놓는 방식으로 작동하곤 한다.

디스크에 파일을 어떤식으로 관리할지에 대한 '파일 관리'와, 저장된 파일을 어떻게 읽어와야 할지에 대한 'Disk Scheduling' 등이 고려된다. 일반적으로 하드디스크에 저장된 데이터에 접근하기 위해서는 '헤드'라는 장치가 움직이며 작동하기 때문에, 이 헤드의 동선을 최적화하기 위해 어떤식으로 순서를 짤지에 대해서 고려해야 한다. (마치 엘리베이터가 버튼 누른 순서대로로만 작동하여 1층 갔다가 100층 갔다가 2층 갔다가..하는 방식으로 작동하면 상당히 비효율적인 것처럼 말이다.)

I/O Device(입출력 장치) 가 CPU와 정보를 어떤식으로 주고받을지에 대한 '입출력 관리' 또한 운영체제의 역할이다. 기본적으로 입출력 장치는 'Interrupt'를 통해 작동한다. CPU는 메모리하고만 직접적으로 소통하고 이것에 오로지 집중(?) 하고 있기에 입출력 장치가 CPU와 소통하기 위해선 열심히 일하고 있는 CPU에게 Interrupt를 주어서 입출력 장치에서 요청한 작업을 전달하는 것이다.

Reference : KOCW 이화여자대학교 반효경 교수님의 '운영체제' 강의

profile
별에 별 지식 저장해놓고 꺼내먹기📚

0개의 댓글