Computer Science 64

운영체제 | 프로세스(Process), 쓰레드(Thread)

프로세스, 쓰레드가 뭔가요? 프로세스: 프로세스는 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간(가상 메모리)와 자원(파일 핸들, 네트워크 연결 등)을 가진다. OS가 프로세스의 생성 및 관리를 맡는다. 쓰레드: 쓰레드는 프로세스 내의 실행 흐름 단위로, 상위 프로세스의 자원과 메모리(코드, 데이터, 힙)를 공유한다. 각 쓰레드는 독립적인 스택 공간을 가지며, 멀티쓰레딩을 통해 프로세스 내에서 여러 작업을 동시에 수행할 수 있다. 프로세스(Process) 프로세스는 실행 중인 프로그램의 인스턴스라는 말은 다음과 같이 비유할 수 있다. 보조기억장치의 프로그램 실행 파일 = 설계도 보조기억장치의 실행 파일은 프로그램의 코드와 데이터를 포함하고 있다. 이 파일은 프로그램이 어떻게 동작해야 하는지에 대..

PintOS | Project1. Threads | 과제 소개

PintOS 프로젝트는 매우 방대하다... 과제 설명서만 해도 몇 페이지지?? 하여간 엄청나게 많은 분량이다. 그래서 과제설명서 중 핵심 내용을 따로 모아놔야 할 것 같다. 앞서간 정글 선배님들 덕분에 한글 번역본을 구할 수 있었다.👍👍 감사합니다 잘 써먹겠습니다....! 테스트 방법 /PintOS_lab/threads/build 디렉토리에서 컴파일 및 채점을 실행한다. 전체를 컴파일하고 테스트하려면 make -> make check 여러 테스트 케이스들을 개별적으로 테스트하려면 예를 들어 alarm-multiple 이라는 테스트케이스를 수행하고 싶다면 make tests/threads/alarm-multiple.result 이 명령은 alarm-multiple 테스트를 수행하고, 결과를 .result ..

네트워크 모델 | (6) TCP/IP 데이터 흐름 더 깊게 이해하기 (feat. Buffered I/O)

앞에서(네트워크 모델 | (5) 데이터 단위와 흐름 이해하기) TCP 통신에서의 데이터 흐름에 대한 큰 그림을 그려보고, 각 단계별 데이터를 뭐라고 부르는지 알아보는 시간을 가졌었다. 이번에는 이 큰 그림의 세부내용을 구체화해보는 시간을 가져보자. 데이터가 계층을 넘나드는 과정을 디테일하게 그리려면, 우선 Buffered I/O가 무엇인지 알아야 한다. Buffered I/O Buffered I/O는 데이터를 메모리의 버퍼에 임시로 저장하고, 버퍼가 가득 차거나 빌 때까지 기다린 후 데이터를 전송하는 방식이다. 애플리케이션 계층에서 TCP가 있는 전송 계층으로, 그리고 다시 네트워크 계층으로.. 이렇게 데이터를 내려줄 때 버퍼를 사용하여 데이터를 전송하고 수신한다. 잠시 버퍼에 담아두고, 살짝 마사지 해..

네트워크 프로그래밍 | Proxy Lab | echo 서버 구현 (소켓 프로그래밍 공부)

echo 서버 - 전체 작동 구조도 server 파일 분석 echoserveri.c 전체 코드 중간중간에 혼자 테스트할 목적으로 쓴 printf가 있으니, 그냥 무시하면 된당 #include "csapp.h" // echo: 클라이언트 요청을 처리함 void echo(int connfd); // main: 서버 프로그램의 entry point int main(int argc, char **argv) { // 리스닝 및 연결용 파일 디스크립터 선언 int listenfd, connfd; socklen_t clientlen; struct sockaddr_storage clientaddr; /* 모든 주소를 위한 충분한 공간 */ char client_hostname[MAXLINE], client_port[M..

네트워크 모델 | (5) 데이터 단위와 흐름 이해하기

지금까지 네트워크 아키텍처들 (LAN, WAN, 서버-클라이언트 구조) OSI 모델, TCP/IP 모델이 무엇인지 어떤 주소체계를 통해서 데이터 패킷이 목적지로 향할 수 있는지 (포트, IP, MAC) IP 프로토콜의 한계를 보완한 TCP, UDP 프로토콜이 무엇인지 프로세스가 네트워크 기능을 사용할 수 있도록 해주는 소켓이 무엇인지 를 공부했다. 이번에는 실질적으로 1) 데이터라는 게 어떤 형태로 전달되며, 2) 어떤 과정으로 전송되는지를 추가하여 네트워크 | 네트워크를 이해하는 큰 그림에서의 3차원 이미지를 마저 완성해보면 좋을 것 같다. TCP/IP 계층별 데이터 단위 우리 애플리케이션에서 출발한 데이터가 네트워크 세상으로 빠져나가면서 점차 어떤 모습으로 바뀌게 되며, 왜 그렇게 되는지, 또 각 단..

네트워크 모델 | (4) 소켓(Socket)에 대한 이해

소켓(Socket) Socket? 소켓은 네트워크상의 두 프로그램 간의 통신을 위한 엔드포인트로, 소켓 주소 정보를 사용하여 데이터 송수신을 관리하는 프로그래밍 인터페이스이다. 네트워크 기능을 사용하려는 애플리케이션(프로세스)은 소켓을 열어서, 소켓 인터페이스를 통해 네트워크 작업을 수행한다. 소켓 자체는 TCP나 UDP에 종속된 개념이 아니다. 네트워크 통신을 할 때, 각 통신주체가 데이터를 주고 받는 출발지와 도착지 역할을 하는 대상을 통칭한다. 다만 현대 네트워킹에서는 TCP, UDP가 흥하면서 TCP, UDP 프로토콜을 기반으로 하는 소켓을 주로 쓰고 있고, 때문에 소켓 == TCP 소켓, UDP 소켓으로 통용되는 감이 없지않아 있다. 소켓의 종류 네트워크 통신을 위한 소켓을 Stream 소켓과 ..

네트워크 모델 | (3) TCP, UDP 프로토콜 소개

TCP와 UDP는 IP 위에서 동작하며 인터넷 프로토콜 스위트 중 핵심 프로토콜이다. TCP/IP 모델에서는 L4 Transport 계층에 해당하는 프로토콜이다. 이들은 IP의 한계를 보완하거나, 더욱 업그레이드하기 위한 목적으로 설계되었으며, IP를 포함하고 있는 Network 계층 위 Transport 계층의 주요 요소로 올라가게 되었다. IP의 한계 IP만 믿고 모든 네트워크 통신을 하기에는 한계가 있다. 바로 데이터 전송을 신뢰할 수 없다는 것이다 IP의 한계점은 다음과 같다: Data loss 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송되고, 클라이언트는 이를 모르는 경우 비신뢰성: 네트워크 경로 중간에 패킷이 사라지는 경우 (이상한 경로로 빠져버렸다든지..) Out ..

네트워크 모델 | (2) 네트워크 주소 체계(Port, IP, MAC), IP 라우팅

우리는 네트워크 기능을 인터넷 환경 위에서 구현(또는 활용)하는 사람들이다. 때문에 TCP/IP 기반으로 네트워크를 이해하는 게 좋다고 생각한다. (TCP/IP는 인터넷에 포커싱한 실용적 모델이므로) 왜 우리가 네트워크 자체가 아니라 네트워크 중 하나인 인터넷에 집중을 해야하냐면 ?? -> 보통 사람들은 '네트워크 == 인터넷'이라고 착각할 정도로 인터넷이 표준이 되었으니까 !! 거의 모든게 인터넷 위에 있고, 우리는 인터넷 위에서 생활하고있다고 해도 과언이 아니다. 어쨌든, 이번에는 네트워크 통신을 할 때 한 곳에서 보낸 데이터가 목적지를 찾아가는지를 살펴보고자 한다. 그 과정에서 IP(Internet Protocol)이라는 인터넷 네트워크를 위해 설계된 프로토콜도 다루게 된다. 어떻게 주소를 찾아갈..

네트워크 모델 | (1) OSI 모델, TCP/IP 모델 개요

네트워크의 대표적인 구조적 특징을 알아봤으니, 이번에는 이 구조 위에서 어떤 방식으로 네트워크 서비스가 동작하는지를 알아볼 차례!! 네트워크 모델 네트워크 모델은 네트워크 통신의 기본 원리와 구조를 설명하는 이론적인 프레임워크이다. 가장 널리 알려진 두 가지 모델은 OSI(Open Systems Interconnection) 7계층 모델과 TCP/IP 4계층 모델이다. 왜 사람들은 이 두 가지 모델을 통해 네트워크 공부를 시작할까? 계층적 구조: 이 모델들은 네트워크 기능을 독립적인 기능을 수행하는 각각의 계층으로 나누어 설명한다. 이는 복잡한 네트워크 시스템을 더 쉽게 이해할 수 있게 해준다. 또한 네트워크 문제를 진단하고 해결하는 데 있어서 계층적 접근 방식은 매우 유용하다. 어플리케이션부터 시작해..