OS-운영체제(1)

김명재·2023년 5월 16일
1
post-thumbnail

운영체제

모든 프로그램들은 하드웨어를 필요로 한다.

예를 들어 1+2를 실행하는 프로그램이 있을때 이 프로그램은 1+2를 계산하기 위해 CPU를 필요로 할 것이고 이미지를 하드 디스크에 저장해주는 프로그램이 있다면 하드 이 프로그램은 하드 디스크를 필요로 한다.

시스템 자원

이렇게 프로그램을 실행시키기 위해 필요한 요소를 시스템 자원이라고 한다.

바로 여기서 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는것이 바로 운영체제 이다.

운영체제도 우리가 자주 사용하는 여러 프로그램과 같이 한 프로그램이다.

그러나 운영체제는 매우 특별한 프로그램이기 때문에 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다.

커널 영역을 제외한 나머지 영역, 사용자가 사용하는 응용프로그램이 적재되는 영역을 사용자 영역이라고 한다.

운영체제를 알아야 하는 이유

나는 여러 글에서 근본있고 좋은 개발자가 되기 위해서는 cs지식도 잘 알고 있어야 한다고 배웠다. 그중에 높은 빈도를 차지하는 운영체제..

우리는 운영체제를 왜 배워야 할까? 운영체제를 배우면 어떤 좋은 점이 있을까?

우리가 만든 프로그램은 결국 하드웨어가 작동하여 실행되고 이러한 하드웨어를 제어하고 통제하는 것이 바로 운영체제이다.

즉 운영체제는 우리보다 훨씬 프로그램이 하드웨어상에서 어떻게 동작하는지 더 자세히 알고 있다.

운영체제는

  • 현재 하드웨어의 상태는 어떠한지?

  • 우리들의 코드가 어떻게 실행되고 있는지?

  • 하드웨어 상에 어떤 문제가 있었는지?

등을 자세히 알려줄 수 있고, 이를 통해 우리는 문제 해결의 실마리를 찾을 수 있다.

(나도 책에서 읽은거라 아직 개발을 하면서 운영체제에 대한 지식을 써먹은 적이 없다.. 언젠가는 그런 날이 오기를..)

커널

운영체제는 응용 프로그램에 다양한 서비스를 제공하지만 그중 가장 핵심적인 서비스가 있다.

바로 자원에 접근하고 조작하는기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능

이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널 이라고 한다.

이중 모드

운영체제는 사용자가 실행하는 응용 프로그램이 함부러 시스템자원에 접근하지 못하도록 한다.

만약 응용 프로그램이 CPU, 메모리, 하드 디스크 등에 마음대로 접근하고 조작할 수 있다면 자원이 무질서하게 관리될 것이고, 컴퓨터에 악영향을 끼칠 수 있다.

그래서 운영체제는 이중모드를 통해 자신의 역할을 수행한다.

이중 모드는 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 나눈것을 구분하는 방식이다.

사용자 모드

사용자 모드는 운영체제 서비스를 제공 받을 수 없는 실행 모드이다.
(커널 영역의 코드를 실행할 수 없다.)

일반적으로 우리가 사용하는 대부부분의 응용 프로그램은 사용자 모드에서 실행된다.

커널 모드

운영체제 서비스를 제공 받을 수 있는 실행 모드이다. 즉 커널 영역의 코드를 실행 할 수 있다는 말이다.

CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.

그렇다면 사용자 모드로 실행되는 프로그램은 어떻게 자원에 접근하여 실행되는 것일까?

시스템 콜

바로 시스템 콜을 요청해 운영체제 서비스를 제공받을 수 있다.

시스템 콜은 아까 말 그대로 운영체제에게 커널모드에서 받을 수 있는 서비스를 제공하달라는 요청이다

profile
steadyness is all time way

0개의 댓글