GCC 주요 옵션 -o : 컴파일 결과물의 이름을 지정할 수 있다. # a.out 파일이 생성된다. gcc hello.c # hello 파일이 생성된다. gcc hello.c -o hello -w : 모든 경고 메시지를 숨긴다. -Wall : 모든 경고 메시지를 보여준다. -Werror : 경고 메시지를 에러로 출력한다. gcc -w hello.c gcc -Wall hello.c gcc -Werror hello.c -On (n은 정수) -O 옵션은 컴파일러의 최적화 정도를 결정한다. -O0 (default) : 최적화를 하지 않는다. -O1 (or -O) : 1단계 최적화 -O2 : 2단계 최적화 -O3 : 3단계 최적화 gcc -O3 -o hello hello.c -g -g 옵션은 소스 레벨에서 디버깅..
File - Unix OS 차원에서 확장자는 존재하지 않는다. - 바이트 별로 주소가 있어서 file direct access가 가능하다. System call open, creat, close, read, write, lseek, unlink, remove, fcntl 이때, block device들은 1 block씩 읽어야하기 때문에 버퍼 캐시가 따로 필요하다. (Character file은 1 바이트씩 읽으니 굳이 버퍼가 필요하지 않음) File descriptor - File descriptor는 integer 값을 가진다. (0~2가 아닌 가장 작은 양의 정수)- open 함수로 파일을 열면 file descriptor 값이 return되며, 이 값은 read와 write 함수의 인자로 활용된다..
Shell - Shell은 명령어를 받고 해석하는 prompt를 작동한다. (Shell = Command Line Interpreter) - 하드웨어와 상호작용을 하고 싶다면 kernel을 이용해야 하며, kernel을 이용하고 싶다면 system call을 사용해야 한다. - 로그인 시 사용자 이름과 PW를 입력해야 한다. 사용자 이름은 /etc/passwd에 있다. - Shell에는 크게 4가지 종류가 있다. C Shell, KornShell, Bourn Shell, Bourn Again Shell(Bash) File and Directories - 유닉스에서는 모든 것들을 파일로 간주한다. 정말 모든 것들을 전부 파일로 관리하여 system call을 통합시켰다. - 유닉스의 파일 시스템은 hier..
TCP란? Transmission Control Protocol의 약자. Transport layer에서 일어나는 일들이기 때문에 segment 단위로 이루어진다. (Segment 대신 packet이라고도 부름) Port 포트번호는 사람의 전화번호와도 같다고 생각하면 된다. 이미 200개의 Well-known port들이 존재한다. TCP에서의 데이터 전송 TCP는 stream delivery 방식을 이용하기 때문에 UDP의 boundary delivery처럼 한 패킷에 원하는 데이터가 들어가 있는 것이 아니다. 바이트 스트림은 독립적이기 때문에 Sender가 패킷 하나로 데이터를 보내도, Receiver는 패킷 여러개로 받을 수 있다는 것이다. Buffer TCP는 양방향 소통을 하기 때문에 Sende..