본문 바로가기
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.
[Operating System 운영체제] Memory Management [Operating System 운영체제] Memory Management 메모리 관리(Main memory) 메모리 계층구조 Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위 - 1~4KB Word : 주기억장치와 레지스터 사이의 데이터 전송 단위 - 16~64bits (CPU 64비트가 이것의 의미와 거의 동일) Address Binding - 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업 - Binding 시점에 따른 구분 Compile time binding - 메모리에 적재될 위치를 컴파일러가 앎 Load time binding - 메모리에 적재될 위치를 컴파일러가 모름 Run time binding - 수행할 때 address binding. 대부분의 OS가 사.. 2021. 9. 12.
[SW사관학교 정글] WEEK05 주말의 단상 [SW사관학교 정글] WEEK05 주말의 단상 주말이 되어따.. 주말은 일단 행복하다. 평일도 행복하지만 고통-행복-고통-행복의 무한 반복이라면, 주말은 defualt가 일단 행복이다. 똑같이 공부하고 똑같이 강의실에 앉아 있음에도 마음이 여유로워 지는건 신기하면서도 기분 좋은 일이다. 어제도 4시에 잠들어서 아침 늦게 일어났음에도 불구하고 머리가 아픈 관계로 중간 감상문을 적어볼까 한다. 아마 단상이자 잡상이 되지 않을까 싶다. 4주간의 알고리즘 공부가 끝나고 C언어와 OS 공부주차에 들어갔다. 이번주 공부했던 것은 공부하는 내내 레드-벨벳 케이크가 생각나는 레드-블랙 트리여따. 투썸에 먹으러 가야게따.. 5주차 - 레드-블랙 트리 가아아아아아장 복잡한 구조를 자랑하는 자료구조를 배우면 앞으로 어떤 자.. 2021. 9. 12.
[프로그래밍] bit, byte 2진수, 16진수 관계 정리 [프로그래밍] bit, byte 2진수, 16진수 관계 정리 bit, byte의 관게 및 2진수, 16진수로의 변환이 익숙해지는 것은 컴퓨터 시스템 이해의 기본이다. 그 기본이 없어... 정리를 해봐야겠다 ㅋㅋ 2진수와 16진수 16진수 한 자리는 16가지 수의 표현이 가능하다. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) 그러므로 2진수 한자리는 2개, 16진수 한자리는 16개를 표현할 수 있으므로 "16진수 1자리 = 2진수 4자리" 를 기억하는 것이 포인트! 그러므로 16진수 한자리는 4 bit에 해당된다. bit 와 byte 그리고 2진수와 16진수 bit는 기본적으로 2진수 한 자리를 표현하며 0과 1 두가지로 표현된다. (이것은 switch의 on /.. 2021. 9. 11.
728x90