OS

Operating System (운영체제), Kernel(커널)

Debin 2021. 9. 10.
반응형

2021. 9. 10. 17:02 작성

2022. 6. 13. 21:17 수정 시작

작년 2학기 수업이라 이 때 정리했지만, 복습을 위해 블로그 글들을 리팩토링하기로 결정했습니다.

전공 공부도 다시 하면서, 깔끔하지 않은 게시글도 정리해보겠습니다.

Operating System (운영체제)

운영체제는 컴퓨터 전원을 누르면 제일 먼저 마주치는 소프트웨어다.

유닉스, 리눅스, 윈도, 맥 등 다양한 운영체제와 스마트폰에도 안드로이드, IOS 등 다양한 운영체제가 있다.

 

운영체제란 하드웨어와 사용자(소프트웨어) 간의 조정자 역할, 자원 관리자 역할, 입출력 장치와 사용자 프로그램 제어 역할을 수행한다.

운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어다.

초기 컴퓨터는 특정한 연산만 처리했기 때문에 특별한 사용 규칙이 필요 없었다. 시간이 지나며 컴퓨터를 다양한 분야에서 사용하고 복잡한 작업 환경에서 사용해야 했는데, 이때 복잡한 작업 환경에 규칙이 없으면 컴퓨터가 고장 날 수 있으므로 등장한 것이 운영체제다.

 

그럼 이제 운영체제에 관한 이해를 돕기 위해 몇 가지 질문에 대한 답을 작성했다.

  1. 컴퓨터는 운영체제가 없어도 작동하는가? 
    정상적으로 작동한다. 그러나 기능에 제약이 따르고 복잡한 기능은 구현하기 어렵다.
  2. 운영체제가 있는 기계와 없는 기계는 어떤 차이가 있는가?
    운영체제가 없는 기계는 다양한 응용 프로그램을 설치하여 사용할 수 없고, 성능 향상을 위한 새로운 기능을 추가할 수 없으므로 처음에 설계한 대로만 사용할 수 있다. 운영체제가 있는 시스템은 다양한 응용 프로그램을 설치할 수 있고, 성능 향상을 위한 새로운 기능도 추가할 수 있다.
  3. 운영체제는 성능을 향상하는 데에만 필요한가?
    운영체제는 성능 향상 뿐 아니라 자원 관리라는 중요한 역할도 수행한다. 또한 사용자에게 편리한 인터페이스를 제공한다.
  4. 운영체제는 자원을 어떻게 관리하는가?
    운영체제는 사용자가 직접 자원에 접근하는 것을 막음으로써 컴퓨터 자원을 보호한다.
  5. 사용자는 숨어 있는 자원을 어떻게 이용할 수 있는가?
    운영체제는 사용자가 자원에 직접 접근하지 못하도록 하는 대신 자원을 이용할 수 있는 여러 가지 방법을 제공한다.
    사용자가 자원을 사용할 수 있도록 해주고 그 결과를 알려주는 것을 인터페이스 (interface)라고 한다.

운영체제의 역할

운영체제의 역할은 크게 4가지가 있다.

  1. 자원관리
    프로세스를 관리하고 CPU, 메모리, 입출력 장치들을 관리한다. 만약 이러한 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용 프로그램에 나누어준다.
  2. 자원보호
    악의적으로 자원을 공격하거나 어떤 사람이 실수로 데이터를 지우거나 작업을 망칠 수도 있다.
    이런 비정상적인 작업으로부터 컴퓨터 자원을 지키기는 것이 운영체제의 역할이다.
  3. 하드웨어 인터페이스 제공
    운영체제는 다양한 종류의 하드웨어가 있어도 일관된 방법으로 하드웨어를 다룰 수 있게 도와준다.
    따라서 어떤 회사에서 만든 하드웨어인지 신경 쓸 필요가 없다.
  4. 사용자 인터페이스 제공
    GUI 같은 환경을 제공하며 사용자가 운영체제를 더욱 편리하게 사용하도록 운영체제 자체가 지원한다.

운영체제의 목표

  • 효율성 <-> 자원 관리
    운영체제는 같은 자원을 관리하더라도 효율적으로 관리해야 합니다. 이는 운영체제의 역할 중 자원 관리와 연관됩니다. 일반적으로 운영체제의 효율적인 자원 관리는 운영체제의 크기를 최소화하고 운영체제가 사용하는 코드를 최적화해야 합니다.

  • 안정성 <-> 자원 보호
    운영체제는 하드웨어 전체를 관리하는 소프트웨어로, 사용자와 응용 프로그램은 운영체제 위에서 작업을 한다고 볼 수 있습니다. 운영체제가 불안하면 모든 작업이 불안합니다. 그러므로 안정성도 운영체제의 중요한 목표입니다.
    운영체제는 사용자, 하드웨어에서 발생하는 문제를 처리할 수 있어야만 합니다.

  • 확장성 <-> 하드웨어 인터페이스 제공
    운영체제는 다양한 시스템 자원을 추가하거나 제거하기가 편리해야 합니다. 즉 사용자의 편리성뿐만 아니라 하드웨어 제작사의 편리성도 고려해야 합니다.

  • 편리성 <-> 사용자 인터페이스 제공
    사용자가 편리하게 작업할 수 있는 환경을 제공하는 것 또한 운영체제의 목표입니다.

다양한 컴퓨터 시스템.

  1. Multi Programming System : 하나의 CPU로 여러 작업을 동시에 실행하는 기술이다.
  2. Time Sharing System : 시분할 시스템으로 큐를 이용한 CPU 스케쥴링과 Multi Programming System으로 구성된다.
    컴퓨터와 대화하려는 시도에서 탄생했다.

  3. Distributed Processing System : 분산 시스템이다.
    네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템이다.

  4. Multi Processor System : 듀얼 코어처럼 CPU를 여러 개 추가하는 구조다.
    대칭적 구성 다중 처리 시스템과, 주/종 다중 처리 시스템 구성이 있다.
  5. Desktop System : 현재 제일 흔한 데스크톱이다.
  6. Cluster System : 많은 컴퓨터를 연결하여 한 개의 컴퓨터처럼 동작한다.
    하나가 고장 나도 다른 컴퓨터들이 작동하면 이상이 없다.

  7. Real-Time System : 데이터가 발생할 때마다 즉시 처리하는 구조다.
    각종 센서로 입력을 받으며 우선순위를 두어 작업을 처리한다.

  8. Client - Server System : 웹 기술을 이용한 대부분의 구조이며, 클라이언트와 서버 이중구조 시스템이다.
  9. P2P (peer to peer) System : 서버를 거치지 않고 사용자와 사용자를 직접 연결한다. (서버의 부하가 분산됩니다)
  10. IOT : 사물 인터넷이라고 많이 합니다. 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술이다.
  11. Cloud Computing : 하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이다.
  12. Edge Computing : IOT 센서들과 클라우드 서버 간의 경계(Edge)에서 처리할 수 있는 데이터를 처리해 부하를 줄이는 방식이다.

운영체제의 역사

구분 시기 주요 기술 특징
0기 1940년대 없음  진공관(0과 1) 사용
1기 1950년대 카드 리더, 모니터 일괄 작업 시스템
(Buffering)
(Spooling)
운영 체제의 등장
2기 1960년대 초반 키보드, 모니터 대화형 시스템
3기 1960년대 후반 C언어 다중 프로그래밍 기술 개발
시분할 시스템 (TSS)
4기 1970년대 PC 개인용 컴퓨터의 등장
분산 시스템
(네트워크의 표준화 진행)
(각각 다른 컴퓨터들이 모두 네트워크에 연결되었다.)
5기 1990년대 클라이언트/서버 시스템
6기 2000년대 스마트폰 P2P 시스템
(메신저, 파일공유)
그리드 컴퓨팅
클라우드 컴퓨팅
사물 인터넷
엣지 컴퓨팅

여기까지 기초적인 운영체제의 내용이었다.

 

Kernel (커널)

커널은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아넣은 것이다.

운영체제는 크게 두 부분으로 나뉜다.

사용자와 응용프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려주는 인터페이스
운영체제의 핵심 기능을 모아놓은 커널로 운영체제가 나뉜다.

 

운영체제의 핵심 기능을 모아놓은 것을 커널이라고 앞에선 언급했는데, 커널이 주로 하는 작업은 아래와 같다.

  • 메모리 관리 
  • 프로세스 관리
  • 파일 시스템 관리
  • 입출력 관리
  • 프로세스 간 통신 관리

다음은 커널 내부에 있는 시스템 호출과 드라이버에 대해 알아보겠다.

시스템 호출

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

커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.

따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용해 접근해야 한다.

보통 시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것으로 함수 형태로 제공된다.

멀티프로그래밍 환경에서 응용프로그램이 작동하면서 공유자원들을 사용하면서 다른 응용프로그램의 영역을 침범/침해하는 것을 막기 위해 커널 모드를 도입했다.

 

만약 사용자와 응용 프로그램이 자원(데이터)에 직접 접근하면 자기 마음대로 데이터를 저장하려 할 수 있는데, 이 과정에서 기존 데이터를 삭제하거나 기존 데이터에 결함을 만들 수 있다.


그러나 시스템 호출을 통한 접근은 커널이 전적으로 데이터를 가져오고 저장하는 것을 수행하기 때문에 컴퓨터 자원을 관리하기 수월하다. 이와 같이 운영체제는 사용자나 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 막음으로써 컴퓨터 자원을 보호한다.

드라이버

응용 프로그램과 커널의 인터페이스가 시스템 호출이라면 커널과 하드웨어의 인터페이스는 드라이버가 담당한다.

운영체제가 많은 하드웨어를 다 사용할 수 있는 환경을 제공하려면 각 하드웨어에 맞는 프로그램을 직접 개발해야 하는데 이건 현실적으로 너무 힘든 일이다. 그래서 커널은 입출력의 기본적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 한다. 이때 하드웨어 제작자가 만든 소프트웨어를 디바이스 드라이버라고 부른다.

커널, 시스템 호출, 드라이버 모습

컴퓨터 부팅 서비스 순서

  1. 컴퓨터 전원을 누릅니다
  2. ROM(read-only memory)에 저장된 바이오스가 실행된다.
  3. 바이오스는 하드웨어가 제대로 작동하는지 확인한다. 만약 이상이 있으면 오류 메시지를 출력하고,
    이상이 없다면 마스터 부트 레코드에 저장된 작은 프로그램을 메모리로 가져와 실행한다.
  4. 마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며, 운영체제를 실행하기 위한 코드인 부트스트랩이 이곳에 저장되어 있다.
    부트 스트랩 코드는 운영체제를 메모리로 가져와 실행하는 역할을 하는 프로그램이다.
  5. 마스터 부트 레코드에 있는 부트스트랩이 메모리에 올라오면 하드디스크에 저장된 운영체제를 메모리로 불러온다.
  6. 운영체제가 시작된다.

부팅 과정

커널의 종류

커널은 마이크로 구조 커널과 단일형 구조 커널, 계층적 구조 커널을 가지고 있습니다.

  • 단일형 구조 커널
    초창기의 운영체제 구조로 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있다.
    장점 : 속도가 빠르다.
    단점 : 모듈이 하나로 묶여 있어 오류가 발생하면 처리하기 어렵다.
    여러 기능이 묶여 있어서 하나의 결함이 시스템 전체로 확산될 수 있다.
    다양한 환경의 시스템에 적용하기 어렵다.
  • 계층적 구조 커널
    단일형 구조 커널이 발전한 상태로 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.

  • 마이크로 구조 커널
    마이크로 구조 커널은 운영체제의 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리등 가장 기본적인 기능만 제공한다. 다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있다. 마이크로 구조에서 각 모듈은 독립적으로 작동핟기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.
    장점 : 커널이 가볍고 한 부분에서 발생한 에러가 전체 시스템에 영향을 주지 않는다.
    서버의 개발이 용이하고 운영체제 기능의 변경이 쉽다.
    실시간 시스템에 활용된다.
    단점 : 프로세스 간 통신 발생을 최소화해야 한다. 속도가 느리다.

 

이상입니다.  이상 처음 공부 게시글 끝!

 

2022. 6. 13. 22 : 15 수정 완료

복습 완료!

 

참고 자료

쉽게 배우는 운영체제 (저자 : 조성호)

https://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791156644071 

 

운영체제 - 교보문고

명쾌한 비유와 사례로 쉽게 배우는 운영체제의 구조와 원리 컴퓨터 관련 학과 학생을 대상으로 운영체제의 구조와 원리를 설명한 책입니다. 주요 개념은 일상생활의 사례를 통해 쉽게 이해하고

www.kyobobook.co.kr

 

반응형

댓글