본문 바로가기

전체 글293

[Linux] Syscall - System calls, 시스템 호출의 약어 - Linux 에서 User 공간과 Kernel 간 통신을 위한 통로 역할 - Function Call 과 달리 User 공간에서 Linux Kernel 로 요청을 전달하는 특수 어셈블리 명령어. - Syscall 은 파일 작업에서 Process 제어 등 다양. - Syscall이 호출되면 User 모드에서 Kernel 모드로 전환되어, User 프로그램을 대신하여 Kernel 권한이 있는 작업 수행. - 어셈블리 언어 수준에서 Syscall 수행을 하려면 최신 x86 아키텍처에선 Syscall 이란 Trap Instruction 을 수행해야 함. - 같은 프로그램 내에서 함수로 이동하는 Function Call 과 모드 전환을 Trigger 하여 실행 흐.. 2023. 11. 4.
[Linux] IO CTL - Input/Output Control 의 약어 - System Call(시스템 호출) 의 한 종류 - 장치별 입력, 출력 작업, 일반 시스템 호출로 표현 불가능한 기타 작업 수행에 쓰임 - 주로 Driver 와 User Interface 간 통신을 제공하며, 특정 장치에 대한 설정을 구성하거나 변경 시 유용. - 예시로 IO CTL을 통해 printer 의 글꼴 크기 등 구성 옵션을 설정하거나 새 글꼴로 설정. - Window 환경에서는 비슷한 함수로 'DeviceIoControl' 이 있음. https://stackoverflow.com/questions/15807846/ioctl-linux-device-driver#:~:text=The%20ioctl%20function%20is%20useful,f.. 2023. 11. 4.
[Linux] UEFI 란? - Unified Extensible Firmware Interface 의 약어 - 컴퓨터 하드웨어를 부팅하고 운영체제와 상호작용을 위한 인터페이스를 제공하는 플랫폼 아키텍처 사양서 - 컴퓨터의 펌웨어와 OS 간 소프트웨어 인터페이스를 제공하며, 펌웨어와 부팅 시 Application 및 Service 에 대한 운영 환경 제공 - 위 Interface 는 부팅 시퀀스의 시작 부근에서 Load 되며, 마우스 지원, GUI, 32비트 및 64비트 시스템 지원 등 많은 이점을 제공. - BIOS 의 후속 버전인 셈. https://en.wikipedia.org/wiki/UEFI#:~:text=Unified%20Extensible%20Firmware%20Interface%20,interaction%20with%.. 2023. 10. 29.
[Linux] Linux OS 부팅 순서 [부팅 순서] 1) Power-on Self Test (POST) - PC에 전원이 들어오면 BIOS는 우선 시스템의 하드웨어에 문제 확인을 위해 여러 테스트를 이행 2) BIOS/UEFI Initilization - 기본적인 하드웨어를 초기화하고, 부팅 가능한 디바이스(e.g. SSD, USB) 를 검색 3) Bootloader (e.g.GRUB) - BIOS 가 Bootloader 를 찾아 실행. - Bootloader 는 User에게 선택 가능한 여러 운영 체제 목록을 보여주거나, 설정된 기본 OS를 Load 하여 실행. ** Process 의 시작은 GRUB Bootloader 이며, 이후 Kernel Initialization 으로 이어짐. 4) Kernel Initialization - Boo.. 2023. 10. 28.
[Network] WireShark 설치 (1) Terminal 열기 (2) 관련 패키지 설치 $ sudo add-apt-repository ppa:wireshark-dev/stable (3) 패키지 업데이트 $ sudo apt update (4) WireShark 설치 $ sudo apt install wireshark (6) WireShark 실행 $ sudo wireshark * WireShark 설치 OR 실행 중에 'Wireshark xdg_runtime_dir not set' 에러가 발생하면? ==> 터미널에서 아래 명령어 입력 $ sudo dpkg-reconfigure wireshark-common https://www.geeksforgeeks.org/how-to-install-and-use-wireshark-on-ubuntu-li.. 2023. 4. 16.
[Knowledge] Map (맵) 이란 무엇인가? - Web이나 Data 분야에서 일하며 "Mapping(매핑)" 이란 말을 참 많이 듣는다. - 그러나 mapping이 무엇인지 명확하게 설명하는 개발자는 없다. 그저 "연결성"의 개념을 뭉퉁그려 설명&해석할 뿐. - 명확한 개념을 짚어 보자. 1) [네이버 국어사전] - 하나의 값을 다른 값으로, 한 Data 집합(Set)을 다른 Data Set으로 번역. - 2개의 Data Set 사이에 1:1 대응 관계를 설정. - e.g. 컴퓨터 그래픽스에서 3차원 대상을 평면에 혹은 2차원 image를 구체 위에 "map". - e.g. Vertual Memory System에서 Virtual Address를 컴퓨터가 물리(Physical) 주소로 번역. 2) [네이버 국어사전] - 어떤 대상의 구조를 표현하는.. 2023. 4. 9.
[Rust] MySQL 연결 및 Data 적재 (62일차) (1) 아래 글을 참조하여 root 사용자 말고, 새로운 사용자를 만들어 권한을 주자. https://printscanf.tistory.com/entry/Error-MySQL-Access-denied-for-user-useridlocalhost (2) 해당 Rust 파일 디렉토리에 mysql 의존성을 추가 $ cargo add mysql (3) 테이블 생성 및 Data 적재 예시 use mysql::prelude::*; use mysql::*; fn main() -> Result { // Set up a new database connection let url = "mysql://id:pswd@localhost:3306/moto"; let pool = Pool::new(url)?; // Create a .. 2023. 3. 26.
[Rust] fn main() -> Result<(), Box<dyn std::error::Error>> { } 가 무엇인가? (61일차) fn main() -> Result { } >> 보통 fn main() { } 만 쓰는데, 위와 같은 구문이 있었다. Result, error 등은 무엇일까? * -> 는 main() 에 대한 return value 를 의미한다. * Result 형식은 성공을 지칭하는 OK(()) 혹은 Box 2023. 3. 6.