728x90
Thread, Process, Core는 많을수록 좋을까보통 이러한 질문은 느낌상 '아니니까 묻는 것 같은데' 라는 직감을 준다.만약 누군가 이 각각이 많을수록 어떠한 영향을 줍니까?라고 물어보면 단순히 생각했을 때 Core는 뇌의 역할이니까 뇌가 많을수록 처리량이 많을 것 같고, 한 프로그램 내에 Process가 여러개로 있다면 병렬처리할 기회가 많이 생길 것 같아서 괜찮을 것 같고, Thread가 여러 개라면 이 또한 병렬처리에 유리할 것 같다. 그러한 생각이 틀렸는가를 판단하기 위해서 각각을 살펴본다. Thread가 많으면 어떨까Thread는 크게 하드웨어 입장과 소프트웨어 입장에서 생각할 수 있다. 여기선 소프트웨어 입장으로서 Process 내의 Thread라고 해해보자. 우리는 Thread가 ..
HTTPS HTTPS는 그 이름에도 알 수 있듯이, HTTP Secure로서 암호화 기술을 통해 콘텐츠를 안전하게 전달한다. 즉 데이터의 변조 위험을 막을 수 있고 디지털 인증서를 사용함으로써 신뢰성을 얻는 방식이다.이 HTTPS는 TCP 위에 *SSL(Secure Socket Layer)/TLS(Transport Layer Security) 계층을 더해 이용된다. 그리고 이에 대해 두 개의 서로 다른 키를 사용하여 당사자간의 통신을 암호화할 수 있다 *TLS는 SSL의 상위 버전이며 따라서 최근에는 대부분 TLS를 이용한다, 과거엔 편의상 SSL과 용어를 통쳐서 불리었지만 TLS는 최신 보안 표준을 준수한다는 점에서 차이를 갖는다. 서로 다른 키?암호화된 내용을 풀기 위한 Key가 개인키와 공개키로 나..
운영체제의 SystemCallOS가 Application에게 자원을 이용할 수 있도록 제공하는 인터페이스다.이 인터페이스는 시스템 상의 치명적인 영향을 줄 수 있는 명령어에 대해서 불법 사용자로부터 실행되는 것을 막고자하는데, 이에 대해 내부적으로 DualMode(이중 동작모드)를 갖추고 있다. 운영체제의 Dual ModeDual Mode란 커널에서 중요한 자원을 관리하고 있는데, 사용자가 그 중요자원에 접근하지 못하도록 모드를 2가지로 분류한 것이다. 그게 바로 UserMode와 KernelMode. User Mode유저가 접근할 수 있는 영역을 제한적으로 둠 → 프로그램 자원에 함부로 침범하지 못하게 함User Mode에서 코드를 작성하거나 프로세스를 실행하는 등의 행동 가능‘User Applic..
안정된 동기화 매커니즘의 필요성컴퓨터는 프로세서, 즉 CPU의 성능을 극대화하기 위해 동시에 여러 작업을 수행하려고 한다. 이를 위해 멀티스레딩과 동시성 프로그래밍 기법이 발전해왔다. 그런데 여러 스레드가 동시에 실행된다는 것은 자원 공유에 대한 문제를 고려해야하는 일이다. 가령 두 사람이 같은 은행 계좌에서 동시에 출금을 시도했는데 결과 잔액이 음수가 되는 사항을 막기 위해서가 대표적인 예다. 따라서 안정된 동기화 매커니즘을 맞추기 위해 뮤텍스와 세마포어가 등장했으며, 스레드 간 경쟁을 방지하고 공유 자원의 무결성을 보장하는 것이 그 목적이다. 그리고 각각은 다음과 같은 방법을 취한다. 😡 뮤텍스: 한 번에 한 명만 들어오라구.🤢 세마포어: 한 번에 이만큼만 들어오라구. 뮤텍스(Mutex)뮤텍스..
gRPC가 왜 나왔을까MSA한테 REST API는 한계가 있었다REST는 JSON과 XML 기반의 데이터 직렬화를 토대로 가장 대중화된 통신 방법이다. 그런데 이런 텍스트 데이터의 직렬화는 성능과 데이터 크기 면에서, 특히나 대규모 서비스의 실시간 스트리밍이나 양방향 통신에는 적합하지 않은 비효율적 구조를 갖고 있다.더불어 근래의 대규모 분산 시스템와 MSA 아키텍처 확산으로 효율적인 서비스 간 통신 방신이 요구되어 오는데, 다양한 언어로 작성되었을 MSA가 서로 통신할 수 있는 다중 언어 지원 및 타입 안전성도 요구되어왔다. 이에 대해 Google은 한 발 빨랐다. Google은 이미 갖춰진 대규모 분산 시스템에서 효율적인 통신을 위해 Stubby라는 RPC프레임워크를 썼는데, 이게 꽤 성공적이어서 오..
File Descriptor(FD)이란OS에서 I/O장치나 파일에 접근할 때 이들을 식별하기 위해 사용하는 특정한 정수 값이 있다. 이것이 File descriptor다. 특히나 Linux 혹은 Unix 계열 OS에서 프로세스가 파일을 다룰 때 사용하게 되는데, 프로세스에서 특정 파일에 접근할 때 0(stdin), 1(stdout), 2(stderr),...(파일을 열면서 추가적인 FD할당) 와 같은 상수를 쓰게 된다. 그럼 여기서 Windows는 FD가 없어요? 라는 궁금증이 있었는데, FD와 유사한 개념인 File Handle이 존재하나 FD과 동일한 것은 아니다. File Descriptor의 동작 과정✔️ 파일 열기1. 프로세스의 파일 열기 요청사용자 프로그램은 open()과 같은 System ..