User
Application / Shell
API / Library
System Call
Operating System
HardWare(CPU, MEMORY, STORAGE, NETWORK ...)
운영체제가 사용자를 위해 제공하는 인터페이스 > 쉘, 쉘도 일종의 응용프로그램이라 API 사용.
우리가 사용하는 컴퓨터의 바탕화면도 GUI환경의 쉘이라고 볼 수 있음
운영체제가 응용프로그램을 위해 함수 형태로 제공하는 인터페이스 > API 혹은 Library(함수를 종류별로 묶은느낌)
운영체제는 시스템콜을 제공, 이것도 응용프로그램을 위한 인터페이스 제공이라 볼 수 있음 > 이 시스템콜을 조금 더 쉽게 사용하게 하는게 API 그러므로 API는 시스템콜이 들어감
시스템콜이 복잡 할 수 있으니 사용하기 쉽게 한번더 포장? 하는 느낌 > API
API는 시스템콜이 응용프로그램을 위해 제공한 인터페이스라고도 할 수 있음.
시스템콜이나 API나 결국 운영체제가 응용프로그램을 위해 제공하는 인터페이스라는 목적은 똑같음. 단지 사용하기 쉽게 한번 더 포장했나 안했나 차이.
API와 시스템콜은 운영체제에 요청하는 형식의 일종의 요청서라고 볼 수 있음
사용자가 컴퓨터를 사용한다 > 쉘이나 응용프로그램을 작동한다 > 프로그램 내부의 API가 상황이나 조건에 맞게 실행된다 > API 내부에 포함되어있는 시스템콜이 호출된다 > 시스템콜은 그에 맞는 운영체제 내의 커널함수를 호출하고 동작한다 > 운영체제가 하드웨어 혹은 시스템자원에 접근한다
인터페이스는 사용자가 사용하기 더 쉽게 해주기 위해 제공하는 장치나 시스템이라고 할 수 있다.
결국 사람이 직접적으로 컴퓨터 하드웨어를 사용하기 어려우니까 사용하기 쉽게 중간에 단계가 계속 생기는 느낌.
직접 하드웨어를 사용하기 어려워요 > OS생김,
OS를 직접 사용하기 어려워요 > 시스템콜 생김,
시스템콜 직접 사용하기 어려워요 > API 생김,
API 직접 사용하기 어려워요 > 응용프로그램, 쉘 생김 같은 느낌임.
이게 없으면 최초의 컴퓨터처럼 0,1 같은 명령어로 컴퓨터를 사용해야겠지;;........
그런데 여기서 OS에 접근하는데에 있어서 두가지 모드가있다. 응용프로그램에 의해 OS의 핵심부분인 커널이나 하드웨어가 손상되는것을 방지하는것이 이유일것이다. OS나 하드웨어는 망가졌을때 고치거나 대체하는게 비용적으로나 시간적으로나 더 수고로우니까 더 안전하게 보호해야지. > 그래서 사용자모드와 커널모드 만듬
사용자모드와 커널모드.
시스템콜 부터는 커널모드로 실행된다. 커널모드로 실행하려면, 반드시 시스템콜을 사용해야함.
ex) c언어를 사용해 파일을 여는 코드를 짜서 실행했다고 해보자
open()시스템 콜 호출 > 커널모드로전환 > open()함수를 처리하는 커널 함수 호출(OS에 진입) > 파일열기관련한 작동 수행, 스토리지 접근 > 사용자모드로전환 > 응답, 혹은 이후의 프로그램을 계속 실행.
'CS > 운영체제&네트워크' 카테고리의 다른 글
스레드(쓰레드)란? (0) | 2024.02.22 |
---|---|
인터럽트 동작 과정 (0) | 2024.02.20 |
스케줄링 알고리즘 (0) | 2022.04.02 |
운영체제 혹은 컴퓨터의 역사 (0) | 2022.03.14 |
운영체제란 무엇인가? (0) | 2022.03.13 |