오늘 이해해야 할 개념 2가지
1. 시스템 콜
2. 사용자 모드와 커널 모드
1. 시스템 콜
시민이 도서관에 원하는 책을 요청하면, 도서관은 그 책을 찾아서 시민에게 빌려준다.
그리고 반납기한이 되면 시민은 책을 반납해야 한다.
이와 똑같다.
운영체제에 응용 프로그램이 원하는 하드웨어 자원(메모리, CPU시간, IO 디바이스 사용 허가/제어)을 요청하면,
운영체제는 이를 프로그램에게 넘겨준다.
그리고 기한이 다 되면, 운영체제는 자원을 회수한다.
이 그림에서 보듯,
사용자가 어플리케이션을 실행하면 운영체제를 통해 하드웨어에게 자원을 할당받아서 어플리케이션이 실행된다.
사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는데,
이를 가능하게 하는 프로그램을 쉘(Shell)이라고 한다.
쉘에는 두 가지 종류가 있다.
- CLI : 터미널 환경. 명령어를 라인 바이 라인으로 입력해야 하는 유닉스 / 리눅스 같은 것들
- GUI : 그래픽을 보며 마우스로 클릭할 수 있는 맥, 윈도우 같은 것들
운영체제는 응용프로그램을 위해서도 인터페이스를 제공하는데
이를 API(Application Programming Interface)라고 한다.
보통 각 프로그래밍 언어별로 운영체제 기능을 활용하기 위해
함수 라이브러리 형태로 제공되어 시스템이 갖다 쓸 수 있도록 한다.
그리고 응용프로그램이 API를 통해 운영체제의 각 기능을 사용하고 요청하기 위해서,
운영체제는 시스템 콜(System call, a.k.a 시스템 호출 인터페이스) 이라는 명령/함수를 제공한다.
API는 시스템 내부에서 시스템 콜을 호출하는 형태를 띄는 경우가 많다.
예시를 보자.
API는 파일을 오픈하는 open()같은, 여러가지 운영체제에서 사용할 수 있는 함수를 제공한다.
함수를 사용하기 위해 시스템 콜이 필요하다.
그런데 사용자 모드는 뭐고 커널 모드는 뭘까?
2. 사용자모드와 커널모드
사용자 모드는 사용자가 접근할 수 있는 영역을 제한적으로 두고,
프로그램의 자원에 함부로 침범하지 못하는 모드이다.
코드 작성, 프로세스 실행 같은 일반적인 행동들을 수행한다.
반면 커널 모드는 OS가 사용하는 모드로, 모든 자원(드라이버, 메모리, CPU 등)에 접근하고 명령할 수 있다.
컴퓨터 내부에서 모든 자원에 접근하고 변경할 수 있다고 생각하면 된다.
커널 모드를 실행하여 커널 모드에서만 실행할 수 있는 기능들을 사용하려면, 반드시 시스템 콜을 거쳐야 한다.
응용프로그램이 실행되어
-> 운영체제 기능이 필요한 API를 호출하면
-> 시스템콜을 호출하고, 커널모드로 변경되어
-> OS내부에서 명령이 실행되고
-> 다시 응용 프로그램으로 돌아가게 된다.
'study > 운영체제' 카테고리의 다른 글
운영체제 3 - 스케쥴링 방식: FIFO / SJT / RoundRobin (0) | 2021.12.05 |
---|---|
운영체제 2 - 배치처리, 시분할시스템, 멀티태스킹, 멀티프로그래밍 (0) | 2021.11.27 |
인강으로 운영체제를 배워보기로 했다 (4) | 2021.11.13 |
댓글