목록분류 전체보기 (94)
혼자 정리
Node.js의 CommonJS, ESM 모듈 호환성Node.js 문서를 참조하여 필요한 부분만 정리했습니다Modules: CommonJS modules | Node.js v21.7.1 DocumentationModules: ECMAScript modules | Node.js v21.7.1 Documentation우선 Node.js 에서는 각 파일을 별개의 모듈로 간주한다는 점을 깔고 갑니다.CommonJS 모듈module.exports 객체에 키값을 지정하여 내보내기CommonJS 방식에서 모듈 내부의 변수를 export하려면 module.exports object 또는 exports object 에 할당하면 됩니다.Example모두 commonjs 타입 모듈이라고 가정합니다.src/to-string...
'Operating System Concepts - 10th edition' 을 읽고 정리한 내용입니다. 5.1 Basic Concepts 멀티프로그램의 목적 : CPU utilization의 극대화 기본 컨셉 CPU에서 어떤 프로세스를 실행 해당 프로세스가 대기해야 하는 순간 도달 OS가 프로세스에서 기존 프로세스를 빼고 다른 프로세스를 스케쥴해서 실행 5.1.1 CPU-I/O Burst Cycle 프로세스 실행은 CPU execution의 cycle과 I/O 대기로 이루어짐 프로세스 execution은 CPU burst로 시작해서 I/O burst와 번갈아가면서 진행됨 CPU burst의 duration은 아래와 같은 그래프를 보여준다. (물론 프로세스, 컴퓨터마다 다르지만 일반적으로..) 짧은 CP..
'Operating System Concepts - 10th edition' 을 읽고 정리한 내용입니다. 4.1 Overview CPU utlization의 기본 단위 스레드 ID, 프로그램 카운터(PC), 레지스터 셋, 스택으로 구성 동일 프로세스에 속한 다른 스레드와 코드 영역, 데이터 영역, 다른 OS 리소스(open file, signal 등)를 공유 4.1.1 Motivation 멀티스레드 앱의 예시 : 여러 의미지의 섬네일 생성을 위해 각 이미지마다 개별 스레드를 사용 웹 브라우저에서 한 스레드는 네트워크 데이터를 수신하고, 다른 스레드는 이미지나 텍스트를 화면에 띄우는 역할을 할 수 있음 워드 프로세서에서 화면을 띄우는 역할, 유저 입력을 받는 역할, 백그라운드에서 스펠링과 문..
'Operating System Concepts - 10th edition' 을 읽고 정리한 내용입니다. 3.1 Process Concept 3.1.1 The Process Process : 실행 중인 프로그램 프로세스의 현재 활동 상태 ? program counter 값과 프로세서 레지스터의 내용으로 나타내어짐 프로세스의 메모리 레이아웃은 다음과 같이 구성됨 Text section : 실행 가능한 코드 Data section : 전역 변수 Heap section : 프로그램 런타임에 동적으로 할당되는 메모리 Stack section : 함수 파라미터, 리턴 주소, 로컬 변수 등 함수 호출시 필요한 임시 데이터 저장 공간 _________________ max | | | stack | |_..
'Operating System Concepts - 10th edition' 을 읽고 정리한 내용입니다. 2.1 Operating-System Services 유저를 위한 OS 서비스 유저 인터페이스 GUI, 터치스크린 인터페이스, CLI 프로그램 실행 프로그램을 메모리로 로드해서 실행 I/O 오퍼레이션 보통 효율성과 보호의 이유로 유저가 직접 I/O 장치에 접근할 수 없게 되어 있음 따라서 OS가 I/O에 접근할 수 있는 방법을 제공해야 함 파일시스템 처리 파일/디렉토리 읽기/쓰기/삭제 등 파일/디렉토리 접근 권한에 따라 접근 제어 Communications 프로세스간 통신 동일 컴퓨터 상 or 네트워크를 통해 공유 메모리, 메시지 전달 등의 방법을 사용 에러 탐지 CPU, 메모리, I/O 장치, 디스..
'Operating System Concepts - 10th edition' 을 읽고 정리한 내용입니다. 1.1 What Operating Systems Do 컴퓨터 시스템을 네 가지로 나누는 관점 hardware ex) CPU(Central Processing Unit), 메모리, I/O 장치 시스템의 기본적인 연산 리소스 제공 application programs ex) 스프레드시트, 컴파일러, 웹 브라우저 유저의 컴퓨팅 문제를 풀기 위해 리소스를 어떻게 사용할 것인지 정의 user operating system 하드웨어 자체를 조종하고, 다양한 user의 니즈를 위한 application program들의 하드웨어 사용을 조정 컴퓨터 시스템을 세 가지로 나누는 관점 hardware software ..
(Computer Networking a top-down Approach 책의 내용입니다) 3.4 Principles of Reliable Data Transfer 이번 절에서의 가정 패킷 전달 순서가 바뀔 일은 없음 단방향 데이터 전송(unidirectional data transfer) 만 고려 양방향 데이터 전송(bidirectional data transfer) 은 개념적으로는 비슷하지만 more tedious to explain 단방향 데이터 전송에서도 제어 패킷은 서로 주고 받음 FSM으로 설명 3.4.1 Building a Reliable Data Transfer Protocol 완벽하게 신뢰 가능한 채널 상에서의 신뢰적 데이터 전송 비트 에러 x 패킷 손실 x 보내는 쪽이나 받는 쪽이나 특..
Typescript 4.9 릴리즈 노트 관련 피쳐 이슈 관련 PR 어떤 expression이 원하는 타입에 속하는지 밸리데이션을 진행하면서 동시에 기존 타입을 유지할 수 있는 오퍼레이터이다 예시를 통해 보자. type SomeRequest = { // ... url: URL | string } 이러한 타입에 속하는 변수를 만들어서 사용하고 싶은 경우가 있다. const someRequest = { // ... url: new URL("http://test.com") } // someRequest.url 의 타입은 URL로 추론됨 // someRequest.url.host 접근 가능 하지만 위와 같이 사용하면 프로퍼티명에서 오타가 생겨도 쉽게 놓칠 수 있다. const someRequest = { // ...
(Computer Networking a top-down Approach 책의 내용입니다) UDP가 IP에 더해서 하는 일은 multiplexing/demultiplexing, 에러 체크 두 가지뿐 UDP는 connectionless DNS가 UDP를 사용하는 프로토콜의 예시 UDP가 TCP보다 유리한 점 RTT delay를 더할 수 있는 커넥션 수립이 없음 커넥션 state가 없음(TCP의 신뢰적인 데이터 전송, 혼잡 제어에 사용됨) 더 작은 헤더 사이즈 혼잡 제어가 없음(빠르게 제한 없이 데이터를 보낼 수 있음) UDP가 사용되는 곳 멀티미디어 스트리밍 애플리케이션 (손실 감내 가능하고 속도에 민감한 서비스) DNS SNMP HTTP/3 HTTP/3와 같이 UDP에서 신뢰적인 데이터 전송이 필요하면 ..
(Computer Networking a top-down Approach 책의 내용입니다) 프로세스는 한 개 이상의 소켓을 가질 수 있음 네트워크는 이를 통해 프로세스와 데이터를 주고 받음 모든 소켓은 유일한 식별자를 가짐 식별자 포맷은 UDP인지 TCP인지에 따라 조금 다르다 수신 측 트랜스포트 계층은 메시지를 전달해야 하는 수신 소켓을 식별하기 위해 segment의 필드를 확인함 트랜스포트 계층 segment 데이터를 적절한 소켓으로 전달하는 작업을 역다중화(demultiplexing) 라고 함 송신 측 트랜스포트 계층은 소켓에서 데이터를 모아 각 chunk에 헤더 정보(역다중화에 사용됨)를 붙여서 캡슐화하고 네트워크 계층올 전달 다중화(multiplexing) 라고 함 각 segment는 출발지 포..