[OS] 1. 운영체제(OS)의 구조
OS (Operating System)
- 운영체제(Operating System, OS)는 컴퓨터 시스템의 하드웨어, 소프트웨어적인 자원들을 효율적으로 운영 및 관리함으로써 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 하는 시스템 소프트웨어이다.
- 일반적으로 커널에 여러 가지를 추가한 상태를 OS 라고 통칭한다.
- 그러나 OS 는 더 정확하게 이야기하면 커널이라고 할 수 있다.
OS 의 역할
- 시스템 자원 관리자 역할
- 시스템 자원이란 컴퓨터의 하드웨어를 의미한다.
- ex) CPU, Memory, SSD, HDD, I/O Device
- 과도한 사용, 메모리 공간 확보 등 시스템 자원이 낭비되는 것을 방지하고 원활하게 사용할 수 있게 관리한다.
- 시스템 자원이란 컴퓨터의 하드웨어를 의미한다.
-
사용자와 컴퓨터 간의 커뮤니케이션 지원
- 사용자의 입력을 컴퓨터가 이해할 수 있게 컴퓨터 언어로 바꾸어주는 역할을 한다.
- 컴퓨터의 연산 결과를 사용자에게 보여주는 역할도 한다.
-
응용 프로그램 제어
- 운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어이다.
- 메모리 접근, 저장소 접근, 입력 디바이스 접근 등 다양한 방법으로 응용 프로그램을 제어한다.
- ex) 어플리케이션을 처음 시작할 때 접근 허용 메세지가 뜨는 것과 같음
- 응용 프로그램
- PC 에서는 어플리케이션, 스마트폰에서는 App 이다.
- 엑셀, 파워포인트, 카카오톡 등 우리가 사용하는 소프트웨어를 의미한다.
- OS 와 응용 프로그램 간의 관계
- OS 는 응용 프로그램을 관리한다.
- 운영체제는 응용 프로그램을 실행시키는 부분부터 하드웨어로의 접근 권한까지 관리한다.
- 운영체제는 응용 프로그램을 사용하는 사용자의 정보도 관리한다.
- 응용 프로그램은 누구나 만들 수 있다.
- 응용 프로그램에 무한 반복문을 넣거나, CPU 를 많이 잡아먹게 코드를 작성한다든지 다양한 문제점이 만들어질 수 있기 때문에 운영체제는 응용 프로그램을 관리한다!
- OS 는 응용 프로그램을 관리한다.
OS 의 구조
- 크게 커널과 인터페이스로 나뉜다.
- 커널
- 운영체제의 핵심 기능을 모아놓은 것으로 운영체제의 성능은 커널이 좌우한다.
- 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스간 통신 관리, 저장장치 관리 등
- 자동차에 비유하면 엔진에 해당한다.
- 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.
- 유닉스의 사용자 인터페이스 : shell, bash 등
- 매킨토시의 인터페이스 : 유닉스 계열의 커널을 사용 (사용자에게는 다른 운영체제처럼 보인다)
- 시스템 호출과 디바이스 드라이버는 커널 내부에 존재하는 인터페이스다.
- 시스템 호출(system call)
- 커널이 자신을 보호하기 위해 만든 인터페이스다.
- 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근을 차단한다. 따라서 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용해야한다.
- 예를 들어 파이썬의
print()
가 있다. - 응용 프로그램과 커널 사이의 관계에 해당한다.
- 드라이버(driver)
- 커널과 하드웨어 사이에 인터페이스를 담당한다.
- 다양한 종류의 하드웨어를 커널에 연결한다.
- 마우스, 키보드 등 복잡하지 않은 디바이스 드라이브는 커널에 포함되어 있어서 컴퓨터에 연결만 해도 작동되지만 그래픽카드, 프린터 등 복잡한 디바이스는 사용자가 직접 설치해야한다.
- 하드웨어와 커널 사이의 관계에 해당한다.
- 운영체제의 핵심 기능을 모아놓은 것으로 운영체제의 성능은 커널이 좌우한다.
- 인터페이스
- 사용자와 응용 프로그램에 인접하여 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려준다.
커널
- 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하여 응용 프로그램이 하드웨어에서부터 오는 자원을 관리하고 사용 할 수 있게 해주는 운영체제의 핵심 요소이다.
커널의 핵심 기능
- 커널의 핵심 기능은 컴퓨터에 속한 자원들에 대한 접근을 중재하는 기능이다. 크게 5가지가 있다.
- 프로세스 관리 : 프로세스에 CPU 를 배분하고 작업에 필요한 제반 환경을 제공한다.
- 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
- 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
- 입출력 관리 : 필요한 입력과 출력 서비스를 제공한다.
- 프로세스간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
커널의 구조
- 단일형 구조 커널
-
초창기 운영체제 구조로, 커널의 핵심 기능 모듈들이 구분없이 하나로 구성되어 있다. 예를 들어
main
함수에 모든 기능을 구현한 것과 같다.출처 : https://velog.velcdn.com
- 장점
- 모델 간에 통신 비용이 줄어든다.
- 단점
- 모듈들이 하나로 묶여있어 오류를 잡기가 어렵다.
- 작은 기능적 오류가 시스템 전체에 영향을 미친다.
- 다양한 환경의 시스템에 적용하기 어렵다.
-
- 계층형 구조 커널
- 비슷한 기능을 가진 모듈들을 하나로 묶어서 하나의 계층을 만들고, 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.
-
윈도우 등 요즘의 운영체제들이 많이 사용하는 방식이다.
출처 : https://velog.velcdn.com
- 장점
- 단일형에 비해 오류 수정이 원활하다. 오류 발생시 해당 계층만 수정하면 된다.
- 디버깅이 쉽다.
- 단점
- 계층이 존재하기 때문에 하나의 계층이 문제가 생기면, 위/아래가 작동하지 않을 수도 있다.
- 운영체제가 크고 복잡해지면 많은 계층들이 발생하게 되어 커널의 크기도 커지고 하드웨어의 용량도 늘어나게 된다.
- 마이크로 구조 커널
- 계층형 구조의 문제를 해결하기 위한 구조로 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 기본적인 부분을 제외하고 나머지 부분은 사용자 영역에 구현해 놓은 방식이다.
-
주로 IOS 와 mac OS 가 이 구조를 사용하고 있다.
출처 : https://velog.velcdn.com
- 장점
- 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 시스템이 멈추지 않는다.
- 많은 컴퓨터에 이식하기가 어렵다.
- 커널이 가벼워 CPU 용량이 적은 시스템에도 사용이 가능하다.
- 단점
- 모듈이 독립적으로 존재하여 모듈간 통신이 빈번하게 이루어지기 때문에 성능이 저하될 수 있다.
댓글 남기기