0️⃣ 운영체제란?
운영체제는 OS라고 부르기도 하는데, 이는 Operating System의 약칭이다. 컴퓨터 시스템의 핵심 소프트웨어로 현존하는 프로그램 중에서 가장 규모가 큰 프로그램 중 하나다.
사용자와 하드웨어 간의 인터페이스를 제공하고, 시스템 리소스를 제어하여 효율적으로 관리할 뿐만 아니라 응용 프로그램이 올바르게 동작할 수 있도록 한다. 컴퓨터 하드웨어와 응용프로그램 사이에서 중재역할을 하는 것으로 실행할 프로그램에 필요한 자원을 할당하고 실행하여, 가장 핵심적인 소프트웨어로서의 역할을 수행한다. 좀 더 쉽게 설명하면 실행할 프로그램을 메모리에 적재하거나 삭제하며 지속적으로 메모리 자원을 관리하고 CPU나 기타 하드웨어에 접근하는 것이다.
그리고 여기서 주목해야할 요점은 바로 운영체제 또한 프로그램이라는 부분이다. 이것은 바로 운영체제가 여타 프로그램들과 동일하게 메모리에 적재되어있다는 것을 의미한다. 그럼 이제부터 본격적으로 운영체제의 구조에 대해 알아보자.
1️⃣ 운영체제의 구조
앞서 운영체제 또한 프로그램의 일부로서 메모리에 적재된다고 했다. 하지만 운영체제는 시스템의 근본적인 소프트웨어로서 굉장히 특별하기 때문에 특별한 공간에 적재된다.
1. 커널 (Kernel)
그 특별한 공간이 바로 커널 영역이다. 커널은 일반 사용자가 보통 보지 못하는 낮은 수준의 프로세스를 제어한다. 메모리를 얼마나 사용하여 읽고 쓸 지, 어느 프로세스를 실행하고 모니터나 키보드와 같은 입출력 장치를 통해 어떤 정보를 주고 받을 건지 등, 다양한 역할을 수행한다. 운영체제의 가장 핵심적인 부분을 담당한다고 보면 된다.
2. 셸 (Shell)
운영체제가 제공하는 서비스 중에서 커널에 포함되지 않는 서비스 중 하나로, 셸은 사용자와 운영체제 간의 인터페이스 역할을 수행한다. 대표적으로 사용자 인터페이스 (UI: User Interface)로 사용자가 컴퓨터와 상호작용할 수 있는 통로라고 보면된다.
- 그래픽 유저 인터페이스 (GUI: Graphic User Interface)
- 커맨드 라인 인터페이스 (CLI: Command Line Interface)
2️⃣ 운영체제의 역할 : 이중모드와 시스템호출
운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다. 응용프로그램이 직접 CPU나 메모리, 하드디스크 등에 접근하고 조작하면 치명적인 오류를 일으킬 수 있기 때문이다. 고로 응용 프로그램은 반드시 운영체제에게 접근 요청을 하고, 운영체제는 응용 프로그램 대신 자원에 접근하여 작업을 수행한다. 이러한 과정을 이중모드 라고 부른다.
이중모드는 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
- 사용자모드: 운영체제 서비스를 제공받을 수 없는 실행 모드
- 즉 커널 영역의 코드를 실행할 수 없는 모드로 일반적인 응용 프로그램은 자원에 접근할 수 없다.
- 커널 모드: 운영체제 서비스를 제공받을 수 있는 실행 모드
- 커널 영역의 코드를 실행할 수 있는 모드로 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있다.
사용자 모드로 실행되는 프로그램이 자원에 접근하려면 운영체제에 요청을 보내 커널모드로 전환되어야 한다. 이 때 보내는 이 요청을 바로 시스템 호출 또는 시스템 콜 이라고 부른다. 시스템 콜은 일종의 인터럽트로 입출력 장치에 의해 생기는 입터럽트가 아니기 때문에 소프트웨어적 인터럽트로 불리운다. 일반적으로 시스템 콜은 라이브러리 형태로 제공되며 API 호출을 통해서 사용할 수 있다.
3️⃣ 운영체제의 핵심 서비스
다양한 서비스를 제공하기 때문에 이 포스팅에서 자세히 다루기는 힘들지만 간단하게 알아보자. 추후에 다른 포스팅으로 돌아오겠다!
1. 프로세스 관리
메모리에 적재되어 실행되는 프로그램을 프로세스라고 부른다. CPU는 한 번에 하나의 프로세스만 우선순위대로 실행할 수 있기 때문에 여러 프로세스가 일목요연하게 작동하기 위해 운영체제가 관리한다.
2. 자원 접근 및 할당
이 프로세스를 관리하기 위해서는 각각의 자원을 접근하고 할당할 필요가 있다. CPU나 메모리, 입출력장치 등을 CPU 스케줄링, 인터럽트 서비스 루틴 등을 제공하여 관리한다.
3. 파일 시스템 관리
컴퓨터의 모든 파일들을 디렉토리로 묶어 관리하는 것을 파일 시스템이라고 부른다.
4️⃣ 운영체제의 종류
- 유닉스
- 리눅스
- macOS
- Window
- iOS
- Android
우리가 매일 쓰는 휴대폰도 OS를 탑재하고 있으며 윈도우 또한 OS 그 자체로 운영체제의 종류는 이렇게 다양하다. 그 이유는 바로 디바이스도 다르기 때문이다. 쉽게 보면 Android와 iOS, 윈도우와 macOS 이렇게 나뉘는 것도 디바이스와 내부 운영체제가 모두 다른 것을 알 수 있다. 때문에 각각 사용하는 자원이나 시스템콜 명령어 또한 달라 이렇게 다양해질 수 밖에 없는 것이다.
❗ 출처
- 강민철, 혼자 공부하는 컴퓨터구조 + 운영체제, 한빛미디어 (2022)
참고 사이트1 : https://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C
참고 사이트2 : https://jerryjerryjerry.tistory.com/172
'CS' 카테고리의 다른 글
메모리의 논리주소와 물리주소 (0) | 2024.06.28 |
---|---|
[얼레벌레 공부하는 CS] 프로세스와 스레드 (1) | 2024.06.03 |
[얼레벌레 공부하는 CS] RAM (0) | 2024.05.28 |
[얼레벌레 공부하는 CS] 컴파일 언어와 인터프리터 언어 (0) | 2024.05.13 |
[얼레벌레 공부하는 CS] 2진법과 16진법 (0) | 2024.05.09 |