[운영체제] OS, 운영체제란 무엇인가

2024. 12. 11. 20:04STUDY/운영체제

728x90
반응형

이 글은 '쉽게 배우는 운영체제' 서적을 기반하여 각종 블로그에서 추가적은 정보를 얻어 작성되었습니다.

[운영체제의 정의]

소프트웨어를 잘 알지못하는 사람도 '운영체제'라는 말은 한 번쯤 들어봤을 것이다. 간략하게 'OS(Operating System'라고도 일컫는 운영체제는 일반 컴퓨터나 노트북의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어로 대표적으로 윈도우나 Mac OS, 유닉스, 리눅스 등이 있다.

 

운영체제의 필요성

초기의 컴퓨터는 정해진 계산만 수행했기 때문에 특별한 사용 규칙이 필요없었다. 그러나 메모리 CPU등의 성능이 향상되고, 여러 작업을 동시에 할수 있는 컴퓨터 환경이 조성되면서 사용 규칙이 필요해졌다. 복잡한 작업 환경에 규칙이 없으면 기계를 망가뜨릴 수 도 있지 않겠는가? 이를 위해 등장한 것이 운영체제다.

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

쉽게 이해할 수 있도록 레스토랑에 빗대어 운영체제를 살펴보자.

레스토랑에서 음식을 주문하면 웨이터가 그 음식을 주방에 알려주고 손님은 주문한 음식을 제공받는다. 만약 손님이 주방에 들어가서 직접 조리하거나 주방 기구를 만지려한다면 레스토랑 관리자가 저지할 것이다. 손님이 주방을 제멋대로 ㅇ용하면 주방이 난장판이 될테니 말이다.

운영체제도 마찬가지다. 만약 사용자가 하드디스크의 특정 위치에 저장하려고 하면 기존 데이터와 섞여서 엉망이 될 것이고, 때문에 운영체제는 사용자가 요청하면 대신 하드디스크에 데이터를 저장하거나 꺼내준다.

 

운영체제의 역할

  • 자원 관리 (효율성)

우리는 컴퓨터로 문서를 작성하면서 음악을 듣고 인터넷 서핑을 한다. 이때 여러가지 컴퓨터 자원을 사용하는데 운영 체제는 이러한 자원을 응용 프로그램에 나누어주어 사용자가 원활하게 작업할 수 있도록 돕는다. 만약 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 분배하고 적절한 시점에 자원을 회수하여 다른 응용 프로그램에 나누어준다.

  • 자원 보호 (안정성)

컴퓨터 내의 많은 자원을 관리하는 것 뿐만 아니라 악의적인 사용자나 미숙한 사용자로부터 자원을 보호하는 역할도 한다. 고의가 아니더라도 어떤 응용 프로그램이 남의 영역을 침범한다면 다른 사람의 작업을 망치거나 데이터를 지울 수도 있기 때문이다.

  • 하드웨어 인터페이스 제공 (확장성)

다양한 종류의 하드웨어를 사용할 수 있는 환경을 만들어준다. USB로 예를 들면 USB 장치에 연결할 수 있도록 제공하고 다양한 기능을 사용할 수 있도록 하드웨어 인터페이스를 제공한다. 운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있또록 지원하기 때문에 우리는 어떤 회사에서 만든 하드웨어인지 신경 쓸 필요가 없다. 

  • 사용자 인터페이스 제공 (편리성)

사용자가 편리하게 작업할 수 있는 환경을 제공한다. 과거에 유닉스, MS-DOS와 같은 운영체제로 작업할 때와 달리 GUI를 제공하므로 대부분의 작업을 편리하게 할 수 있다.

 

[운영체제의 구조]

컴퓨터 시스템의 구조

커널과 인터페이스

  • 커널 : 커널(kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
  • 인터페이스 : 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할

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

 

시스템 호출(시스템 콜)

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

사용자는 하드웨어에 직접 접근하지 못하고 자원을 이용하려면 시스템 콜이라는 인터페이스를 이용하여 접근해야 한다. 앞서 설명한 운영체제의 역할 중 '자원 보호'를 위해서다.시스템 호출을 이용하면 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원을 관리하기 수월하다.

*커널모드와 유저모드

사용자 어플리케이션은 시스템콜(System Call) 통해 직접적인 하드웨어 요청이나 중요한 시스템 요청 한다. 요청을 하면 어플리케이션은 유저모드에서 커널모드로 잠시 전환 되었다가 커널모드에서 작업을 실행한  응답을 유저 어플리케이션에 반환되면서 다시 유저모드로 돌아가게 된다. 이러한 구조를 갖춤으로써 사용자 프로세스가 운영체제와 데이터를 함부로 들여다보거나 변경하지 못하게 보호한다.

예를 하나 들어보자면 유저가 문서를 실행 중이라고 가정해보자.

문서를 실행 중인 상태가 '유저모드'에 해당한다. 유저가 만약 쓰고 있던 문서를 저장하기 위해 저장 버튼을 클릭했다면 시스템 콜을 통해 커널에 저장하는 동작을 요청한다. 이때 '커널모드'에 돌입하며 실제로 데이터가 저장되고 저장이 완료되면 다시 '유저모드'에 돌입한다.

 

드라이버

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

운영체제가 수많은 하드웨어를 다 사용할 수 있는 환경을 제공하기 위해 맞는 프로그램을 직접 개발하기엔 무리가 있다. 또한 각 하드웨어의 특성은 하드웨어 제작자가 가장 잘 알고 있기 때문에 하드웨어 제작자가 관련 소프트웨어를 만드는 것이 유리하다. 

커널은 입출력의 기본적인 부분만 제작하고 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 한다. 이때 하드웨어 제작자가 만든 소프트웨어를 디바이스 드라이버라고 한다.

컴퓨터 시스템의 구조

시스템 콜 부분을 보면 커널 앞부분 전체를 감싸고 있는데, 이는 시스템 콜을 거치지 않고 커널에 진입할 수 없다는 의미이다. 반면에 드라이버는 커널 전체를 감싸고 있지 않다. 이는 커널이 제공하는 드라이버도 있고 그래픽 카드 드라이버처럼 하드웨어 제작자가 제공하는 드라이버도 있다는 뜻이고, 하드웨어는 커널과 직접 연결되기도 하고 디바이스 드라이버를 통해 연결되기도 한다.

 

[커널]

운영체제의 핵심 기능을 모아놓은 커널이 주로 하는 일은 다음과 같다.

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

커널의 핵심 기능은유기적으로 복잡하게 얽혀 있고 이러한 기능을 어떻게 구현하는가에 따라 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 구분한다.

 

단일형 구조 커널

초창기의 운영체제 구조로, 커널의 핵심기능을 구현하는 모듈들이 구분없이 하나의 구성으로 되어있다. 초기에 운영체제를 만들 때는 기능을 구현하기에 바빴기 때문에 모듈을 분리하여 구현할 만한 여력이 없었다. 이는 main() 함수에 모든 구현을 다 때려넣은 것과 같은 형태이다.

  • 장점 : 모듈이 거의 분리되지 않았기 때문에 모듈간 통신 비용이 줄어들어 효율적인 운영이 가능
  • 단점: 모든 모듈이 하나로 묶여 있기 때문에 디버깅하기 어렵고 운영체제의 여러 기능이 서로 연결되어 있어 기능상의 작은 결함이 시스템 전체로 확산될 수 있다.

 

계층형 구조 커널

비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현하는 방식이다. 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있게 되었으며 오늘날의 운영체제는 대부분 이 구조로 이루어져 있다.

 

마이크로 구조 커널

계층형 구조 커널의 운영체제는 다양한 하드웨어와 사용자의 요구를 수용하기 위해 계속해서 계층과 기능을 추가했다. 때문에 커널의 크기가 계속 커졌고 커널 소스가 방대해짐에 따라 오류를 잡기도 어려워졌다. 이러한 계층형 구조의 접근 방식과 반대로 개발된 커널이 마이크로 구조 커널이다.

마이크로 구조 커널의 운영체제는 프로세스 관리, 메모리 관리, 프로세스 간 동신 관리등 가장 기본적인 것만 제공하고 많은 부분을 사용자 영역에 구현하였다. 마이크로 구조에서는 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 운영체제가 멈추지 않는다.

또한 컴퓨터에 이식하기 쉽고 커널이 가벼워 CPU 용량이 작은 시스템에도 적용이 가능하다. 이 구조를 사용하는 대표적인 운영체제인 마하(mach)는 애플의 PC 운영체제인 OS X와 모바일 운영체제인 ios의 커널로 사용되어 유명해졌다.

 

[CPU의 프로세스 처리 방식]

일괄 작업 시스템(일괄 처리 방식)

요즘은 음악을 들으면서 문서 작업을 하는 등 동시에 여러 작업이 가능하지만 과거에는 한번에 한가지 작업만 할 수 있었다. 

이러한 시스템은 작업에 필요한 프로그램과 데이터를 동시에 입력해야 작업이 가능하다. 지금의 프로그래밍 환경과 달리 모든 작업을 한꺼번에 처리해야 하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능한데, 이러한 시스템을 일괄 작업 시스템(batch job system) 또는 일괄 처리 시스템(batch processing system)이라고 부른다. 

시분할 시스템

영화 필름을 생각해보자. 영화 필름은 한장 한장 정지된 사진이지만 이를 빠른 속도로 실행하면 움직이는 것 처럼 보인다.

다중 프로그래밍 시스템에서는 CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어준다. 이를 아주 잘게 그리고 아주 빠르게 실행된다면 여러 작업이 동시에 실행되는 것 처럼 보일 것 이다. 이러한 시스템을 시분할 시스템이라고 한다. 오늘날의 컴퓨터에는 대부분 시분할 시스템을 사용한다.

 

2024-12-12 CPU의 프로세스 처리 방식에 대한 정의 내용 추가

 

728x90
반응형