728x90 분류 전체보기115 [OS운영체제] Network Programming_TCP/IP echo server, echo client [OS운영체제] Network Programming_TCP/IP echo server, echo client echo서버는 클라이언트가 보낸 내용을 그대로 전송해 주는 프로그램이다. 그럼 echo 서버와 echo 클라이언트를 작성하여 보자. echo.c 함수 //echo - read and echo text lines until client closes connection /* $begin echo */ #include "csapp.h" void echo(int connfd) { size_t n; char buf[MAXLINE]; rio_t rio; Rio_readinitb(&rio, connfd); while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0) { //li.. 2021. 9. 26. [OS운영체제] Tiny Web Server 정리 및 Thread와 fork() [OS운영체제] Tiny Web Server 정리 및 Thread와 fork() Tiny웹서버 정리 Tiny Web Server socket() 함수를 통해 socket 생성 후 bind()를 통해 주소 연결하고 listen()함수로 수동적인 상태로 만듦. 이 식별자를 가지고 accept()로 client의 connection을 기다림 연결 되면 connfd가 생성되고 이로서 읽고 쓰기 통신이 가능해짐 doit(connfd)를 통해 HTTP transaction 처리 doit HTTP reqeust 요청 라인 읽어서 정보 파악 (GET / HTTP/1.1) 파싱 후 static contents인지 dynamic contents인지 파악 static인 경우 디스크 내용 Mmap()을 통해 가상메모리 매핑 .. 2021. 9. 25. [SW사관학교 정글] 9/16(목) 보이저 엑스_남세동 대표님 강연 보호되어 있는 글 입니다. 2021. 9. 16. [OS운영체제] 명시적 가용 리스트(Explicit Free List) [OS운영체제] 명시적 가용 리스트(Explicit Free List) 명시적 가용 리스트(Emplicit Free List)는 할당된 블록과 가용 블록을 나타내는 헤더(Header)와 풋터(Footer)이외에 Successor와 Predecessor를 나타내는 워드를 각각 할당해줌으로써 할당 리스트들 간의 이중 연결 리스트이다. 가용 블록 끼리만 연결된 리스트 이므로, 할당된 리스트를 거치지 않아 훨씬 빠른 시간 내에 할당 블록을 찾을 수 있는 잠점이 있다. 기존 묵시적 가용 리스트 코드와 유사하다. 가용 리스트를 만들기 위해 이중포인터를 사용하였다. 또한 새로 가용(free)된 블록은 항상 가용리스트의 맨 앞에 붙였다. 이를 나타내는 포인터는 free_listp 이다. 코드 1. 매크로(중요) 하위 .. 2021. 9. 16. [OS운영체제] 묵시적 가용 리스트(Implicit Free List) [OS운영체제] 묵시적 가용 리스트(Implicit Free List) 묵시적 가용 리스트(Implicit Free List)는 할당된 블록과 가용 블록을 헤더(Header)와 풋터(Footer)라는 워드에 저장함으로써 간단히 구분하는 방식이다. 동적 메모리 할당 malloc함수를 malloc lab을 통해 직접 C언어로 구현해 보았다. 함수 구현에는 묵시적 가용 리스트(Implicit Free List), 명시적 할당 리스트(Explicit Free List), 분리 가용 리스트(Segregated Free List)가 있다. 먼저 묵시적 할당 리스트를 이용한 malloc 함수를 구현해 보았다. 코드 1. 매크로 및 기본 코드 1 word를 4byte로 하고, 2 word를 기본 alignment로 한.. 2021. 9. 15. [C언어] 이중포인터를 이용하여 배열을 교환하는 방법 [C언어] 이중포인터를 이용하여 배열을 교환하는 방법 배열 A와 배열 B를 바꾸고 싶은 경우를 생각해보자. 배열을 일일히 바꿔주는 것은 너무나 번거로운 일이다. 쉽게 바꾸기 위해 포인터가 기리키는 값만 바꾸어 주면 되는데, 이 때 함수를 사용하고자 한다면 이중포인터를 사용해야 한다. '함수에서 굳이 왜 이중포인터를 사용해야 될까?'를 고민한 끝에 얻은 결론은 dereference(역참조)를 해야 함수 밖 값의 변화를 줄 수 있기 떄문이다. 자 먼저 더 쉬운 예를 보자. 변수 값 서로 바꾸기 #include void swapNumber(int first, int second) // 반환값 없음, int형 매개변수 두 개 지정 { int temp; // 임시 보관 변수 temp = first; first =.. 2021. 9. 14. 이전 1 ··· 10 11 12 13 14 15 16 ··· 20 다음 728x90