[바미] 커널
·
프로그래밍(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개의 공유 자원에 접근할 수 있도록 합니다.즉, 세마포어는 여러 사람이 동시에 사용하려고 할 때, 특정 자원을 안전하게 사용할 수 있도록 도와주는 도구입니다. 이렇게만 말하면 세마포어가 어떤 도구인 지 감이 안오시죠? 이해하기 쉽게 예를 들어 말씀드려보겠습니다. 영화관 좌석을 예로 들어 설명해보겠습니다. 영화관에 ..
[바미] On-premises와 Off-premises
·
프로그래밍(Basic)/이론
안녕하세요. 오늘은 온-프레미스와 오프-프레미스에 대해 알아보겠습니다. IT 인프라 및 서비스의 배치 및 관리 위치에 관한 용어이면서 데이터, 애플리케이션, 서비스 등을 호스팅하는 방법을 어떻게 선택할 것인가?를 의미합니다. Premises? Premises는 특정한 물리적 장소나 부지를 의미합니다. IT 관점에서 보았을 때 On-premises는 조직의 내부 네트워크 및 물리적 공간 내에서 인프라와 서비스가 관리되고 실행되는 것을 말하고, Off-premises는 외부에 위치한 인프라(대개 클라우드 서비스 제공자의 데이터 센터)에서 관리되고 실행되는 것을 의미합니다. 이제 이 두개에 대해 자세히 살펴보겠습니다. On-premises 조직이 자체 데이터 센터에 서버와 인프라를 두고 직접 관리하는 방식을 ..
[바미] SSR과 CSR
·
프로그래밍(Basic)/이론
브라우저 렌더링 먼저 브라우저 랜더링이란 브라우저가 서버로부터 요청해 받은 내용을 브라우저 화면에 표시해주는 작업을 말합니다. 브라우저가 서버로부터 HTML, CSS, JS 문서를 전달받아 브라우저 엔진이 각 문서를 해석해 브라우저 화면을 그려주는 것이죠. 예를 들어, 아무 브라우저에 접속해서 주소창에 https://www.naver.com/ 을 입력한다면 브라우저는 네이버 서버로부터 네이버 웹사이트에 대한 정보를 받아 브라우저 화면에 네이버 홈페이지를 그려 주게 되는 것이죠. 그리고 이러한 브라우저 렌더링은 크게 ' 서버 사이드 렌더링'과 ' 클라이언트 사이드 렌더링' 방식으로 나누어 지죠. 서버 사이드 렌더링 서버 사이드 렌더링은 클라이언트(브라우저)가 서버에 매번 데이터를 요청하여 서버에서 처리하는..
[바미] WebSocket과 Socket.io차이는 무엇일까?
·
프로그래밍(Basic)/이론
들어가기전에.. Socket.io와 WebSocket 모두 실시간 양방향 통신을 가능하게 하는 기술인데요. 지금 다니는 회사에서는 Socket.io를 주로 사용하고 있어요. 처음 Socket.io를 공부할 때 WebSocket에 대해 먼저 공부했고, 그 당시에는 Socket.io를 사용하기 위해 공부할 때는 단순히 'room'의 개념 여부로만 알고 있었어요. 하지만 그 외에도 차이가 존재하는 것을 발견하여 리마인드 할 겸 정리해보려해요. 프로토콜의 차이점 Websocket은 TCP 소켓을 사용한 HTTP와 독립적인 프로토콜로, 양방향 통신을 제공해요. 브라우저에서 WebSocket을 지원하는 경우, 서버와의 연결을 유지한 상태로 언제든지 데이터를 주고받을 수 있죠. 반면에 Socket.io는 WebSoc..
[바미] 다수의 요청에 의해서 데이터를 CRUD 원활하게 관리하기.
·
프로그래밍(Basic)/이론
안녕하세요. 오늘은 다수의 요청에 의해서 데이터를 CRUD하는 경우 어떻게 원활하게 관리하면 좋을 지 몇 가지 방법을 가지고 다뤄보도록 하겠습니다. 추가적으로 다른 방법도 댓글로 알려주시면 감사하겠습니다 ^_^ 데이터베이스 스케일링 데이터베이스 스케일링: 대용량의 요청에 대응하기 위해 데이터베이스를 스케일링 하는 방법 [바미] 데이터 베이스 스케일링 데이터베이스 스케일링은 데이터베이스 용량을 증가하거나 그로 인한 성능 향상을 위한 기법입니다. 데이터베이스 스케일링은 일반적으로 수직 스케일링 (Vertical Scaling), 수평 스케일링 (Horizonta codesk.tistory.com 데이터베이스 분산: 대용량의 요청에 대응하기 위해 데이터베이스를 분산하는 방법 [바미] 데이터 베이스 분산 방법 ..
Bami