목록분류 전체보기 (211)
And Brain said,
ABI (Application Binary Interface)는 컴퓨터 소프트웨어 컴포넌트가 다른 컴포넌트와 상호 작용하는 박싱을 규정하는 인터페이스로, ABI는 소프트웨어의 실행 파일인 이진 파일과 운영체제 또는 하드웨어 간의 상호 작용을 조정하는 규칙들의 집합입니다. ABI는 프로그래밍 언어, 컴파일러, 라이브러리, 운영체제, 프로세서 아키텍처 등과 관련이 있는데, ABI를 통해 서로 다른 소프트웨어 구성 요소가 상호 작용하고 통신할 수 있습니다. 예를 들어, 함수 호출 규약, 매개변수 전달 방식, 레지스터 및 스택 사용방법, 데이터 구조 정렬 등 다양한 측면을 다룹니다. ABI는 이식성과 상호 운용성을 보장하는데 중요한 역할을 합니다. 각 운영체제나 하드웨어 플랫폼은 고유한 ABI를 갖고 있으며, ..
OS with Rust 1. 운영체제를 넘어서(Beyond OS) 2. 운영체제로 거듭나다(Reborn OS) 이번 시간에는 x86 아키텍처에서 최소한의 기능으로 동작하는 64비트 Rust 커널을 만들어 볼 것입니다. 지난 시간에 우리는 Rust로 Free Standing 실행 파일을 만들었습니다. 이번에는 이 바이너리를 실제로 부팅 가능한 디스크 이미지로 만들고, 화면에 문자열 출력까지 해봅시다. 어엿한 운영체제 본격적으로 우리의 새로운 무대를 구성해봅시다. 지난 시간의 Free Standing 실행 파일을 어엿한 운영체제라고 부를 수 있는 디스크 이미로 만들어 나갈 것입니다. 먼저, rustup override set nightly 명령어를 통해 현재 디렉토리에서 항상 nightly 버전의 Rust를..
OS with Rust 1. 운영체제를 넘어서(Beyond OS) 2. 운영체제로 거듭나다(Reborn OS) 들어가기에 앞서, 무대 뒤의 복잡한 기계장치 없이 대형 공연을 진행하려 한다면 어떻게 될까요? 공연에 필요한 모든 요소, 무대 설정, 소품, 조명, 사운드 등을 직접 만들어내야 합니다. 운영체제 커널을 만드는 것은 이와 비슷하겠지요. 우리는 기존 운영체제에 종속되지 않는, 운영체제를 넘어서, 저희만의 운영체제를 만들 것입니다. 이제부터 여러분들은 저와 함께 운영체제의 많은 기능들, 스레드, 파일, 힙 메모리, 네트워크, 난수, 표준 출력 등에 의존하지 않고 모든 것을 직접 구성하게 될 것입니다. 재밌을 것 같지 않나요? 설레지 않나요? 두려워마세요! 우리에게는 Rust라는 아주 든든한 친구가 있..
오늘은 Rust를 이용해 작고 귀여운 컴파일러를 하나 만들어 볼 것입니다. 컴파일러는 일반적으로 어떤 프로그래밍 언어로 작성된 소스 코드를 다른 프로그래밍 언어로 변환하는 프로그램을 말합니다. 가장 흔한 경우는 고급 언어로 작성된 소스 코드를 저급 언어(보통 기계어)로 변환하는 것입니다. 컴파일러는 일반적으로 다음과 같은 단계를 거치는데, 1. 어휘 분석(Lexical Analysis): 이 단계에서는 소스 코드가 토큰으로 분리됩니다. 토큰은 소스 코드에서 가장 작은 의미 단위로, 예를 들어 키워드, 식별자, 리터럴, 연산자 등이 될 수 있습니다. 2. 구문 분석(Syntax Analysis): 이 단계에서는 토큰들이 어떤 순서와 구조로 이루어져 있는지를 분석하여, 추상 구문 트리(Abstract Syn..
Rust 1. 소개 2. Rust 개발 환경 구축하기 3. 일반적인 프로그래밍 문법 4. Rust의 메모리 관리 5. 구조체, 열거형, 패턴 매칭 6 크레이트, 패키지, 모듈 7. 컬렉션, 그리고 제네릭 8. 트레잇 9. 라이프타임과 빌림 검사기 10. 클로저와 반복자 11. 에러 핸들링 12. 테스트와 문서화 13. I/O, 파일 처리 14. 스마트 포인터 15. 겁을 상실한 동시성 (fearless concurrency) 16. 위험한 Rust (unsafe rust) 17. Final Project: Multi-Thread Web Crawler 18. 끝으로 이제 실전입니다. 끝이 보이니 흥분되지 않으신가요? 축배를 들기 전에 우리의 수행을 마무리 지어봅시다. Rust를 이용해 고성능 멀티스레드 웹..