전체 글
-
[OS] CPU는 어떻게 process를 선택할까? Scheduling에 대해 알아보자! 8가지의 알고리즘을 이해해자!카테고리 없음 2024. 1. 17. 19:01
[OS] CPU는 어떻게 process를 선택할까? Scheduling에 대해 알아보자! 8가지의 알고리즘을 이해해자! process는 OS에서 수행할 작업을 관리하는 단위이다. cpu는 하나에 한 작업만 할당하여 수행할 수 있기 때문에 여러 작업을 수행하기 위해선 process를 교체하는 context switching을 해야 한다. 그런데 이 과정에서 cpu를 점유하게 되는 process는 어떻게 정해질까에 대한 의문이 생긴다. (process에 대해 잘 모르겠다면 아래 게시글 참고) [OS] Process와 Thread가 무엇일까? Process와 Thread process는 수행할 작업의 관리 단위이다. 이 관리의 주체는 OS이다. 연산이라는 연속적인 흐름에서 process 하나가 존재한다면, t..
-
[OS] Mutex와 Semaphore는 무엇일까??카테고리 없음 2024. 1. 16. 15:51
[OS] Mutex와 Semaphore는 무엇일까?? 우리의 운영체제는 process와 thread를 사용하여 수행할 작업을 관리한다. 많은 작업을 처리하기 위해서는 여러 process와 thread가 동시에 작업을 해야 할 것이다. (실제로 여러 process가 동시에 cpu를 점유할 수는 없다. 자세한 것은 아래 블로그 참고) 그렇게 되면 여러 process나 thread가 동시에 같은 공유 자원에 접근하는 문제가 생길지도 모른다. [OS] Process와 Thread가 무엇일까? Process와 Thread process는 수행할 작업의 관리 단위이다. 이 관리의 주체는 OS이다. 연산이라는 연속적인 흐름에서 process 하나가 존재한다면, thread 또한 하나가 존재한다. process는 최소..
-
[JS] 스코프와 관련된 개념을 몽땅 알아보자. scope, lexical, dynamic, chain, closure카테고리 없음 2024. 1. 15. 16:01
[JS] 스코프와 관련된 개념을 몽땅 알아보자. scope, lexical, dynamic, chain, closure scope scope는 우리가 선언한 변수나 함수에 참조할 수 있는 범위를 뜻한다. 즉 변수의 유효 범위를 나타낸다. javascript에서는 두 종류의 scope가 존재한다. global scope와 local scope이다. global scope는 모든 범위에서 참조할 수 있다. local scope는 특정 범위 내에서만 참조 가능하다. local scope는 함수 내에서 선언된 변수에 해당하는 function scope와 블록 내에서 선언된 block scope가 존재한다. 여기서 헷갈릴 수 있는 사실이 존재하는데.. var로 블록 내에 변수 선언 시 해당 변수는 global s..
-
[React] 웹 개발에서 성능 최적화하기! Minifying과 Code Splitting!!카테고리 없음 2024. 1. 14. 22:37
웹 개발에서 성능 최적화하기! Minifying과 Code Splitting!! 웹 개발을 하면 어플리케이션의 초기 로딩이 느리다던가, 코드의 용량이 너무 크다던가 하는 문제가 생길 수 있다. 오늘은 이러한 문제들을 어떻게 해결할 수 있는지 웹 개발 성능 최적화 방법에 대해 알아보겠다. 또한, React에서는 어떻게 이 해결 방법을 적용 중인지 알아보자. Minifying 성능을 최적화하기 위해서는 개발하여 나온 소스 코드 자체를 줄이는 방법이 있다. 우리가 개발을 할 때에는 가독성을 굉장히 중요시한다. 이는 다른 개발자들이 코드를 쉽게 이해하도록 하여 코드 리뷰 시간을 단축시키고, 유지보수 비용을 줄인다. 하지만 인간이 코드를 편하게 해석하기 위한 것이 컴퓨터에게도 동일하게 적용되지는 않는다. 컴퓨터는..
-
[[Block, Non-Block], [Sync, Async]]에 대해 알아보자!카테고리 없음 2024. 1. 13. 16:58
Block, Non-Block block과 non-block은 컴퓨터 프로그램에서 작업을 처리하는 두 가지 다른 방식을 말한다. 이름만 들어도 대충 어떤 느낌인지 감이 오는데.. block은 무언가가 막히고, non-block은 막히지 않고.. 여튼 아래에서 더 자세하게 살펴보겠다. block 환경에서는 호출자가 함수를 실행하였을 때에 호출자에게 있던 제어권이 실행된 함수에게 넘어간다. 함수의 실행이 종료되면 다시 호출자로 제어권이 돌아와 다음 코드를 실행한다. non-block 환경에서는 호출자가 함수를 실행하면 호출자에게 있던 제어권이 실행된 함수에게 넘어가지만, 곧바로 다시 돌아온다. 함수가 실행되고있는 상태에서 호출자의 다음 코드가 실행되는 것이다. 아래 코드를 보고 더 정확히 알아보자. bloc..
-
[자료구조] 해시 테이블은 무엇일까? 그리고 어떻게 동작할까?카테고리 없음 2024. 1. 12. 04:12
[자료구조] 해시 테이블은 무엇일까?? 해시 테이블은 자료구조의 종류 중 하나이다. 해시 테이블은 index와 value로 구성된다. 해시 테이블의 내부는 Array 구조로 구현되어 있다. 해시 함수는 데이터들을 특정 규칙에 의하여 해시 테이블에 삽입할 수 있도록 하는 함수이다. 즉, 임의의 데이터를 array에 접근 가능한 정수(index)로 변환하는 것이다. 데이터들이 해시 함수에 의해 해시 테이블에 삽입되는 과정을 해싱이라고 한다. 해시 함수에 key를 넣어 도출된 index에만 접근하면 해당하는 value를 빠르게 확인 가능하다. 하지만 해시 테이블도 단점이 있다. 만약 해시 함수에 의해 도출된 key가 중복된다면 충돌이 일어나게 된다. 예를 들어 해시 함수가 데이터의 길이를 가공하여 index를..
-
[JS] 함수 표현식과 함수 선언식은 무슨 차이가 있을까??카테고리 없음 2024. 1. 11. 20:21
[JS] 함수 표현식과 함수 선언식은 무슨 차이가 있을까?? 우리가 JS에서 함수를 선언할 때에는 보통 두 가지 방법을 사용한다. 바로 함수 표현식과 함수 선언식이다. 함수 표현식과 함수 선언식은 뭘까? 그리고 둘은 뭐가 다를까? 오늘은 이 내용에 대해 알아보도록 하겠다. 함수 선언식 먼저 함수 선언식은 무엇일까? 함수 선언식은 아래와 같이 함수를 선언하는 방법이다. 맞다. 일반적인 함수 선언 방식이다. function plusNumber (a,b) { return a + b; } plusNumber(1,2); // 3 함수 표현식 함수 표현식도 함수 선언식과 크게 다르지 않다. 함수 표현식은 아래와 같이 변수에 이름이 없는 함수를 할당하여 사용하는 방식이다. 왜 이름이 없는 익명 함수를 변수에 담아서 ..
-
[OS] Process와 Thread가 무엇일까?카테고리 없음 2024. 1. 10. 16:52
Process와 Thread process는 수행할 작업의 관리 단위이다. 이 관리의 주체는 OS이다. 연산이라는 연속적인 흐름에서 process 하나가 존재한다면, thread 또한 하나가 존재한다. process는 최소 1개의 thread를 가진다. 그리고 연산은 thread 단위로 이루어진다. cpu는 한 번에 한 가지의 동작만 할 수 있기 때문에 한 process가 cpu를 점유하면 다른 process들은 실행할 수 없다. 때문에 여러 개의 process들을 동시에 실행하기 위해 여러 개의 process가 짧은 텀으로 번갈아 cpu를 점유하며 동시에 실행되는 것처럼 보이게한다보이게 한다. 이 것이 multi process인데, 아래에서 더 정확히 설명하겠다. 이 process의 context sw..