📢 본 글은 혼공학습단 미션과 함께 정리해보는 글 입니다.
지금까지는 컴퓨터 구조와 다양한 컴퓨터 부품들의 동작 원리를 익혔다면, 이제는 그 부품들을 실제로 동작할 수 있도록 해 주는 운영체제에 대해 알아볼 차례이다.
컴퓨터 부품들은 전기를 공급한다고 해서 바로 돌아갈 수는 없다.
자원: 프로그램이 실행을 위해 필요로 하는 모든 것들
⇒ 지금까지 배운 컴퓨터의 네 가지 핵심 부품이 포함됨
그러나 하드웨어적 자원만을 자원이라 칭하지는 않음
운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
이다.
이전에 배운 내용을 보면, 현재 실행중인 프로그램은 메모리에 적재된다고 하였다. 운영체제 또한 프로그램이기 때문에, 메모리의 커널 영역에 적재된다.
운영체제는 너무나 중요한 역할을 하기 때문에 별도의 장소
에 보관되고, 이 영역을 커널 영역
이라고 한다.
이 외에 사용자가 일반적으로 사용하는 프로그램들은 사용자 영역
에 적재되며, 이러한 프로그램들을 응용 프로그램
이라고 한다.
운영체제는 응용 프로그램들을 실행할 때 특정 번지에 할당
하도록 하는 역할을 한다. 즉, 메모리 관리를 한다.
운영체제는 CPU 또한 관리한다. CPU는 여러 개의 프로그램을 우리가 인지하지 못할 속도로 빠르게 번갈아가며 실행
하는 역할을 하는데, 이때 어떤 프로그램이 먼저 실행해야 할지, 어떤 프로그램이 CPU를 먼저 사용해야 할지 등을 관리해준다.
운영체제는 입출력장치 관리 기능도 가지고 있다. 예를 들어 한 번에 하나의 프로세스만 접근 가능한 프린터만 있다고 가정했을 때, 워드 프로세서가 이미 사용하고 있다면 메모장이 기다리도록 막는 역할 등도 할 수 있다. 또는 보조기억장치에 있는 보들을 파일, 폴더로 관리할 수도 있다.
정의를 내리자면, 운영체제는 응용 프로그램과 하드웨어 사이에 위치해서 이 둘을 연결해주는 프로그램
이라고 할 수 있으며, 사회에서의 정부와 비교되곤 한다. 자원을 어떻게 효율적으로 관리할 수 있는지 도와주는 역할을 하기 때문이다.
만약 운영체제가 없이 프로그램을 개발하려면, 하드웨어에 접근하는 코드 등도 직접 개발해야 한다.
프로그램을 위한 프로그램
이다.우리가 만든 프로그램들은 운영체제의 도움을 받으며 실행될 수 있다.
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램
이고, 그 종류 또한 다양하다.
그럼에도 가장 핵심적인 서비스 (공통적인 서비스 - 자원 접근 및 조작 기능 등)는 존재한다.
이렇게 운영체제의 핵심 서비스를 담당하는 부분
을 커널이라고 한다.
이와 반대로, 운영체제에는 속하지만 커널에 속하지 않는 기능
으로는 유저 인터페이스 (UI - User Interface)
등이 있다.
사용자가 실행하는 일반적인 프로그램들은 자원에 직접 접근할 수 없으며, 만약 이것이 가능하다면 매우 위험한 상황이 발생할 수 있다. 예시로 한 프로그램이 CPU를 쓰고 있는데 다른 프로그램이 빼앗으려고 하거나, SSD에 보관한 내용이 덮어씌워질 수 있기 때문이다.
이 때문에 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 자신을 통해서만 접근이 가능하도록 하여 자원을 보호
한다. (문지기 역할 - 이중 모드를 활용)
이중 모드는 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
이때, 모드의 표현은 슈퍼바이저 플래그
로 확인 가능하다. 1일 경우 커널 모드, 0일 경우 사용자 모드를 뜻한다.
커널 모드로 전환하여 실행하기 위해 호출
한다.소프트웨어 인터럽트
이기 때문에 하드웨어 인터럽트 처리 방식과 유사하다.프로그램은 커널 모드와 사용자 모드를 번갈아가며 실행
된다.프로세스
는 곧 실행 중인 프로그램
을 뜻한다.부족하거나 보완할 점이 있다면 댓글 부탁드립니다 😃
좋은 글이네요. 공유해주셔서 감사합니다.