[OS] 01. 운영체제의 개요

2025. 3. 19. 15:14운영체제

운영체제 소개

운영체제란 무엇이고 운영체제가 필요한 이유는 무엇일까? 그 이유를 알기 위해서는 우리는 '컴퓨터 자원' 에 집중해야 한다. 컴퓨터에는 다양한 프로그램이 설치되어 있는데, 이 프로그램들은 키보드, CPU, 메모리, 마우스 같은 컴퓨터 자원을 공유한다. 각 프로그램에 자원에 접근할 수 있는 권한을 준다고 해보자. 어떤일이 일어날까? 자신의 프로그램이 실행되기 유리한 방향으로 자원을 점유하기 시작할 것이다. 따라서 자원 접근 권한을 응용 프로그램에 주는 순간, 컴퓨터 자원이 남용될 수 있다. 이를 방지하기 위해 중간 관리자를 두어 컴퓨터 자원을 관리하는데, 이 자원 관리자가 바로 '운영체제' 이다.

 

다시 정리하자면 , "응용 프로그램이 특정 목적을 위해 존재한다면, 운영체제는 컴퓨터에 있는 하드웨어를 조정하고 관리하기 위해 존재한다."

운영체제의 역할

  • 자원 관리
  • 자원 보호
  • 하드웨어 인터페이스 제공
  • 사용자 인터페이스 제공

운영체제의 구성

커널과 인터페이스

운영체제는 커널과 인터페이스로 나뉜다.

커널은 운영체제의 핵심 기능을 모아놓은 것이다. 커널은 모든 컴퓨터 자원을 관리하기 때문에 사용자나 응용 프로그램은 커널을 통해서만 컴퓨터 자원에 접근할 수 있다. 어떤 사용자나 응용 프로그램도 컴퓨터 자원에 직접 접근할 수 없다.

 

인터페이스를 통해 커널에 명령을 내리면 인터페이스가 그 결과를 전달해준다. 즉 인터페이스는 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다.

운영체제는 커널과 인터페이스가 분리되어있다. 따라서 같은 커널에 다른 종류의 인터페이스를 붙일 수 있다. 같은 커널이라도 다른 인터페이스가 장착되면 사용자에게는 다른 운영체제처럼 보인다.

 

유닉스에서 문자 기반 인터페이스를 셸(shell)이라 부르며 약자로 sh라 쓴다. sh 외에도 csh, tsh, bash 등이 있다. 유닉스 운영체제를 어렵게 느끼는 사람이 많다. 그러나 편리한 인터페이스와 화려한 그래픽을 자랑하는 매킨토시의 운영체제인 Mac OS도 유닉스 커널을 사용한다. 유닉스 운영체제가 어려운 것이 아니라 명령어 기반의 인터페이스가 어려운 것이다.

 

 

시스템 호출과 드라이버

시스템 호출

시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스다.

커널은 컴퓨터 자원을 보호하기 위해 사용자나 응용프로그램이 자원에 직접 접근하는 것을 차단한다. 따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용해 접근해야한다.

 

두 응용프로그램이 각각 숫자 14, 숫자 21을 하드디스크에 저장하려고 한다고 해보자.

  • 직접 접근 : 자원 관리가 안됨. 두 프로그램이 직접 데이터를 저장하려고 하기 때문에 이 경우 다른 프로그램이 저장한 데이터를 지울 수도 있고 데이터가 다른 프로그램에 의해 지워질 수도 있다.
  • 시스템 호출을 통한 접근 : 응용 프로그램이 하드 디스크에 직접 데이터를 저장하지 않고 커널이 제공하는 write() 함수를 사용해 데이터를 저장해달라고 요청한다. 응용 프로그램은 데이터가 하드디스크의 어느 위치에 어떤 방식으로 저장되는지 알 수 없다.

 

 

<시스템 호출 자세하게 정리하기>

  • 시스템 호출은 커널이 제공하는 시스템 자원을 사용하기 위한 함수다.
  • 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려면 시스템 호출을 사용해야 한다.
  • 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로는 커널에 들어오지 못하게 막아 컴퓨터 자원을 보호한다.
  • 시스템 호출은 커널이 제공하는 서비스를 이용하기 위한 인터페이스며 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단이다.

디바이스 드라이버

커널과 하드웨어의 인터페이스를 디바이스 드라이버 또는 드라이버라고 부른다. 맨 처음의 그림을 보면 시스템 호출 부분이 커널 앞부분 전체를 감싸고 있다.
이는 시스템 호출을 거치지 않으면 커널에 진입할 수 없다는 의미다. 반면에 드라이버는 커널 전체를 감싸고 있지는 않다. 이는 커널이 제공하는 드라이버도 있고 하드웨어 제작자가 제공하는 드라이버도 있기 때문이다.

커널의 역할과 종류

커널의 역할

  • 프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
  • 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간을 제공한다.
  • 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
  • 입출력 관리 : 필요한 입력과 출력 서비스를 제공한다.
  • 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스간 통신 환경을 지원한다.

커널의 종류

  • 단일형 구조 커널
  • 계층형 구조 커널
  • 마이크로 구조 커널

가상 머신

가상 머신이라는 이야기가 나오면 '호환성' 이라는 단어를 생각해보자. C언어의 경우 저급언어의 기능이 있어 시스템 프로그래밍 언어로 적합하다. C 언어로 만든 대표적인 운영체제는 유닉스다. 그런데 C 언어는 윈도우처럼 유닉스와 다른 커널을 가진 운영체제와의 호환성이 떨어진다. 문제는 유닉스도 버전이 다양해지면서 유닉스끼리도 호환되지 않는 경우가 있다는 점이다. 개발자 입장에서 각 버전에 맞는 프로그램을 개발할 수는 없는 일이다.

 

이러한 호환성 문제를 해결한 대표적인 언어가 바로 자바다. 자바는 운영체제 위에 가상 머신(JVM_ Java Virtual Machine)을 만들고 그 위에서 응용 프로그램이 작동하게 한다.

 

 

 

내용 출처 : 쉽게 배우는 운영체제