-
OS - 운영체제 기본Programming/CS 2021. 11. 5. 19:39
안녕하세요 BeePeach 입니다 :)
OS, 운영체제 말은 많이 들었는데 그래서 OS가 뭔데??라고 하면 윈도우 같은거~ 라는 말만 할 줄 알고 정확히 어떤 역할을 하는지 무엇인지를 모르는 거 같아서 이번 기회에 공부해보려 합니다.
OS(Operating System)란 아주아주 쉽게 말하면 소프트웨어입니다. 프로그램이라는 소리죠!
OS의 종류에는 Windows OS, Mac OS, UNIX, LINUX 등등 많이 존재합니다.
(유명한것만 적은거에요.)
그럼 OS란 무엇을 하는 프로그램인지 알아보도록 하겠습니다.
1. 운영체제의 역할
1. System Resource(시스템 자원) 관리
여기서 Resource란 하드웨어라고 생각하면 됩니다. (CPU, Memory, I/O Devices, Network, HDD, SSD)
하드웨어는 스스로 무엇인가 하지 못합니다.
우리가 CPU, Memory 등 컴퓨터 하드웨어만 구매했다고 해서 워드, 롤 같은 프로그램을 실행할 수 없습니다.
각 프로그램이 CPU를 얼마나 사용할지 CPU 자체는 알 수 없습니다.
각 프로그램이 어느 주소에 저장되어야 하는지, 어느 정도의 메모리 공간을 확보해야 하는지 메모리가 결정할 수 없습니다.
또한 HDD, SDD에 어떤 파일을 어디에 저장할지 저장매체가 스스로 결정할 수 없습니다.
키보드나 마우스 입력도 마찬가지겠죠.
OS는 이러한 시스템 자원을 관리합니다.
2. 사용자와 컴퓨터 간의 커뮤니케이션 지원
사용자와 컴퓨터의 중간 다리 역할을 한다고 생각하면 됩니다.
쉽게 말해 인터페이스를 제공하는 것이죠.
이 부분은 OS의 Shell이라는 프로그램이 담당하게 됩니다.
흔히 Shell 하면 terminal처럼 CLI만 생각할 수 있지만 Finder나 윈도우탐색기처럼 GUI도 Shell입니다.
3. 프로그램을 제어한다.
우리가 프로그램을 더블 클릭하여 실행하면 이 프로그램은 누가 작동시키는 것일까요??
바로 OS가 프로그램을 실행시키는 것입니다.
그리고 프로그램이 요청하는 리소스를 관리하고 제어합니다.
정리하자면 OS란 하드웨어와 응용 프로그램을 관리할 뿐만 아니라 컴퓨터 프로그램의 기본적인 서비스를 제공해주는 소프트웨어입니다.
2. Application(응용 프로그램)
OS는 소프트웨어인데 응용 프로그램 (Application)을 관리합니다.
이 부분에서 응용 프로그램도 소프트웨어잖아? 응용프로그램이랑 OS랑은 다른 건가??라는 생각이 들 수 있습니다.
소프트웨어는 OS와 응용프로그램으로 나눌 수 있습니다.
응용 프로그램은 우리가 사용하는 워드, 카카오톡, 롤, 크롬과 같은 프로그램을 의미합니다.
그럼 OS와 Application의 관계를 알아보겠습니다.
OS는 사용자가 사용하는 응용 프로그램이 효율적이고 알맞게 동작하도록 지원해줍니다.
그리고 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고 지원해줍니다.
OS는 응용 프로그램을 실행시킵니다.
그리고 응용 프로그램의 권한을 관리해주고 응용 프로그램을 사용하는 사용자도 관리해 줍니다.
응용 프로그램은 누구나 만들 수 있습니다. 우리도 application을 제작하죠??
그리고 응용프로그램에 저장된 모든 파일 삭제하기와 같은 문제가 되는 코드가 있다고 생각해봅니다.
OS는 이러한 부분을 관리하고 권한을 부여해서 해당 행동들이 실행되지 못하게 합니다.
혹은 무한 반복문이 있거나 해서 응용 프로그램이 CPU를 자신만 다 쓰려고 하는 문제가 발생한다면 OS가 해당 응용프로그램을 종료시켜버릴 수 있습니다.
이런 식으로 OS는 응용프로그램이 요청하는 메모리, CPU 사용을 허가하고 분배합니다.
또한 OS는 응용 프로그래밍이 요청하는 I/O Devices 사용을 허가하거나 분배할 수 도 있습니다.
아래 그림을 보시면 이해가 잘 될 수 있습니다.
3. 운영체제는 어디에 있을까요???
운영체제는 HDD/SSD 즉, Storage에 저장됩니다.
그리고 전원을 켜면 메모리에 올라와 실행되게 됩니다.
(이 부분에 대해서는 나중에 Booting에 대해서 알아보면서 조금 더 자세히 다루도록 하겠습니다.)
728x90'Programming > CS' 카테고리의 다른 글
OS - Scheduling Algorithm (0) 2021.11.18 OS - Process Scheduling (0) 2021.11.09 OS - Kernel (0) 2021.11.07 Compile이란?? (1) 2020.09.15