Machineboy空

운영체제 ② - 커널(kernel) - 이중 모드, 시스템 호출 / 운영체제의 핵심 서비스 본문

Computer/CS

운영체제 ② - 커널(kernel) - 이중 모드, 시스템 호출 / 운영체제의 핵심 서비스

안녕도라 2024. 1. 11. 11:40

필수 개념

 

1) 커널이란?

2) 운영체제의 서비스 종류?

3) 시스템 콜과 이중 모드란?


운영체제는 현존하는 프로그램 중 가장 규모가 큰 프로그램 중 하나!

규모만 클 뿐 아니라 종류도 다양해서 제공하는 기능이 다양하다.

but 가장 핵심적인 서비스는 존재한다.

 

*같은 스마트폰이라도 아이폰과 갤럭시의 기능이 다르듯, 하지만 스마트폰의 핵심적 기능(전화, 와이파이 연결 등)은 존재

* 컴퓨터의 경우, 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능

리눅스의 소스 코드 == 2700만 줄 이상


운영체제의 심장, 커널(kernel)

 

운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다.

거의 운영체제가 곧 커널을 지칭한다고 봐도 된다.

 

하지만 운영체제에는 속하는데 커널에는 속하지 않는 기능?

유저 인터페이스(UI, User Interface), 커맨드 라인 인터페이스 (Command line Interface)

 

사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아니다.

실제로 리눅스 같은 경우에도 같은 커널을 써도 다른 UI를 쓸 수 있다.

마우스 터치로 조작하는 그래픽 유저 인터페이스, 명령어로 접근하는 커맨드 라인 인터페이스

 


커널(kernel)의 기능

 

1) 이중모드와 시스템 호출 

 

사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까?

자원에 직접 접근하는 것은 위험하다!

 

운영체제는 응용 프로그램들이 자원에 접근하려 할 때

 

오직 자신을 통해서만 접근하도록 하여 지원을 보호한다!

( == 운영체제에 도움을 요청, 운영체제의 코드를 실행해야 한다.)

 

일종의 문지기.

 

 

* 이중모드 : CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식

 ‭→ 자원 보호

사용자 모드 커널 모드
- 운영체제 서비스를 제공받을 수 없는 실행 모드
(운영체제의 도움을 받을 수 없음)

- 커널 영역의 코드를 실행할 수 없는 실행 모드
- 자원 접근 불가
- 운영체제의 서비스를 제공받을 수 있는 실행 모드

- 자원 접근을 비롯한 모든 명령어 실행 가능

 

슈퍼바이저 플래그: 커널 모드인지 아닌지

 

‭그럼 언제 커널 모드로 전환이 될까?

 

* 시스템 호출 : 커널모드로 전환하여 실행하기 위해 호출, 일종의 소프트웨어 인터럽트

 

일종의 소프트웨어 인터럽트이기 때문에,

시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사하다.

 

일반적으로 실행하는 프로그램은 자원에 빈번하게 접근하기 때문에

시스템 호출을 자주 하게 된다.

 


운영체제의 핵심 서비스

운영체제에게 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리 크게 세 가지의 도움을 받으며 개발을 할 수 있다.

 

1) 프로세스 관리

 

프로세스 == 메모리에 적재되어 실행 중인 프로그램

수많은 프로세스들이 동시에 실행. ( = 빠르게 번갈아가며 실행된다.

(운영체제의 페이징 기법 등을 통해 모든 프로세스들이 메모리에 적재되어 있는 것은 아니다.) 

 

window 작업관리자

 

동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리한다!

*프로세스와 스레드, 프로세스 동기화, 교착상태 해결

프로세스마다 다른 상황들


2) 자원 접근 및 할당

 

*자원: 컴퓨터의 4가지 핵심 부품도 포함

  • CPU에 접근하여 할당
    • CPU 스케쥴링: 어떤 프로세스를 먼저, 얼마나 오래 실행할까?
     

 

  • 메모리에 접근하여 할당 : 메모리의 비어있는 공간에 새로운 실행 프로그램을 적재하거나, 적재할 프로세스가 메모리크기에 비해 훨씬 클때 등 쓰는 기법
    • 페이징 (Paging)
    • 스와핑 (Swapping)
     

 

  • 입출력장치에 접근하여 할당 : 인터럽트 서비스 루틴 제공

3) 파일 시스템 관리

 

관련된 정보를 파일이라는 단위로 저장 장치에 보관.

파일들을 묶어 폴더 (디렉토리) 단위로 장치에 보관

*macOS, linux : 디렉토리

 

파일과 폴더 또한 운영체제가 제공해주는 서비스.