23P by kuroneko 2023-08-31 | favorite | 댓글 11개
  • Rust를 이용해 Non-Unix OS를 만들어 보는 시도.
  • 지금은 그래픽 출력과 동적 할당, 동시 실행, 키보드/마우스를 지원하는 상태.
  • 특이한 점은 모든 앱이 단일 함수로 동작할 수 있게 설계한 것.
    • OS 기능이 포함된 Context를 전달받아 앱이 실행되기 때문에 모든 상호작용이 Context를 통해 일어남.
    • 이로 인해 샌드박싱, 디버깅 등이 아주 쉽고 메모리 유지 또한 Context를 통해 하기 때문에 재시작, 절전이 쉬움.
  • 아직 앱에 대한 설계가 완전하지 않아 모든 앱이 서로의 메모리를 볼 수 있는 등 문제가 남아 있음.
  • 영구 저장소, GPU, 네트워크 지원 등은 아직 구현해야 할 사항임.

컨셉은 섹시하네요. 온 세상이 러스트다.. ㅋㅋㅋㅋ

"앱이 서로의 메모리를 볼 수 있는"... :)

예 너무 웃기네요

VirGL - QEMU VM내에서 사용 가능한 Virtual 3D GPU

VirGL을 지원해서 QEMU에서 설치해서 테스트 가능합니다.

Rust OS에서 Rust 프로그램을 실행하는 미래...? 온 세상이 Rust네요.

댓글에 HN 스레드 있으면 neo가 자동으로 요약해주면 좋겠네요 ㅋㅋ neo 없이 못 살아

다음부터는 AI 요약도 같이 가져와보겠습니다. 특이하게 사람이 한 주장별로? 요약을 해주는 것 같네요.

  • danhau: 다른 사람들이 주장하는 대로 협력 스케줄링이 실패하기로 예상되는지 의문을 제기하며, 이미 앱들이 협력하고 있다는 점에 대해 걱정합니다. 거부 서비스 공격이 이러한 시스템을 쉽게 중단시킬 수 있다는 것을 우려합니다.
  • aseipp: danhau와 동의하여 협력 스케줄링이 간단한 오류를 시스템에 치명적으로 만들 수 있어서 임의의 프로그램 실행에 문제가 될 수 있다고 말합니다.
  • gnulinux: 모든 것이 아니라는 것을 제안하며, 협력 앱을 허용하면서도 무한 루프로 인해 시스템이 중단되는 것을 방지하는 방법이 있을 수 있다고 말합니다. 예를 들어 타임아웃이나 루프 감지 등이 있을 수 있다고 합니다.
  • DSMan195276: 협력 프로그램은 선점되지 않을 것이라고 가정하기 때문에, 실제로는 모든 것이 아니라고 주장합니다. 심지어 선점의 수준이 낮아져도 프로그램을 작성하는 방식이 변경되어야 한다고 말합니다.
  • getpokedagain: 모든 운영 체제가 예측할 수 없는 다중 사용자 앱을 실행할 필요는 없으며, 임베디드 장치나 게임 콘솔과 같은 제한된 시스템에서는 협력 모델이 작동할 수 있다고 말합니다.
  • Symmetry: 현대 CPU는 여러 스레드를 가지고 있으므로, OS가 일부 스레드의 과도한 사용을 확인하면서 돌아올 수 있다면 Fomos의 모델은 완전히 중단되지 않고 작동할 수 있다고 말합니다.
  • cmrdporcupine: 특수한 사용 사례는 직접 작업을 빈 코어에 할당하는 모델을 사용할 수 있는 이점이 있지만, 동시성 처리의 복잡성은 타임슬라이싱을 구현하는 것보다 크게 단순화되지 않을 수 있다는 점을 언급합니다.
  • JoeAltmaier: 하나의 스레드에서 while(true) 루프가 다른 스레드에 영향을 미치지 않을 수도 있지만, 배터리/온도 상승은 여전히 관리가 필요한 리소스 문제임을 보여줍니다.
  • keyle: 이 프로젝트와 미니멀리스트적인 접근에 열광하며, DOOM을 실행하는 전통적인 요구 사항을 충족하는 파일 시스템과 같은 더 많은 개발을 기대합니다.
  • mepian: Smalltalk 메소드는 독립적인 함수가 아닌 객체 간에 호출된다는 것을 명확히하며, 일부 초기 Lisp OS도 객체 시스템 이전에 함수를 사용했다고 설명합니다.

다행히?도 같은 글을 Neo가 처리했네요 ㅎㅎㅎ

Fomos: 러스트로 구축된 실험용 운영체제

문제는 저도 저 링크를 보고 같이 요약하고 있었다는거 ㅠ

무려 3가지의 요약버전을 보시면서 비교하시면 되겠습니다 ㅎ

  • Non-Unix OS 를 만들어보고 싶었음
  • Exo-Kernel은 흥미롭지만 대부분 이론에 불과해서, 이 패턴을 이해하는데 도움이 됨
  • 기능들
    • 그래픽 출력, 동적 할당, 모든 앱이 비동기 루프에서 실행
    • Virtio 마우스/키보드(드라이버들도 비동기 태스크)
    • 협업 스케줄링(앱들이 최대한 제어를 넘김)
    • 부팅후에는 컨텍스트 스위치 없음
    • Virgl™ 을 거의 지원
  • 독특한 점
    • 앱의 시그니처 pub extern "C" fn _start(ctx: &mut Context) -> i32
    • 앱들은 표준 라이브러리가 필요 없고, 모든 OS 기능들은 Context 를 통해 앱에 전달
    • Fomos에서 앱은 그냥 한개의 function 임. 이게 가장 큰 부분. Unix/Windows OS의 실행파일은 함수에 비해서 매우 복잡함.

"형편없다" 가 종종 "실험적인" 이란 단어로 미화되곤 한다.

thumbs down 이 없는데 어떻게 카르마가 마이너스가 되신건가요