이 글은 KOCW에 공개되어있는 '반효경 교수님'의 운영체제 강의 및 강의 교재 Operation System Concepts(a.k.a 공룡책🦕)의 내용을 참고하여 작성했습니다.
오류가 있으면 댓글로 정정 부탁드립니다
운영체제는 하드웨어 바로 윗단에 설치되는 일종의 소프트웨어이며 다음과 같은 의미를 가지고 있다.
운영체제는 하드웨어와 소프트웨어&사용자 중간에 있으며 위치에 따라 목적이 다르다
1) 하드웨어 윗단(하드웨어 <-> 운영체제)
컴퓨터 시스템 안에 있는 하드웨어 자원은 이미 주어져 있는 것이고 (ex cpu는 초당 instruction 몇개 처리, 메모리 몇기가 등)
주어져 있는 하드웨어를 가지고 최대한의 성능을 낼 수 있도록 하는 것이 운영체제의 목적이라 할 수 있다.
2) 소프트웨어(사용자) 아랫단(운영체제<-> 소프트웨어/사용자)
현대의 컴퓨터는 여러명의 사용자가 하나의 컴퓨터를 사용하고, 여러 프로그램이 하나의 컴퓨터에서 실행되는 것을 지원하고 있다. 이러한 상황에서 사용자에게 자기가 실행한 프로그램만이 컴퓨터에서 돌아가는 듯한 인상을 주는 것이 컴퓨터의 역할이다. 그 밖에도 프로세스, 파일, 메시지 등 소프트웨어 자원도 관리도 해야 하며, 사용자와 운영체제 자체를 보호하는 기능도 수행해야 한다
운영체제는 동시 작업 가능 여부, 사용자의 수, 처리 방식에 따라 세 가지로 분류할 수 있다
cf) multitasking : 동시에 실행되는 것처럼 보이지만, 하나의 프로그램이 끝나기 전에 다른 프로그램 실행이 가능한 것
== multiprogramming : 메모리에 여러 프로그램이 동시에 올라가는 것(메모리 강조)
== time sharing : cpu 시간을 분할해 사용한다는 의미(cpu 강조)
!= multiprocessor : cpu가 여러개 붙어있는 컴퓨터(하드웨어적으로 다름)
단일 사용자(singleUser) : 한번에 여러명의 사용자가 사용할 수 있게 지원해준다
ex) MS-DOS, MS Window(요즘에는 hyper-v등으로 다중 사용 가능)
다중 사용자(multi user) : 서버를 열고 계정을 여러 개 만들어서 여러 명의 사용자가 동시에 컴퓨터를 사용할 수 있다. 때문에 형평성 있는 자원 분배, 보안이 중요시 된다
ex) UNIX, NT Server
* 경성 실시간 시스템 : 데드라인을 무슨 일이 있어도 지켜야 하는 시스템 ex) 핵시설
* 연성 실시간 시스템 : 데드라인이 있지만 안 지키더라도 크게 심각한 문제는 일어나지 않는 것. 실시간 처리 방식을 범용적으로 잘 사용하지 않았지만, 요즘에는 범용적인 부분에서도 필요성이 많아지고 있다 ex) 네비게이션
간략하게 컴퓨터의 구조를 살펴보면 다음과 같다
CPU <-> memory <-> Disk, I/O device
운영체제는 이에 대해 다음과 같은 역할을 한다
컴퓨터는 한정된 메모리를 쪼개 쓴다
cpu 에서 원활하게 돌아갈 수 있을 만큼만 메모리에 올려놓음
cpu와 교신을 하면서 입출력 처리를 진행한다
IO 장치는 CPU보다 처리 속도가 훨씬 느리기 때문에 IO 장치에 요청할 것이 있으면 cpu에 interrupt를 걸어서 현재 하던 작업을 멈추고 IO Device가 작업을 처리하도록 한다(CPU는 그동안 다른 작업 처리)
그 외에도 프로세스 관리 자원 할당 및 반환, 보호시스템, 네트워킹, 명령어 해석기(command line interpreter) 등의 역할을 한다