티스토리 뷰

Backend/꾸준히 TIL

[OS] 1장 운영체제 개요

개발하는 후딘 2022. 9. 14. 16:41
728x90
반응형

본 포스트는 '쉽게 배우는 운영체제' 도서를 읽고 OS공부 목적으로 정리한 글입니다.


운영체제 정의

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


운영체제의 역할

- 자원 관리

운영체제는 키보드, 네트워크, 사운드카드 등의 컴퓨터자원을 응용프로그램에게 나눠주어 사용자가 원활하게 작업할 수 있도록 도와줍니다.

자원을 배분하거나, 응용프로그램이 자원을 더이상 사용하지 않는다면 해당 자원을 회수합니다.

 

- 자원 보호

운영체제는 사용자나 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 막음으로써 컴퓨터 자원을 보호합니다.

 

- 하드웨어 인터페이스 제공

운영체제는 복잡한 과정없이 하드웨어 자원(장치)를 사용할 수 있도록 하드웨어 인터페이스를 제공합니다.

하드웨어 인터페이스 지원을 받으려면 드라이버를 컴퓨터에 설치해야 됩니다.

 

- 사용자 인터페이스 제공

사용자 인터페이스는 사용자가 운영체제를 편리하게 사용하는 것을 목적으로 합니다.

 

+ 운영체제가 관리하는 자원이 무엇인가요?

운영체제가 관리하는 자원은 컴퓨터 자원 입니다.

컴퓨터 자원은 CPU, 메모리, 키보드, 디스크, 모니터 등 컴퓨터에 부착된 모든 장치를 의미합니다.


운영체제의 목표

- 효율성

운영체제의 목표는 자원을 효율적으로 관리하는 것 입니다.

예를 들면, 적은 자원을 사용하여 더 많은 작업량을 처리하거나 더 빠르게 결과를 도출하는 것을 의미합니다.

 

- 안정성

운영체제는 하드웨어를 관리하는 소프트웨어로, 사용자와 응용프로그램은 운영체제 위에서 작업을 합니다.

운영체제가 안정적이라면 사용자와 응용프로그램의 안전문제와 하드웨어의 보안 문제를 처리해야 되며

시스템에 문제가 발생하면, 문제발생 이전으로 복구할 수 있도록 해야됩니다.

안정성은 운영체제의 역할중 자원보호에 해당합니다.

 

- 확장성

운영체제는 다양한 시스템 자원을 추가하거나 제거하기가 편리함을 목표로 합니다.

확장성은 운영체제가 하드웨어 인터페이스 제공에 해당합니다.

 

- 편리성 

사용자가 편리하게 작업할 수 있는 환경을 제공하는 것을 목표로 합니다.

운영체제가 사용자 인터페이스를 제공하는 역할은 편리성과 관련있습니다.


운영체제의 구조

크게 보면, 운영체제는 '커널'과 '인터페이스' 로 두부류로 나뉘어져 있습니다.

- 커널(kernel)

커널은 프로세스관리, 메모리관리, 파일시스템 관리, 입출력관리,  프로세스 간 통신 관리, 저장장치관리 등 와 같은 운영체제의 핵심적인 기능을 담당합니다.

 

- 인터페이스(interface)

운영체제의 인터페이스는 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려주는 역할을 합니다.

유닉스(unix)에서의 셸(shell)은 사용자 인터페이스 이며, 명령어 기반의 인터페이스 입니다.

사용자 입장에서는 커널보다 인터페이스가 먼저 보입니다.

 

시스템 호출 과 드라이버

운영체제의 커널내부에는 시스템 호출 과 드라이버도 있습니다.

 

- 시스템호출(system call)

응용프로그램과 커널의 인터페이스를 의미합니다.

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

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

 

직접접근과 시스템호출을 통한 접근 으로 비교하겠습니다.

직접접근

  • 사용자가 직접 컴퓨터 자원에 접근해서 작업하는 방식입니다.
  • 사용자가 모든것을 처리해야합니다.

 

시스템호출을 통한 접근

  • 운영체제는 사용자나 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 막음으로써 컴퓨터 자원을 보호합니다.

  • 시스템호출은 하드웨어와 같은 시스템 자원을 사용할 수 있도록 인터페이스를 제공합니다.

  • 시스템호출을 이용하면 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원을 관리하기가 수월합니다.

  • 시스템호출커널이 제공하는 시스템 자원 사용과 연관된 함수 입니다.

  • 응용프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려면 시스템 호출을 사용해야합니다.

 

- 드라이버(driver)

커널과 하드웨어의 인터페이스는 드라이버가 담당합니다.

드라이버운영체제가 여러 하드웨어를 사용할 수 있도록 해줍니다.

 

마우스, 키보드와 같이 복잡하지 않은 디바이스 드라이버는 커널에 포함되어 있어 컴퓨터와 연결하면 작동이 되지만

GPU, 프린터 와 같이 크기가 크고 복잡한 디바이스 드라이버는 사용자가 직접 설치해야됩니다.

즉, 하드웨어는 커널과 직접연결되기도하고, 하드웨어 제작자가 제공하는 드라이버를 통해 연결되기도합니다.


커널의 구성

단일형 구조 커널

이미지 출처: https://math-coding.tistory.com/80

단일형 구조는  초창기의 운영체제 구조 입니다.

커널의 핵심 기능을 구현하는 모듈들이 구분없이 하나로 구성되어 있습니다.

모듈간 통신 비용이 줄어들어 효율적인 운영이 가능하다는 장점을 갖습니다.

 

반면에, 모든 모듈이 하나로 묶여있기 때문에 버그가 발생하면 버그의 원인을 찾거나 처리하는데 어려움이 있습니다.

운영체제의 여러기능이 서로 연결되어 있기 때문에 상호의존성이 높습니다.

이러한 상호의존성이 높기 때문에 다양한 환경에 시스템에 적용하기가 어렵고

수정하기가 어렵기 때문에 낮은 이식성을 갖게 됩니다.

 

 

마이크로 커널

왼쪽: 단일형 구조커널 / 오른쪽: 마이크로 커널 / 화살표: system call

마이크로 커널의 운영체제는 프로세스관리, 메모리관리, 프로세스 간 통신 관리(IPC) 등 가장 기본적인 기능만을 제공합니다. 

메모리관리자 와 동기화모듈은 프로세스 간 통신모듈로 연결되어 있습니다.

각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않습니다.

많은 컴퓨터에 이식하기 쉽고 커널이 가벼워서 CPU 용량이 작은 시스템에도 적용이 가능합니다.

 

 

계층형 구조 커널

이미지 출처: https://math-coding.tistory.com/80

비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현하는 방식 입니다.

오류가 발생했을 때, 발생한 계층의 오류를 처리하면되므로, 단일형 구조 커널보다 오류 수정과 처리가 쉽습니다.

 

 

가상머신

가상머신은 운영체제와 응용프로그램 사이에서 작동하는 프로그램 입니다.

가상머신을 설치하면 응용프로그램이 모두 동일한 환경에서 작동하는 것처럼 보입니다.

가상머신을 사용하면 호환성이 높아지지만, 응용 프로그램이 가상머신을 통해서만 작동하기 때문에 느려지는 단점이 있습니다.

 

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함