온라인 강의를 기반으로 배운 전산학 지식에 대해 정리를 시작합니다! 운영체제부터 시작할게요.
운영체제는 OS(Operating System)
라고 불리기도 해요. 그리고 위 제목인 시스템 자원은 컴퓨터 하드웨어
입니다.
시스템 자원 = 컴퓨터 하드웨어
컴퓨터 하드웨어는 중앙처리장치라 불리는 CPU
, 주기억장치인 RAM
그리고 입출력 장치인 모니터
, 키보드
, 네트워크
등이 있고, 저장매체인 HDD
, SSD
도 컴퓨터 하드웨어입니다. 운영체제
는 바로 이 하드웨어들을 관리해주는 관리자 역할을 합니다.
운영체제는 각 시스템 자원들을 활용할 수 있게 해줘요. 즉, 운영체제가 없으면 아무리 좋은 하드웨어가 있어도 이를 활용할 수가 없게 되요. 운영체제가 시스템 자원들을 활용하는 법을 Naive하게 나열해 보면,
- 각 프로그램이 얼마나
CPU
를 사용할지 결정- 각 프로그램이
Memory(RAM)
에 어느 주소에 저장되어야 하는지, 어느 정도의 메모리 공간을 확보해야하는지 결정- 어떻게, 어디에
저장 매체(SSD, HDD)
에 저장할지 결정I/O Device
를 활용할 수 있게 함
이정도가 있습니다.
위에서 설명했듯이, 운영체제가 없으면 사용자가 컴퓨터에게 명령을 내릴 수단이 없어요. 그래서 운영체제를 통해 컴퓨터 간 커뮤니케이션을 해야합니다.
그러니 실제로 우리가 컴퓨터를 사용하는 방식은 아래 그림과 같습니다.
사용자가 운영체제에 무언갈 요청하면 운영체제가 시스템 자원들을 관리해서 그에 대한 결과를 사용자에게 표시하는 방식으로 커뮤니케이션이 진행됩니다.
운영체제
는 응용 프로그램
도 제어할 수 있게 합니다. 여기서 응용 프로그램은 보통 우리가 알고 있는 Excel
, 카카오톡
같은 일반 프로그램을 의미해요.
운영체제는
- 사용자가 어떤 작업을
I/O Device
를 통해 요청(ex. 마우스 클릭, A키 연타)- 시스템 자원들을 가지고 처리를 하고
- 응용 프로그램에서 사용자 요청을 기반으로 결과를 표시
합니다. 도식화한 그림은 아래와 같아요.
프로그램 = 소프트웨어
소프트웨어는 크게 운영체제
, 응용 프로그램
으로 나뉘며 응용 프로그램
은 운영체제
위에서 동작합니다.
운영체제
는 응용 프로그램
을 실행시키고, 응용 프로그램
간의 권한을 관리해요.
프로그램을 실행하다 보면 관리자의 권한으로 실행이라는 기능을 접할 수 있는데, 이는 관리자의 권한으로 실행하면 일반 응용 프로그램이 보다 리소스 접근을 더 많이 할 수 있게 해줘요. 그리고 응용 프로그램을 사용하는 사용자
도 운영체제가 관리합니다(feat. 로그인).
응용 프로그램
은 코딩만 할 줄 알면 누구나 다 만들 수 있어요. 이게 문제인거죠.
예를 들면, 무한 루프를 발생시키는 잘못된 로직이 잘못되었다면 운영체제가 이런 비정상적인 로직을 막아줘요. 개발하다보면 무한루프가 발생하면 런타임 에러를 발생시키는게 운영체제의 역할이에요.
아니면 모든 파일을 삭제를 시켜버리는 프로그램이 있다면 운영체제가 권한/사용자 관리를 통해 막을 수 있고요. 혹은 응용 프로그램
이 욕심이 많아서 CPU 점유량이 많을 경우 운영체제가 이를 관리해줘요.
정리하자면,
운영체제의 응용 프로그램 관리 이유
1. 무한루프 같은 비정상적인 로직 방지
2. 모든 파일 삭제 같은 로직을 권한/사용자 관리를 통해 방지
3. 프로그램의 CPU 점유량 관리
따라서 운영체제는,
- 사용자가 사용하는 프로그램이 효율적으로, 적절하게 동작하도록 지원
- 응용 프로그램이 용청하는 시스템 자원을 효율적으로 분배 및 지원하는 소프트웨어
라고 보시면 됩니다.