본문 바로가기

분류 전체보기113

WIL(7주차) Proxy 구현 이번주는 좀 힘겹게 지나간거 같다. 몸도 아파서 정글에 왔을때중 가장 힘들지 않았나 싶다. Pintos 주에 이렇게 안아픈게 다행이라고도 생각한다 ㅋㅋㅋㅋ 먼저 이번주는 C언어로 간단한 서버를 만들어보는여서 네트워크에 대한 것들을 공부하고 기초 코드들을 가지고 Proxy를 구현해보았다. 기초적인 코드인 tiny서버의 코드는 CSAPP책에서 제공하기 때문에 그것을 가공하면된다. 이번주의 최고의 해결 간단하게만 보자면 아래는 아래 doit 함수는 main 함수 내에서 무한루프를 돌면서 실행되는 함수이다. * doit - HTTP request/response를 다룬다. */ /* $begin doit */ void doit(int fd) { int is_static; struct stat sbuf; char.. 2023. 5. 25.
TIL(27일차) 네트워크 클라이언트- 서버 프로그래밍 모델 모든 네트워크 응용 프로그램은 클라이언트-서버 모델에 기초하고 있다. application은 한 개의 서버 프로세스와 한 개 이상의 클라이언트 프로세스로 구성된다. 일부 리소스를 관리하고 ,이 리소스를 조작해서 클라이언트를 위한 일부 서비스를 제공한다. ex) FTP 서버는 클라이언트를 위해 저장하고 읽어오는 디스크 파일들을 관리한다. 보통 4개의 과정으로 나눠지는데 1. 클라이언트가 서비스 요청한다. 2. 서버는 요청을 받고 해석하고 자신의 자원들을 적잘한 방법으로 조작한다. 3. 서버는 응답을 클라이언트에 보내고, 그 후에 다음 요청을 기다린다. 4. 클라이언트는 응답을 받고 이것을 처리한다. 네트워크 클라이언트와 서버는 종종 별도의 호스트에서 돌아가고, 네트워크의 .. 2023. 5. 23.
(TIL26일차) 동시성 프로그래밍 2일간 이론 진도를 따로 적어둔것이다...... 내일 여기 내용으로 발표해야되는데 진짜 언제 다외우지....ㅋㅋ 병렬성 프로그래밍 논리 제어흐름이 시간적으로 중첩되면 동시적이라고 표현한다. 동시성은 주로 운영체제 커널이 다수의 응용 프로그램을 돌리기 위해 사용하는 메커니즘으로만 취급했지만 동시성은 커널에만 국한된게 아니다. application에서도 쓰인다. app 수준에서도 쓰이는데 느린 I/O 디바이스 접근하기 사람들과 상호작용하기 작업 지연시켜서 시간지연 줄이기 다수의 네트워크 클라이언트 처리 멀티코어 머신에서 병렬로 계산하기 : CPU포함해서 멀티코어 프로세서를 가지고 있는데 프로세스 간 통신 : 명시적 프로세스 간 통신 I/O 다중화 : I/O 프로그램이 한개의 프로세스이므로 모든 흐름들은 동일.. 2023. 5. 20.
WIL(6주차) Malloc-lab 구현 이번주 회고 이번주는 생각보다 시간이 너무 부족했다. 직접 머리 박으면서 하는 것도 힘들고, 메모리 오류를 밥먹듯이 봤던것 같다. 그래도 팀원들 많이 도와주고 도움도 많이 받으면서 같이 해결해나가는게 즐거웠다. 특히 Explicit 구현하는데 시간을 너무 많이 써서 마지막 버디 시스템 도입 못해본게 너무 아쉽다. 직접 글과 자료 보면서 악으로 깡으로 짜는게 쉽지 않았던 것 같다. 다음부터는 그냥 구글링도 좀 하고 이론적인 내용을 좀 더 봐야할 것같다. Malloc-lab 우리는 현재 C언어에서 메모리를 할당 받는 함수로 malloc을 사용한다. 그 내부는 어떻게 돌아갈까? 라는 의문을 가지고 이 과제를 보면 매우 흥미로울 것 같다. 먼저 우리는 malloc을 이용한다고 하면 메모리 영역에서 heap 영역.. 2023. 5. 20.