From a48326b0d811c3b45e3e26f7f849d8f6ba95da24 Mon Sep 17 00:00:00 2001 From: kihwn <101660828+kihwn@users.noreply.github.com> Date: 2023年8月18日 15:29:10 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[=ED=98=9C=EC=9B=90]=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=84=B8=EC=8A=A4&=EC=8A=A4=EB=A0=88=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5263円 d7a7e990656f407088c223bd5a3ab1f0.md" | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 "341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" diff --git "a/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" "b/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" new file mode 100644 index 0000000..3e300ae --- /dev/null +++ "b/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" @@ -0,0 +1,85 @@ +# 스레드와 프로세스 + +Q. 스레드는 무엇인가요? + +Q. 멀티 프로세스는 무엇인가요? + +- + + 동시에 진행된다는 것은 무슨 의미인가요? + + +- 용어 정리 + 1. **실행 단위** : cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념 (즉, 실행 단위가 프로세스일 수도 있고, 스레드일 때도 있음!) + 2. **동시성** : 한 순간에 여러가지 일이 아니라, **짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼**! 보이는 것 + +- **프로그램**이란? + + Program은 실행 파일! + + 파일 시스템에 존재하는 파일! 이 파일에는 컴퓨터가 수행해야 할 작업이 정의되어 있음. 일반적으로 특정 작업을 수행하는데 필요한 알고리즘과 데이터 처리 절차를 적은 소스 코드가 담겨있음. + + +- **프로세스**란? + + 프로세스는 사용자가 프로그램을 더블클릭하여 실행을 시킨 프로그램의 인스턴스를 의미한다. + + +프로그램 → 프로세스를 위한 과정? + +1. 프로세스가 필요로 하는 내용들이 메모리 공간을 확보하게 됨 + - Code : 실행 명령을 포함 + - Data : Static 변수 혹은 Global 변수 + - Heap : 동적 메모리 영역 + - Stack : 지역변수, 매개변수, 반환 값 등등 일시적인 데이터 +2. 해당 프로세스에 대한 정보를 담고 있는 PCB(Process Control Block)가 프로세스 생성시 함께 만들어짐. + +  + + +그렇다면 여러 개의 프로세스를 실행시키려면? + +**Context Switching** + +- CPU는 한 번에 하나의 프로세스만 처리할 수 있기 때문에! +- 여러 프로세스를 처리해야 하는 상황에서 현재 진행 중인 Task의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태 값을 읽어 적용하는 과정 +- 즉, 각 프로세스에게 CPU를 할당해 작업을 수행하는 과정 +- but, 복잡해!! + +  + + +→ 그래서 나온 게 **쓰레드**! + +** 멀티 프로세스와 멀티 스레드는 처리 방식의 일종! + + 한 어플리케이션에 대한 두 가지 다른 처리방식에 대한 이야기를 하는 거구나!라고 이해하고 시작하자. + +- 프로세스는 부모 프로세스가 fork()하여 자식 프로세스를 만들고, 이를 처리하게 됨. 이 때 자식 프로세스들은 부모와 별개의 메모리를 차지하게 됨. +- 반면, 스레드는 한 프로세스 내에서 구분 지어진 실행 단위! + +- **Multi-process** : + - 각 프로세스는 독립적 + - IPC(Inter Process Communication)를 사용한 통신 + - 자원 소모적, 개별 메모리 차지 (별도의 자원 할당) + - Context Switching 비용이 큼 + - 동기화 작업이 필요하지 않음 + +- **Multi-thread**: 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것 +- Thread끼리 긴밀한 연결 +- 공유된 자원으로 통신 비용 절감 +- 공유된 자원으로 메모리가 효율적 +- Context Switching 비용이 적음 +- 공유 자원 관리를 해야함 + +그렇다면 thread를 이용하는 것이 더 좋아보이는데? + +but, 스레드는 긴밀하게 연결되어 있기 때문에 한 스레드 문제가 생기면 다른 스레드도 영향을 받음. + +또한 **동기화 문제**도 발생할 수 있음. + + + +- c.f) **Multi-core** : 하드웨어즉 측면에 가까운 개념. + + 물리적으로 여러 코어를 사용하여 다수의 실행 단위를 병렬적으로 한 순간에 처리할 수 있도록 하는 것. 하나의 코어를 갖고 있다면 멀티 프로세스에 대해 짧은 텀으로 cpu 할당을 바꿔주어 마치 동시에 진행되는 것처럼 보이게 하는 것. \ No newline at end of file From e551af8db56567684ebde50b6818298e9dc78f51 Mon Sep 17 00:00:00 2001 From: kihwn <101660828+kihwn@users.noreply.github.com> Date: 2023年8月18日 15:30:21 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[=ED=98=9C=EC=9B=90]=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=84=B8=EC=8A=A4&=EC=8A=A4=EB=A0=88=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5263円 d7a7e990656f407088c223bd5a3ab1f0.md" | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 "[CS_03] 354円232円264円354円230円201円354円262円264円354円240円234円/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" diff --git "a/[CS_03] 354円232円264円354円230円201円354円262円264円354円240円234円/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" "b/[CS_03] 354円232円264円354円230円201円354円262円264円354円240円234円/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" new file mode 100644 index 0000000..3e300ae --- /dev/null +++ "b/[CS_03] 354円232円264円354円230円201円354円262円264円354円240円234円/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" @@ -0,0 +1,85 @@ +# 스레드와 프로세스 + +Q. 스레드는 무엇인가요? + +Q. 멀티 프로세스는 무엇인가요? + +- + + 동시에 진행된다는 것은 무슨 의미인가요? + + +- 용어 정리 + 1. **실행 단위** : cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념 (즉, 실행 단위가 프로세스일 수도 있고, 스레드일 때도 있음!) + 2. **동시성** : 한 순간에 여러가지 일이 아니라, **짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼**! 보이는 것 + +- **프로그램**이란? + + Program은 실행 파일! + + 파일 시스템에 존재하는 파일! 이 파일에는 컴퓨터가 수행해야 할 작업이 정의되어 있음. 일반적으로 특정 작업을 수행하는데 필요한 알고리즘과 데이터 처리 절차를 적은 소스 코드가 담겨있음. + + +- **프로세스**란? + + 프로세스는 사용자가 프로그램을 더블클릭하여 실행을 시킨 프로그램의 인스턴스를 의미한다. + + +프로그램 → 프로세스를 위한 과정? + +1. 프로세스가 필요로 하는 내용들이 메모리 공간을 확보하게 됨 + - Code : 실행 명령을 포함 + - Data : Static 변수 혹은 Global 변수 + - Heap : 동적 메모리 영역 + - Stack : 지역변수, 매개변수, 반환 값 등등 일시적인 데이터 +2. 해당 프로세스에 대한 정보를 담고 있는 PCB(Process Control Block)가 프로세스 생성시 함께 만들어짐. + +  + + +그렇다면 여러 개의 프로세스를 실행시키려면? + +**Context Switching** + +- CPU는 한 번에 하나의 프로세스만 처리할 수 있기 때문에! +- 여러 프로세스를 처리해야 하는 상황에서 현재 진행 중인 Task의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태 값을 읽어 적용하는 과정 +- 즉, 각 프로세스에게 CPU를 할당해 작업을 수행하는 과정 +- but, 복잡해!! + +  + + +→ 그래서 나온 게 **쓰레드**! + +** 멀티 프로세스와 멀티 스레드는 처리 방식의 일종! + + 한 어플리케이션에 대한 두 가지 다른 처리방식에 대한 이야기를 하는 거구나!라고 이해하고 시작하자. + +- 프로세스는 부모 프로세스가 fork()하여 자식 프로세스를 만들고, 이를 처리하게 됨. 이 때 자식 프로세스들은 부모와 별개의 메모리를 차지하게 됨. +- 반면, 스레드는 한 프로세스 내에서 구분 지어진 실행 단위! + +- **Multi-process** : + - 각 프로세스는 독립적 + - IPC(Inter Process Communication)를 사용한 통신 + - 자원 소모적, 개별 메모리 차지 (별도의 자원 할당) + - Context Switching 비용이 큼 + - 동기화 작업이 필요하지 않음 + +- **Multi-thread**: 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것 +- Thread끼리 긴밀한 연결 +- 공유된 자원으로 통신 비용 절감 +- 공유된 자원으로 메모리가 효율적 +- Context Switching 비용이 적음 +- 공유 자원 관리를 해야함 + +그렇다면 thread를 이용하는 것이 더 좋아보이는데? + +but, 스레드는 긴밀하게 연결되어 있기 때문에 한 스레드 문제가 생기면 다른 스레드도 영향을 받음. + +또한 **동기화 문제**도 발생할 수 있음. + + + +- c.f) **Multi-core** : 하드웨어즉 측면에 가까운 개념. + + 물리적으로 여러 코어를 사용하여 다수의 실행 단위를 병렬적으로 한 순간에 처리할 수 있도록 하는 것. 하나의 코어를 갖고 있다면 멀티 프로세스에 대해 짧은 텀으로 cpu 할당을 바꿔주어 마치 동시에 진행되는 것처럼 보이게 하는 것. \ No newline at end of file From 1ab50a74ae165f0ff5b1bb44e31b4a706b33e888 Mon Sep 17 00:00:00 2001 From: kihwn <101660828+kihwn@users.noreply.github.com> Date: 2023年8月18日 15:35:26 +0900 Subject: [PATCH 3/3] =?UTF-8?q?Delete=20=E1=84=89=E1=85=B3=E1=84=85?= =?UTF-8?q?=E1=85=A6=E1=84=83=E1=85=B3=E1=84=8B=E1=85=AA=20=E1=84=91?= =?UTF-8?q?=E1=85=B3=E1=84=85=E1=85=A9=E1=84=89=E1=85=A6=E1=84=89=E1=85=B3?= =?UTF-8?q?=20d7a7e990656f407088c223bd5a3ab1f0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5263円 d7a7e990656f407088c223bd5a3ab1f0.md" | 85 ------------------- 1 file changed, 85 deletions(-) delete mode 100644 "341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" diff --git "a/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" "b/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" deleted file mode 100644 index 3e300ae..0000000 --- "a/341円204円211円341円205円263円341円204円205円341円205円246円341円204円203円341円205円263円341円204円213円341円205円252円 341円204円221円341円205円263円341円204円205円341円205円251円341円204円211円341円205円246円341円204円211円341円205円263円 d7a7e990656f407088c223bd5a3ab1f0.md" +++ /dev/null @@ -1,85 +0,0 @@ -# 스레드와 프로세스 - -Q. 스레드는 무엇인가요? - -Q. 멀티 프로세스는 무엇인가요? - -- - - 동시에 진행된다는 것은 무슨 의미인가요? - - -- 용어 정리 - 1. **실행 단위** : cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념 (즉, 실행 단위가 프로세스일 수도 있고, 스레드일 때도 있음!) - 2. **동시성** : 한 순간에 여러가지 일이 아니라, **짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼**! 보이는 것 - -- **프로그램**이란? - - Program은 실행 파일! - - 파일 시스템에 존재하는 파일! 이 파일에는 컴퓨터가 수행해야 할 작업이 정의되어 있음. 일반적으로 특정 작업을 수행하는데 필요한 알고리즘과 데이터 처리 절차를 적은 소스 코드가 담겨있음. - - -- **프로세스**란? - - 프로세스는 사용자가 프로그램을 더블클릭하여 실행을 시킨 프로그램의 인스턴스를 의미한다. - - -프로그램 → 프로세스를 위한 과정? - -1. 프로세스가 필요로 하는 내용들이 메모리 공간을 확보하게 됨 - - Code : 실행 명령을 포함 - - Data : Static 변수 혹은 Global 변수 - - Heap : 동적 메모리 영역 - - Stack : 지역변수, 매개변수, 반환 값 등등 일시적인 데이터 -2. 해당 프로세스에 대한 정보를 담고 있는 PCB(Process Control Block)가 프로세스 생성시 함께 만들어짐. - -  - - -그렇다면 여러 개의 프로세스를 실행시키려면? - -**Context Switching** - -- CPU는 한 번에 하나의 프로세스만 처리할 수 있기 때문에! -- 여러 프로세스를 처리해야 하는 상황에서 현재 진행 중인 Task의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태 값을 읽어 적용하는 과정 -- 즉, 각 프로세스에게 CPU를 할당해 작업을 수행하는 과정 -- but, 복잡해!! - -  - - -→ 그래서 나온 게 **쓰레드**! - -** 멀티 프로세스와 멀티 스레드는 처리 방식의 일종! - - 한 어플리케이션에 대한 두 가지 다른 처리방식에 대한 이야기를 하는 거구나!라고 이해하고 시작하자. - -- 프로세스는 부모 프로세스가 fork()하여 자식 프로세스를 만들고, 이를 처리하게 됨. 이 때 자식 프로세스들은 부모와 별개의 메모리를 차지하게 됨. -- 반면, 스레드는 한 프로세스 내에서 구분 지어진 실행 단위! - -- **Multi-process** : - - 각 프로세스는 독립적 - - IPC(Inter Process Communication)를 사용한 통신 - - 자원 소모적, 개별 메모리 차지 (별도의 자원 할당) - - Context Switching 비용이 큼 - - 동기화 작업이 필요하지 않음 - -- **Multi-thread**: 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것 -- Thread끼리 긴밀한 연결 -- 공유된 자원으로 통신 비용 절감 -- 공유된 자원으로 메모리가 효율적 -- Context Switching 비용이 적음 -- 공유 자원 관리를 해야함 - -그렇다면 thread를 이용하는 것이 더 좋아보이는데? - -but, 스레드는 긴밀하게 연결되어 있기 때문에 한 스레드 문제가 생기면 다른 스레드도 영향을 받음. - -또한 **동기화 문제**도 발생할 수 있음. - - - -- c.f) **Multi-core** : 하드웨어즉 측면에 가까운 개념. - - 물리적으로 여러 코어를 사용하여 다수의 실행 단위를 병렬적으로 한 순간에 처리할 수 있도록 하는 것. 하나의 코어를 갖고 있다면 멀티 프로세스에 대해 짧은 텀으로 cpu 할당을 바꿔주어 마치 동시에 진행되는 것처럼 보이게 하는 것. \ No newline at end of file