[인프런 기술노트] 동기식 비동기식의 동작 방식 차이
2023. 2. 19. 02:24
Study/컴퓨터구조 | 운영체제
동기 VS 비동기 동기 코드의 실행이 끝난 후에 다음 코드를 실행한다. (순차적 실행 보장) 비동기 코드의 실행 종료를 기다리지 않고 다음 코드로 넘어간다. 동기식 코드는 다음 코드에 현재 코드의 결과가 필요한 경우에 사용 비동기식 코드는 주로 시간이 오래 걸리는 네트워크 통신이나 코드의 실행 결과가 당장 필요하지 않은 경우에 사용 비동기식 함수의 경우 함수의 종료를 기다리지 않고 다음 코드로 넘어가는데, 그렇다면 함수의 실행 결과를 어떻게 받을까? 이때 callback(콜백) 함수를 사용한다. 비동기식 함수 내부에 콜백 함수를 사용해서 함수의 실행이 끝날 경우 마지막에 콜백 함수를 호출하여 결과값을 받아오게 된다.
[인프런 기술노트] 운영체제 설명 - 여러 프로그램이 동시에 실행되는 원리
2023. 2. 19. 02:16
Study/컴퓨터구조 | 운영체제
컴퓨터 구조 1. 디스크에서 프로그램의 일부를 메모리에 올림(프로세스). 2. 프로세스는 명령어의 집합이고 명령어의 일부를 cache에 적재. 3. CPU는 cahce에서 처리해야 할 명령어를 가져온 후 ALU에서 하나씩 연산. 기본적으로 CPU는 한 번에 하나의 연산만 할 수 있다. 그렇다면 동시에 여러 프로그램을 어떻게 실행시킬까? 시분할 방법은 시분할이다. 약간의 눈속임인데, CPU의 시간을 분할하여 처리해야 하는 프로세스들에게 나눠주는 거다. 즉 여러 프로세스를 번걸아가면서 조금씩 처리하는 거라고 보면 된다. 운영체제 책을 보면 이런 식의 그림을 볼 수 있을텐데, 프로세스 A, B, C, D가 있다고 하자. 각각의 프로세스가 모두 처리되려면 각각 3/4초, 1/4초, 1초, 1/2초가 필요하다. ..
[인프런 기술노트] CPU속도가 Hz(헤르쯔)인 진짜 이유 (feat. 컴퓨터 구조)
2023. 2. 19. 01:55
Study/컴퓨터구조 | 운영체제
왜 CPU 속도는 Hz 단위일까? 우리들은 보통 메인 메모리와 하드 디스크는 용량을 따지는 반면 CPU는 속도를 따진다. 그만큼 CPU의 속도는 중요하기 때문! 그렇다면 CPU의 속도에 왜 Hz 단위를 사용할까? Hz는 진동수를 표현하는 단위다.1Hz라면 1초에 1번 진동하고, 10Hz라면 1초에 10번 진동한다는 뜻.여기서 진동은 주기(Cycle)가 존재하는데, 이 주기가 CPU의 속도에 Hz 단위를 쓰는 것과 관련이 있다. 컴퓨터에서 처리해야 할 명령어의 흐름은 알다시피 디스크 → 메모리 → (cache) → CPU 순이다. 여기서 cache에서 CPU로 명령어를 가져오려면 전기적 신호가 필요한데 이 전기적 신호가 바로 Clock(클럭)이다. 이때 한 클럭마다 명령어를 주기적으로 가져온다고 해서 Hz..
[인프런 기술노트] 컴퓨터 전공 수업 10분으로 압축 (컴퓨터 구조 + 운영 체제)
2023. 2. 17. 01:53
Study/컴퓨터구조 | 운영체제
폰 노이만 구조 현재 일반적으로 쓰이고 있는 컴퓨터 구조로 주기억 장치, 중앙 처리 장치, 입출력 장치 3가지로 구성된다. 예전엔 새로운 프로그램을 처리하려면 CPU 회로를 다시 구성해야 했다. 하지만 지금은 프로그램을 주기억장치에 저장했다가 CPU가 명령어를 해석하여 처리하고 있다. (컴퓨터에서 일반적인 데이터의 흐름은 디스크 → 메모리(주기억장치) → CPU) 컴퓨터에서 데이터를 처리하기 위해서는 디스크에 접근해야 한다. 이때 CPU의 데이터 연산 속도는 매우 빠르지만 하드디스크의 데이터 접근 속도는 매우 느리다. 때문에 CPU가 연산을 먼저 끝내고 디스크를 기다리는 시간이 발생할 수 있다. CPU가 쉬는만큼 데이터 처리에 손실이 생기기 때문에 두 장치 사이의 속도 차이를 극복할 수 있는 무언가가 필..
[네트워크] 1장 컴퓨터 네트워크와 인터넷
2022. 10. 11. 16:39
Study/컴퓨터 네트워크
인터넷이란 무엇인가? 구성요소로 본 인터넷 오늘날 네트워크에 연결되는 모든 장치를 호스트(host) 또는 종단 시스템(end system)이라고 부른다. 종단 시스템은 통신 링크(communication link)와 패킷 스위치(packet switch)의 네트워크로 연결된다. => 통신 링크는 동축케이블, 구리선, 광케이블, 라디오 스펙트럼을 포함한 다양한 물리 매체로 구성 각각의 링크들은 다양한 전송률(transmission rate, 링크 대역폭)을 이용하여 데이터를 전송하며 전송률은 초당 비트 수를 의미하는 bps(bit per second) 단위를 사용한다. 종단 시스템이 다른 종단 시스템으로 보낼 데이터를 갖고 있을 때, 송신 종단 시스템은 그 데이터를 세그먼트(segment)로 나누고 각 세..
[BOJ] 5427: 불 / JS
2022. 10. 9. 22:10
알고리즘
문제: https://www.acmicpc.net/problem/5427 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const n = Number(input.shift()); const dx = [-1, 1, 0, 0]; const dy = [0, 0, -1, 1]; let visit; let h, w; class Node { constructor(data, next = null) { this.data = data; this.next = next; } } class Queue { constructor() { this.head = new Node([]); this.tail = this.head; ..
[BOJ] 7569: 토마토 / JS
2022. 10. 8. 19:19
알고리즘
문제: https://www.acmicpc.net/problem/7569 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [m, n, h] = input.shift().split(' ').map(Number); const map = []; let temp = []; for (let i = 0; i < h; i++) { for (let j = 0; j < n; j++) temp.push(...input.shift().split(' ').map(Number)); map.push(temp); temp = []; } const dh = [1, -1, 0, 0, 0, 0]; const dx = [0..
[BOJ] 10026: 적록색약 / JS
2022. 10. 8. 02:08
알고리즘
문제: https://www.acmicpc.net/problem/10026 const [n, ...input] = require('fs') .readFileSync('./input.txt') .toString() .trim() .split('\n'); const map = input.map((x) => x.trim().split('')); const visit = new Array(n); for (let i = 0; i 0); const dx = [0, 0, 1, -1]; const dy = [1, -1, 0, 0]; function isRange(x, y) { return x >= 0 && x < n && y..
[BOJ] 7562: 나이트의 이동 / JS
2022. 10. 7. 22:52
알고리즘
문제: https://www.acmicpc.net/problem/7562 const [t, ...input] = require('fs') .readFileSync('./input.txt') .toString() .trim() .split('\n'); const dx = [-2, -2, 2, 2, -1, 1, -1, 1]; const dy = [-1, 1, -1, 1, 2, 2, -2, -2]; let l; let map; function mapping() { map = new Array(l); for (let i = 0; i 0); } function isVisit(x, y) { return map[x][y]; }..