운영체제 : 사용자가 컴퓨터를 쉽게 사용할 수 있게 도와주는 인터페이스
펌웨어 : 운영체제와 비슷하나 소프트웨어 추가 설치 불가능
기본적으로 OS는 유저프로그램과 하드웨어 중간에 위치함
유저 프로그램 |GUI/CUI - 시스템 콜 - 커널 - 드라이버|하드웨어
그래픽 UI, Command Line Interface
이 부분은 사용자가 아이콘을 클릭하거나 명령어를 입력하는 동작을 통해 컴퓨터와 상호작용할수 있게 해주는 인터페이스다.
운영체제가 커널 기능을 유저 프로그램에 제공하기 위한 인터페이스
I/O 요청인 fs.readFile()을 사용하려는 상태임. 유저 프로그램이 해당 메소드를 실행->trap발동 -> 시스템 콜이 올바른 I/O인지 확인 -> 유저 프로그램을 유저 모드에서 커널 모드로 변환 -> 파일 읽음 -> 유저 프로그램을 유저 모드로 변환 -> 유저 프로그램의 로직 수행
또한 프로세스, 스레드가 운영체제로 어떤 요청을 할 경우 시스템 콜 -> 커널을 거쳐서 운영체제에 전달된다.
시스템콜은 추상화 계층이기 때문에 네트워크 통신, 데이터베이스와 같은 low level의 영역 처리에 대한 부분은 많이 신경쓰지 않고 프로그램을 구현할 수 있음
Q. 왜 컴퓨터 자원을 커널 모드에서 사용해야함?
A.유저 모드에서 바로 컴퓨터 자원에 접근이 가능하면 IO 디바이스가 외부에서 조작되어 위험한 상황이 발생할 수 있음. 그래서 컴퓨터 자원은 커널 모드로 접근해야한다는 최소한의 안전장치를 마련한 것.
Q. 이게 user mode인지 kernel mode인지 어떻게 앎?
A. modebit를 이용해서 0이면 kernel, 1이면 user로 설정해서 파악함
운영체제의 핵심, 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적 역할을 함
하드웨어를 제어하는 소프트웨어다.
CPU, DMA컨트롤러,메모리, 타이머, 디바이스 컨트롤러 등..
인터럽트에 의해서 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 부품
인터럽트 : 어떤 신호에 의해 CPU를 잠깐 Pause 하는 것.
소프트웨어 인터럽트 : trap이라고 하며, 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동
하드웨어 인터럽트 : IO디바이스가 PC에 연결될때 발동
동작 : 커널이 프로그램을 메모리에 올려서 프로세스화 하면 CPU가 그걸 처리함
구성 : 산술논리연산장치, 제어장치, 레지스터
산술논리연산장치 ALU : 덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 곱 같은 논리 연산을 계산하는 디지털 회로
제어장치 CU : 프로세스 조작을 지시하는 부품
입출력 장치간 통신을 제어하고, 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 정함
레지스터 : 매우 빠른 임시기억장치
CPU와 직접 연결되어있어서 연산속도가 메모리의 수백배. CPU는 자체적으로 데이터 저장이 불가능해서 레지스터를 통해서 데이터를 전달함
데이터나 상태, 명령어를 기억하는 장치
보통 RAM을 메모리라고 함
CPU가 연산만 담당하고 메모리는 저장만 담당함
IO 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
모든 인터럽트 신호가 CPU로 들어가기 때문에 CPU의 부하를 방지하고자 사용
CPU와 DMA 컨트롤러가 동시에 같은 작업을 수행할 순 없음
작업 시간에 제한을 거는 역할을 함
시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기위해 존재
컴퓨터와 연결된 IO 디바이스의 작은 CPU