전체 글 75

세마포어

세마포어공유 자원에 대한 접근을 조절하기 위한 동기화 도구 세마포어는 초기값에 의해 동작이 결정되므로 가장 먼저 초기화를 해야한다.세마포어는 정수 값을 갖는 객체로서 두 개의 함수로 조작 POSIX 표준의 두 개 함수 // 두 함수는 원자적으로 실행 1. sem_wait()2. sem_post()#includesem_t s;sem_init(&s, 0, 1);세마포어 초기화세마포어 s를 선언한 후, 세 번째 인자로 1을 전달하여 세마포어 값을 1로 초기화한다.두 번째 인자는 OSTEP의 모든 예제에서 0 이 값이 0인 경우 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다는 것을 의미 ** 초기화 후 sem_wait(), sem_post() 함수들을 호출하여 세마포어를 다룰 수 있다. 두 루틴은 다수 쓰..

임계영역, 공유자원, 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를 사용..