Rust에는 GC가 없다GC는 구동될 때 실행 중인 모든 스레드를 잠시 정지시켜 반응성을 좋지 않게 한다대신 소유권과 수명 개념을 통해 컴파일타임에 메모리를 관리한다Rust에는 Exception가 없다러스트는 오류를 두가지로 나눈다복구 가능한 오류복구 불가능한 오류Ru
Rust 자료형 rust에서 기본적으로 제공하는 자료형은 아래와 같다 |자료형|크기|rust 표기| |--|--|--| |8bit 정수|1 byte|i8| |16bit 정수|2 byte|i16| |32bit 정수|4 byte|i32| |64bit 정수|8 byte|i
소유권 소유권은 각 값에 대해 해당 값을 관리하는 고유한 소유자를 배정한다 컴파일러는 컴파일 타임에 소유권을 검증해 메모리 안전성을 보장한다 값은 소유자를 통해 대여할 수 있으며, 이를 빌림이라고 한다 빌림을 통해 한 소유권에 대한 여러 참조자를 만들 수 있다 소유권
rust에서 모듈은 cargo new --lib \[name] 명령어로 만들 수 있다이전과 달리 main함수가 없고 대신 test 코드가 생성된다cfg(test)는 코드가 test 환경에서만 컴파일되도록 한다생성한 adder 라이브러리를 사용하기 위해서 adder를 사
러스트는 위 처럼 std::thread 모듈로 스레드를 생성하고 제어할 수 있다thread의 join함수는 Result<T,E>를 반환하므로, 스레드 내부에서 발생한 panic은 복구 가능한 오류가 된다mpsc::channel 함수로 채널을 만들 수 있다multi
러스트 표준 트레잇 #[derive(TraitName)]을 붙이면, 러스트 컴파일러는 해당 타입에 대해 선택한 트레잇의 구현 코드를 자동으로 생성한다 copy 러스트의 소유권 시스템은 메모리 안전성을 보장하기 위한 핵심 매커니즘이다 Copy는 기본적인 데이터 타입에
러스트는 객체지향 언어가 아니어서, 객체지향의 캡슐화, 다형성, 상속 등을 완벽하게 지원하지는 못한다그러나 trait 같은 형태로 객체지향의 핵심적인 개념을 사용할 수 있다객체 내부의 정보를 숨겨 외부에서 접근할 수 없도록 제어하는 것pub 키워드를 사용해서 캡슐화 할
러스트에서 매크로는 macro_rules! 키워드로 정의한다$ 기호는 매크로 인자를 나타낸다a, b는 각각 표현식을 받아들이는 패턴이다컴파일 타임에 컴파일러는 매크로를 소스코드를 본문에 추가한다위에서 say_hello나 add 매크로는 위와 같은 형태로 정의했다위와 같
시스템 프로그래밍의 핵심은 system call이다응용 프로그램은 주로 system call을 통해 커널에 다양한 서비스를 요청한다system call은 메모리 안전성, 보안 문제 등 다양한 문제를 동반한다러스트는 메모리 안전성을 중점으로 설계된 언어로, 시스템 프로그
리눅스 커널 리눅스 운영체제와 리눅스 커널 리눅스 운영체제는 컴퓨터가 실행할 수 있는 완전한 플랫폼을 제공하는 소프트웨어 리눅스 커널은 운영체제 구성요소 중 하나로 하드웨어 같은 시스템 리소스를 제어 및 관리하고 소프트웨어에 리소스를 분배하는 서비스를 제공하

리눅스 커널은 모놀리식 구조로 다양한 기능이 통합되어있다시스템 콜 인터페이스user space의 프로그램이 kernel space의 기능을 호출할 때 이용되는 API를 제공프로세스 관리프로세스 생성, 관리, 스케줄링, 종료까지 관리각 프로세스에 적절한 CPU 시간 할당
우선 커널 모듈 빌드에 필요한 패키지들을 설치한다위는 간단한 커널 모듈 코드이다위 처럼 Makefile을 작성해서 빌드할 수 있다obj-m은 커널 모듈로 빌드할 오브젝트 파일 목록이다make -C ... M=$(PWD)은 커널 빌드 시스템 (Kbuild)를 호출한다커널
Rust for linux https://github.com/rust-for-linux 현재 리눅스 커널 코드 일부를 러스트로 전환하는 작업이 진행 중이다 그 중, 주로 커널 모듈 구현에 초점을 맞추고 있다 러스트로 작성된 커널 모듈은 기존 C로 개발된 리눅스 커널과