반응형

Linux 58

System - 04. fork 복제 프로세스 생성

/* * http://sosal.tistory.com/ * made by so_Sal */ #include #include pid_t fork(void); fork함수를 사용하면 multi - tasking system을 볼 수 있습니다. 부모프로세스가 fork함수를 호출하면 자식프로세스를 생성합니다. 파일 이름이 fork이고, fork 함수를 실행시키는 파일을 실행해보고, pstree를 통해서 현재 자신의 쉘에 띄워진 프로세스들을 봅시다. fork 라는 파일의 프로세스 아래에 자신과 똑같은 이름의 프로세스가 하나 더 생겼네요. 여기서 마지막 fork 프로세스를 실행시킨 첫번째 fork 프로세스를 부모프로세스, 새로 생긴 마지막 fork라는 프로세스는 자식 프로세스라고 합니다. fork함수로 실행된 각각..

System - 03. exec () 계열. 프로세스 이미지 대체

/* * http://sosal.tistory.com/ * made by so_Sal */ exec 함수라는것은 사실 없고, exec 계열이라고 말한다. exec로 시작되는 여러 함수를 통칭하여 exec 계열이라고 한다. exec 계열의 함수는 프로세스를 대체해버린다. system()함수는 프로세스 실행 도중에 다른 프로그램을 실행시켜 끝날때 까지 기다린후 새로 실행시킨 프로그램의 동작이 끝나게 되면 다시 원래 프로세스로 돌아와 일을 계속 한다. 하지만 exec 계열의 함수는 현재 프로세스를 새로운 프로그램으로 대체해버린다. exec 함수들을 이용하면 현재 프로그램의 실행을 다른 프로세스에게 넘겨줄 수 있다. 새 프로그램이 시작된 후에는 원래의 프로그래밍 더 이상 실행될 필요가 없다는 점에서 system..

Socket - 04. 다중 프로세스 네트워크 프로그래밍

/* * http://sosal.tistory.com/ * made by so_Sal */ 일반적으로 서버 프로그램은 불특정 다수의 클라이언트로부터 서비스 요청을 처리할 수 있는 다중 사용자 서버 (Multi-user server)로 개발됩니다. 다중 사용자 서버는 반복 처리 서버(Iterative Server)와 동시 처리 서버(Concurrent Server)로 개발될 수 있습니다. 반복 처리 서버는 개발하기 쉽고 이해하기 쉽지만, 사용자가 많아질 경우 클라이언트가 서비스를 위해 대기하는 시간이 길어질 수 있기 때문에 현실적으로 사용하기 어렵습니다. 동시 처리 서버는 다수의 클라이언트로부터 서비스 요청을 동시에 처리함으로써 서비스 제공을 보장합니다. 대표적인 모델은 다중프로세스와 다중 스레드 등이 존..

Object file - ELF 파일

/* * http://sosal.tistory.com/ * made by so_Sal */ ELF :: Executable and Linking Format의 약자로, 실행 가능한 바이너리 또는 오브젝트 파일 등의 형식을 규정한것 ELF 파일은 ELF 헤더가 반드시 맨 앞에 위치하고, 프로그램 헤더 테이블과 섹션 헤더 테이블이 그 뒤에 위치합니다. 헤더의 구조는 elf.h를 참조하세요. b ELF에서 사용하는 자료형 elf 바이너리에는 32비트와 64비트, 두가지가 있습니다. 자료형 N = 32 N = 64 설명 ElfN_Half uint16_t uint16_t 부호 없는 16 비트 값 ElfN_Word uint32_t uint32_t 부호 없는 32 비트 값 ElfN_Sword int32_t in..

Linux/Linux_technic 2009.10.23

od - 바이너리 파일 덤프

/* * http://sosal.tistory.com/ * made by so_Sal */ od = octal dump (octal = 8진법)라는 의미로, 바이너리 파일을 8진수로 덤프해서 줄력하는 명령어입니다. od /bin/bash | head -5 head -5 는 출력되는 줄의 윗부분 5줄만 거른다는 뜻입니다. 맨 왼쪽 00000*0은 시작점으로부터의 offset을 8진수를 표시한 것입니다. (offset은 좌측 메모리 시작점을 0으로 하여 숫자를 통해 위치를 알려주는 좌표계 역할을 함) 2바이트씩 8개, 16바이트씩 출력하기 때문에 00,20,40... 으로 늘어나게 됩니다. 출력 형식 지정 (-t 명령어) 형 의미 a 문자의 이름(7비트 ASCII) c ASCII 문자 또는 escape 문..

Linux/Linux_technic 2009.10.23

File - 파일종류 확인

/* * http://sosal.tistory.com/ * made by so_Sal */ file 명령어를 이용하면 임의의 파일이 무엇인지 조사할 수 있습니다. 윈도우에선 파일 확장자를 정해 두고 파일명을 통해 그 종류를 추측하는 방법을 사용합니다. 하지만 리눅스에서는 확장자가 존재하지 않기 때문에, 임의의 파일의 종류를 알기 위해선 이 명령어가 필요하게 됩니다. /usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped -i 옵션을 주면 MIME 미디어 타입 문자열로 표시..

Linux/Linux_technic 2009.10.22

System - 02. system() 자식 프로세스

/* * http://sosal.tistory.com/ * made by so_Sal */ system() 함수에 대해 알아보겠습니다. #include int system(const char * string) system() 함수는 굉장한 편리함을 가져다 주는 함수입니다. 어떻게 보면 게으른 사람들의 전유물이기도 하지요.. shell? :: 사용자가 입력하는 명령어들을 기계어로 번역해주는 명령 해석기 쉘은 사용자가 운영체제와 대화할 수 있는 중간 역할자. 인터페이스가 됩니다. 쉘에서 사용자가 한 말을 받아 운영체제에 전해주고, 운영체제는 그 답을 쉘을 통해서 사용자에게 보여주게 되는것입니다. 쉘 역시 하나의 프로그램입니다. (bash, sh, csh 등 다양한 종류의 쉘이 있는데.. 리눅스 콘솔창에서 우..

System - 01. Process 개념

/* * http://sosal.tistory.com/ * made by so_Sal */ 프로세스 :: 컴퓨터 내에서 실행중인 프로그램을 일컫는 용어. 프로세스란건 아주 간단합니다. Ctrl + Alt + delete로 작업관리자를 켜봅시다. 프로세스 텝을 가보시면 프로세스들의 목록을 쭉~ 보실 수 있습니다. putty를 4개나 켜놨더니 프로세스에 4개가 올라와있네요. 항상 켜져있는 메신저 na**까지 보입니다. 프로세스, 쉽게 와닿나요? 리눅스는 위 그림의 윈도우와 같은 다중 태스킹 운영체제입니다. 한 시점에서 여러 개의 프로그램들이 실행되는데, 각 실행중인 프로그램은 하나의 프로세스가 되고, 물론 하나의 프로그램이 여러개의 프로세스가 될 수 있습니다. 따라서 여러 사용자들이 하나의 프로그램을 실행시..

Socket - 03. Client socket

/* * http://sosal.tistory.com/ * made by so_Sal */ #include int socket( int __domain, int __type, int __protocol); int connect(int socket, const struct sockaddr *address, size_t address_len); :: socket :: Socket - 01. Socket(), sockaddr 글을 참조하세요. :: connect :: Socket - 02. Socket - Server socket 글을 참조하세요. 기본적인 서버 - 클라이언트 소켓 구조에서 클라이언트측 소스는 무척이나 간단합니다. 정보를 주고 받을 수 있는 환경을 구축해야 하는 서버에 비하여 클라이언트는 전화..

반응형