| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- MySQL 세팅
- #undef
- bootstrap
- heroku
- DB 데이터 저장
- bootstrap4 패키지
- jinja2
- href
- OpenCV + Flask
- #endif
- Django
- 명령어
- 콘솔 가상환경 # 콘솔 #가상환경
- Action
- #if
- openweathermap
- VS Code
- javascript
- 실시간 시계
- #ifndef
- 사이트 도메인
- 성능지표
- DB 데이터
- #ifdef
- flask
- 환경변수 설정
- PyQt5
- OpenCV
- #else
- 튜토리얼
- Today
- Total
PROGRAMMING
Kernel 본문
OS Service 도식화

- 커널
: OS의 핵심 프로그램으로 각종 프로그램 실행 및 서비스 제공을 위한 중추. OS 가장 밑단에서 작동되며, 프로세스 제어 및 자원 할당, 메모리 제어, 시스템 콜 등을 수행하는 영역.
1. Monolithic Kernel
- 단일형 커널
- I/O, Network, Device Drive 등 OS 관련 기능을 커널 모드에서 동작하도록 메모리에 적재, 실행하는 기법
- 적재된 메모리주소 간의 오버헤드가 적어 커뮤니케이션/통신에서 유리
2. Micro Kernel
- OS 관련 기능 중 일부를 커널 공간에서 독립적으로 수행하도록 분리시키는 기법
- 분리된 기능은 해당 역할 수행이 가능하도록 서버를 구축하여 동작하고 있음.
- 서버를 추가하면 다른 기능도 추가가 가능하므로 시스템을 더욱 견고하게 만들 수 있음.

3. Dual Mode
- 목적 : 사용자 OS 및 타 프로세스 보호
- 사용자와 OS는 시스템 자원을 공유하기 때문에 이에 대한 규제가 필요함.
- 2가지 모드(User, Kernel)를 번갈아가며 실행

* 프로그램 실행 시 메모리영역은 User Address Space 및 Kernel Address Space로 분리됨.
1) Kernel mode (Supervisor / Protected Mode)
: 시스템 전체 접근 권한 보유, 모든 CPU 명령 실행
2) User mode
: 할당된 메모리 영역 외의 타 프로세스 혹은 kernel 메모리 영역에 침입 불가. → raise Exception
(단적인 예시로, exe 파일의 어셈블리어를 직접 수정하여 프로그램 내부를 침투하거나 치명상을 입힐 수 있음. 이를 대비하여 User mode를 설정함으로써 범위를 초과하여 접근을 시도할 경우 Exception을 호출함.)
- User mode → Kernel mode
1) 시스템콜 함수 호출(ex. open, close, read, write)
※ 표준 라이브러리 함수 / 시스템콜 함수 차이점 : 커널 영역 진입 여부
2) Interrupt Handler 실행
(ex) 오류 발생 시 Exception 호출 → Interrupt Handler 실행 → Kernel mode로 진입하여 프로세스 kill
'OS' 카테고리의 다른 글
| Process Scheduling (0) | 2022.06.12 |
|---|---|
| Process (0) | 2022.06.12 |
| Operating System (0) | 2022.05.25 |