Computer Science/OS 4

[OS] 멀티 스레드(Multi Thread) vs 멀티 프로세스(Multi Process)

멀티 스레딩 (Multi Threading) 보통 우리가 작성하는 코드를 실행하면 하나의 프로세스로 동작합니다. 또, 하나의 프로세스는 보통 하나의 스레드만 사용하여 동작합니다. 아래의 파이썬 코드를 통해 알아보도록 하겠습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. process_id : 25939 thread_id : 4539137536 이렇게 하나의 프로세스에서 하나의 스레드만 사용하는 것을 "싱글 스레딩"이라고 합니다. 우리가 작성하는 대부분의 코드들은 이렇게 싱글 스레딩입니다. 반면, 하나의 프로세스에서 여러 개의 스레드를 사용할 수도 있습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. # 같은 프로세스 process_id : 27180..

Computer Science/OS 2022.08.14

[OS] CPU Bound vs I/O Bound

컴퓨터가 수행하는 하나의 작업은 CPU 작업(CPU Bounded Task)과 I/O 작업(I/O Bounded Task)으로 이루어집니다. CPU Bounded Task CPU Bounded Task는 작업 수행 시 I/O보다 CPU를 더 많이 쓰는 작업을 의미합니다. 많은 연산이 필요한 경우 이에 해당하며 예로는 머신러닝이 있습니다. (I/O 작업도 있지만 CPU 사용량이 압도적입니다.) I/O Bounded Task I/O Bounded Task는 작업 수행 시 CPU보다는 I/O 작업이 많은 경우를 의미합니다. 예로는 크롤링, DB 데이터 송수신 등이 있습니다. 일반적으로 웹, WAS 서버는 I/O Bounded한 경우가 많습니다.

Computer Science/OS 2022.08.14

[OS] 병렬성과 동시성

병렬성과 동시성은 한정된 자원(CPU, 메모리)에서 효율적으로 프로세스를 사용하기 위해 생긴 개념입니다. 동시성 동시성은 기본적으로 CPU 1코어를 기준으로 이야기합니다. (실제는 물리적으로 CPU 1개의 코어에서만 동작하는 개념이 아닌, 제한된 자원에서 여러 작업을 한 번에 실행시키려는 논리적 개념입니다.) 이해를 돕고자 컴퓨터 발전의 초기 때를 예로 들어보겠습니다. 컴퓨터 발전 초기에는 컴퓨터 한 대당 CPU는 하나였습니다. 그렇다보니 CPU가 한 번에 처리할 수 있는 명령도 하나였습니다. 만약 이런 상황에서 I/O 작업들이 많아진다면 어떻게 될까요? I/O 작업을 하는 동안 CPU는 대기 상태에 있는 I/O Blocking이 발생하게 됩니다. (이를 CPU 블락 상태라고 합니다.) 만약 이 I/O ..

Computer Science/OS 2022.08.14

[OS] 프로세스(Process)와 스레드(Thread)

프로세스(Process) 프로세스는 운영체제에 의해 연속적으로 실행되고 있는 프로그램을 의미합니다. 프로그램 실행 시 운영체제가 메모리 위에 프로세스를 생성하게 되며 운영체제에 의해 CPU, 메모리 자원을 할당받게 됩니다. 프로세스는 독립된 메모리 영역으로 Code, Heap, Data, Stack을 할당받습니다. Code : 개발자가 작성한 코드 Data : 전역변수, 정적변수, 배열, 구조체 등 프로그램이 실행되면서 생기는 정적인 데이터 Stack : 함수 호출과 관련된 정보(실행정보, 지역변수, 파라미터 등)이 저장됩니다. 일반적으로 컴파일 타임에 Stack의 크기가 결정됩니다. Heap : 런타임에 동적으로 메모리를 처리해야 하는 상황에서 사용되는 공간입니다. ex) Array를 사용하거나 외부 ..

Computer Science/OS 2022.08.13
반응형