[바미] 멀티 태스킹, 멀티 스레드, 멀티 프로세스
·
프로그래밍(Basic)/이론
멀티 태스킹, 멀티 스레드, 멀티 프로세스는 무엇일까요?각각의 정의는 아래와 같습니다. 멀티 프로세스: 하나의 프로그램을 다수의 프로세서가 다수의 프로세스를 동시에 처리하는 것멀티 스레드: 하나의 프로세스가 여러 작업을 여러 스레드를 사용하여 동시에 처리하는 것멀티 태스킹: 다수의 작업을 운영체제 스케줄링에 의해  번갈아가면서 처리하는 것멀티 태스킹(Multi-tasking)Task라는 개념은 프로세스의 개념보다 조금 확장된 개념입니다. 이러한 Task가 하나의 프로세서 상에서 운영체제의 스케줄링 방식에 따라 조금씩 번갈아가면서 수행되는 것이 멀티태스킹의 개념입니다. 그리고 멀티태스킹 환경에서 운영 체제는 프로세스 스케줄러를 사용하여 각 작업이 공정하게 CPU 시간을 할당받도록 하죠. 빠른 속도로 조금씩..
[바미] 커널
·
프로그래밍(Basic)/이론
[바미] 프로세스와 커널에 대해 알아보자!프로세스와 커널프로세스(Process)는 운영체제의 커널의 관리하에 현재 시스템에서 동작중인 프로그램, 실행 중인 프로그램의 인스턴스 인데 시스템 리소스(예: CPU, 메모리, 파일 등)를 할당받아codesk.tistory.com위 부분 중 커널 부분만 따로 떼서 포스팅 해보겠습니다.커널(Kernel )?커널은 운영 체제의 핵심 부분으로, 시스템의 리소스를 관리하고 프로세스 간의 상호작용을 조정하는 역할을 합니다. 커널 공간(Kernel Space)과 사용자 공간(User Space)운영 체제는 메모리를 크게 커널 공간(Kernel Space)과 사용자 공간(User Space)이라는 두 가지 영역으로 나눕니다.커널 공간(Kernel Space)정의 -  커널 공..
[바미] CPU 스케줄링 알고리즘
·
프로그래밍(Basic)/이론
안녕하세요. 오늘은 CPU 스케줄링 알고리즘에 대해 알아보도록 하겠습니다. CPU 스케줄링 알고리즘은 운영 체제의 핵심 기능 중 하나로, 여러 프로세스들이 CPU를 효율적으로 사용할 수 있도록 CPU 시간을 할당하는 방법입니다.FCFS (First-Come, First-Served)FCFS는 가장 단순한 CPU 스케줄링 알고리즘으로, 먼저 도착한 프로세스가 먼저 실행됩니다.줄을 서는 방식과 비슷하여, 먼저 줄을 선 사람이 먼저 서비스를 받습니다.특징비선점형 스케줄링 : 현재 실행 중인 프로세스가 자발적으로 CPU를 놓을 때까지 실행됩니다.공정성: 먼저 도착한 프로세스가 먼저 실행되므로 공정합니다.간단함: 구현이 매우 간단합니다.장단점장점: 구현이 매우 간단하며, 공정합니다.단점: Convoy effect..
[바미] 피터슨 알고리즘
·
프로그래밍(Basic)/이론
피터슨 알고리즘?피터슨 알고리즘(Peterson's Algorithm)은 두 개의 프로세스가 공유 자원에 동시에 접근하지 못하도록 하는 교착 상태를 피하기 위한 동기화 알고리즘입니다. 이 알고리즘은 상호 배제(mutual exclusion) 문제를 해결하는 데 사용되며, 프로세스가 교대로 임계 구역(critical section)에 진입할 수 있도록 보장합니다. 피터슨 알고리즘은 두 개의 프로세스 간에 작동하지만, 그 개념을 확장하면 더 많은 프로세스에서도 사용할 수 있습니다.알고리즘의 핵심피터슨 알고리즘은 두 개의 변수를 사용하여 다음과 같은 상호 배제를 구현합니다.flag 배열: 각 프로세스가 임계 구역에 들어가고자 하는 의도를 나타냅니다. 예를 들어, flag[0]는 프로세스 0의 의도를, flag..
[바미] 철학자의 식사시간 문제
·
프로그래밍(Basic)/이론
안녕하세요. 오늘은 철학자의 식사시간 문제(Dining Philosophers Problem)에 대해 알아보도록 하겠습니다. 철학자의 식사시간 문제(Dining Philosophers Problem) 는동시성 제어(concurrency control)와 관련된 전통적인 문제로, 자원 공유와 교착 상태(deadlock)의 개념을 설명하는 데 자주 사용됩니다.  이 문제는 다섯 명의 철학자가 원탁에 앉아 식사를 하려는 상황을 가정합니다. 철학자들은 생각하거나 먹는 두 가지 행동만을 하며, 스파게티를 먹기 위해서는 두 개의 포크가 필요합니다. 이때, 철학자들이 다음과 같은 규칙을 따르게 됩니다.모든 철학자는 자신의 왼쪽에 있는 포크를 먼저 집습니다.왼쪽 포크를 집은 후, 오른쪽 포크를 집습니다.두 개의 포크를..
[바미] 세마포어
·
프로그래밍(Basic)/이론
세마포어(Semaphore)?세마포어(semaphore)는 에츠허르 다익스트라(Edsger Wybe Dijkstra)가 제안한 교착 상태(DeadLock)에 대한 해법으로, 두 개의 원자적(Atomic) 함수로 제어되는 정수 변수입니다. 세마포어는 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제어하기 위해 사용되며, 제한된 개수의 프로세스(Process)나 스레드(Thread)만이 동시에 1개의 공유 자원에 접근할 수 있도록 합니다.즉, 세마포어는 여러 사람이 동시에 사용하려고 할 때, 특정 자원을 안전하게 사용할 수 있도록 도와주는 도구입니다. 이렇게만 말하면 세마포어가 어떤 도구인 지 감이 안오시죠? 이해하기 쉽게 예를 들어 말씀드려보겠습니다. 영화관 좌석을 예로 들어 설명해보겠습니다. 영화관에 ..
[바미] Node - GC
·
프로그래밍(Basic)/Javascript(TS,Node)
GC? 가비지 컬렉션은 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 부분을 자동으로 찾아서 해제하는 프로세스입니다. 이는 메모리 누수를 방지하고, 사용 가능한 메모리 공간을 최대화하여 프로그램의 안정성과 성능을 향상시키는 데 필요합니다. Node.js에서는 프로세스 메모리 관리를 개발자가 직접하지 않고 자동으로 수행합니다. 그렇기 때문에 가비지 컬렉션(GC)은 Node.js의 메모리 관리의 핵심이며 성능에 많은 영향을 끼치죠 오늘은 Node.js의 V8 engine이 어떻게 가비지 컬렉션을 수행하는지 알아보겠습니다. 프로세스 메모리 관리 - C와 Node.js 비교 메모리 관리란? 프로그래머가 요청할 때 동적으로 Heap 영역에 메모리 청크를 할당해주고, 더 이상 필요하지 않을 때 메..
[바미] 미들웨어 패턴(Middleware Pattern)
·
프로그래밍(Basic)/디자인 패턴(JS)
미들웨어 패턴(Middleware Pattern)이란? 미들웨어 패턴은 소프트웨어 엔지니어링에서 클라이언트 요청과 서버 응답 사이에 위치하는 중간 처리 계층을 의미하는데 이 패턴을 통해 개발자는 요청 처리 파이프라인에 여러 처리 단계를 도입할 수 있으며, 각 단계는 순차적으로 요청을 처리하고, 필요에 따라 다음 미들웨어로 요청을 전달하거나 응답을 반환할 수 있습니다. 예시 미들웨어 패턴은 Node(Express)에서 사용하여 로깅, 인증, 세션 관리 등의 기능을 구현할 때 어떻게 구현하는 지 예시를 들어보겠습니다. app.js const express = require('express'); const app = express(); // 로깅 미들웨어 app.use((req, res, next) => { ..
[바미] 스트래티지 패턴(Strategy Pattern)
·
프로그래밍(Basic)/디자인 패턴(JS)
스트래티지 패턴(Strategy Pattern)? 스트래티지 패턴은 알고리즘의 그룹을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호 교체 가능하게 만듭니다. 이를 통해 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있습니다. Node.js에서 스트래티지 패턴은 로깅, 데이터 검증, 통신 프로토콜 등 다양한 방법에서 사용될 수 있습니다. 예제 그럼 스트래티지 패턴을 사용하여 여러 로깅 메커니즘(예: 콘솔, 파일, 원격 서버)을 지원하는 간단한 예제로 알아봅시다. LoggerStrategy.js class LoggerStrategy { static toConsole(message) { console.log(`Console: ${message}`); } static toFile(messa..
Bami
'프로그래밍(Basic)' 카테고리의 글 목록 (2 Page)