운영체제 또는 오퍼레이팅 시스템(operating system, 약칭: OS)은 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다. 다음과 같은 순서로 알아볼 계획이다.
-----------------------------------------------------
1. 개요
2. 구성요소
3. 역사
4. 종류
4.1. 임베디드 운영체제
4.2. 서버 운영체제
4.3. 모바일 운영 체제
4.4. 데스크톱 운영체제
4.4.1. Windows
4.4.2. macOS
4.4.3. Linux
5.시장점유율
6. 주요용어
-----------------------------------------------------
Operating System(OS) - 2. 구성요소
하드웨어 위에 커널(kernel)이 올라가고, 커널 위에서 셸(shell)과 애플리케이션(application)이 실행된다. 사용자는 기본적으로 셸을 통해 애플리케이션을 실행한다.
커널(kernel)은 핵이란 이름대로 운영체제에서 가장 핵심이 되는 프로그램이다. Android를 Linux로 취급하는 이유가 바로 이 때문이다. Android의 커널이 바로 Linux 커널이기 때문. 커널은 드라이버를 이용해서 CPU나 그래픽카드와 같은 하드웨어를 제어하고 여러 응용프로그램들이 갖가지 다른 하드웨어 위에서 돌아가도록 호환성을 보장하기 위해 API를 제공한다. 예를 들면 웹 브라우저가 화면에 점을 찍고 싶다면 커널에서 제공하는 점을 찍는 함수를 호출하고, 커널이 드라이버를 참조해서 그래픽카드에 명령해 점을 찍는 것이다. 모든 응용 프로그램들에게 동일한 환경을 제공해서 하드웨어나 여타 환경이 달라지더라도 프로그램을 그대로 사용할 수 있도록 플랫폼을 제공해 주기 위함인데, 예전에 사용하던 DOS의 경우에는 이 기능이 약했기 때문에 응용 프로그램마다 어떤 그래픽카드 모델을 이용하는지와 같은 설정을 직접 해야 했다.
응용 프로그램이 운영체제의 API를 호출하는 실제 구동과정은 좀더 복잡해서 CPU에서 응용 프로그램이 실행되다가 레지스터에 적절한 값을 넣어주고 커널 호출 인터럽트를 걸어주면 문맥 교환(Context Switching)이 일어나서 CPU 레지스터, 파이프라인, 논리 주소를 쓰는 캐시까지 모조리 비워지고 커널이 실행된다. 커널에서 요청한 API를 수행한 다음에는 실행되던 응용프로그램의 중단된 시점의 명령어부터 다시 fetch 시킨다. 요새는 CPU가 register를 쌍으로 갖고 빠른 문맥 교환을 지원해주기도 한다.
Windows에서는 ntoskrnl.exe가 Windows 커널 프로그램에 해당한다. Linux에서는 커널을 사용자가 이런저런 세팅을 선택해서 컴파일하여 사용할 수도 있고 부팅 때 어떤 커널을 부팅시킬지 선택할 수도 있다.
사용자 입장에서 가장 크게 느껴지는 프로그램은 셸(shell)이다. Linux에서는 bash, bsh, csh와 같은 프로그램들이 해당되고, Windows에서는 cmd.exe(CLI)[3]나 explorer.exe(GUI)가 이에 해당된다. 가끔 explorer.exe가 다른 프로그램과 꼬이고 오류가 나서 강제 종료될 때가 있으며 이때 작업 표시줄과 바탕 화면의 아이콘이 전부 안 보이는데, 이미 실행 중이던 다른 응용 프로그램은 멀쩡한 경우를 볼 수 있다. 이는 셸 또한 커널 위에서 올라가는 프로그램이기 때문이며, 응용 프로그램도 커널 위에서 돌아가기 때문에 커널만 문제없으면 돌아가는 것이다. 그 상태에서 LCtrl + LShift + Esc를 누르면 실행되는 작업관리자의 파일(F) - 새 작업(실행...)(N) 메뉴를 통해 새로운 프로그램을 실행시킬 수도 있다. 이때 explorer.exe를 실행하면 화면이 원래대로 돌아온다. cmd.exe와 같은 텍스트 기반의 유저 인터페이스를 CLI(Command Line Interface)라고 부르며 그래픽 기반의 유저 인터페이스는 GUI(Graphic User Interface)라고 부른다. 참고로 Linux 계열에서 쓰이는 GNOME이나 KDE 등 GUI는 셸 위에서 돌아가는 응용 프로그램이다. 그 외에 계산기, 그림판이나 텍스트 편집기 같은 보조 프로그램들과 드라이버도 운영체제에 포함된다.
현대의 운영체제는 여러 개의 프로그램으로 구성되어 있다. 이를 나눠보면 다음과 같다.
1. 부트 로더
boot loader, booting loader
컴퓨터가 켜졌을 때 운영체제에 필요한 조치를 취하고 하드 디스크 드라이브에 기록되어 있는 운영체제를 실행하는 프로그램이다. 주로 BIOS 방식의 경우 MBR(Master Boot Record)이라는 하드 디스크의 첫번째 섹터 구간에 기록되어 있다. 그러나 MBR은 512바이트에 불과하기 때문에, MS-DOS 같이 간단한 운영체제가 아닌 현대의 운영체제의 경우에는 MBR상의 부트로더가 하드 디스크 드라이브상의 2차 부트 로더를 호출하여 부트 로더의 크기 제한을 없애는 방안을 주로 사용하고 있다.
최신 운영체제는 예전의 BIOS와 MBR에서 UEFI와 GPT로 바뀌고 있다.
2. 커널
kernel
응용 프로그램이 요청한 처리를 하드웨어에 나누어 처리를 요구하며, 시스템 호출 수행, 메모리 제어 등 운영체제에서는 없어서는 안되는 요소이다.
3. 셸
shell
화면에 사용자가 볼 수 있는 요소. 사용자의 지시를 해석하여 커널에게 전달하여 주는 역할을 맡는다.
UNIX 계열 운영체제에서 널리 쓰이는 셸에는 Bourne Shell(sh), Korn Shell(ksh), Bourne Again Shell(bash), C Shell(csh), TC Shell(tcsh) 등이 있다. Linux에서는 bash가 많이 쓰이고, UNIX의 경우 과거에는 csh와 ksh가 많이 쓰였지만 최근에는 Linux와 같이 bash 셸이 많이 쓰인다. Microsoft Windows는 explorer.exe가 셸 프로그램이며, macOS에선 Finder가 그 역할을 한다.
'IT Auditor Study > 운영체제' 카테고리의 다른 글
4. Operating System(OS) - 4. 종류 : 4.3. 모바일 운영 체제 (0) | 2024.04.08 |
---|---|
4. Operating System(OS) - 4. 종류 : 4.2. 서버 운영체제 (2) | 2024.04.07 |
4. Operating System(OS) - 4. 종류 : 4.1. 임베디드 운영체제 (2) | 2024.04.07 |
3. Operating System(OS) - 역사 (0) | 2024.04.06 |
1. Operating System(OS) - 개요 (0) | 2024.04.04 |