[OS] 운영체제란?

이름이름·2023년 8월 11일
0

OS

목록 보기
1/3
post-thumbnail

운영체제란?

모든 프로그램은 하드웨어를 필요로합니다.
1 + 2를 계산하는 프로그램은 CPU가 필요하고 이미지를 하드디스크에 저장하려면 하드디스크가 필요합니다.
이렇게 프로그램실행에 필요한 요소들을 시스템 자원 or 자원이라고 합니다.
ex) CPU, 메모리, 보조기억장치, 입출력장치 등

여기에서 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바로 실행되도록 돕는 프로그램이 바로 운영체제(Operating system)입니다.

운영체제는 인터넷 브라우저나 게임과 같은 프로그램입니다.
그래서 운영체제도 다른 프로그램과 같이 메모리에 적재되어야 합니다.
다만 운영체제는 매우 특별한 프로그램이라 메모리내에 커널 영역(kernel space)이라는 공간에 따로 적재되어 실행됩니다.
커널 영역을 제외한 나머지 영역 즉, 사용자가 이용하는 응용 프로그램들이 적재되는 영역을 사용자 영역(user space)이라고 합니다.

  • 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들자원들을 할당하고 이들이 올바르게 실행될 수 있도록 돕습니다.

예를 들어 지금 워드 프로세서, 인터넷 브라우저, 메모장을 실행하고 있다고 생각하면

위의 사진과 같이 운영체제가 메모리 주소가 겹치지 않도록 적당한 공간에 적재해 줍니다.

운영체제를 비유하자면..

운영체제는 정부에 비유되고는 하는데요
정부에서도 혼자서 나라 전체를 관리하는 것이 아니라 외교부,기획재정부 등으로 부서를 나누어 각자 맡은 부분을 관리하듯이 운영체제도 마찬가지입니다.
어느 한 부분에서는 CPU관리를, 또 어느 한 부분에서는 프로세서 관리를, 메모리 관리를.. 이런식으로 운영 체제도 여러 응용프로그램을 각자 part를 나누어 관리를 하게 됩니다.

운영체제가 없다면?

아무리 간단한 프로그램이라도 하드웨어를 조작하는 코드를 직접 개발해야합니다...
1과 2를 더해서 모니터에 출력하는 간단한 프로그램 조차도

  • 프로그램을 메모리에 적재하는 코드
  • CPU가 1과2를 더하게끔 하는 코드
  • 모니터에 계산 결과를 출력하게 하는 코드

이런 코드들을 직접 개발해야 합니다

저희가 개발자가 되어서 프로그램을 만든다면 그것을 실행하는 것은 결국 하드웨어이고 그 하드웨어를 컨트롤하는 친구가 운영체제입니다. 따라서 개발자의 수준높은 운영체제의 이해는 이후에 생길 문제 해결에 아주 큰 자산이 됩니다!

운영체제의 심장, 커널

운영체제도 하나의 거대한 프로그램이라고 했죠?
여기서 자원에 접근하고 조작하는 기능, 프로그램이 안전하고 올바르게 실행되게 하는 기능 등의 핵심 서비스 담당하는 부분을 커널이라고 합니다.

커널에 포함되지 않는 서비스

운영체제가 제공하는 서비스 중 커널에 포함되지 않는 부분에는 사용자 인터페이스(UI)가 있습니다.
사용자 인터페이스(UI)에는 두 가지가 있는데요

  • 그래픽 유저 인터페이스(GUI)
  • 커맨드 라인 인터페이스(CLI)

그래픽 유저 인터페이스(GUI)

윈도우 바탕화면이나 스마트 폰의 화면처럼 그래픽을 기반으로 컴퓨터와 상호작용 할 수 있는 인터페이스입니다.

우리가 마우스나 터치로 다양한 프로그램을 실행할 수 있는 이유는 운영체제가 이 GUI를 제공하기 때문입니다!

커맨드 라인 인터페이스(CLI)

이거는 우리가 컴퓨터에서 흔히 사용하는 cmd(command prompt)를 의미합니다.
특별한 그래픽은 없고 정해진 명령어를 통해서 컴퓨터와 상호작용할 수 있게 해줍니다.

이중모드

운영체제는 응용 프로그램들이 하드웨어에 직접 접근하는 것을 방지합니다.
자기들 마음대로 접근하면 무질서하겠죠?
그래서 운영체제가 문지기 역할을 하면서 대신 명령을 수행해줍니다.

  • ex) 응용 프로그램이 하드디스크에 데이터를 저장하고 싶어한다.
  • 운영체제에게 요청을 하게되고 운영체제가 하드디스크에 데이터에 저장하는 작업을 대신 해줌

이런 문지기 역할은 이중 모드(dual mode)로써 구현이 됩니다.
CPU는 명령어를 사용자 모드,커널 모드 두 가지를 이용해 실행할 수 있는데 이중 모드란 이렇게 CPU가 명령어를 실행하는 모드를 두 가지로 구분하는 방식을 의미합니다.

사용자 모드

운영체제의 서비스를 제공받을 수 없는 실행 모드
즉, 운영체제의 커널 영역의 코드 실행 불가
일반적인 응용 프로그램은 기본적으로 사용자 모드임

사용자 모드로 실행중인 CPU는 하드웨어 자원에 접근하는 명령어를 실행할 수 없습니다.

커널 모드

운영체제의 서비스를 제공받을 수 있는 실행 모드
즉, 운영체제의 커널 영역의 코드 실행 가능

CPU가 커널 모드로 명령어를 실행하면 하드웨어 자원에 접근할 수 있습니다.

시스템 호출

응용 프로그램은 기본적으로 사용자 모드로 실행된다고 했습니다.
그래서 운영체제의 서비스를 제공받을 수 없는데 (= 운영체제가 하드웨어에 대신 접근해서 작업을 해주는 데 이런 작업을 못해준다는 말)

시스템 호출(system call)을 통해 커널모드로 전환할 수 있습니다.
운영체제 서비스를 제공받기 위한 요청 = 시스템 호출(system call)

시스템 호출의 작동 예

한 응용 프로그램이 하드 디스크에 데이터를 저장하려한다고 가정해보겠습니다.
이를 위해서는 응용 프로그램은 하드디스크에 접근해야 합니다.

    1. 시스템 호출 (하드 디스크에 데이터를 저장하고자 하는)을 발생시켜 커널 모드로 전환함
    1. 운영 체제 내에서 하드 디스크에 데이터를 저장하는 코드를 실행시켜 하드 디스크에 접근
    1. 하드 디스크에 접근이 끝났다면 다시 사용자 모드로 복귀하여 실행을 이어나감

profile
공부 정리

0개의 댓글