운영체제의 계층구조
먼저 우리가 사용하는 운영체제는 사용자 프로그램이 하드웨어에 직접 접근하지 못한다
그 중간에 시스템 콜 인터페이스와 커널이 하드웨어 중간에 존재한다
[ 사용자 프로그램 ]
↓
[ 사용자 API / 라이브러리 (예: printf, fopen 등) ]
↓
[ 시스템 콜 인터페이스 (예: read, write, fork 등) ]
↓
[ 커널 (Kernel) ]
↓
[ 하드웨어 ]
- 커널: 운영체제의 핵심. 메모리, 파일 시스템, 프로세스, 네트워크, 장치 등을 제어.
- 시스템 콜: 사용자 프로그램이 커널 기능을 요청할 수 있도록 만들어진 함수 집합
- API/라이브러리: 시스템 콜을 좀 더 사용하기 편하게 감싼 인터페이스
- 사용자 프로그램: 개발자가 작성한 애플리케이션으로, 직접 시스템 콜을 호출하기보단 API를 통해 커널과 간접적으로 소통
일단 이 계층으로 운영체제가 이뤄져 있다는걸 이해하고
WSL에 대해서 알아보자
WSL이란 무엇인가?
WSL(Windows Subsystem for Linux) 는
윈도우에서 리눅스 환경을 사용 할 수 있도록 해준다
우분투나 ,데비안같은 리눅스 배포판을 윈도우 안에서 설치하고 실행하게 해주는 기술이다.
가상머신(VM)을 사용하지 않고 가볍게 리눅스 환경을 사용하기 위해 실행하며
리눅스 쉘 gcc,make,git,python등의 도구를 그대로 사용할 수 있다.
WSL1 과 WSL2의 차이점
WSL1은 시스템 콜 번역 방식이다.
리눅스 사용자 프로그램이 시스템 콜을 호출하면,
WSL1이 이 시스템 콜을 윈도우 시스템 콜로 번역해서 처리한다.
이 구조는 가상머신을 사용하지 않고, 윈도우 커널이 직접 리눅스 시스템 콜을 흉내 내는 방식이다.
아래는 WSL1의 동작 구조이다:
[ 리눅스 사용자 프로그램 ]
↓
[ 리눅스 API / 라이브러리 ]
↓
[ 리눅스 시스템 콜 ]
↓
[ WSL1 시스템 콜 번역기 (Windows용 NT Layer) ]
↓
[ Windows 커널 (NT Kernel) ]
↓
[ 하드웨어 ]
즉 여기에서 사용자 api가 리눅스 명령어를 실행하면
WSL 이 시스템콜을 윈도우 시스템 콜로 변환해주는 것이다.
WSL2 는 경량 Hyper-V 기반 VM에 올려서 실행한다
즉 진짜 리눅스 시스템 콜을 사용하며 가상머신(VM)을 사용하는것이다.
실제 사용자 api가 리눅스 시스템콜을하면 진짜 리눅스 커널이 실행되는것이다.
때문에 Docker 같은 리눅스 의존형 도구도 윈도우에서 사용 할 수 있게 된다.
[ 리눅스 사용자 프로그램 (ls, gcc, python 등) ]
↓
[ 리눅스 API / 라이브러리 (glibc 등) ]
↓
[ 리눅스 시스템 콜 (syscall) ]
↓
[ 리눅스 커널 (실제 커널) ]
↓
[ WSL2 VM (경량 Hyper-V 기반 가상 머신) ]
↓
[ Windows OS와 자원 공유 (파일 시스템, 네트워크 등) ]
↓
[ 하드웨어 ]
'웹개발지식' 카테고리의 다른 글
Nginx가 무엇인가. (0) | 2025.04.21 |
---|