※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 반드시 댓글로 알려주세요!
[ 1 ] 운영체제가 필요한 이유
약 75년간 급격한 하드웨어의 진보가 있었고, 이러한 하드웨어들을 어떻게 잘 사용할 것인지에 대한 고민이 있었다. 컴퓨터에서 실행되는 응용 프로그램들은 결국 하드웨어 자원들을 사용해야 하기 때문이다.
① 엔지니어, 개발자들은 다양하고 많은 종류의 하드웨어와 관련된 것들을 모두 고려하며 응용 프로그램을 개발할 수 있을까?
→ 개발할 순 있겠지만 굉장히 복잡하고 어려울 것이다.
② 많은 프로그램이 동시에 실행되는 컴퓨터 환경에서 하드웨어 자원의 공유 및 분배는 어떻게 처리할 것인가?
→ 이에 대한 policy 가 없다면 특정 프로그램이 악의적으로 하드웨어 자원을 독점하는 등의 문제가 발생할 수 있을 것이다.
"운영체제"라는 특별한 소프트웨어는 이러한 문제들을 해결할 수 있다.
[ 2 ] 운영체제(Operating system)란?
운영체제의 대표적인 역할은 다음과 같다.
① 하드웨어를 손쉽게, 효율적으로 사용할 수 있는 abstraction(추상화)을 제공한다.
- CPU : process
- Memory : address space
- Disk : file
- Network : port
예를 들어, 여러 프로그램이 하나의 CPU(싱글 코어라고 가정)를 효율적으로, 공정하게 공유하기 위해 OS는 프로그램을 process로 추상화하여 관리한다. 자세한 내용은 process에 대한 포스팅에서 작성할 예정이다.
② 하드웨어 자원의 공유 및 분배를 위한 policy를 결정한다.
- ex) 어떤 스케줄링 알고리즘을 적용하여 스케줄링을 할 것인지
정리하자면 OS는 하드웨어 자원을 관리하고, 사용자가 하드웨어를 편리하게 사용할 수 있도록 하며, 하드웨어를 사용하기 위한 API를 제공하는 역할을 한다.
운영체제는 일반적인 Application software가 아닌 System software로 분류된다.
System software는 컴퓨터 시스템을 구동시키는 software이며 운영체제 뿐만 아니라 Compiler, Assembler 등이 있다.
Application software은 특정 용도로 사용되며 우리가 흔히 사용하는 word, ppt, Chrome 등이 있다.
Application software와 달리 System software인 운영체제는 항상 동작 중에 있고, 제어 기능으로서 항상 자원에 대한 감시 활동을 하며, 하드웨어에 대한 제어 기능을 수행한다는 특징이 있다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제 OS] 프로세스와 스레드, 그리고 병렬처리 (2) | 2023.06.14 |
---|---|
[운영체제 OS] Monolithic kernel, Micro kernel (1) | 2023.05.08 |
[운영체제 OS] 운영체제의 역사 - Mainframe, Spooling, Multiprogramming, Timesharing (1) | 2023.04.18 |
[운영체제 OS] system call 및 호출 루틴 (1) | 2023.04.16 |