우선 우리는 운영체제가 무엇인지부터 정의를 해야합니다.
운영체제란 무엇인가하면,
Operation System의 약자 OS라고도 부르며 말그대로 컴퓨터 전반적인 부분을 운영하는 '시스템 소프트웨어'이다.
우선 컴퓨터의 전반적인 구조는 이렇다
그리고 소프트웨어에서
OS는 이렇게 시스템 소프트웨어에 속한다
운영체제는 컴퓨터 부팅 시 메모리 내 커널 영역에 따로 적재되어 실행된다.
(이 부분을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역은 사용자 영역이라고 한다.)
따라서 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행하도록 돕는다. 대충 매우 중요한 역할이라는 거
예를 들면,
요런 식으로 운영체제가 응용 프로그램들을 적재해주는 것이다.
또한 응용 프로그램이 실행되려면 CPU가 필요하기 때문에, 하나의 프로그램이 CPU를 독점하지 않도록 하고 동시에 두 개의 프로그램이 하나의 하드웨어를 동시에 사용하지 못하게 막는 역할도 한다.
(프린트 할 때 메모장, 워드 번갈아가면서 출력되지 않즤? 하나 다 끝나고 다음 응용 프로그램이 출력될 거여)
그렇다면 이제 운영체제가 적재되는 공간, 커널에 대해서 알아보좌
커널은 운영체제의 핵심 서비스를 담당하는 부분이다.
그러한 핵심 서비스에는
1. 자원에 접근하고 조작하는 기능
2. 프로그램이 올바르고 안전하게 실행되게 하는 기능
..이 있답니다.
-- 커널은 운영체제의 핵심부!
그렇다고 커널이 운영체제의 전부냐하면 그건 아니고, 사용자 인터페이스(윈도우 바탕화면 같은 거)등이 있다.
그리고 그것도 우리가 알고 있는 CLI와 GUI로 나뉜다.
그리고 응용 프로그램이 운영체제에게 어떻게 도움을 받으며 실행되는지를 알아보자.
뭐임? 진짜 처음 들어봄
일단 운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 막고 보호한다. (맘대로 접근하면 자원이 무질서하게 관리될 것임)
오로지 자신을 통해서만 접근하도록! 한다.
따라서 응용 프로그램은 운영체제에 도움을 요청해야하는데, 이때 운영체제가 문지기 하는 게 이중 모드이다.
CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분 하는 방식을 말한다.
사용자 모드는 운영체제의 서비스를 제공 받을 수 없으며(커널 영역의 코드 실행 못함) 아까 위에서 언급했듯이 하드웨어 자원에 직접 접근이 불가능하다.
커널 모드는 반대로 운영체제의 서비스를 제공 받을 수 있다.(커널 영역의 코드 실행 가능 ^^!) 또 위에서 말했듯 자원에 접근하여 명령어를 실행할 수 있다.
그러니까, 사용자 모드로 실행되는 프로그램은 자원에 접근하는 운영체제 서비스를 제공받으려면 [운영체제에 요청 -> 커널 모드 전환]이 필요하다.
이때의 요청을 시스템 호출(시스템 콜)이라고 한다. 아하
시스템 호출은 일종의 인터럽트로, 소프트웨어 인터럽트라고 한다.
(입출력장치에 의해 발생하기도 하지만 특정 명령어에 의해 발생할 때를 일컫음)
이 과정을 반복하는 것이다.
그럼 너무 잘 나와있다 그냥 제 블로그 보지말고 혼자공부하는컴퓨터개론 그거 보세요.
위에서 커널을 언급하면서 운영체제가 핵심 서비스를 제공하는 부분이라고 했는데, 이제 그 핵심 서비스가 뭔지를 알아보자.
대표적으로 프로세스 관리, 자원 접근 및 할당, 파일 시스테 관리가 있다.
실행 중인 프로그램을 프로세스라고 한다.(윈도우 작업관리자 열어보면 개많음)
프로세스는 레알 개다양해서 운영체제가 잘 관리하고 실행할 수 있어야한다. 이거 다음 블로그에 포스팅 할 거임 ㅇㅇ
앞서 계속 얘기한 내용이고, 컴퓨터 4가지 핵심 부품 CPU, 메모리, 보조기억창치, 입출력장치를 어떻게 관리하고 기능하는지는 차차 알아가보자 ㅋ
여러 파일을 묶어 폴더로 관리하는 것조차 운영체제가 서비스 한다는 점~
이번의 키워드, 운영체제와 그가 적재되는 공간 커널 그리고 거기서 무엇을 서비스 하는지 잊지 말고 다음으로 넘어가봅시다.