운영체제의 구조
위 이미지에서 붉게 색칠된 부분이 운영체제에 해당하는 부분이며
운영체제는 크게 '커널'과 '인터페이스' 두 가지로 구성되어 있다.
services로 해당하는 부분이 커널에서 다루고 있는 영역, user interfaces에 해당하는 부분이 인터페이스이다.
커널 Kernal
프로그램 실행, 입출력 장치 명령 관리, 메모리 관리 등 운영체제의 핵심 기능을 수행하는 프로그램이다.
커널은 크게 유닉스 계열 커널, 윈도우 계열 커널 두 가지로 나뉜다.
유닉스 계열 커널은 빠르고 안정적이지만 문자 기반을 통한 사용자 인터페이스(셸 shell)로 인하여
직관적이지 못하여 입문 난이도가 있다.
윈도우 계열 커널에도 명령 프롬프트와 같은 문자 기반 사용자 인터페이스가 남아있다.
커널 내부에는 시스템 호출(System call)과 디바이스 드라이버(Device driver)가 존재한다.
- 시스템 호출 System call
커널이 컴퓨터 자원을 보호하기 위해 사용자나 응용 프로그램이 컴퓨터 자원에 직접 접근하는 것을 차단하며
보호하기 위해 만들어진 인터페이스이다.
커널이 제공하는 시스템 자원을 사용하기 위해 함수 형태로 제공이 되며,
사용자가 커널에 진입을 하기 위한 유일한 방법이다. 이 외의 방법으로는 진입을 할 수 없게 만드는 방식으로
컴퓨터 자원을 보호한다.
- 디바이스 드라이버 Device driver
커널과 하드웨어 사이의 접근을 위한 인터페이스이다.
운영체제에서 정한 표준 방식을 통해 주변 장치 등의 하드웨어들이 이식되었을 때
운영체제에서 자동으로 호환성을 연결하여 기능 수행에 도움을 준다.
커널의 역할
기능 | 설명 |
프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 환경을 제공한다. |
메모리 관리 | 프로세스에 작업 공간을 배분하고 실제 메모리보다 큰 가상 메모리 공간을 제공한다. |
파일 시스템 관리 | 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다. |
입출력 관리 | 필요한 입력, 출력 서비스를 제공한다. |
프로세스 간 통신 관리 | 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다. |
결국 커널의 가장 중요한 역할은 여러 응용 프로그램을 실행할 수 있는 환경을 조성하는 것이다.
커널의 구조
- 단일형 구조 커널
커널의 초창기 구조 형태이다. 커널의 핵심 기능들이 구분되는 구현 모듈 없이 하나로 구성되어 있다.
모듈 간의 통신 비용이 없기 때문에 효율적이긴 하나 수정이 어려워 여러 환경에 대응하기가 어렵다. - 계층형 구조 커널
단일형에서 발전하여 비슷한 기능을 가진 모듈끼리 하나의 계층으로 묶어 관리하는 방식이다.
오류나 수정사항이 발생했을 경우 해당 계층만을 수정하기에 오늘날 대부분 사용되는 구조이다. - 마이크로 구조 커널
프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 모듈만 탑재한 방식이다.
커널의 크기를 축소하였기 때문에 사양이 낮은 CPU엣도 호환되고 이식성이 뛰어나다.
단, 모듈 간의 프로세스 통신이 발생하기에 느리다는 단점이 있다.
인터페이스 Interface
서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고 받는 시스템을 의미한다.
위에서 말하는 운영체제의 인터페이스는 사용자 인터페이스(user interface)로 사용자가 커널의 기능들에
접근할 수 있는 인터페이스를 의미한다.
- GUI(Graphical user interface): 그래픽 기반 사용자 인터페이스를 의미한다.
아이콘, 탐색기, 웹 브라우저 등이 이에 속한다. - Command line: 문자 기반 명령어 줄 인터페이스를 의미한다. bash나 명령 프롬프트(cmd) 등이 속한다.
가상머신 Virtual Machine
운영체제와 응용 프로그램 사이에서 작동하는 프로그램. 가상머신을 설치하면 응용 프로그램이 플랫폼과 실행환경에
상관없이 동일한 환경에서 작동하는 것처럼 보이게 할 수 있다.
따라서 개발자가 가상머신을 통한 코드만 만들게 되면 여러 운영체제에서 똑같이 응용 프로그램을 실행할 수 있다.
가상머신을 사용하면 높은 호환성을 가지게 되지만 응용 프로그램이 가상머신을 거치고 실행되기 때문에 보다 느리다는 단점이 있다.
대표적으로 자바(java)언어의 자바 가상 머신(JAVA Virtual Machine)이 있다.
'컴퓨터 과학(CS) > 운영체제' 카테고리의 다른 글
컴퓨터 과학_컴퓨터 시스템 구조와 하드웨어의 특성 (1) | 2024.08.28 |
---|---|
컴퓨터 과학_API와 SDK 정의와 차이 (0) | 2024.08.27 |
컴퓨터 과학_운영체제(OS)의 개념과 역할 (0) | 2024.08.07 |