본문 바로가기

정글37

Pintos(1일차 후기) 쓰레드 Pintos 1일차 핀토스에 드디어 입성했다. 핀토스를 간단하게 표현하면 이미 돌아가고 있는 작은 운영체제를 수정하면서 기능을 하나씩 추가해가는 것이다. 난이도는 어렵다고만 들었지 실제로 만나니까 코드의 바다에서 표류된것 같은 느낌이 든다. 자료는 블로깅 할 수는 없지만 처음보니까 어질어질하다.... 첫날의 계획은 구동되고 있는 Thread ready list를 효율적으로 바꾸는 것이다. 먼저 실행되고 있는 running_list에서 멈춘 쓰레드를 저장해 놓는 sleep_list를 만들어 인터럽트로 실행을 멈췄을때 sleep_list에 넣고 시간 축이 맞아질때 running_list로 보내는것이다. 우리팀이 마주한 문제 1. 글로벌 틱의 값을 주소의 값으로 받아오려고 했는데 우리가 갱신을 하면 시간축이 .. 2023. 5. 28.
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.