분류 전체보기 104

임계영역, 공유자원, Lock, Mutex

임계영역여러 프로세스 또는 스레드가 공유하는 자원에 접근하는 코드 부분을 의미 즉, 동시에 둘 이상의 프로세스/스레드가 실행되면 문제가 발생할 수 있는 코드 영역을 의미공유자원멀티스레딩 또는 멀티프로세싱 환경에서 둘 이상의 스레드나 프로세스가 동시에 접근하거나 사용할 수 있는 시스템 자원이나 데이터를 의미 Ex) 전역변수, 데이터베이스 연결 객체, 파일, 네트워크 소켓, 프린터, 메모리 버퍼, 카운터 변수큐 또는 스택, 로깅 시스템 등등락락은 하나의 변수이다.락을 사용하기 위해서는 락 변수를 선언해야 한다. ** 락 변수는 락의 상태를 나타냄두 가지 상태- 사용 가능 상태 ( unlocked, free )- 사용중 (acquired) 즉, 임계 영역에서 정확히 하나의 쓰레드가 락을 획득한 상태 락 자료 ..

프로세스와 스레드

프로세스란 ??프로세스는 머신(컴퓨터)를 추상화한 개념이다.- 각 프로세스는 마치 전체 컴퓨터를 독점적으로 사용하는 것처럼 동작할 수 있음 서로 다른 프로세스는 서로의 DRAM, 즉 서로의 주소 공간에 접근할 수 없기 때문 개별 컴퓨터에서 각 프로그램을 수행하는 것과 동일하므로 머신을 추상화한 개념 각 프로세스는 자신만의 가상 메모리, 가상 CPU, 파일들을 갖는다. 프로세스 간 통신 메커니즘(IPC)를 통해 프로세스들 간의 제한적인 정보 교환이 가능함 가상 메모리 - 각 프로세스는 가상 주소 공간을 갖는다. 가상 CPU - 각 프로세스는 CPU를 혼자 점유한다는 착각을 하게 된다. // 시분할 스케줄링 기법 활용 파일 - 각 프로세스는 자신만의 파일 디스크립터를 갖는다.프로세스는 실행 중..

CDN

여러 지역에 설치된 캐시 서버들을 사용하여 본 서버로 들어오는 요청들을 분산 처리하는 서비스 - 캐시 서버 활용한 분산 처리 본 서버에 집중되는 트래픽을 여러 캐시 서버로 분산시켜 처리하게 함 본 서버는 캐시 서버에 데이터를 한 번만 전송하면 됨 - 지리적 접근성 사용자와 가까운 위치의 캐시 서버에서 콘텐츠를 제공하여 전송 속도 향상- 성능 향상 다수의 사용자 요청을 효율적으로 처리하고, 응답 시간을 단축시킴 - 안정성 증가 본 서버의 부하를 줄이고, 서버 다운 위험을 감소시킴 - 대규모 트래픽 처리 갑작스러운 트래픽 증가에도 안정적으로 대응할 수 있음 **대용량 데이터를 정송하는 서비스에 적합Ex) 유튜브, 넷플릭스 AWS의 CloudFront, CloudFlare, Akamai 등이 전 세..

OSTEP 14장

이번 장에서는 UNIX 메모리 관리 인터페이스에 대해 논의여기서 메모리란 사용자 주소 공간을 의미메모리 공간의 종류C 프로그램이 실행되면, 두 가지 유형의 메모리 공간이 할당됨스택 메모리 - 할당과 반환이 컴파일러에 의해 암묵적으로 이루어짐 스택 메모리를 자동 메모리라고도 부름// func()가 호출되면 func를 위한 스택 프레임이 생성되고 프레임 내부에 x를 위한 공간을 할당 // func() 함수가 종료되면 스택 메모리에 있던 할당된 스택 프레임 전체가 반환됨 void func() { int x; }힙 메모리 - 오랫동안 값이 유지되어야 하는 변수를 위한 메모리 모든 할당과 반환이 프로그래머에 의해 명시적으로 처리 됨// 스택 메모리에 func 스택 프레임과 px를 위한 메모리 공간이 확보 됨..

운영체제(OSTEP) 2024.10.19

파일 디스크립터

유닉스 혹은 리눅스 시스템에서 프로세스가 특정 리소스를 다룰 때 사용하는 개념 즉, 특정 리소스에 접근하기 위한 추상적인 키를 말한다. 프로세스는 파일 디스크립터만으로 파일에 접근할 수 있다.파일 디스크립터를 사용함으로써 파일 시스템의 복잡성을 신경 쓰지 않고도 파일을 다룰 수 있다.** 파일 디스크립터 자체가 테이블 인덱스 STDIN_FILENO - 0 // 표준 입력STDOUT_FILENO - 1 // 표준 출력STDERR_FILENO - 2 // 표준 에러 파일 디스크립터는 3번부터 부여 사용하는 이유1. 다양한 유형의 I/O 리소스를 동일한 인터페이스로 다룰 수 있음- read(), write() 같은 함수를 사용하여 리소스에 쉽게 접근 2. 커널의 효율적인 관리 - 커널이..

OSI 7 계층

OSI는 모든 종류의 컴퓨터 시스템 간 통신을 가능하게 하는 네트워크 시스템 설계를 위한 계층 구조이다. 서로 다른 시스템 간의 통신을 원할하게 하는데 목적이 있다.OSI 모델은 프로토콜이 아니다. - 각 계층은 고유한 기능과 책임을 가지고 있음 // 한 계층의 내부 동작이 변경되어도 다른 계층에 영향 안 줌- 인터페이스를 통해 각 계층은 인접한 상위/하위 계층만 직접적으로 상호작용함 - 각 계층은 하위 계층의 복잡성을 숨기고, 상위 계층에 간단한 인터페이스를 제공 - 각 계층을 독립적으로 개발, 수정, 최적화 가능 - 각 계층은 논리적으로 연결되어 통신을 수행 실제 전송은 물리 계층에서만 이루어지지만, 각 계층은 동일한 계층만 보기 때문에 같은 동일한 계층과 통신하는 것 처럼 동작함 응용 계층 ..

HTTP 메서드

HTTP 메서드클라이언트가 서버에 요청할 때 필요한 행위 조회, 등록, 수정, 삭제 GET - 리소스 조회POST - 요청 데이터 처리, 주로 등록에 사용 PUT - 리소스를 대체, 해당 리소스가 없으면 생성PATCH - 리소스 부분 변경DELETE - 리소스 삭제기타 HTTP 메서드HEAD - GET과 동일하지만 메시지 부분을 제외하고 상태 줄과 헤더만 반환 (BODY 제외하고 보냄)OPTIONS - 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)CONNECT - 대상 자원으로 식별되는 서버에 대한 터널을 설정TRACE - 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 GET 메서드리소스 조회 ( 특정 데이터를 줘 )서버에 전달하고 싶은 데이터는 query(쿼..

HTTP 기본 개념

HTTPHyperText Transfer Protocol텍스트 기반의 프로토콜- HTTP 요청과 응답의 헤더 부분은 여전히 텍스트- HTTP 바디 부분은 다양한 형식의 데이터를 포함할 수 있음- HTML, TEXT, 이미지, 음성, 영상 파일, JSON, XML 등등- 거의 모든 형태의 데이터 전송 가능 - 클라이언터의 요청과 서버의 응답으로 구성된 방식 - 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 TCP - HTTP/1.1, HTTP/2 UDP - HTTP/3HTTP 특징1. 클라이언트 서버 구조2. 무상태 프로토콜3. 비연결성4. 확장 가능 (커스텀 헤더)클라이언트 서버 구조- Request, Response 구조- 클라이언트가 요청을 보내고 서버가 응답을 보내는 구조 서버는 비즈니..

TCP/IP, UDP

IP(Internet Protocol)인터넷 프로토콜 역할- 지정한 IP 주소에 데이터 전달- 패킷(Packet)이라는 통신 단위로 데이터 전달 출발지 IP - 나의 IP목적지 IP - 상대 IP1. 출발지, 목적지, 메시지 등을 패킷에 넣고 전송2. IP 프로토콜에 의해서 노드들을 거쳐 전송되게 됨3. 최종적으로 목적지 IP에 컴퓨터에 패킷이 도달하게 됨 4. 목적지 IP에 해당하는 컴퓨터도 동일한 방식으로 출발지 IP 컴퓨터에 응답 IP 프로토콜의 한계1. 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 즉, 대상 서버가 패킷을 받을 수 있는 상태인지 모름 2. 비신뢰성 - 중간에 패킷이 사라지는 경우 - 패킷이 순서대로 안 오는 경우 3. 프로그램 구분 - 같은 IP를 사용..

프록시 서버

프록시란 프로토콜에 있어서 대리 응답 등에서 사용하는 개념이다.프록시 서버클라이언트와 서버 사이에 존재하며, 중계기로서 대리로 통신을 수행하는 것을 프록시라고 함 중계 기능을 하는 주체를 프록시 서버라고 함프록시 서버 종류포워드 프록시 (Forward Proxy)클라이언트와 서버 사이에 위치하여 요청을 중계하며, 요청과 응답은 Proxy Server를 거친다.클라이언트는 목적지 서버에 요청을 보내고, 프록시 서버는 이를 받아서 목적지 서버에 요청포워드 프록시 서버는 클라이언트 앞에 있음 특징1. 클라이언트 보안 - 클라이언트의 직접적인 인터넷 접속을 제한하여 보안 강화 Ex) 불법 사이트에 접속하는 것을 막음 2. 캐싱 - 프록시 서버를 캐시로 사용하여 동일한 요청을 보냈을 때 프록시 서버에 저장..