Operating System(OS)
- 컴퓨터 하드웨어와 소프트웨어 사이의 인터페이스 역할을 하는 핵심 소프트웨어
- 컴퓨터의 자원을 효율적으로 관리하고, 사용자가 컴퓨터를 쉽게 사용할 수 있도록 도와줌
⇒ 하드웨어와 사용자 간의 중재자 역할을 수행
- OS는 스스로 어떠한 기능을 수행하기 보다 다른 응용프로그램이 작업을 원활히 진행할 수 있도록 작업환경을 마련해 줌.
⇒ 응용프로그램을 운영(Operating)하기 쉽도록 만든 시스템(System)
- 종류 : Windows, Linux, UNIX, MS-DOS
역할
- CPU 스케줄링과 프로세스 관리
CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
- 메모리 관리
한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
- 디스크 파일 관리
디스크 파일을 어떠한 방법으로 보관할지 관리
- I/O 디바이스 관리
I/O 디바이스(입출력 장치 : 마우스, 키보드 등)
와 컴퓨터 간에 데이터를 주고받는 것을 관리
구조
-
사용자 영역
: 애플리케이션을 이용하기 위하여 마련된 공간으로 인터페이스(GUI)가 해당커널 영역
: 사용자가 이용하는 하드웨어를 효율적이고 안전하게 사용하기 위해 마련된 공간으로 시스템 호출, 커널, 드라이버가 해당- 운영체제에 속하는 영역은 크게 사용자 영역과 커널 영역으로 나뉨
- 사용자 영역
- 인터페이스(GUI, Graphical User Interface)
- 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스의 한 형태
- 그래픽을 이용하여 컴퓨터와 상호 작용하는 방식으로, 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해줌
- GUI가 없고 CUI만 있는 리눅스 서버도 있음
- 인터페이스(GUI, Graphical User Interface)
📌 CUI(Character User Interface) : CLI(Command Line Interface, 명령줄 인터페이스)라고 불리며, 그래픽이 아닌 명령어로 처리하는 인터페이스를 말함. (ex. Dos, 명령 프롬프트, Power Shell 등)
- 커널 영역
- 시스템 호출(System Call)
- 시스템 호출이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램(응용 프로그램, 유틸리티)이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 씀
- 시스템 호출은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단하는 역할을 함
- 유저 프로그램이 I/O 요청으로 트랩(trap)이 발동하면 올바른 I/O요청인지 확인한 후 유저 모드가 시스템 호출을 통해 커널 모드로 변환되어 실행됨
- 프로세스나 스레드에서 운영체제로 어떠한 요청을 할 때 시스템콜 인터페이스와 커널을 거쳐 운영체제에 전달됨
- 시스템 호출은 하나의 추상화 계층임. 때문에 이를 통해 네트워크 통신이나 데이터베이스와 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경쓰지않고 프로그램을 구현할 수 있다는 장점이 있음
- 시스템 호출(System Call)
📌 용어
- I/O 요청 : 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일
- 유저 모드 : 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
- 커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드
Ex) I/O 요청인 fs.readFile()
이라는 파일 시스템의 파일을 읽는 함수가 발동한 경우
- 유저 모드에서 파일을 읽지 않고 커널 모드로 들어가 파일을 읽음
- 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램의 로직을 수행
- 이 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있음
- 커널(Kernel) : 운영체제의 핵심이 되는 컴퓨터 프로그램으로, 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할을 함
- 커널의 역할
- 보안 : 커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임짐
- 자원 관리 : 한정된 시스템 자원을 효율적으로 관리하여 프로그램의 실행을 원활하게 함. 특히 프로세스에 처리기를 할당하는 것을 스케쥴링이라고 함
- 프로세스 관리 : 프로세스에 CPU 배분
- 메모리 관리 : 프로세스에 작업 공간을 배치
- 파일 시스템 관리, 입출력 관리, 프로세스 간 통신 관리
- 추상화 : 같은 종류의 부품에 대해 다양한 하드웨어를 설계할 수 있기 때문에 하드웨어에 직접 접근하는 것은 문제를 매우 복잡하게 만들 수 있음. 일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇 가지 하드웨어 추상화들을 구현함. 이 하드웨어 추상화는 프로그래머가 여러 장비에서 작동하는 프로그램을 개발하는 것을 도움. 하드웨어 추상화 계층(HAL)은 제조사의 장비 규격에 대한 특정한 명령어를 제공하는 소프트웨어 드라이버에 의지함
- 커널의 종류
- 단일형 커널(monolithic kernel) : 커널의 다양한 서비스 및 높은 수준의 하드웨어 추상화를 하나의 덩어리(주소 공간)로 묶은 것. 운영 체제 개발자 입장에서 유지 보수가 일반적으로 더 어려우나 성능이 좋음
- 마이크로커널(microkernel) : 하드웨어 추상화에 대한 간결한 작은 집합을 제공하고 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공
- 혼합형 커널(hybrid kernel) : 성능 향상을 위해 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 순수 마이크로커널과 비슷함. 수정 마이크로커널이라고도 함
- 나노커널(nanokernel) : 실질적으로 모든 서비스를 책임짐
- 엑소커널(exokernel) : 낮은 수준의 하드웨어 접근을 위한 최소한의 추상화를 제공. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 단일형 커널 수준의 추상을 제공
- 커널의 역할
- 드라이버(Driver) : 주변기기의 입출력을 통제하는 등 하드웨어를 제어하기 위한 소프트웨어를 말함.
'CS > OS' 카테고리의 다른 글
[CS] PCB & Context Switching (0) | 2024.02.01 |
---|---|
[CS] 시스템 콜(System Call) (0) | 2024.02.01 |
[CS] 인터럽트 (Interrupt) (0) | 2023.11.29 |
[CS] 프로세스 주소 공간 (0) | 2023.10.28 |
[CS] 프로세스와 스레드 (1) | 2023.10.28 |