응용 프로그램과 하드웨어 간의 인터페이스 역할을 담당
종류
- GUI(Graphic User Interface): 그래픽을 사용하여 컴퓨터와 상호작용하는 인터페이스로 windowOS, macOS 등이 있다.
- CUI(Character User Interface): 키보드만 사용하여 문자 기반으로 컴퓨터와 상호작용하는 인터페이스로 MS-DOS가 대표적이다.
운영체제 VS 펌웨어
- 펌웨어
- 장치가 공장에서 제조될 때 ROM이라 불리는 비휘발성 메모리에 기록된다.
- 일반적으로 제조 과정 중에 디바이스에 포함되며, 일반 사용자가 자유롭게 프로그램을 설치하거나 업데이트할 수 없다.
- 업데이트가 필요한 경우, ROM에 있는 현재 펌웨어를 제거하고 새로운 펌웨어로 덮어쓰는 방식으로 이루어진다.
→ 키보드, 세탁기 안에 있는 소프트웨어- 운영체제
- 컴퓨터의 휘발성 RAM (Random Access Memory) 및 비휘발성 ROM, 캐시 메모리 등 다양한 메모리를 계층화하여 사용한다.
- 사용자는 자유롭게 응용 프로그램을 설치하거나 실행할 수 있으며, 운영체제 및 응용 프로그램을 업데이트할 수 있다.
→ MacOS, WindowOS
CPU 스케쥴링과 프로세스 관리: CPU 소유권을 어떤 프로세스에게 할당할지 결정하며 프로세스의 생성, 삭제, 자원 할당 및 반환 관리한다.
메모리 관리: 한정된 메모리를 어떤 프로세스에게 얼만큼 할당할지 결정한다.
디스크 파일 관리: 디스크 파일의 프로그램들을 어떠한 방법으로 보관할지 결정한다.
I/O 디바이스 관리: 입출력 디바이스인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
자원 보호: 사용자가 하드웨어에 직접적으로 접근하는 것을 제한함으로써 자원을 보호하며 정해진 방법으로만 컴퓨터 자원을 사용한다.
응용 프로그램: 유저 프로그램으로 최상단에 위치
인터페이스: 사용자 명령 전달 및 실행 결과를 사용자에게 알려주는 역할
→ GUI, CUI
시스템콜: 운영체제가 커널에 접근하기 위한 인터페이스로 커널 함수를 호출할 때 사용된다.
- 추상화 계층으로 낮은 단계의 영역 처리에 대한 부분을 신경쓰지 않고 프로그램을 구현할 수 있다는 장점이 있다.
- 컴퓨터 자원에 접근하기 위해서는 시스템콜을 사용해야 함으로써, 사용자나 다른 프로그램들이 직접 컴퓨터 자원에 접근하는 것을 방지한다.
- 운영체제의 관리하에 프로그램이 운영되므로 사용자 부주의로 인해 컴퓨터 시스템 자체를 파괴할 수 있는 위험을 막을 수 있다.
→ 시스템의 안정성↑, 보안↑- printf(), write(), readFile() 등
- 유저모드가 시스템콜을 통해 커널모드로 변환되서 실행되는 과정
→ 유저 모드 fs.readFile()함수 호출 → 트랩 발동 후 올바른 요청인지 확인 → modebit을 0으로 변경 → 커널 모드에서 커널 함수를 통해 요청 실행 후 유저 프로그램으로 반환- modebit: 1 or 0 값을 가지는 플래그 변수
→ 0: 커널 모드로 모든 컴퓨터 자원에 대해서 접근할 수 있다.
→ 1: 유저 모드 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 대해서 함부로 접근할 수 없다.
커널: System Call 인터페이스를 제공하여 응용프로그램과 하드웨어 간의 상호 작용을 중개한다.
- 메모리 관리: 프로세스가 메모리에 할당 및 해제 / 가상 메모리 / 페이지 교체 등의 역할 수행
- 프로세스 관리: 프로세스의 생성, 종료, 스케쥴링 등을 담당
- 파일 시스템: 데이터의 저장, 검색, 백업 및 공유를 담당 & 제어
- I/O 디바이스: 입출력(I/O) 디바이스와 상호 작용
- I/O 요청 관리: 디바이스 드라이버와 상호작용하며, I/O 요청을 관리
드라이버: 하드웨어의 저수준 세부 정보를 추상화하여 응용 프로그램에게 제공한다.
이를 통해 응용프로그램을 통해 하드웨어를 직접 관리하고 제어할 수 있다.