코드 그라데이션

운영체제 구조(User mode와 Kernel mode, JVM) 본문

백엔드 면접

운영체제 구조(User mode와 Kernel mode, JVM)

완벽한 장면 2024. 3. 20. 16:56

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
Comments