티스토리 뷰

OS

OS - 커널과 이중모드, 시스템 콜

perseverance 2024. 8. 16. 18:04

커널(Kernel)이란 

운영체제의 가장 핵심 기능은 자원의 관리, 즉 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 장치 관리 등이라고 배웠다. 그 외에도 다른 컴퓨터와의 통신을 위한 네트워킹, 외부 침입으로부터 컴퓨터 시스템을 지키게 하는 보호 기능 등도 중요한 핵심 기능이다. 이와 같은 핵심 기능들을 우리는 운영체제 커널 kernel 이라고 부른다. 커널의 영어 사전적 의미는 요점, 핵심이다. 운영체제 커널을 다른 말로는 뉴클리우스 nucleus 라고도 부른다.

커널 외에도 운영체제에서 중요한 역할을 하는 것은 쉘 shell 이다. 쉘의 영어 사전적 의미는 껍질 또는 외피이다.

어떤 프로그램을 실행하려면 해당 아이콘을 더블 클릭하면 되고, 파일을 삭제하려면 그 파일을 드래그 하여 휴지통에 넣으면 된다는 등이 윈도우즈 운영체제의 껍질, 즉 쉘에 해당되는 부분이다.

쉘은 다른 표현으로 명령어 해석기 command interpreter 라고 부른다. 즉 사용자가 컴퓨터에 대해 어떤 명령을 내리면 쉘, 즉 명령어 해석기는 그 명령을 해석하고 그 명령에 해당되는 프로그램을 구동하여 실행시키는 역할을 한다.

 

mode bit

cpu안에 mode bit가 있는데 cpu안에서 실행되는 것이 운영체제인지 사용자 프로그램인지를 구분해주는 것이 mode bit이다. 

 

사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치이다.

  • 1 사용자 모드: 사용자 프로그램 수행
  • 0 커널 모드: OS 코드 수행 

보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행 가능한 특권명령으로 규정

Interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈

사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅 

 

mode bit가 0일때는 무슨일이든지 다 할수 있게 정의가 되어있다 (운영체제가 cpu를 가지고 있기 때문)

  • 메모리 접근, I/O device 접근 등등 

mode bit가 1일때는 즉 사용자 프로그램이 cpu를 가지고 있을 경우

  • 제한된 명령어만 cpu에서 실행할 수 있음 (보안상의 목적)

사용자 모드에서 실행되는 코드는 시스템의 안전성과 보안을 위해 제한된 자원에만 접근할 수 있으며, 중요한 작업을 수행해야 하는 경우엔 커널 모드로의 전환을 요청할 수 있다.

그럼 사용자 모드에서 커널 모드로 어떻게 전환할 수 있을까? 이때 사용되는 것이 시스템 콜이다.

시스템 콜 (System Call)

위에서 말했듯이 사용자 프로그램은 운영체제의 커널 영역에 바로 접근이 불가능하다. 그럼 사용자가 커널 영역에 접근하고 싶을때는 언제일까? 운영체제가 관리하는 자원을 이용하고 싶을때이다. 

즉, 사용자 프로그램이 운영체제가 관리하는 자원을 이용하고 싶을때 호출하는 것이 바로 시스템 콜이다.

시스템 콜을 이용하면 의도적으로 interrupt line을 세팅후 mode bit가 0으로 바뀌게해서 운영체제가 관리하는 자원을 이용할 수 있게 된다.

 

'OS' 카테고리의 다른 글

Process와 Thread의 차이  (0) 2024.08.22
OS - 동기식 I/O와 비동기식 I/O  (0) 2024.08.16
OS - programmed I/O, Interrupted I/O, DMA I/O  (0) 2024.08.16
OS - 운영체제 기술의 발전  (0) 2024.08.16
OS - 운영체제란?  (0) 2024.08.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함