목록Computer Science/Unix (12)
엔지니어가 되고 싶은 공돌이

12. 1. Server UDP Socket#include #include #include #include #include#include #include #include #include#define PORTNUM 1234int main(void){ char buf[256]; struct sockaddr_in sin, cli; int sd, ns, clientlen = sizeof(cli); if((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ perror("socket"); exit(1); } memset((char *)&sin, '\0', sizeof(sin)); sin.sin_family = AF..

11. 1. Server TCP Socket#include #include #include #include #include#include #include #include #include#define PORTNUM 1234int main(void){ char buf[256]; struct sockaddr_in sin, cli; int sd, ns, clientlen = sizeof(cli); if((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ perror("socket"); exit(1); } memset((char *)&sin, '\0', sizeof(sin)); sin.sin_family = AF..

10. 1. TCP/IP - TCP/IP: 인터넷 표준 프로토콜로 5계층으로 구성됩니다. - Application – Transport(TCP/UDP) – Network(IP) – Data Link – Physical. TCPUDP연결지향형비연결형신뢰성 보장신뢰성 보장하지 않음순서 보장순서 보장하지 않음 - IP: 인터넷을 이용할 때 사용하는 주소. - Host Name: IP주소를 대신해서 사용하는 시스템에 부여된 이름. - DNS: Host Name과 IP를 관리하는 서비스. - Port: Host에서 동작하고 있는 서비스를 구분하는 번호. 2Byte 정수로 0 ~ 65535까지 사용가능. 10. 2. Socket - Types of Socket 1) AF_UNIX: 유닉스 도메인 소켓(시..

9. 1. Definition of Threads - Thread: 한 개의 Process내에서 동작하는 여러 실행들. - Pros. 1) Thread는 Process를 새로 생성하지 않기에 Process를 새로 생성하는데 드는 비용을 절약할 수 있습니다. 2) IPC(Inter Process Communication)를 사용하지 않아도 되므로, 데이터 교환이 상대적으로 쉽습니다. - File, Heap, Static, Code를 공유하고 Stack, Register는 개별적으로 갖습니다. 3) CPU를 보다 효율적으로 활용할 수 있습니다. - Cons. 1) 프로그래밍 난이도가 상승합니다. 2) 디버깅이 어렵습니다. - POSIX 표준을 따르는 pthread를 주로 사용하며, 윈도우를..

8. 1. Fork and Exec - Program Execution: system(const char *string); 실행할 프로그램을 string에 넣습니다. - fork(): Process를 생성하는 함수. - fork함수를 호출한 Process를 Parent Process, fork에 의해 새로 생성된 Process를 Child Process. 1) 부모 프로세스가 fork 함수 모듈을 호출합니다. 2) fork함수 모듈이 새로운 프로세스를 생성합니다. 3) Child Process는 Parent Process의 Memory를 복사합니다. 4) Parent Process는 Child Process의 PID를 받고, Child Process는 0을 Return 받습니다. 5..

7. 1. Definition of Process - Process: Main Memory에 존재하면서 실행 중인 Program. - Program: Secondary Memory에 저장된 명령어와 코드들의 집합. - Processor: CPU. - Virtual Memory 1) Stack: Local Variable 을 저장하는 영역. 2) Heap: 동적 메모리 할당을 위한 영역. 3) Data: Global Variable 을 저장하는 영역. 4) Text: 프로그램 실행코드를 저장하는 영역. - Search PID: getpid() - Search PPID: getppid() - getpid()는 함수를 호출한 프로세스의 pid를, getppid()는 함수를 호출한 프로세스..

6. 1. File System - Unix에서 File은 크게 3종류가 있습니다. 1) General File: Text File, Executive File 처럼 우리가 일반적으로 알고있는 파일. 2) Directory: 리눅스에서는 Directory도 파일로 처리합니다. 3) Special File: Hardward. - ls -l 명령을 사용해서 파일의 종류를 확인할 수 있습니다. General File은 -로 시작, Directory는 d로 시작, Special File은 b or c 로 시작합니다. - Composition of Files 1) File Name: 사용자가 접근할 때 사용, 최대 255자까지 가능, 대소문자 구분함. 2) inode: 번호로 표시, 파일..

5. 1. High-Level File I/O - File Pointer: File을 가리키는 포인터. (FILE*) 1) FILE *fopen(const char *filename, const char *mode); filename으로 지정한 파일을 해당 mode로 열고 File Pointer를 리턴합니다. 모드에는 r, w, a 처럼 읽기, 쓰기 등을 제어할 수 있습니다. 2) int fclose(FILE *stream); 3) Character Input Function: fgetc(), getc(), getchar(), getw() 4) Character Output Function: fputc(), putc(), putchar(), putw() 5) String Input Func..

4. 1. Low-Level File I/O - 파일기술자(File Descriptor): 현재 열려있는 파일을 구분하기 위한 정수값. - 0은 Standard Input, 1은 Standard Output, 2는 Standard Error를 나타내며, 3부터 파일을 순서대로 할당합니다. 1) int open(const char *path, int oflag, mode_t mode); path에 filename을 입력하고, oflag로 파일의 읽기쓰기의 허용과 같은 플래그 값을 지정하며, mode로 소유자, 그룹, 기타 사용자에 대한 읽기/쓰기/실행 권한을 할당합니다. 2) int close(int fildes); Process에서 열 수 있는 파일의 개수는 제한되어 있기..

3. 1. GCC Option 1) -o : 출력 파일명을 정하는 옵션. ex) gcc -o p c1.c : c1.c 라는 파일을 p라는 실행파일로 만듭니다. 2) -c : 컴파일 작업만 하고 싶은 경우 사용하는 옵션. ex) gcc -c c1.c : c1.c 라는 c1.o 라는 object file로 만듭니다. 3) -g : 컴파일된 파일에 디버깅 코드를 추가하는 옵션. ex) gcc -g -o c1 c1.c 4) -0 : 코드를 최적화 하는 옵션. 기본값은 일반적으로 -01이며, -00이면 최적화 X, -02이면 가장 많이 최적화를 수행합니다. 5) -l : 어떤 라이브러리를 사용하는지 지정하는 옵션. -L : 그 라이브러리가 어느 디렉토리에 있는지 알려줌. 3. 2. ..