운영체제(OS, Operating System) : 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스
(= 한정된 메모리나 시스템 자원을 효율적으로 분배 -> 소프트웨어를 관리하는 일꾼)
cf. 펌웨어(firmware) : 운영체제와 비슷, 소프트웨어를 추가로 설치할 수 x
1. 운영체제 역할
1) CPU 스케줄링, 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
2) 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리
3) 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지
4) I/O 디바이스 관리 : I/O 디바이스(마우스, 키보드) - 컴퓨터 간에 데이터를 주고받는 것 관리
2. 운영체제 구조
* 맨 위 : 유저 프로그램
* 중앙 : 운영체제 (GUI, 시스템콜, 커널, 드라이버)
cf. 리눅스 서버 : GUI x, CUI만 있음
- 드라이버 : 하드웨어를 제어하기 위한 소프트웨어 (e.g. 프린터 드라이버, 그래픽 카드 드라이버 ...)
* 가장 밑 : 하드웨어
3. 시스템콜 : 운영체제가 커널에 접근하기 위한 인터페이스 (하나의 추상화 계층)
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
프로세스/스레드 -> 운영체제에 요청 : 시스템콜, 커널 거쳐 운영체제에 전달
장점 : 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있음
- 커널(kernel) : 운영체제의 핵심이 되는 소프트 웨어, 시스템의 모든 것을 완전히 제어, 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등
유저 프로그램 : 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 디바이스를 이용한 로직 수행 )
'CS > 운영체제' 카테고리의 다른 글
[OS]CPU 스케줄링 알고리즘 (1) | 2023.12.23 |
---|---|
[OS]메모리 관리 (0) | 2023.12.20 |
[OS]컴퓨터의 요소: CPU(CU, ALU, Register), DMA Controller, Memory, Timer, Device Controller (0) | 2023.12.15 |