Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스케줄링
- 컨디션 변수
- 유저모드
- 바이너리 세마포
- io-bound
- synchronizeation
- 커널모드
- 쓰레드
- Java
- #list
- list
- linkedmap
- 트리
- CPU 스케줄러
- 스핀락
- Lock
- HashMap
- 컨텍스트 스위칭
- cpu
- os 쓰레드
- OS
- MAP
- non-blocking
- set
- 하드웨어 쓰레드
- Mutual exclusion
- cpu-bound
- 자바
- 유저 쓰레드
- 쓰레드 덤프
Archives
변수의 기록
(os) 커널이란 무엇인가? (예시 포함 아주 쉽게 설명) 본문
1. 커널이란 무엇인가?
- OS 안에 존재하는 놈이다. OS의 심장이자 가장 권한이 센 놈.
- 우리가 흔히 말하는 "Linux", "Windows" 같은 건 운영체제 전체고,
- 그 안에 있는 가장 중요한 핵심 부분이 커널(Kernel).
즉, --> 커널 ⊂ OS
2. 커널은 어디서 돌아가나?
→ 커널 모드(Kernel Mode)
- CPU에는 모드가 두 개 있음:
- 유저 모드(User Mode): 우리가 평소 실행하는 애플리케이션 (브라우저, 게임 등)
- 커널 모드(Kernel Mode): 운영체제 커널, 드라이버, 시스템 콜 처리 등
유저 모드에서는 메모리, 하드웨어, CPU 자원에 직접 접근 불가
커널 모드에서만 직접 명령어 실행, 메모리 조작, I/O 제어 가능
3.커널이 하는 일 (진짜 중요함)
영역 | 역할 |
프로세스/스레드 관리 | 누가 언제 CPU 쓰는지 결정 (스케줄링) |
메모리 관리 | 가상 메모리, 페이지 테이블, TLB 제어 |
파일 시스템 관리 | 파일 열기, 읽기, 쓰기 요청 처리 |
디바이스 I/O 관리 | SSD, 키보드, 네트워크카드와의 통신 |
시스템 콜 처리 | 유저 프로그램이 요청한 작업 처리 |
보안/권한 관리 | 접근 권한, 사용자 분리 등 |
4. 유저 → 커널로 어떻게 요청?
→ 시스템 콜(System Call)
예시:
read(fd, buf, len); // 유저 모드 함수 호출
→ 내부적으로 커널에 read 요청
→ 커널이 하드웨어에서 읽어서 buf에 채워줌
이 과정에서 모드 전환 (User → Kernel) 이 일어남.
보통은 int 0x80, syscall 명령 같은 걸 통해 전환됨 (CPU가 제공).
5. 요약
- 커널은 OS 안에 있는 가장 중요한 중추
- 유저 프로그램은 커널 없이는 하드웨어 접근 불가
- 커널은 모든 자원(CPU, 메모리, I/O) 을 통제하고 조율
- CPU가 하드웨어와 직접 말하는 건 커널의 명령을 통해서만 이루어짐
- 커널은 항상 커널 모드에서 돌아가고, 유저는 유저 모드에 갇혀 있음
'CS지식 > 운영체제 (Operating System)' 카테고리의 다른 글
(OS) Block I/O vs Non-block I/O (소켓 I/O 기반 설명) (0) | 2025.04.17 |
---|---|
(OS) Thread Per Request vs Thread Pool 모델 정리 (쓰레드 비교) (0) | 2025.04.15 |
(OS) 스레드의 종류 (하드웨어, OS, 유저 , 그린 ,커널) (0) | 2025.04.14 |
(OS) 유저 모드와 커널 모드, 그리고 인터럽트와 시스템 콜 (예제 있음) (1) | 2025.04.13 |
(OS) CPU 스케줄러와 디스패처, 그리고 스케줄링 알고리즘 총정리 (0) | 2025.04.13 |