0. 운영체제란?
운영체제는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다.
1. 운영체제의 역할과 구조
(1) 운영체제의 역할
- CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
- 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
- 디스크 파일 관리 : 디스크 파일을 어떤 방법으로 보관할지 관리
- I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리
(2) 운영체제의 구조
유저 프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조이다. 이 중 GUI, 인터페이스, 커널, 드라이버 부분이 운영체제를 지칭한다.
GUI : 사용자가 전자장치와 상호작용 할 수 있도록 하는 사용자의 인터페이스의 한 형태. 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호작용할 수 있도록 한다.
CUI : 그래픽이 아닌 명령어로 처리하는 인터페이스
커널 : 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
시스템콜
시스템콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용한다. 유저 프로그램이 I/O 요청으로 트랩(trap)을 발동하면 올바른 I/O 요청인지 확인한 후 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행된다.
예를 들어 I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수가 발동했다고 하면
이때 유저모드에서 파일을 읽지 않고 커널 모드로 들어가 파일을 읽고 다시 유저 모드로 들어가 그 뒤에 있는 유저 프로그램의 로직을 수행한다. 이 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있다.
위의 그림처럼 프로세스나 스레드에서 운영체제로 어떠한 요청을 할 때 시스템콜이라는 인터페이스와 커널을 거쳐 운영체제에 전달된다.
modebit
시스템콜이 작동할 때 modebit을 참고해서 유저 모드와 커널 모드를 구분한다. modebit은 1 또는 0의 값을 가지는 플래그 변수이다. 카메라, 키보드 등 I/O 디바이스는 운영체제를 통해서만 작동한다. 만약 카메라를 켜는 프로그램이 있다고 할 때 만약 유저 모드를 기반으로 카메라가 켜진다면, 사용자가 의도하지 않았는데 공격자가 카메라를 갑자기 켤 수 있는 등 나쁜 짓을 하기가 쉽다. 물론 커널 모드를 거쳐 운영체제를 통해 작동한다고 해도 100% 막을 수는 없지만, 운영체제를 통해 작동하게 해야 막기가 쉽다. 이를 위한 장치가 modebit이다. modebit의 0은 커널 모드, 1은 유저 모드로 설정된다.
위의 그림처럼 유저 프로그램이 카메라를 이용하려고 할 때 시스템콜을 호출하고 modebit을 1에서 0으로 바꾸며 커널 모드로 변경한 후 카메라 자원을 이용한 로직을 수행한다. 그 이후에 modebit을 0에서 1로 바꿔 유저 모드로 변경하고 이후 로직을 수행한다.
유저 모드 : 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드
'CS > 운영체제' 카테고리의 다른 글
[CS/운영체제] 프로세스 (0) | 2024.01.18 |
---|---|
[CS/운영체제] 동기 I/O와 비동기 I/O (0) | 2024.01.11 |
[CS/운영체제] DMA(Direct Memory Access) (0) | 2024.01.11 |
[CS/운영체제] 폴링과 인터럽트 (0) | 2024.01.11 |
[CS/운영체제] 운영체제의 분류 (1) | 2024.01.11 |