OS란?
OS는 Operating System의 약자로 운영체제를 뜻한다.
사용자가 컴퓨터를 쉽게 사용할 수 있게해주는 인터페이스로 한정된 메모리나 시스템 자원을 효율적 제어및 관리하는
컴퓨터의 중요한 관리자 역할을 담당한다.
역할
- CPU 스케줄링과 프로세스 관리
- CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
- 메모리관리
- 한정된 메모리를 어떤 프로세스에 할당해야하는지 관리
- 디스크파일 관리
- 디스크파일을 어떤 방법으로 보관할지 관리
- I/O 디바이스 관리
- I/O 디바이스들 간에 데이터를 주고받는 것을 관리
구조
위 사진을 통해 보면 가장 최상단에 응용 프로그램(유저 프로그램)이 있고 그 아래 GUI, 시스템콜, 커널, 드라이버가
있으며 가장 하단에 하드웨어가 있다. 여기서 GUI ~ 드라이브 까지가 OS다.
여기서 GUI 대신 CUI만 있는 리눅스 구조도 있다.
GUI : 아이콘을 통해 상호작용할 수 있도록하는 사용자 인터페이스의 형태
드라이버 : 하드웨어를 제어하기위한 소프트웨어
CUI : 아이콘이 아닌 명령어로 처리하는 인터페이스
시스템 콜
운영체제가 커널에 접근하기 위한 인터페이스이며 응용 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용된다.
I/O 관련 동작은 커널 영역에서 관리가 되어야한다.
위 c언어 코드로 예를 들면 printf는 출력 함수기 때문에 I/O 관렴 함수이다.
이 때 시스템콜이 유저 모드에서 커널 모드로 modebit을 변경하여 커널 모드에서 내용을 출력한 후 다시 유저모드로 들어가
다른 로직을 수행한다.
이 과정을 통해 컴퓨터 자원에 직접 접근을 차단하여 다른 프로그램으로부터 보호할 수 있다.
modebit : 현재 mode를 나타내는 플래그 변수, 0은 커널 모드, 1은 유저 모드
유저 모드 : 유저가 접근할 수 있는 영역으로 한정된 작업만 할 수 있다.
커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드
커널 : 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하는 운영체제의 중추적인 역할,
컴퓨터 자원에 대한 접근 중재를 담당한다.
참고