운영체제는 여러 프로세스를 동시에 실행해도 문제가 발생하지 않게 만드는 능력을 가지고 있습니다.
ex) ppt, 유튜브, 게임 동시에 가능
프로세스
프로그램과 프로세스의 차이에 대해 요즘 유명한 chat gpt에 물어보았습니다.
예, 프로세스와 프로그램에는 차이가 있습니다.
프로그램은 컴퓨터에서 실행할 수 있는 프로그래밍 언어로 작성된 명령 집합입니다. 컴퓨터의 메모리에 로드되고 운영 체제에서 실행될 때까지 하드 디스크나 USB 드라이브와 같은 저장 장치에 상주하는 정적 개체입니다.
반면에 프로세스는 프로그램이 메모리에 로드되고 운영 체제에 의해 실행될 때 생성되는 동적 엔터티입니다. 컴퓨터에서 실행 중인 프로그램의 인스턴스입니다. 프로세스에는 고유한 메모리 공간, 데이터 및 CPU 시간 및 입/출력(I/O) 장치와 같은 시스템 리소스가 있습니다.
요약하면 프로그램은 저장 장치에 상주하는 정적 엔터티이고 프로세스는 프로그램이 메모리에 로드되어 운영 체제에서 실행될 때 생성되는 동적 엔터티입니다.
여기서 계속 나오는 entity에 대한 것도 한번 물어보았습니다.
첫 번째 질문에 대한 답변의 맥락에서 "엔티티"라는 용어는 구별되고 독립적인 개체 또는 계산 단위를 나타냅니다.
특히 프로그램은 특정 작업 또는 작업 집합을 수행하는 독립적인 명령 집합이기 때문에 엔터티로 간주됩니다. 저장 장치에 파일 또는 파일 모음으로 존재하는 독립적인 계산 단위로 생각할 수 있습니다.
마찬가지로 프로세스는 컴퓨터의 운영 체제에서 실행 중인 프로그램의 별개의 독립적인 인스턴스이기 때문에 엔터티로 간주됩니다. 자체 메모리 공간, 데이터 및 시스템 리소스가 있으며 프로그램이 실행되는 동안 존재하는 별도의 독립적인 계산 단위로 생각할 수 있습니다.
(⊙_⊙;) 너무 똑똑하네요... 이제 솔직히 모르면 구글에 물어보고 블로그의 글을 보지 않고 다들 ai한테 질문할 거 같습니다.
물론 저는 공부와 정리 용도로 쓰고 있긴한데.. ai 한테 정확한 답을 도출할 수 있게 질문 능력이 많이 중요해질게 눈에 선하네요.
스레드
다시 돌아와서 프로세스는 또한 반드시!! 하나 이상의 스레드(Thread)로 구성됩니다.
스레드는 운영체제가 CPU 시간을 할당하는 기본 단위입니다.
한 프로세스에 스레드 여러 개를 가지는 멀티 스레드 구조의 프로그램을 만들려고 합니다.
이때 멀티 스레드를 이용했을 때 얻을 수 있는 장점과 단점들을 알아보겠습니다.
•▶장점
1.사용자 대화형 프로그램에서 멀티 스레드를 이용하면 응답성을 높일 수 있습니다.
ai한테 사용자 대화형 프로그램 10가지 알려달라고 하니까 이렇게 알려주네요
크롬에서 파일을 다운로드 받으며 다른 작업을 할 수 있는 게 바로 멀티 스레드 구조이기 때문입니다.
2. 멀티 프로세스 방식에 비해 멀티 스레드 방식이 자원 공유가 쉽습니다.
- 멀티 프로세스끼리 데이터를 교환하기 위해서는 소켓이나 공유 메모리 같은 IPC(Inter process Communication: 프로세스 간 통신)를 이용해야 합니다. ex) 집과 집 사이에 물건을 택배를 이용해서 물건을 주고받는 것
- 멀티 스레드 방식은 그저 스레드끼리 코드 내의 변수를 같이 사용 가능합니다. ex) 집에서 물건을 쓰는 것
3. 경제적으로 자원을 절약할 수 있습니다
•▶단점
1. 개발하기 어렵습니다.
2. 프로세스의 멀티 스레드 중 하나에 문제가 생기면 전체 프로세스가 영향을 받게 됩니다.
3. 스레드를 너무 많이 사용하면 오히려 성능이 더 저하됩니다.
'C# 프로그래밍' 카테고리의 다른 글
프로세스와 스레드에 대한 이론 정리글(2) (0) | 2023.03.13 |
---|---|
[C#] 스레드 사용법(1) (0) | 2023.03.13 |
[C#] 직렬화 (0) | 2023.03.07 |
"=>" 연산자가 람다식 말고 쓰이는 곳 "식 본문 멤버" (0) | 2023.03.06 |
[C#] 문 형식의 람다식 (0) | 2023.03.06 |