원래 알았던 정의
- 프로그램 실행한게 프로세스
- 프로세스 내에서의 작업 단위가 스레드
프로그램
<aside>
⚡ 파일이 저장장치에 저장되어있지만 메모리에는 올라가있지않은 정적인 상태
</aside>
- 메모리에 올라가있지 않은 정적인 상태 → 아직 실행되지 않은 파일 그 잡채
- 사용자가 눌러서 실행하기 전의 파일 → 정적인 상태라는 것
프로세스
- 프로그램을 실행해서 컴퓨터 메모리 상에 올라간 상태
- 각각 독립된 메모리 영역을 할당받고 있는 모습 → 다른 프로세스의 변수나 자료에는 접근불가
- 운영체제 관점에서는 프로세스가 최소 작업 단위가 된다
스레드
-
프로세스의 한계를 극복하기 위해 등장
- 프로그램들이 여러 작업을 담당하는데, 프로세스 하나만으로는 이걸 감당하기에 역부족
- 한 프로그램을 처리하기 위한 프로세스를 여러개 생성은 불가
- 프로세스는 할당된 메모리 내의 정보에만 접근이 가능하도록 설정되어있어서 (안전을 위해)
- 사실 몇몇 방식을 추가로 적용한다면, 다른 프로세스의 정보 가져올 수 있다고 함
-
작은 실행 단위의 등장 → 스레드
- 프로세스 하나 안에서 여러 스레드가 나눠진 것
- 스레드 간 메모리를 공유하며 작동 (프로세스와 다른점!)
- 프로세스의 자원을 공유
- 프로세스 실행 흐름의 일부가 되게 된다
-
CPU 입장에서 최소 작업 단위가 된다