운영체제(OS): 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스로, 한정된 메모리 및 시스템 자원을 효율적으로 분배해줍니다.
- CPU 스케줄링과 프로세스 관리
CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성, 삭제, 자원 분배 등을 관리합니다.- 메모리 관리
프로세스에 메모리를 얼만큼 할당할지 관리합니다.- 디스크 파일 관리
디스크 파일을 어떻게 보관할지 관리합니다.- I/O 디바이스 관리
마우스, 키보드와 컴퓨터 간 데이터를 주고받는 것을 관리합니다.
프로그램과 하드웨어 사이에서 프로세스 및 자원을 관리
GUI: 사용자가 편리하게 사용할 수 있도록 입출력과 같은 기능을 아이콘 같은 그래픽으로 나타낸 것
Driver: HW를 제어하기 위한 SW
Kernel: OS의 핵심 요소이자 System Call 인터페이스 제공.
메모리, 프로세스, 파일 시스템 관리 등 OS의 중추적인 역할
CUI: 그래픽이 아닌 명령어로 처리하는 인터페이스(문자를 직접 입력)
시스템 콜: OS가 커널에 접근하기 위한 인터페이스이며, 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
(비유하자면 고위험군 실험실에 접근해서 필요한 재료들을 가져오기 위해 관리자 ID카드를 빌려온다고 생각하면 될 것 같습니다.)
가령 프로세스나 스레드에서 OS로 어떤 요청을 할 때 시스템 콜과 커널을 거쳐 OS로 요청이 전달됩니다.
다음의 그림 자료를 보면 fs.readFile()이라는 파일 읽기 함수가 동작한 상황입니다.
이 때 유저 모드가 아니라 커널 모드로 들어가 파일 시스템 내 파일을 읽고 다시 유저 모드로 돌아와 나머지 유저 프로그램의 작업을 이어갑니다.
이렇게 하면 컴퓨터 자원으로의 직접적 접근을 차단하고 프로그램을 다른 프로그램으로부터 보호할 수 있습니다.
유저 모드와 커널 모드를 구분할 때 시스템 콜은 modebit을 참고합니다. (modebit은 1bit 플래그 변수, 0: 커널 모드, 1: 유저 모드)
시스템 콜을 호출하여 커널 모드로 들어갈 때 modebit은 1->0이 됩니다.
User Mode: 접근 가능한 영역이 제한되며, 컴퓨터 자원에 권한 없이 침범하지 못하는 모드
Kernel Mode: 모든 컴퓨터 자원에 자유롭게 접근할 수 있는 모드
면접을 위한 CS 전공지식 노트 - 길벗(2022)
https://blog.naver.com/jhc9639/222714239679