코드 그라데이션
운영체제 구조(User mode와 Kernel mode, JVM) 본문
OS, User mode 와 Kernel mode
- H/W = CPU(연산 주체) + RAM(메모리 올라가는 곳) + SSD(2차 메모리)
- Kernel : 운영체의 핵심 알맹이 / 각종 운영체제로서의 제어체계가 작동되는 코드
- 그 위에 Process => A, B, C ...이렇게 멀티테스킹 환경이 만들어진다.
- 멀티가 들어가면-> '제어' 가 필요.
- 플랫폼 = 운영체제 + 하드웨어
- 플랫폼에 (아주) 의존적인 코드 => 네이티브 코드(OS나 CPU에)
- RAM과 SSD를 한 데 묶어서 운영체제 수준에서는 Vertual Memory 형태로 관리하게 한다.
비동기 입출력
- 비동기 입출력을 하게 되는 가장 큰 이유가 처리 주체에다가 뭔가를 넘겨서 맡겨가지고, 어플리케이션에서 block되는걸 막기 위함.
- 그래서 비동기 입출력과 멀티 스레딩은 따로 떼어서 생각하자.
- 프로세스 : 입출력을 수행하는 주체
- 워드 등 프로그램을 하나 실행시키면 프로세스가 생성된다.
- 프로그램들이 커널과 입출력하면서 이 커널에 정보를 넘기고 그래서 작동이 일어나게 된다.
- 그 때 커널에 추상화된 인터페이스가 제공이 되는데 이게 파일의 형태이다.
- 이 파일이 네트워크 프로토콜을 추상화한 파일이며 그 땐 파일을 Socket이라고 한다.
- 파일에 뭘 쓸 때는 write -> send라고 하고
- 이 소켓 파일에서 데이터를 읽어왔으면 receive
- 비동기 입출력 : 작업을 시켜놓고, 나는 다른 일 하러 떠난다.
Machine과 VM
- 그럼 자바에서도 Non-Blocking I/O 개념이 있는가? 당연하다.
- 동기모드로 처리하면 I/O가 Complete될 때까지 wait이 걸린다.
- 비동기로 간다는 것은 입출력의 주체(자바에서는 JVM)에게 넘겨주고 아니면 그 위의 라이브러리 수준에서 처리해주고
- 프로세스 자체가 Block이 되지 않고 다음으로 넘어가서 비동기적 처리가 된다.
728x90
'백엔드 면접' 카테고리의 다른 글
HTTP 버전별 차이 (0) | 2024.03.22 |
---|---|
브라우저에 URL을 입력하면 일어나는 일 (0) | 2024.03.21 |
웹 서비스 구조 - 확장 세 번째 (0) | 2024.03.19 |
웹 서비스 구조 - 확장 두 번째 (0) | 2024.03.19 |
웹 서비스 구조 - 확장 최초 (1) | 2024.03.18 |
Comments