프로세스 vs 스레드
프로세스
프로세스는 현재 실행 중인 프로그램을 말한다. 프로그램 그 자체는 프로세스가 아니다.
프로세스는 스택(매개변수, 복귀주소, 로컬변수 등 임시자료 저장), 데이터 공간(전역변수 저장), 텍스트 공간(코드 저장), 힙 공간(동적으로 할당되는 객체, 변수 저장)으로 구성된다.
스레드
하나의 스레드는 하나의 실행을 할 수 있다. 즉, CPU가 처리하는 작업의 단위이다.
만약 하나의 프로세스에 하나의 스레드가 있다면, 한번에 한가지 일만 실행할 수 있다. 예를 들면, 동일한 프로세스 내에서 문자를 입력하면서 동시에 철자검사기를 실행할 수 없다.
현대의 운영제체는 프로세스 개념을 확장하여 한 프로세스가 여러 스레드를 가질 수 있도록 하여 한순간에 하나 이상의 일을 실행할 수 있게 한다. (멀티스레드)
멀티 프로세스 vs 멀티 스레드
멀티 프로세스
하나의 CPU는 한 순간에 하나의 프로세스를 실행할 수 있다.
따라서 여러 개의 CPU 또는 CPU 내 여러개의 코어가 있다면, 여러 개의 프로세스를 동시에 실행가능해진다. (병령처리)
프로세스는 fork( )를 이용해 복제할 수 있으며 부모 프로세스를 fork하여 자식 프로세스를 생성할 수 있다. 부모로부터 복제된 자식 프로세스라 할지라도 기본적인 메모리(스택, 힙, 텍스트, 데이터 영역)는 할당된다.
(단일 CPU 이용해서 짧은 시간을 주기로 번갈아가며 여러 개의 프로세스를 처리하는, 멀티 프로그래밍과는 다른 용어임)
멀티 스레드란,
하나의 프로세스 내에는 여러개의 스레드가 존재할 수 있으며, 이 스레드는 운영체제 자원(코드,데이터 등)을 공유한다.
스레드는 CPU 이용의 기본 단위이며, 스레드ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성된다.
프로세스의 상태 5가지
생성 new
프로세스가 생성 중이다. fork()
준비 ready
프로세스가 CPU를 할당 받기를 기다리는 중이다.
실행 running
명령어들이 실행되고 있는 중이다. exec()
대기 waiting
프로세스가 입출력 완료 또는 신호 수신 등 이벤트가 일어나기를 기다리는 중이다. wait
종료 terminated
프로세스 실행이 종료되었다. exit()
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 8. 프로세스의 구조 (0) | 2022.08.13 |
---|---|
[운영체제] 7. PCB와 Context Switching (0) | 2022.08.11 |
[운영체제] 5. 컴퓨터 성능향상 기술 (0) | 2022.08.09 |
[운영체제] 4. 레지스터의 역할과 종류 (Feat. 컴퓨터구조) (0) | 2022.08.07 |
[운영체제] 3. 컴퓨터 구조 (0) | 2022.08.05 |