CS/운영체제

[OS]운영체제의 역할, 구조

개발의 피 2023. 12. 14. 20:47

운영체제(OS, Operating System) : 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스

(= 한정된 메모리나 시스템 자원을 효율적으로 분배 -> 소프트웨어를 관리하는 일꾼)

cf. 펌웨어(firmware) : 운영체제와 비슷, 소프트웨어를 추가로 설치할 수 x

 

1. 운영체제 역할

1) CPU 스케줄링, 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 

2) 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리

3) 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지

4) I/O 디바이스 관리 : I/O 디바이스(마우스, 키보드) - 컴퓨터 간에 데이터를 주고받는 것 관리 

 

2. 운영체제 구조

출처 : https://en.wikipedia.org/wiki/Operating_system

* 맨 위 : 유저 프로그램

* 중앙 : 운영체제  (GUI, 시스템콜, 커널, 드라이버)

 cf. 리눅스 서버 : GUI x, CUI만 있음

- 드라이버 : 하드웨어를 제어하기 위한 소프트웨어 (e.g. 프린터 드라이버, 그래픽 카드 드라이버 ...)

* 가장 밑 : 하드웨어 

 

3. 시스템콜 : 운영체제가 커널에 접근하기 위한 인터페이스 (하나의 추상화 계층)

유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용

프로세스/스레드 -> 운영체제에 요청 : 시스템콜, 커널 거쳐 운영체제에 전달 

장점 : 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있음 

 

- 커널(kernel) : 운영체제의 핵심이 되는 소프트 웨어, 시스템의 모든 것을 완전히 제어, 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등

출처 : https://cstaleem.com/user-mode-vs-kernel-mode-trap-vs-interrupt

유저 프로그램 : I/O 요청 -> 트랩(trap) 발동 -> 올바른 I/O 요청인지 확인 -> 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행

- I/O 요청 : 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일 

- 트랩 : 운영체제가 유저 프로그램에 의해 시작된 요청과 작업을 안전하게 관리, 허용되고 안전한 작업만 수행되도록 보장하는 메커니즘

 

e.g. fs.readFile() 파일 시스템의 파일 읽는 함수 발동 (I/O 요청)

유저모드x, 커널 모드로 들어가 파일을 읽음 o

- 유저 모드 : 유저가 접근할 수 있는 제한적인 영역(컴퓨터 자원에 함부로 침범하지 못하는 모드)

- 커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드

다시 유저 모드로 돌아가 유저 프로그램의 로직 수행 

 

e.g. I/O 디바이스(카메라, 키보드) : 운영체제를 통해서만 작동해야 함

cf. 유저 모드를 기반으로 카메라가 켜진다면, 사용자가 의도하지 않았는데 공격자가 카메라를 켤 수 있음

물론 커널 모드를 거쳐 운영체제를 작동한다고 해도 100% 막을 수는 없지만, 운영체제를 통해 작동하게 해야 막기 쉬움

이를 위한 장치 = modebit (

 

- modebit : 1 또는 0의 값을 가지는 플래그 변수 (0 : 커널 모드, 1 : 유저 모드) 

시스템콜이 작동될 때, modebit을 참고해서 유저모드와 커널 모드를 구분 

(시스템콜 = modebit 1 -> 0, 커널 모드로 변경한 후 I/O 디바이스를 이용한 로직 수행 )