- [OS] 커널 (모드 비트/시스템 콜/인터럽트)2024년 02월 12일 02시 01분 35초에 업로드 된 글입니다.작성자: @kimyu0218
커널은 운영체제의 핵심 프로그램으로, 시스템의 모든 것을 조율하고 제어한다. 커널은 운영체제 코드의 일부로서 메모리에 상주하며, 시스템 시작 시에 가장 먼저 로드된다. 커널의 주요 역할은 다음과 같다.
- 커널은 하드웨어 자원을 관리한다. 자원을 효율적으로 관리하여 여러 프로세스가 안정적으로 실행되도록 한다.
- 커널은 프로세스를 관리하여 다중 프로세스 환경에서 각 프로세스가 공정하게 자원을 사용하고 서로 간섭하지 않도록 중재한다.
- 커널은 프로세스들이 필요로 하는 메모리를 할당하고 해제한다.
커널 주소 공간 (os 상주 영역) 은 커널이 실행되는 메모리 영역을 의미한다. 이 영역은 시스템의 가장 상위에 위치하며, 보호된 메모리 영역에 할당된다. 사용자 프로세스들은 직접 이 영역에 접근할 수 없지만, 시스템 콜을 통해 커널에 서비스를 요청할 수 있다. 이를 통해 커널은 시스템의 안전성을 유지하면서 사용자와 상호작용할 수 있다.
커널 주소 공간에는 다음 요소가 포함된다.
- 코드 - 운영체제의 핵심 기능을 구현하는 명령어들이 포함된 영역
- 데이터 - 전역 변수, 데이터 구조 등 운영체제 내에서 유지해야 하는 다양한 정보들을 저장하는 영역
- 스택 - 커널 내부의 함수 호출 정보 등을 저장하는 영역
- 힙 - 동적으로 할당된 메모리 블록을 관리하는 영역
mode bit
모드 비트는 사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 하는 일종의 보호 장치다. 이진값으로 표현되며, 각각의 값은 운영체제가 동작하는 모드를 나타낸다.
운영체제의 모드에는 사용자 모드와 커널 모드*가 있다. 사용자 모드 `1`는 일반 어플리케이션이 실행되는 모드로, 제한된 권한을 가지고 있다. 반면, 커널 모드 `0`는 운영체제의 핵심인 커널이 실행되는 모드다. 커널 모드에서는 운영체제의 모든 기능과 시스템 자원에 대한 완전한 접근 권한을 가지고 있다.
*커널 모드 == 시스템 모드 == 모니터 모드
사용자 모드와 커널 모드의 분리는 시스템의 안전성을 유지하는 데 중요한 역할을 한다. 커널 모드에서 실행되는 코드의 오류나 잘못된 동작은 전체 시스템에 치명적인 영향을 미칠 수 있기 때문이다.
시스템 콜
사용자 모드에서는 운영체제의 기능을 바로 사용할 수 없다. 사용자 모드에서 운영체제의 서비스를 사용하려면 시스템 콜을 사용해야 한다. 시스템 콜은 일반 어플리케이션이 운영체제의 기능을 이용하기 위해 커널 함수를 호출하는 것으로, 이를 실행하면 사용자 모드에서 커널 모드로 전환된다.
- 어플리케이션에서 운영체제의 기능을 사용하기 위해 시스템 콜을 호출한다.
- 시스템 콜에 의해 사용자 모드에서 커널 모드로 전환된다.
- 커널은 요청된 작업을 수행한다.
- 커널은 어플리케이션에 작업 결과를 반환한다.
인터럽트
인터럽트*는 컴퓨터 시스템에서 발생하는 이벤트로, 정상적인 실행 흐름을 일시적으로 중단시키고, 특정한 처리를 수행하기 위해 운영체제에 알리는 매커니즘이다.
- 하드웨어 인터럽트 : 하드웨어 장치나 외부 장치의 상태 변화로 인해 발생한다.
ex. 디스크 I/O 작업 완료, 타이머 만료 - 소프트웨어 인터럽트 : 프로세서에 의해 실행되는 프로그램에서 발생한다.
ex. 시스템 콜 호출, 예외 발생
인터럽트가 발생하면, 프로세서는 해당 인터럽트에 대한 처리를 위해 현재 실행중인 작업을 일시적으로 중단하고, 인터럽트 핸들러*에 제어를 넘긴다. 이때, 인터럽트 당한 시점의 레지스터 상태와 프로그램 카운터 값을 저장하여 인터럽트 처리 후 중단되었던 지점에서 작업을 재개할 수 있다.
*인터럽트 핸들러 == 인터럽트 처리 루틴 (ISR)
타이머 인터럽트
타이머는 일정 시간이 흐른 뒤 인터럽트를 발생시켜 프로세서의 실행을 일시적으로 중단하고, 정확한 타이밍에 특정 작업을 수행할 수 있도록 한다. 타이머 값이 0이 되면 타이머 인터럽트가 발생하여 프로세서의 모드를 변경하고 운영체제에게 제어권을 넘긴다. 운영체제는 타이머 인터럽트를 사용하여 프로세스 스케줄링, 시간 기반의 이벤트 처리 등을 수행한다.
'학습기록 > CS 공부' 카테고리의 다른 글
[OS/공룡책] Part 2. Process Management (0) 2024.04.23 [OS/공룡책] Part 1. Overview (0) 2024.04.21 [OS] 가상 메모리 (페이지 부재/페이지 교체/스레싱/워킹셋) (0) 2024.02.09 [OS] 메모리 관리 2편 (연속 할당/불연속 할당) (1) 2024.02.09 [OS] 메모리 관리 1편 (주소 바인딩/메모리 로드) (2) 2024.02.07 다음글이 없습니다.이전글이 없습니다.댓글