멀티 스레드 VS 멀티 프로세스
·
CS/운영체제
현대 소프트웨어 개발에서는 효율적인 동시 실행(Concurrency)과 병렬 처리(Parallelism)가필수적이다.특히, 백엔드 개발에서는 서버가 동시에 많은 요청을 처리해야 하기 때문에, CPU 활용을 극대화하고, 안정성을 유지하는 실행 방식을 선택하는 것이 중요하다.멀티 프로세스와 멀티 스레드는 이러한 동시 실행을 구현하는 대표적인 두 가지 방식이다.각각의 방식은 성능, 자원 관리, 안정성 측면에서 장단점을 가지고 있으며,어떤 방식이 적절한지는 애플리케이션의 특성과 요구사항에 따라 달라진다.그럼 이제, 멀티 프로세스와 멀티 스레드가 각각 어떻게 동작하는지, 그리고 언제 어떤 방식을 선택하는 것이 좋은지자세히 알아보자.멀티 스레드(Multi-Thread) vs 멀티 프로세스(Multi-Process)..
Lv 2. 숫자블록
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/12923?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   자연수 n에 대해, 1과 n을 제외한 약수 중에서 10,000,000 이하인 값 중 가장 큰 값을 찾아야 한다.만약 그런 값이 없다면 1을 반환해야 한다. 단, n이 1이라면 0을 반환합니다.처음 작성했던 코드에서는 n의 약수를 찾을 때 첫 번째로 발견되는 약수 쌍을 이용하여 바로 반환하는 방식이었다. 하지만 이 방식은 모든 경우를 정확하게 처리하지 못했다.  예를 들어, n = 20000010일 때, 약수는 [1,..
b24497. 알고리즘 수업 - 깊이 우선 탐색 1
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/24479   이 문제는 그래프 탐색 알고리즘인 DFS(Depth First Search)를 활용하여특정 시작 정점에서 탐색을 수행하며, 각 정점을 방문한 순서를 기록하는 문제다.아래 코드는 문제를 해결하기 위한 전체적인 흐름과 구현 방식을 포함하고 있다.우선, 입력으로는 정점의 개수 N, 간선의 개수 M, 탐색 시작 정점 R이 주어진다.이 정보를 기반으로 그래프를 인접 리스트 형태로 표현하기 위해 list라는 배열을 생성한다.이 배열은 각 정점이 연결된 다른 정점들을 저장하는 리스트를 담고 있다.이를 통해 그래프를 효율적으로 관리하고 탐색을 수행할 수 있다.입력으로 주어진 간선을 처리하여 무방향 그래프를 구성한다.각 정점의 연결 정보를 정렬하여 ..
Lv3. 길찾기 게임
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/challenges?order=acceptance_desc&levels=2%2C3%2C4&languages=java&page=7 코딩테스트 연습 | 프로그래머스 스쿨개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!school.programmers.co.kr   주어진 노드 좌표 정보를 이용해 이진 트리를 구성하고, 전위 순회와 후위 순회를 통해 결과를 반환하는 문제다. 먼저 노드 정보를 객체로 변환하고,y값을 기준으로 내림차순, x값을 기준으로 오름차순으로 정렬한다. 이 정렬된 순서대로 첫 번째 노드를 루트로 설정하고 나머지..
컴퓨터 시스템의 심장, 메모리 관리 전략
·
CS/운영체제
메모리 관리 전략을 이해하는 건 백엔드 개발자에게 꼭 필요하다.효율적인 메모리 관리는 애플리케이션 성능을 높이고,자원을 아끼는 데 큰 도움이 되기 때문이다.서버는 동시에 많은 사용자 요청을 처리해야 하기 때문에,메모리 할당과 회수를 잘 관리하는 게 성능과 안정성에 직접적인 영향을 준다.메모리 관리를 통해 메모리 누수 같은 문제를 예방해 시스템의 장기적인 안정성을 보장할 수 있다그럼 메모리 관리 전략에 대해서 알아보자. 메모리 관리의 중요성 컴퓨터 시스템에서 메모리 관리는 핵심적인 역할을 수행한다. 모든 컴퓨터 응용 프로그램은 실행을 위해 메모리를 필요로 하며, 이를 효율적으로 관리하는 것이 시스템의 성능과 안정성을 결정짓는 중요한 요소다. 메모리 관리는 사용 가능한 메모리 리소스를 할당하고, 불필요하게..
b.17298 오큰수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/17298   이 문제는 배열의 각 원소에 대해"오큰수(오른쪽에 있는 수 중 현재 수보다 큰 수 중 가장 가까운 것)"를 구하는 문제다.먼저 main 메서드에서 프로그램 실행의 흐름을 살펴보면,사용자로부터 입력값을 받아 배열에 저장한 후 logic 메서드를 호출해오큰수를 계산한 뒤 결과를 출력한다.사용자는 먼저 배열의 크기 N을 입력하고,다음 줄에 배열의 원소를 공백으로 구분하여 입력한다.이후 logic 메서드를 호출하여 오큰수를 계산한다. logic 메서드는 스택을 사용하여 효율적으로 오큰수를 구하는 핵심 부분이다.이 알고리즘은 반복문을 통해 배열을 순회하면서현재 원소와 스택에 저장된 인덱스를 비교한다. 스택에는 아직 오큰수가 결정되지 않은 인덱..
Lv2. 혼자 놀기의 달인
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  while 문을 활용한 DFS로 풀이하였다.이번 문제는 cards[] 배열이 주워질 때, 랜덤으로 어떠한 두 박스를 고른다.두박스 안에는 박스번호와 박스안의 카드번호가 주워지는데 카드번호를 통해 다음박스 를 열게되고 그 박스안의 카드번호에 해당하는 박스를 다시 여는반복을 통해 cycle을 측정한 다음2가지 cycle의 크기 가 최대가 될 수 있는값을 구하는 문제다. 우선 boolean[] isVisited 를 활용하여 방문체크를 해주고반복문..
PCB?
·
CS/운영체제
프로세스 제어 블록(PCB, Process Control Block)은 운영 체제의 핵심 구성 요소 중 하나로,각 프로세스를 관리하고 추적하기 위해 설계된 데이터 구조다. PCB는 단순히 프로세스의 정보를 저장하는 역할뿐만 아니라, 운영 체제가 프로세스를 효율적으로 관리하고 CPU의 활용을 극대화하는 데 필수적인 기능을 제공한다. 이번 글에서는 PCB의 구조, 역할, 그리고 문맥 교환(Context Switching)에서의 중요성을 심층적으로 살펴보자. PCB란 무엇인가?PCB는 운영 체제가 각 프로세스를 관리하기 위해 사용하는 데이터 구조다. 운영 체제는 멀티태스킹 환경에서 수많은 프로세스를 동시에 실행해야 하며, 각 프로세스의 상태와 정보를 효과적으로 관리해야 한다. PCB는 프로세스와 관련된 모든 ..
리눅스 vs 윈도우
·
CS/운영체제
운영체제에 대해 공부를 하다 보니언뜻 궁금한 것이 리눅스와 윈도우 두가지중리눅스운영체제가 개발에 있어 더욱자주 또 많이 쓰인다는 것을 느꼈다.왜 리눅스가 더 많이 쓰일까?윈도우는 왜 개발환경에 적합하지 않을까?두 운영체제의 차이가 무엇일까? 라는 의문에 도달하였고개발자로서 당연히 가질수 있는 의문이기에 이에 대해 공부할 필요성을 느꼈다. 운영체제의 기본 개념운영체제에 대해서는 정리해놓은 블로그 글이 있다. 아래 글을 참고하도록 하고 오늘은 리눅스와 윈도우의 차이점에 대해서 집중 조명 해 보자. https://geishastory.tistory.com/248 운영체제란?운영체제를 왜 알아야 할까?운영체제는 사용자를 위한 프로그램이라기보다프로그램을 위한 프로그램이라고 보는것이 맞다.그렇기에 프로그램을 만드는..
b.2293 동전 1
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/2293   이 문제는 dp를 활용하여 N가짓 수의 동전이 주어졌을때K의 값을 몇가지 방법으로 나타낼 수 있는지 즉 몇가지 조합으로K값을 나타낼 수 있는지에 대한 경우의수를 묻는 문제다. k가 3이면 2,1 과 1,2 가 있는데 이는 순서만 다르기에 같은경우의 수로 취급한다. 이문제를 보자 2차원 DP 배열을 생각해 낼 수 있었다.dp [i][j] 는 i까지 동전을 사용했을 때 나타낼 수 있는 경우의 수로 정의하고dp[0][j]에서 0은 coins[0]이므로 0까지의 동전이아니라 coins[0] 동전만 사용했을때경우의 수가 된다. 이를 통해 점화식을 세워 봤을 때,  dp[i][j] = dp[i-1][j];if (j >= coins[i]) { ..