분류 전체보기 82

프로그라피 6기 활동을 마치며

프로그라피 6기 친구의 권유로 '세상에 필요한 IT 서비스를 만드는 단체'인 프로그라피에 지원하여 지난 상반기동안 활동을 하였고, 지난 주말 이번 기수의 활동을 일단락지었다. 프로그라피는 주로 대학생, 2-30대 직장인들로 구성되어 있다. 정말 훌륭한 분들도 많이 계시고, 배울 점이 많은 어린 친구들도 많았다. 본인이 개발 지식을 흡수하는 속도만 빠르다면 정말 많은 것들을 배울 수 있는 곳이라고 생각한다. 아쉬운 점 : 빠듯한 개발 일정 기획, 디자인, 개발을 모두 하기에 개발 일정은 매우 빠듯하다. 기획을 한 달동안 하면 꽤나 커다란 프로젝트가 나오는데, 문제는 3개월 안에 클로즈 베타, 오픈 베타로 내놓을 수 있는 어플리케이션을 만들어 내야 한다는 점이다. 늘 혼자서만 토이 프로젝트를 진행해왔고, 주..

Daily Thoughts 2020.07.27

[Lecture 7, 8] TCP Service

[강의 내용만 대략적으로 요약] 1. TCP 의 전반적인 특징에 대하여 * point-to-point : 항상 단일 송신자와 단일 수신자 사이의 점대점 연결이다. 하나의 송신자가 여러 수신자에게 데이터를 전송하는 멀티캐스팅은 불가능하다. * 데이터의 순서를 보장한다. * pipelined : 한꺼번에 많은 메시지를 보낼 수 있다. * full-duplex : 양쪽에서 이야기한다. * 하나의 소켓마다 별도의 TCP 를 갖고 (송신버퍼 수신버퍼, 그리고 데이터 전송과 관련된 여러 자료구조 및 변수들) 동작한다. * TCP 가 전송하는 세그먼트의 크기? TCP 명세에는 TCP가 자신이 편한대로 세그먼트의 데이터를 전송한다고 기술되어있다. 세그먼트의 크기는 최대 세그먼트 크기로 제한되고, 이는 통상적으로 150..

Computer Network 2020.07.15

[Lecture 6] RDT : Pipelined Protocols

신뢰적인 데이터 전송 (이어짐) 이전 강의에서는 송신자와 수신자 간 하나의 세그먼트만 주고 받는 상황에서의 신뢰적인 데이터 전달을 논의했었다. 하지만 실제 전송계층에서는 전송-후-대기 프로토콜을 사용하지 않고 파이프라인된 프로토콜을 사용한다. 데이터를 한꺼번에 많이 보내고, 보낸 것들에 대한 응답 또한 한꺼번에 받는 방식이다. 파이프라이닝을 이용해 세그먼트를 전달하면 송신자의 이용률이 증가하여 성능향상에 도움이 된다. 파이프라이닝 방식을 사용하면 다음과 같은 사항들이 요구된다. * 순서번호의 범위가 커져야 한다. 각각의 전송중인 패킷은 유일한 순서번호를 가져야 하고, 거기에 전송 중이고 확인응답이 안된 여러 패킷이 있을지도 모른다. * 프로토콜의 송신측과 수신측은 한 패킷 이상을 버퍼링 해야한다. 송신자..

Computer Network 2020.07.03

[Lecture 5] RDT : Reliable Data Transfer

TCP가 윗단의 어플리케이션에게 제공하는 서비스는 신뢰적인 데이터 전송의 채널을 만들어 주는 것이다. 신뢰적인 채널에서는 전송된 데이터가 손상되거나, 손실되지 않는다(0에서 1로, 혹은 1에서 0으로 바뀌지 않음). 그리고 모든 데이터는 전송된 순서대로 전달된다. 이러한 서비스 추상화를 구현하는 것은 신뢰적인 데이터 전송 프로토콜(reliable data transfer protocol)의 의무이다. 하지만 TCP 아래의 계층들의 신뢰성이 떨어져 이 작업이 어려워진다. 신뢰적인 데이터 전송 프로토콜의 송신자 측면과 수신자 측면을 점진적으로 개발해 나가자. 하부 채널에서는 패킷의 순서를 바꾸지 않는다고 가정한다. 위의 그림은 데이터 전송 프로토콜에 대한 인터페이스를 나타낸다. 송신측은 rdt_send()호..

Computer Network 2020.07.02

[Linux Programming] Process Related API

* 금오공과대학교 전준철 교수님 리눅스 프로그래밍 수업 6강 ~ 9강 정리 프로세스 생성과 종료 부모에서는 자식 PID 반환, 자식은 0을 반환 실패하면 -1을 반환 서로 완전히 다른 프로세스가 되지만 부모 자식간의 관계는 유지된다. 실행 환경은 부모나 자식이나 똑같다. 코드, 레지스터, 스택 등 물려받음. PC : Program Counter 복제가 되어버려서, 완전히 다른 독립적인 프로세스로서 활동. fork() 를 하면 pid 가 두개 생성 원하는 작업들을 분기 안에서 처리한다. path 는 경로, file 은 실행 파일 arg 는 전달 인자 리스트 argv 는 문자열 포인터 배열 형태, 반드시 마지막에 NULL문자열을 넣어야 함. 호출 성공하면 호출한 프로세스는 종료됨. ls -l subdir 과..

[Lecture 1] Digital System Basics

아날로그 vs 디지털 현시 세계의 온도, 습도, 소리와 같은 물리적인 양을 트랜스듀서를 이용해 전기 전자적 신호로 변환하면 원래의 물리적인 양과 유사한 연속적인 값을 얻는다. 이를 아날로그 신호라 한다. 반면 디지털 신호는 분명히 구별되는 두 레벨의 신호값만을 갖는다. 전자기기는 아날로그 신호를 디지털 신호로 변환하여 사용한다. 변환의 과정은 다음과 같다. 아날로그 신호를 Sampling 한 후에, 양자화 과정을 거치면서 값들을 근사값으로 표현하게 된다. 그리고 최종적으로 01010과 같은 부호화된 값으로 변환한다. 이러한 변환 과정에서 값의 정확도는 떨어지게된다. 디지털 신호의 장점 1. 디지털 시스템은 내부와 외부 잡음에 강하다. 0이 1로, 1이 0으로 바뀔 염려가 없다. 2. 디지털 시스템은 설계..

[LFS201] Processes

프로세스 속성 * 실행되고 있는 프로그램 * Context (State) : 프로세스간 CPU 시간을 공유하려면 Context switching 이 이루어져야 한다. (커널의 중요한 역할 중 하나) * Permissions * Associated Resources : 모든 프로세스는 메모리, 파일 핸들등이 할당되어 있다. Process Permissions 어떤 유저가 실행시켰는지에 따라서 프로세스의 권한이 형성된다. 뿐만 아니라 어떤 유저가 프로그램 파일을 소유하는지에 따라서도 권한이 형성될 수 도 있다. "s" execute bit 으로 표시된 프로그램들은 real user id 와 다른 effective user id 를 갖고 있다. 이 프로그램들은 setuid 프로그램이라 지칭하며 프로그램을 소유..