- Today
- Total
목록Linux (8)
Byeo
이전 포스트 (bind system call 1: __sys_bind)https://byeo.tistory.com/entry/bind-system-call-1 bind system call 1 (__sys_bind)BSD socket API에서 socket을 생성한 뒤에는 server-side 측에서 bind를 실행합니다. bind는 나의 ip:port를 socket과 연결하는 역할을 수행하죠. 이 번에는 BSD socket API중에서 bind를 분석해보려고 합니다. 이전byeo.tistory.com 현재까지의 흐름도3. inet_bind__sys_bind에서 그 다음으로 호출하는 함수는 sock->ops->bind였습니다.// net/socket.c/__sys_bind() :1693 err =..
BSD socket API에서 socket을 생성한 뒤에는 server-side 측에서 bind를 실행합니다. bind는 나의 ip:port를 socket과 연결하는 역할을 수행하죠. 이 번에는 BSD socket API중에서 bind를 분석해보려고 합니다. 이전 포스트 (socket system call)https://byeo.tistory.com/entry/socket-system-call socket system call 1 (syscall_socket ~ __sock_create)int socket(int domain, int type, int protocol); socket 시스템 콜의 동작을 한 번 들여다봅니다! https://man7.org/linux/man-pages/man2/socket...
이전 포스트: https://byeo.tistory.com/entry/socket-system-call-3 socket system call 3 (tcp_v4_init_sock)이전 포스트: https://byeo.tistory.com/entry/socket-system-call-2 socket system call 2 이전 포스트: https://byeo.tistory.com/entry/socket-system-call socket system call 1 int socket(int domain, int type, int protocol); socket 시스템 콜의 동byeo.tistory.com 7. sock_map_fd마지막으로 sock_map_fd 함수를 거칩니다. 이 함수는 기존에 tcp_ip..
QEMU를 통해 생성한 VM이 외부와 통신이 가능하도록 설정해 봅니다. 1. QEMU script 작성 qemu를 실행하는 스크립트를 다음과 같이 작성합니다. #!/bin/bash qemu-system-x86_64 \ -m 2G \ -smp cores=4 \ -kernel ./arch/x86/boot/bzImage \ -drive file=image/ubuntu-from-debootstrap.img,format=raw \ -append "root=/dev/sda rw console=ttyS0" \ -netdev tap,id=byeonet0,ifname=byeotap0 \ -device e1000,netdev=byeonet0,mac=fa:16:3e:00:11:22 \ -enable-kvm \ -nograp..
개요 리눅스 코드를 살펴보고 구현해보는 과정을 간단히 체험해보기 위해서 가장 쉬운 시스템 콜 추가하기를 해봅니다. 해당 과정을 위해 [블로그]와 [커널 문서]를 참고하였습니다. 커널 문서에서는 시스템 콜 구현 디자인 가이드라인을 제공하고 있습니다. 내용 1. syscall_64.tbl linux-5.15/arch/x86/entry/syscalls/syscall_64.tbl 파일에는 x86 아키텍쳐에서 사용할 수 있는 시스템콜이 나열되어 있습니다. 형태는 다음과 같습니다. # The format is: # 가장 마지막에 있는 448 다음에 우리가 추가할 시스템 콜 이름과 실제 커널 내에서 호출할 함수 명을 나열해줍시다. 449commonbyeo_hellosys_byeo_hello 2. sys_byeo_he..
Linux server의 시스템 상태를 확인하기 위해서 많은 사람들이 많이 쓰는 응용은 아마도 top 일 거예요. 그런데 top은 CPU / Memory 사용량을 전체 시스템 뿐만 아니라 개별 process 마다 보여주는데 반해, I/O와 관련된 정보는 찾기가 쉽지 않습니다. 윈도우는 ctrl+alt+delete로 한 눈에 쉽게 보여주는데 말이죠. 그래서 이 포스트에서는 네트워크 트래픽 관측 툴들 몇 가지를 직접 사용해보고 정리해보려고 합니다. 구글에서 찾아보면 정말 많은 툴들이 존재합니다만, 각각을 깊이 다뤄본다기 보다는 간단하게 만져보고 장단점을 정리해보려고 합니다. 각 툴들의 캡처 화면과 내용을 살펴보시면서 마음에 드는 툴을 고르는데 도움이 되었으면 좋겠습니다~. 1개의 도구를 제외하고는 CLI 기..
4. Vimrc-3 (Folding) 이번 포스트에서는 코딩의 능률을 올릴 수 있는 folding에 대해서 정리해보도록 하겠습니다. 목차 Folding (폴딩) 이란? Folding Enable Folding Method Folding 단축키 Folding Configuration 이 글은 [vim tips: folding fun] 문서를 참고하여 제작하였습니다. Folding (폴딩) 이란? 폴딩이란, 아래 사진과 같이 특정 코드 영역을 숨기는 기능을 의미합니다. 만약 prime()함수가 기존에 다음과 같이 있었다고 가정해보죠. 개발 과정에서 이 prime함수를 더 이상 수정할 일이 없다면 숨겨도 괜찮을 것입니다. 이 때 폴딩을 하면 다음과 같이 코드 일부를 숨길 수 있습니다. 코드가 짧으면 모두 펼쳐..
1. Vim 기초 Vim은 Vi IMproved의 약자로, 익히기 어려운 기존의 vi를 개선하기 위해 Bram Moolenaar가 개발한 text editor입니다. Vim은 마우스를 일절 사용하지 않고도 text를 편집할 수 있도록 다양한 모드와 단축키가 내장되어 있습니다. 기존의 text 편집 툴, window-based 개발환경에 익숙해져 있다면 vim의 필요성을 느끼지 못할 수 있습니다. 그러나 마우스를 사용할 수 없는 CLI (Command Line Interface) 환경에서는 가볍고 최고의 editor로 여겨지고 있어서 한 번 다뤄보고자 합니다. 해당 글은 [포스트]를 따라 연습하며 정리한 글입니다. Vim Installation Vim은 다음과 같은 명령어로 설치할 수 있습니다. sudo ..