일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nodejs
- react
- typeORM
- mongoose
- class
- 자료구조
- 정렬
- Queue
- Sequelize
- flask
- MongoDB
- AWS
- MySQL
- Bull
- 게임
- Dinosaur
- Express
- game
- nestjs
- GIT
- jest
- TypeScript
- dfs
- Nest.js
- Python
- 공룡게임
- cookie
- JavaScript
- OCR
- Today
- Total
목록CS (Computer Science) (35)
포시코딩
키워드 thread, 스레드 Thread(스레드) 프로세스 내부의 CPU 수행 단위가 여러 개 있는 경우 프로세스 하나에 CPU 수행 단위만 여러 개 두고 있는 것을 스레드라 부름 "A thread (or lightweight process) is a basic unit of CPU utilization" 구성 스레드가 독립적으로 가지는 부분 program counter register set stack space thread 끼리 공유하는 부분(=task) code section data section OS resources 전통적인 개념의 heavyweight process는 하나의 스레드를 가지고 있는 task로 볼 수 있다. 장점 하나의 프로세스 안에 스레드를 여러 개 두게 되면 스레드 하나가 b..
키워드 프로세스, PCB, 문맥 교환, context switch, 큐, 스케줄러 프로세스 "Process is a program in execution" 즉, 실행중인 프로그램 프로세스의 문맥(context) '문맥'이란 단어의 뜻 그대로 어떤 프로그램에 대해 무엇을 어떻게 실행했는지, 어떤 상태에 있는지를 정확하게 나타내기 위한 개념 특정 시점을 봤을 때 해당 프로세스가 어디까지 수행했는지를 규명하는데 필요한 요소 코드가 어디까지 실행됐는가, 변수의 값은 얼마인가, 함수를 호출하면서 스택에 쌓인게 뭐고 어디까지 쌓였는지 등 프로세스의 현재 상태를 나타내는데 필요한 모든 요소를 '프로세스의 문맥'이라고 한다. CPU와 관련된 하드웨어 문맥 PC(Program Counter) 각종 register 메모리..
키워드 I/O, DMA, 저장장치, primary, secondary, caching, 프로그램, virtual memory, 커널, code, data, stack, 함수, function I/O 동기식 입출력(Synchronous I/O) I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법 2 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 * 위의 방법대로 진행할 경우 CPU가 놀지않고 일을 할 수 있게 된다. 비동기식 입출력(Asynchronous I/O) I/O가 시작된 후 입..
키워드 CPU, mode bit, interrupt, memory, timer, dma controller, i/o, system call 컴퓨터 시스템 구조 Computer CPU 매 클럭 사이클마다 메모리에서 인스트럭션(기계어)을 하나씩 읽어서 실행 PC(Program Counter) 레지스터가 다음번에 어디의 인스트럭션을 실행하는지에 대한 주소를 가지고 있음 register CPU 안에는 메모리보다 더 빠르면서 정보를 저장하는 작은 공간인 register가 있다. mode bit 지금 CPU 안에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분해주는 역할 * 아래 내용의 이해를 돕기위해 표현하자면 CPU를 운영체제가 가지고 있는지, 사용자 프로그램이 가지고 있는지를 표시해준다. 0: 모니터 모..
운영체제란? Operating System, OS 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 커널 좁은 의미로 부르는 운영체제 운영체제의 핵심 부분으로 메모리에 상주하는 부분 넓은 의미의 운영체제로는 커널 뿐 아니라 각종 주변 시스템 유틸리티도 포함한다. 운영체제의 목적 컴퓨터 시스템의 자원을 효율적으로 관리하기 위함 주어진 자원으로 최대한의 성능을 내도록(효율성) 사용자간의 형평성 있는 자원 분배 하드웨어 자원뿐만이 아닌 프로세스, 파일, 메시지 같은 소프트웨어 자원도 관리 사용자 및 운영체제 자신도 보호 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하기 위함 사용자마다 서로 다른 프로그램을 동시에 실행 운영체제의 분류 동시..
운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분 학습 내용 운영체제의 개념과 역할 운영체제를 구성하는 각 요소 운영체제 알고리즘의 핵심적인 부분 운영체제의 목표 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상 제공 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행 컴퓨터 시스템의 자원(Resource)을 효율적으로 관리(자원관리자) 프로세서, 기억장치, 입출력 장치 등의 효율적 관리 과정 운영체제 개요 컴퓨터 시스템의 구조 프로세스 관리 CPU 스케줄링 병행 제어 데드락 메모리 관리 가상 메모리 파일 시스템..
콜백 함수란 콜백 함수는 다른 함수의 인자로 전달되어 나중에 호출되는 함수를 말한다. 보통 비동기적인 처리를 위해 사용된다. 특징 함수의 인자로 전달되어 사용된다는 특징 때문에 함수 내부에서 콜백 함수를 정의하거나 외부에서 정의한 함수를 인자로 전달할 수 있다. 단점 콜백 함수를 과도하게 사용하면 가독성이 나빠지고 콜백 지옥에 빠질 수 있다. 예시 제일 유명한 콜백 함수의 사용 예로는 setTimeOut()을 들 수 있다. setTimeOut()은 일정 시간 뒤 콜백 함수를 실행하도록 예약하는 함수인데 첫 번째 인자로 전달된 콜백 함수가 두 번째 인자의 delay 만큼의 시간이 지난 뒤 비동기적으로 실행된다. https://developer.mozilla.org/en-US/docs/Web/API/setT..
이벤트 루프란? JavaScript의 런타임 모델은 코드 실행, 이벤트의 수집과 처리, 큐에 대기 중인 하위 작업을 처리하는 이벤트 루프에 기반하고 있다. 이는 C 또는 Java 등 다른 언어가 가진 모델과 상당히 다르다. JavaScript에서 비동기성(asynchronous)을 지원하기 위한 핵심 개념 중 하나로 JavaScript 엔진이 한 번에 하나씩만 실행할 수 있는 단일 스레드(single thread) 환경에서 비동기 코드를 처리하는 방법을 제공한다. 쉽게 말하면, 이벤트 루프는 메인 스레드에서 실행되며 비동기 작업을 감시하다 Call Stack이 비게 되면 Callback Queue에 있는 콜백 함수들을 Call Stack으로 이동시켜 실행하는 역할 을 한다. 이해가 안가서 동작 방식을 한..
함수 호출 스택(call stack)이란? 함수 호출 스택은 함수 호출과 관련된 정보를 저장하는 자료구조다. 각 함수 호출이 발생할 때마다 호출 스택에 호출된 함수의 정보가 저장되고, 해당 함수가 실행을 마치고 반환되면 호출 스택에서 해당 함수 정보가 제거된다. 함수 호출 스택에는 함수 호출 시 사용되는 매개변수, 지역 변수, 반환 주소 등의 정보가 저장된다. 이 정보는 함수가 실행 중에 필요한 값들을 저장하며, 함수 호출이 완료되면 이 값들을 반환해 이전 함수 호출로 돌아갈 수 있도록 한다. 코드 예제 코드를 통해 이해해보자 def foo(x): y = x + 1 bar(y) return y def bar(z): print(z) foo(2) 위와 같은 코드가 있을 때 foo 함수는 매개변수 x를 받아 ..
캐시(Cache) 먼저 CPU의 작업에 대해 간단히 설명하자면 CPU는 클록마다 작업을 수행하기 위해 메모리에서 연산자와 피연산자의 정보를 갖고 온다. 캐시는 CPU의 이런 과정에 대해 성능 향상을 위해 고안된 일종의 지름길이다. 성능 향상 == 처리 속도 향상 캐시는 CPU 안에 있고 메모리는 물리적 위치가 아예 따로 멀리 떨어져 있다. ex) 램 당연히 CPU가 메모리에서 정보를 가져오는 것보다 캐시에서 가져오는게 훨씬 빠르다. 캐시에 찾는게 있다면 cache hit 없다면 cache miss라고 한다. 캐시의 역할을 한마디로 정의하자면 CPU 메모리 사이의 데이터 전송 레이턴시 개선을 위해 사용되는 전략이다. 지역성(Localitry) 메모리에서 자주 가져와야 하는 데이터가 캐싱되어 있다면 CPU의..