우수 답변
프로그램 , 프로세스 및 스레드 는 모든 컴퓨터 공학 엔지니어가 숙지해야하는 운영 체제의 세 가지 기본 개념입니다. . 여기에서는 각각의 내용과 서로 어떻게 다른지 설명하겠습니다.
프로그램이란?
프로그램은 컴퓨터에서 특정 작업을 수행하기 위해 작성된 일련의 지침이 포함 된 실행 파일입니다. 예를 들어, notepad.exe 는 텍스트 파일을 편집하고 인쇄하는 데 도움이되는 일련의 지침이 포함 된 실행 파일입니다.
프로그램 컴퓨터의 기본 메모리에 저장되지 않습니다. 그들은 컴퓨터의 디스크 또는 보조 메모리에 저장됩니다. 그것들은 기본 메모리로 읽어 들여 커널에 의해 실행됩니다. 프로그램은 보조 메모리에 상주하므로 수동 엔티티 라고도합니다.
프로세스 란 무엇입니까?
프로세스는 프로그램의 실행 인스턴스입니다. 예를 들어 컴퓨터에서 메모장 아이콘을 두 번 클릭하면 메모장 프로그램을 실행하는 프로세스가 시작됩니다.
프로세스는 활성 엔티티 는 기본 메모리에 상주하며 시스템이 재부팅되면 메모리를 떠납니다. 여러 프로세스가 동일한 프로그램과 관련 될 수 있습니다. 예를 들어 메모장 프로그램의 여러 인스턴스를 실행할 수 있습니다. 각 인스턴스를 프로세스라고합니다.
스레드 란? ?
Thread는 프로세스에서 실행 가능한 가장 작은 단위입니다. 예를 들어 메모장 프로그램을 실행하면 운영 체제가 프로세스를 만들고 해당 프로세스의 기본 스레드 실행을 시작합니다.
프로세스는 여러 스레드를 가질 수 있습니다. 각 스레드는 프로세스에서 자체 작업과 자체 실행 경로를 갖습니다. 예를 들어, 메모장 프로그램에서 한 스레드는 사용자 입력을 받고 다른 스레드는 문서를 인쇄합니다.
동일한 프로세스의 모든 스레드는 해당 프로세스의 메모리를 공유합니다. 동일한 프로세스의 스레드가 동일한 메모리를 공유하므로 스레드 간의 통신이 빠릅니다.
합계…
지금 쯤이면 프로그램, 프로세스 및 스레드의 차이점을 명확히 알고 있으며 이들 간의 관계도 발견했습니다… 그렇지 않다면 알아보십시오. 아래.
프로그램은 상위 프로세스 집합 인 반면, 프로세스는 슈퍼 스레드 집합입니다.
Enjoy Learning !!!
이미지 제공 : www.google.com
답변
- 프로그램 : 프로그램은 특정 작업을 수행하는 데 필요한 모든 명령의 집합 일 뿐이며 실행하기 전에 로더 OS에서 이해해야하는 바이너리 코드로 변환해야합니다. 일반적으로 Windows에서는 it PE (Portable Executable)에 저장된 EXE 파일과 유사 하드 디스크와 같은 보조 메모리에서 포맷 프로세스는 일반적으로 실행중인 프로그램의 인스턴스로 정의되며 두 가지 구성 요소로 구성됩니다 : 1) 운영 체제가 프로세스를 관리하는 데 사용하는 커널 개체. 커널 개체는 시스템이 프로세스에 대한 통계 정보를 보관하는 곳이기도합니다. 2) 모든 실행 파일 또는 DLL 모듈의 코드와 데이터를 포함하는 주소 공간. 스레드 스택 및 힙 할당과 같은 동적 메모리 할당도 포함합니다. 프로세스는 비활성입니다. 프로세스가 어떤 작업을 수행하려면 다음과 같은 스레드가 있어야합니다. 컨텍스트에서 실행되며이 스레드는 프로세스의 주소 공간에 포함 된 코드를 실행합니다. 실제로 단일 프로세스에는 여러 스레드가 포함될 수 있으며 모두 프로세스의 주소 공간에서 “동시에”코드를 실행합니다.이를 위해 각 스레드에는 자체 CPU 레지스터 세트와 자체 스택이 있습니다. 각 프로세스에는 최소한 프로세스의 주소 공간에서 코드를 실행하는 하나의 스레드. 프로세스의 주소 공간에 코드를 실행하는 스레드가 없으면 프로세스가 계속 존재할 이유가 없으며 시스템은 자동으로 프로세스와 해당 주소 공간을 파괴합니다.
- 프로세스 : 각 프로세스는 프로그램을 실행하는 데 필요한 리소스를 제공합니다. 프로세스에는 가상 주소 공간, 실행 코드, 시스템 개체에 대한 열린 핸들, 보안 컨텍스트, 고유 한 프로세스 식별자, 환경 변수, 우선 순위 클래스, 최소 및 최대 작업 집합 크기, 적어도 하나의 실행 스레드. 각 프로세스는 종종 기본 스레드라고하는 단일 스레드로 시작되지만 해당 스레드에서 추가 스레드를 생성 할 수 있습니다. .
- 스레드 : 스레드는 실행을 예약 할 수있는 프로세스 내의 엔티티입니다. 프로세스의 모든 스레드는 가상 주소 공간과 시스템 리소스를 공유합니다. 또한 각 스레드는 예외 처리기, 예약 우선 순위, 스레드 로컬 저장소, 고유 한 스레드 식별자 및 시스템이 예약 될 때까지 스레드 컨텍스트를 저장하는 데 사용할 구조 집합을 유지합니다. 스레드 컨텍스트는 스레드의 기계 레지스터 세트, 커널 스택, 스레드 환경 블록 및 스레드 프로세스의 주소 공간에있는 사용자 스택을 포함합니다. 스레드는 클라이언트를 가장하는 데 사용할 수있는 자체 보안 컨텍스트를 가질 수도 있습니다.